checkout-intents 0.4.0 → 0.5.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 (107) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +88 -14
  3. package/client.d.mts +8 -5
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +8 -5
  6. package/client.d.ts.map +1 -1
  7. package/client.js +10 -15
  8. package/client.js.map +1 -1
  9. package/client.mjs +10 -15
  10. package/client.mjs.map +1 -1
  11. package/core/pagination.d.mts +63 -0
  12. package/core/pagination.d.mts.map +1 -0
  13. package/core/pagination.d.ts +63 -0
  14. package/core/pagination.d.ts.map +1 -0
  15. package/core/pagination.js +115 -0
  16. package/core/pagination.js.map +1 -0
  17. package/core/pagination.mjs +109 -0
  18. package/core/pagination.mjs.map +1 -0
  19. package/index.d.mts +1 -0
  20. package/index.d.mts.map +1 -1
  21. package/index.d.ts +1 -0
  22. package/index.d.ts.map +1 -1
  23. package/index.js +3 -1
  24. package/index.js.map +1 -1
  25. package/index.mjs +1 -0
  26. package/index.mjs.map +1 -1
  27. package/internal/qs/formats.d.mts +7 -0
  28. package/internal/qs/formats.d.mts.map +1 -0
  29. package/internal/qs/formats.d.ts +7 -0
  30. package/internal/qs/formats.d.ts.map +1 -0
  31. package/internal/qs/formats.js +13 -0
  32. package/internal/qs/formats.js.map +1 -0
  33. package/internal/qs/formats.mjs +9 -0
  34. package/internal/qs/formats.mjs.map +1 -0
  35. package/internal/qs/index.d.mts +10 -0
  36. package/internal/qs/index.d.mts.map +1 -0
  37. package/internal/qs/index.d.ts +10 -0
  38. package/internal/qs/index.d.ts.map +1 -0
  39. package/internal/qs/index.js +14 -0
  40. package/internal/qs/index.js.map +1 -0
  41. package/internal/qs/index.mjs +10 -0
  42. package/internal/qs/index.mjs.map +1 -0
  43. package/internal/qs/stringify.d.mts +3 -0
  44. package/internal/qs/stringify.d.mts.map +1 -0
  45. package/internal/qs/stringify.d.ts +3 -0
  46. package/internal/qs/stringify.d.ts.map +1 -0
  47. package/internal/qs/stringify.js +277 -0
  48. package/internal/qs/stringify.js.map +1 -0
  49. package/internal/qs/stringify.mjs +274 -0
  50. package/internal/qs/stringify.mjs.map +1 -0
  51. package/internal/qs/types.d.mts +57 -0
  52. package/internal/qs/types.d.mts.map +1 -0
  53. package/internal/qs/types.d.ts +57 -0
  54. package/internal/qs/types.d.ts.map +1 -0
  55. package/internal/qs/types.js +3 -0
  56. package/internal/qs/types.js.map +1 -0
  57. package/internal/qs/types.mjs +2 -0
  58. package/internal/qs/types.mjs.map +1 -0
  59. package/internal/qs/utils.d.mts +15 -0
  60. package/internal/qs/utils.d.mts.map +1 -0
  61. package/internal/qs/utils.d.ts +15 -0
  62. package/internal/qs/utils.d.ts.map +1 -0
  63. package/internal/qs/utils.js +230 -0
  64. package/internal/qs/utils.js.map +1 -0
  65. package/internal/qs/utils.mjs +217 -0
  66. package/internal/qs/utils.mjs.map +1 -0
  67. package/package.json +11 -1
  68. package/pagination.d.mts +2 -0
  69. package/pagination.d.mts.map +1 -0
  70. package/pagination.d.ts +2 -0
  71. package/pagination.d.ts.map +1 -0
  72. package/pagination.js +6 -0
  73. package/pagination.js.map +1 -0
  74. package/pagination.mjs +2 -0
  75. package/pagination.mjs.map +1 -0
  76. package/resources/checkout-intents.d.mts +28 -6
  77. package/resources/checkout-intents.d.mts.map +1 -1
  78. package/resources/checkout-intents.d.ts +28 -6
  79. package/resources/checkout-intents.d.ts.map +1 -1
  80. package/resources/checkout-intents.js +25 -4
  81. package/resources/checkout-intents.js.map +1 -1
  82. package/resources/checkout-intents.mjs +25 -4
  83. package/resources/checkout-intents.mjs.map +1 -1
  84. package/resources/index.d.mts +1 -1
  85. package/resources/index.d.mts.map +1 -1
  86. package/resources/index.d.ts +1 -1
  87. package/resources/index.d.ts.map +1 -1
  88. package/resources/index.js.map +1 -1
  89. package/resources/index.mjs.map +1 -1
  90. package/src/client.ts +33 -17
  91. package/src/core/pagination.ts +187 -0
  92. package/src/index.ts +1 -0
  93. package/src/internal/qs/LICENSE.md +13 -0
  94. package/src/internal/qs/README.md +3 -0
  95. package/src/internal/qs/formats.ts +10 -0
  96. package/src/internal/qs/index.ts +13 -0
  97. package/src/internal/qs/stringify.ts +385 -0
  98. package/src/internal/qs/types.ts +71 -0
  99. package/src/internal/qs/utils.ts +265 -0
  100. package/src/pagination.ts +2 -0
  101. package/src/resources/checkout-intents.ts +42 -4
  102. package/src/resources/index.ts +2 -0
  103. package/src/version.ts +1 -1
  104. package/version.d.mts +1 -1
  105. package/version.d.ts +1 -1
  106. package/version.js +1 -1
  107. package/version.mjs +1 -1
@@ -0,0 +1,265 @@
1
+ import { RFC1738 } from './formats';
2
+ import type { DefaultEncoder, Format } from './types';
3
+ import { isArray } from '../utils/values';
4
+
5
+ export let has = (obj: object, key: PropertyKey): boolean => (
6
+ (has = (Object as any).hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),
7
+ has(obj, key)
8
+ );
9
+
10
+ const hex_table = /* @__PURE__ */ (() => {
11
+ const array = [];
12
+ for (let i = 0; i < 256; ++i) {
13
+ array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
14
+ }
15
+
16
+ return array;
17
+ })();
18
+
19
+ function compact_queue<T extends Record<string, any>>(queue: Array<{ obj: T; prop: string }>) {
20
+ while (queue.length > 1) {
21
+ const item = queue.pop();
22
+ if (!item) continue;
23
+
24
+ const obj = item.obj[item.prop];
25
+
26
+ if (isArray(obj)) {
27
+ const compacted: unknown[] = [];
28
+
29
+ for (let j = 0; j < obj.length; ++j) {
30
+ if (typeof obj[j] !== 'undefined') {
31
+ compacted.push(obj[j]);
32
+ }
33
+ }
34
+
35
+ // @ts-ignore
36
+ item.obj[item.prop] = compacted;
37
+ }
38
+ }
39
+ }
40
+
41
+ function array_to_object(source: any[], options: { plainObjects: boolean }) {
42
+ const obj = options && options.plainObjects ? Object.create(null) : {};
43
+ for (let i = 0; i < source.length; ++i) {
44
+ if (typeof source[i] !== 'undefined') {
45
+ obj[i] = source[i];
46
+ }
47
+ }
48
+
49
+ return obj;
50
+ }
51
+
52
+ export function merge(
53
+ target: any,
54
+ source: any,
55
+ options: { plainObjects?: boolean; allowPrototypes?: boolean } = {},
56
+ ) {
57
+ if (!source) {
58
+ return target;
59
+ }
60
+
61
+ if (typeof source !== 'object') {
62
+ if (isArray(target)) {
63
+ target.push(source);
64
+ } else if (target && typeof target === 'object') {
65
+ if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {
66
+ target[source] = true;
67
+ }
68
+ } else {
69
+ return [target, source];
70
+ }
71
+
72
+ return target;
73
+ }
74
+
75
+ if (!target || typeof target !== 'object') {
76
+ return [target].concat(source);
77
+ }
78
+
79
+ let mergeTarget = target;
80
+ if (isArray(target) && !isArray(source)) {
81
+ // @ts-ignore
82
+ mergeTarget = array_to_object(target, options);
83
+ }
84
+
85
+ if (isArray(target) && isArray(source)) {
86
+ source.forEach(function (item, i) {
87
+ if (has(target, i)) {
88
+ const targetItem = target[i];
89
+ if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
90
+ target[i] = merge(targetItem, item, options);
91
+ } else {
92
+ target.push(item);
93
+ }
94
+ } else {
95
+ target[i] = item;
96
+ }
97
+ });
98
+ return target;
99
+ }
100
+
101
+ return Object.keys(source).reduce(function (acc, key) {
102
+ const value = source[key];
103
+
104
+ if (has(acc, key)) {
105
+ acc[key] = merge(acc[key], value, options);
106
+ } else {
107
+ acc[key] = value;
108
+ }
109
+ return acc;
110
+ }, mergeTarget);
111
+ }
112
+
113
+ export function assign_single_source(target: any, source: any) {
114
+ return Object.keys(source).reduce(function (acc, key) {
115
+ acc[key] = source[key];
116
+ return acc;
117
+ }, target);
118
+ }
119
+
120
+ export function decode(str: string, _: any, charset: string) {
121
+ const strWithoutPlus = str.replace(/\+/g, ' ');
122
+ if (charset === 'iso-8859-1') {
123
+ // unescape never throws, no try...catch needed:
124
+ return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
125
+ }
126
+ // utf-8
127
+ try {
128
+ return decodeURIComponent(strWithoutPlus);
129
+ } catch (e) {
130
+ return strWithoutPlus;
131
+ }
132
+ }
133
+
134
+ const limit = 1024;
135
+
136
+ export const encode: (
137
+ str: any,
138
+ defaultEncoder: DefaultEncoder,
139
+ charset: string,
140
+ type: 'key' | 'value',
141
+ format: Format,
142
+ ) => string = (str, _defaultEncoder, charset, _kind, format: Format) => {
143
+ // This code was originally written by Brian White for the io.js core querystring library.
144
+ // It has been adapted here for stricter adherence to RFC 3986
145
+ if (str.length === 0) {
146
+ return str;
147
+ }
148
+
149
+ let string = str;
150
+ if (typeof str === 'symbol') {
151
+ string = Symbol.prototype.toString.call(str);
152
+ } else if (typeof str !== 'string') {
153
+ string = String(str);
154
+ }
155
+
156
+ if (charset === 'iso-8859-1') {
157
+ return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
158
+ return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
159
+ });
160
+ }
161
+
162
+ let out = '';
163
+ for (let j = 0; j < string.length; j += limit) {
164
+ const segment = string.length >= limit ? string.slice(j, j + limit) : string;
165
+ const arr = [];
166
+
167
+ for (let i = 0; i < segment.length; ++i) {
168
+ let c = segment.charCodeAt(i);
169
+ if (
170
+ c === 0x2d || // -
171
+ c === 0x2e || // .
172
+ c === 0x5f || // _
173
+ c === 0x7e || // ~
174
+ (c >= 0x30 && c <= 0x39) || // 0-9
175
+ (c >= 0x41 && c <= 0x5a) || // a-z
176
+ (c >= 0x61 && c <= 0x7a) || // A-Z
177
+ (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )
178
+ ) {
179
+ arr[arr.length] = segment.charAt(i);
180
+ continue;
181
+ }
182
+
183
+ if (c < 0x80) {
184
+ arr[arr.length] = hex_table[c];
185
+ continue;
186
+ }
187
+
188
+ if (c < 0x800) {
189
+ arr[arr.length] = hex_table[0xc0 | (c >> 6)]! + hex_table[0x80 | (c & 0x3f)];
190
+ continue;
191
+ }
192
+
193
+ if (c < 0xd800 || c >= 0xe000) {
194
+ arr[arr.length] =
195
+ hex_table[0xe0 | (c >> 12)]! + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];
196
+ continue;
197
+ }
198
+
199
+ i += 1;
200
+ c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));
201
+
202
+ arr[arr.length] =
203
+ hex_table[0xf0 | (c >> 18)]! +
204
+ hex_table[0x80 | ((c >> 12) & 0x3f)] +
205
+ hex_table[0x80 | ((c >> 6) & 0x3f)] +
206
+ hex_table[0x80 | (c & 0x3f)];
207
+ }
208
+
209
+ out += arr.join('');
210
+ }
211
+
212
+ return out;
213
+ };
214
+
215
+ export function compact(value: any) {
216
+ const queue = [{ obj: { o: value }, prop: 'o' }];
217
+ const refs = [];
218
+
219
+ for (let i = 0; i < queue.length; ++i) {
220
+ const item = queue[i];
221
+ // @ts-ignore
222
+ const obj = item.obj[item.prop];
223
+
224
+ const keys = Object.keys(obj);
225
+ for (let j = 0; j < keys.length; ++j) {
226
+ const key = keys[j]!;
227
+ const val = obj[key];
228
+ if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
229
+ queue.push({ obj: obj, prop: key });
230
+ refs.push(val);
231
+ }
232
+ }
233
+ }
234
+
235
+ compact_queue(queue);
236
+
237
+ return value;
238
+ }
239
+
240
+ export function is_regexp(obj: any) {
241
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
242
+ }
243
+
244
+ export function is_buffer(obj: any) {
245
+ if (!obj || typeof obj !== 'object') {
246
+ return false;
247
+ }
248
+
249
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
250
+ }
251
+
252
+ export function combine(a: any, b: any) {
253
+ return [].concat(a, b);
254
+ }
255
+
256
+ export function maybe_map<T>(val: T[], fn: (v: T) => T) {
257
+ if (isArray(val)) {
258
+ const mapped = [];
259
+ for (let i = 0; i < val.length; i += 1) {
260
+ mapped.push(fn(val[i]!));
261
+ }
262
+ return mapped;
263
+ }
264
+ return fn(val);
265
+ }
@@ -0,0 +1,2 @@
1
+ /** @deprecated Import from ./core/pagination instead */
2
+ export * from './core/pagination';
@@ -4,6 +4,7 @@ import { APIResource } from '../core/resource';
4
4
  import * as CheckoutIntentsAPI from './checkout-intents';
5
5
  import { PollTimeoutError } from '../core/error';
6
6
  import { APIPromise } from '../core/api-promise';
7
+ import { CursorPagination, type CursorPaginationParams, PagePromise } from '../core/pagination';
7
8
  import { RequestOptions } from '../internal/request-options';
8
9
  import { path } from '../internal/utils/path';
9
10
  import { sleep } from '../internal/utils/sleep';
@@ -35,11 +36,11 @@ export class CheckoutIntentsResource extends APIResource {
35
36
  * buyer: {
36
37
  * address1: '123 Main St',
37
38
  * city: 'New York',
38
- * country: 'United States',
39
+ * country: 'US',
39
40
  * email: 'john.doe@example.com',
40
41
  * firstName: 'John',
41
42
  * lastName: 'Doe',
42
- * phone: '+1234567890',
43
+ * phone: '1234567890',
43
44
  * postalCode: '10001',
44
45
  * province: 'NY',
45
46
  * },
@@ -67,6 +68,30 @@ export class CheckoutIntentsResource extends APIResource {
67
68
  return this._client.get(path`/api/v1/checkout-intents/${id}`, options);
68
69
  }
69
70
 
71
+ /**
72
+ * Retrieve a paginated list of checkout intents
73
+ *
74
+ * Enables developers to query checkout intents associated with their account, with
75
+ * filters and cursor-based pagination.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * // Automatically fetches more pages as needed.
80
+ * for await (const checkoutIntent of client.checkoutIntents.list()) {
81
+ * // ...
82
+ * }
83
+ * ```
84
+ */
85
+ list(
86
+ query: CheckoutIntentListParams | null | undefined = {},
87
+ options?: RequestOptions,
88
+ ): PagePromise<CheckoutIntentsCursorPagination, CheckoutIntent> {
89
+ return this._client.getAPIList('/api/v1/checkout-intents', CursorPagination<CheckoutIntent>, {
90
+ query,
91
+ ...options,
92
+ });
93
+ }
94
+
70
95
  /**
71
96
  * Add payment details to a checkout intent
72
97
  *
@@ -281,11 +306,11 @@ export class CheckoutIntentsResource extends APIResource {
281
306
  * buyer: {
282
307
  * address1: '123 Main St',
283
308
  * city: 'New York',
284
- * country: 'United States',
309
+ * country: 'US',
285
310
  * email: 'john.doe@example.com',
286
311
  * firstName: 'John',
287
312
  * lastName: 'Doe',
288
- * phone: '+1234567890',
313
+ * phone: '1234567890',
289
314
  * postalCode: '10001',
290
315
  * province: 'NY',
291
316
  * },
@@ -343,6 +368,8 @@ export class CheckoutIntentsResource extends APIResource {
343
368
  }
344
369
  }
345
370
 
371
+ export type CheckoutIntentsCursorPagination = CursorPagination<CheckoutIntent>;
372
+
346
373
  export interface BaseCheckoutIntent {
347
374
  id: string;
348
375
 
@@ -410,6 +437,8 @@ export namespace CheckoutIntent {
410
437
  export interface CompletedCheckoutIntent extends CheckoutIntentsAPI.BaseCheckoutIntent {
411
438
  offer: CheckoutIntentsAPI.Offer;
412
439
 
440
+ orderId: string | null;
441
+
413
442
  paymentMethod: CheckoutIntentsAPI.PaymentMethod;
414
443
 
415
444
  state: 'completed';
@@ -437,6 +466,7 @@ export namespace CheckoutIntent {
437
466
  | 'developer_not_found'
438
467
  | 'missing_shipping_method'
439
468
  | 'unsupported_currency'
469
+ | 'invalid_input'
440
470
  | 'unsupported_store_no_guest_checkout';
441
471
 
442
472
  message: string;
@@ -530,6 +560,12 @@ export interface CheckoutIntentCreateParams {
530
560
  variantSelections?: Array<VariantSelection>;
531
561
  }
532
562
 
563
+ export interface CheckoutIntentListParams extends CursorPaginationParams {
564
+ id?: Array<string>;
565
+
566
+ state?: Array<'retrieving_offer' | 'awaiting_confirmation' | 'placing_order' | 'completed' | 'failed'>;
567
+ }
568
+
533
569
  export interface CheckoutIntentAddPaymentParams {
534
570
  paymentMethod: PaymentMethod;
535
571
  }
@@ -548,7 +584,9 @@ export declare namespace CheckoutIntentsResource {
548
584
  type PaymentMethod as PaymentMethod,
549
585
  type PollOptions as PollOptions,
550
586
  type VariantSelection as VariantSelection,
587
+ type CheckoutIntentsCursorPagination as CheckoutIntentsCursorPagination,
551
588
  type CheckoutIntentCreateParams as CheckoutIntentCreateParams,
589
+ type CheckoutIntentListParams as CheckoutIntentListParams,
552
590
  type CheckoutIntentAddPaymentParams as CheckoutIntentAddPaymentParams,
553
591
  type CheckoutIntentConfirmParams as CheckoutIntentConfirmParams,
554
592
  };
@@ -11,6 +11,8 @@ export {
11
11
  type PaymentMethod,
12
12
  type VariantSelection,
13
13
  type CheckoutIntentCreateParams,
14
+ type CheckoutIntentListParams,
14
15
  type CheckoutIntentAddPaymentParams,
15
16
  type CheckoutIntentConfirmParams,
17
+ type CheckoutIntentsCursorPagination,
16
18
  } from './checkout-intents';
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.4.0'; // x-release-please-version
1
+ export const VERSION = '0.5.0'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.4.0";
1
+ export declare const VERSION = "0.5.0";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.4.0";
1
+ export declare const VERSION = "0.5.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.4.0'; // x-release-please-version
4
+ exports.VERSION = '0.5.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.4.0'; // x-release-please-version
1
+ export const VERSION = '0.5.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map