@cimplify/sdk 0.2.4 → 0.3.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.
- package/dist/index.d.mts +360 -56
- package/dist/index.d.ts +360 -56
- package/dist/index.js +392 -89
- package/dist/index.mjs +376 -90
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// src/types/common.ts
|
|
4
|
+
var ErrorCode = {
|
|
5
|
+
// General
|
|
6
|
+
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
7
|
+
NETWORK_ERROR: "NETWORK_ERROR",
|
|
8
|
+
TIMEOUT: "TIMEOUT",
|
|
9
|
+
UNAUTHORIZED: "UNAUTHORIZED",
|
|
10
|
+
FORBIDDEN: "FORBIDDEN",
|
|
11
|
+
NOT_FOUND: "NOT_FOUND",
|
|
12
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
13
|
+
// Cart
|
|
14
|
+
CART_EMPTY: "CART_EMPTY",
|
|
15
|
+
CART_EXPIRED: "CART_EXPIRED",
|
|
16
|
+
CART_NOT_FOUND: "CART_NOT_FOUND",
|
|
17
|
+
ITEM_UNAVAILABLE: "ITEM_UNAVAILABLE",
|
|
18
|
+
VARIANT_NOT_FOUND: "VARIANT_NOT_FOUND",
|
|
19
|
+
VARIANT_OUT_OF_STOCK: "VARIANT_OUT_OF_STOCK",
|
|
20
|
+
ADDON_REQUIRED: "ADDON_REQUIRED",
|
|
21
|
+
ADDON_MAX_EXCEEDED: "ADDON_MAX_EXCEEDED",
|
|
22
|
+
// Checkout
|
|
23
|
+
CHECKOUT_VALIDATION_FAILED: "CHECKOUT_VALIDATION_FAILED",
|
|
24
|
+
DELIVERY_ADDRESS_REQUIRED: "DELIVERY_ADDRESS_REQUIRED",
|
|
25
|
+
CUSTOMER_INFO_REQUIRED: "CUSTOMER_INFO_REQUIRED",
|
|
26
|
+
// Payment
|
|
27
|
+
PAYMENT_FAILED: "PAYMENT_FAILED",
|
|
28
|
+
PAYMENT_CANCELLED: "PAYMENT_CANCELLED",
|
|
29
|
+
INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS",
|
|
30
|
+
CARD_DECLINED: "CARD_DECLINED",
|
|
31
|
+
INVALID_OTP: "INVALID_OTP",
|
|
32
|
+
OTP_EXPIRED: "OTP_EXPIRED",
|
|
33
|
+
AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED",
|
|
34
|
+
PAYMENT_ACTION_NOT_COMPLETED: "PAYMENT_ACTION_NOT_COMPLETED",
|
|
35
|
+
// Scheduling
|
|
36
|
+
SLOT_UNAVAILABLE: "SLOT_UNAVAILABLE",
|
|
37
|
+
BOOKING_CONFLICT: "BOOKING_CONFLICT",
|
|
38
|
+
SERVICE_NOT_FOUND: "SERVICE_NOT_FOUND",
|
|
39
|
+
// Inventory
|
|
40
|
+
OUT_OF_STOCK: "OUT_OF_STOCK",
|
|
41
|
+
INSUFFICIENT_QUANTITY: "INSUFFICIENT_QUANTITY"
|
|
42
|
+
};
|
|
4
43
|
var CimplifyError = class extends Error {
|
|
5
44
|
constructor(code, message, retryable = false) {
|
|
6
45
|
super(message);
|
|
@@ -8,7 +47,24 @@ var CimplifyError = class extends Error {
|
|
|
8
47
|
this.retryable = retryable;
|
|
9
48
|
this.name = "CimplifyError";
|
|
10
49
|
}
|
|
50
|
+
/** User-friendly message safe to display */
|
|
51
|
+
get userMessage() {
|
|
52
|
+
return this.message;
|
|
53
|
+
}
|
|
11
54
|
};
|
|
55
|
+
function isCimplifyError(error) {
|
|
56
|
+
return error instanceof CimplifyError;
|
|
57
|
+
}
|
|
58
|
+
function isRetryableError(error) {
|
|
59
|
+
if (isCimplifyError(error)) {
|
|
60
|
+
return error.retryable;
|
|
61
|
+
}
|
|
62
|
+
if (error instanceof Error) {
|
|
63
|
+
const msg = error.message.toLowerCase();
|
|
64
|
+
return msg.includes("network") || msg.includes("timeout") || msg.includes("fetch");
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
12
68
|
|
|
13
69
|
// src/catalogue.ts
|
|
14
70
|
var CatalogueQueries = class {
|
|
@@ -220,7 +276,91 @@ var CatalogueQueries = class {
|
|
|
220
276
|
}
|
|
221
277
|
};
|
|
222
278
|
|
|
279
|
+
// src/types/result.ts
|
|
280
|
+
function ok(value) {
|
|
281
|
+
return { ok: true, value };
|
|
282
|
+
}
|
|
283
|
+
function err(error) {
|
|
284
|
+
return { ok: false, error };
|
|
285
|
+
}
|
|
286
|
+
function isOk(result) {
|
|
287
|
+
return result.ok === true;
|
|
288
|
+
}
|
|
289
|
+
function isErr(result) {
|
|
290
|
+
return result.ok === false;
|
|
291
|
+
}
|
|
292
|
+
function mapResult(result, fn) {
|
|
293
|
+
return result.ok ? ok(fn(result.value)) : result;
|
|
294
|
+
}
|
|
295
|
+
function mapError(result, fn) {
|
|
296
|
+
return result.ok ? result : err(fn(result.error));
|
|
297
|
+
}
|
|
298
|
+
function flatMap(result, fn) {
|
|
299
|
+
return result.ok ? fn(result.value) : result;
|
|
300
|
+
}
|
|
301
|
+
function getOrElse(result, defaultFn) {
|
|
302
|
+
return result.ok ? result.value : defaultFn();
|
|
303
|
+
}
|
|
304
|
+
function unwrap(result) {
|
|
305
|
+
if (result.ok) {
|
|
306
|
+
return result.value;
|
|
307
|
+
}
|
|
308
|
+
throw result.error;
|
|
309
|
+
}
|
|
310
|
+
function toNullable(result) {
|
|
311
|
+
return result.ok ? result.value : void 0;
|
|
312
|
+
}
|
|
313
|
+
async function fromPromise(promise, mapError2) {
|
|
314
|
+
try {
|
|
315
|
+
const value = await promise;
|
|
316
|
+
return ok(value);
|
|
317
|
+
} catch (error) {
|
|
318
|
+
return err(mapError2(error));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function tryCatch(fn, mapError2) {
|
|
322
|
+
try {
|
|
323
|
+
return ok(fn());
|
|
324
|
+
} catch (error) {
|
|
325
|
+
return err(mapError2(error));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function combine(results) {
|
|
329
|
+
const values = [];
|
|
330
|
+
for (const result of results) {
|
|
331
|
+
if (!result.ok) {
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
values.push(result.value);
|
|
335
|
+
}
|
|
336
|
+
return ok(values);
|
|
337
|
+
}
|
|
338
|
+
function combineObject(results) {
|
|
339
|
+
const values = {};
|
|
340
|
+
for (const [key, result] of Object.entries(results)) {
|
|
341
|
+
if (!result.ok) {
|
|
342
|
+
return result;
|
|
343
|
+
}
|
|
344
|
+
values[key] = result.value;
|
|
345
|
+
}
|
|
346
|
+
return ok(values);
|
|
347
|
+
}
|
|
348
|
+
|
|
223
349
|
// src/cart.ts
|
|
350
|
+
function toCimplifyError(error) {
|
|
351
|
+
if (error instanceof CimplifyError) return error;
|
|
352
|
+
if (error instanceof Error) {
|
|
353
|
+
return new CimplifyError("UNKNOWN_ERROR", error.message, false);
|
|
354
|
+
}
|
|
355
|
+
return new CimplifyError("UNKNOWN_ERROR", String(error), false);
|
|
356
|
+
}
|
|
357
|
+
async function safe(promise) {
|
|
358
|
+
try {
|
|
359
|
+
return ok(await promise);
|
|
360
|
+
} catch (error) {
|
|
361
|
+
return err(toCimplifyError(error));
|
|
362
|
+
}
|
|
363
|
+
}
|
|
224
364
|
var CartOperations = class {
|
|
225
365
|
constructor(client) {
|
|
226
366
|
this.client = client;
|
|
@@ -233,23 +373,25 @@ var CartOperations = class {
|
|
|
233
373
|
* This is the main method for storefront display.
|
|
234
374
|
*/
|
|
235
375
|
async get() {
|
|
236
|
-
return this.client.query("cart#enriched");
|
|
376
|
+
return safe(this.client.query("cart#enriched"));
|
|
237
377
|
}
|
|
238
378
|
async getRaw() {
|
|
239
|
-
return this.client.query("cart");
|
|
379
|
+
return safe(this.client.query("cart"));
|
|
240
380
|
}
|
|
241
381
|
async getItems() {
|
|
242
|
-
return this.client.query("cart_items");
|
|
382
|
+
return safe(this.client.query("cart_items"));
|
|
243
383
|
}
|
|
244
384
|
async getCount() {
|
|
245
|
-
return this.client.query("cart#count");
|
|
385
|
+
return safe(this.client.query("cart#count"));
|
|
246
386
|
}
|
|
247
387
|
async getTotal() {
|
|
248
|
-
return this.client.query("cart#total");
|
|
388
|
+
return safe(this.client.query("cart#total"));
|
|
249
389
|
}
|
|
250
390
|
async getSummary() {
|
|
251
|
-
const
|
|
252
|
-
return
|
|
391
|
+
const cartResult = await this.get();
|
|
392
|
+
if (!cartResult.ok) return cartResult;
|
|
393
|
+
const cart = cartResult.value;
|
|
394
|
+
return ok({
|
|
253
395
|
item_count: cart.items.length,
|
|
254
396
|
total_items: cart.items.reduce((sum, item) => sum + item.quantity, 0),
|
|
255
397
|
subtotal: cart.pricing.subtotal,
|
|
@@ -257,55 +399,89 @@ var CartOperations = class {
|
|
|
257
399
|
tax_amount: cart.pricing.tax_amount,
|
|
258
400
|
total: cart.pricing.total_price,
|
|
259
401
|
currency: cart.pricing.currency
|
|
260
|
-
};
|
|
402
|
+
});
|
|
261
403
|
}
|
|
262
404
|
// --------------------------------------------------------------------------
|
|
263
405
|
// CART MUTATIONS
|
|
264
406
|
// --------------------------------------------------------------------------
|
|
407
|
+
/**
|
|
408
|
+
* Add an item to the cart.
|
|
409
|
+
*
|
|
410
|
+
* @example
|
|
411
|
+
* ```typescript
|
|
412
|
+
* const result = await client.cart.addItem({
|
|
413
|
+
* item_id: "prod_burger",
|
|
414
|
+
* quantity: 2,
|
|
415
|
+
* variant_id: "var_large",
|
|
416
|
+
* add_on_options: ["addon_cheese", "addon_bacon"],
|
|
417
|
+
* });
|
|
418
|
+
*
|
|
419
|
+
* if (!result.ok) {
|
|
420
|
+
* switch (result.error.code) {
|
|
421
|
+
* case ErrorCode.ITEM_UNAVAILABLE:
|
|
422
|
+
* toast.error("Item no longer available");
|
|
423
|
+
* break;
|
|
424
|
+
* case ErrorCode.VARIANT_OUT_OF_STOCK:
|
|
425
|
+
* toast.error("Selected option is out of stock");
|
|
426
|
+
* break;
|
|
427
|
+
* }
|
|
428
|
+
* }
|
|
429
|
+
* ```
|
|
430
|
+
*/
|
|
265
431
|
async addItem(input) {
|
|
266
|
-
return this.client.call("cart.addItem", input);
|
|
432
|
+
return safe(this.client.call("cart.addItem", input));
|
|
267
433
|
}
|
|
268
434
|
async updateItem(cartItemId, updates) {
|
|
269
|
-
return
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
435
|
+
return safe(
|
|
436
|
+
this.client.call("cart.updateItem", {
|
|
437
|
+
cart_item_id: cartItemId,
|
|
438
|
+
...updates
|
|
439
|
+
})
|
|
440
|
+
);
|
|
273
441
|
}
|
|
274
442
|
async updateQuantity(cartItemId, quantity) {
|
|
275
|
-
return
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
443
|
+
return safe(
|
|
444
|
+
this.client.call("cart.updateItemQuantity", {
|
|
445
|
+
cart_item_id: cartItemId,
|
|
446
|
+
quantity
|
|
447
|
+
})
|
|
448
|
+
);
|
|
279
449
|
}
|
|
280
450
|
async removeItem(cartItemId) {
|
|
281
|
-
return
|
|
282
|
-
|
|
283
|
-
|
|
451
|
+
return safe(
|
|
452
|
+
this.client.call("cart.removeItem", {
|
|
453
|
+
cart_item_id: cartItemId
|
|
454
|
+
})
|
|
455
|
+
);
|
|
284
456
|
}
|
|
285
457
|
async clear() {
|
|
286
|
-
return this.client.call("cart.clearCart");
|
|
458
|
+
return safe(this.client.call("cart.clearCart"));
|
|
287
459
|
}
|
|
288
460
|
// --------------------------------------------------------------------------
|
|
289
461
|
// COUPONS & DISCOUNTS
|
|
290
462
|
// --------------------------------------------------------------------------
|
|
291
463
|
async applyCoupon(code) {
|
|
292
|
-
return
|
|
293
|
-
|
|
294
|
-
|
|
464
|
+
return safe(
|
|
465
|
+
this.client.call("cart.applyCoupon", {
|
|
466
|
+
coupon_code: code
|
|
467
|
+
})
|
|
468
|
+
);
|
|
295
469
|
}
|
|
296
470
|
async removeCoupon() {
|
|
297
|
-
return this.client.call("cart.removeCoupon");
|
|
471
|
+
return safe(this.client.call("cart.removeCoupon"));
|
|
298
472
|
}
|
|
299
473
|
// --------------------------------------------------------------------------
|
|
300
474
|
// CONVENIENCE METHODS
|
|
301
475
|
// --------------------------------------------------------------------------
|
|
302
476
|
async isEmpty() {
|
|
303
|
-
const
|
|
304
|
-
|
|
477
|
+
const countResult = await this.getCount();
|
|
478
|
+
if (!countResult.ok) return countResult;
|
|
479
|
+
return ok(countResult.value === 0);
|
|
305
480
|
}
|
|
306
481
|
async hasItem(productId, variantId) {
|
|
307
|
-
const
|
|
308
|
-
|
|
482
|
+
const itemsResult = await this.getItems();
|
|
483
|
+
if (!itemsResult.ok) return itemsResult;
|
|
484
|
+
const found = itemsResult.value.some((item) => {
|
|
309
485
|
const matchesProduct = item.item_id === productId;
|
|
310
486
|
if (!variantId) return matchesProduct;
|
|
311
487
|
const config = item.configuration;
|
|
@@ -314,10 +490,12 @@ var CartOperations = class {
|
|
|
314
490
|
}
|
|
315
491
|
return matchesProduct;
|
|
316
492
|
});
|
|
493
|
+
return ok(found);
|
|
317
494
|
}
|
|
318
495
|
async findItem(productId, variantId) {
|
|
319
|
-
const
|
|
320
|
-
|
|
496
|
+
const itemsResult = await this.getItems();
|
|
497
|
+
if (!itemsResult.ok) return itemsResult;
|
|
498
|
+
const found = itemsResult.value.find((item) => {
|
|
321
499
|
const matchesProduct = item.item_id === productId;
|
|
322
500
|
if (!variantId) return matchesProduct;
|
|
323
501
|
const config = item.configuration;
|
|
@@ -326,6 +504,7 @@ var CartOperations = class {
|
|
|
326
504
|
}
|
|
327
505
|
return matchesProduct;
|
|
328
506
|
});
|
|
507
|
+
return ok(found);
|
|
329
508
|
}
|
|
330
509
|
};
|
|
331
510
|
|
|
@@ -420,37 +599,88 @@ var DEFAULT_CURRENCY = "GHS";
|
|
|
420
599
|
var DEFAULT_COUNTRY = "GHA";
|
|
421
600
|
|
|
422
601
|
// src/checkout.ts
|
|
602
|
+
function toCimplifyError2(error) {
|
|
603
|
+
if (error instanceof CimplifyError) return error;
|
|
604
|
+
if (error instanceof Error) {
|
|
605
|
+
return new CimplifyError("UNKNOWN_ERROR", error.message, false);
|
|
606
|
+
}
|
|
607
|
+
return new CimplifyError("UNKNOWN_ERROR", String(error), false);
|
|
608
|
+
}
|
|
609
|
+
async function safe2(promise) {
|
|
610
|
+
try {
|
|
611
|
+
return ok(await promise);
|
|
612
|
+
} catch (error) {
|
|
613
|
+
return err(toCimplifyError2(error));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
423
616
|
var CheckoutService = class {
|
|
424
617
|
constructor(client) {
|
|
425
618
|
this.client = client;
|
|
426
619
|
}
|
|
620
|
+
/**
|
|
621
|
+
* Process checkout with cart data.
|
|
622
|
+
*
|
|
623
|
+
* @example
|
|
624
|
+
* ```typescript
|
|
625
|
+
* const result = await client.checkout.process({
|
|
626
|
+
* cart_id: cart.id,
|
|
627
|
+
* customer: { name, email, phone, save_details: true },
|
|
628
|
+
* order_type: "pickup",
|
|
629
|
+
* payment_method: "mobile_money",
|
|
630
|
+
* mobile_money_details: { phone_number, provider: "mtn" },
|
|
631
|
+
* });
|
|
632
|
+
*
|
|
633
|
+
* if (!result.ok) {
|
|
634
|
+
* switch (result.error.code) {
|
|
635
|
+
* case ErrorCode.CART_EMPTY:
|
|
636
|
+
* toast.error("Your cart is empty");
|
|
637
|
+
* break;
|
|
638
|
+
* case ErrorCode.PAYMENT_FAILED:
|
|
639
|
+
* toast.error("Payment failed. Please try again.");
|
|
640
|
+
* break;
|
|
641
|
+
* }
|
|
642
|
+
* }
|
|
643
|
+
* ```
|
|
644
|
+
*/
|
|
427
645
|
async process(data) {
|
|
428
|
-
return
|
|
429
|
-
|
|
430
|
-
|
|
646
|
+
return safe2(
|
|
647
|
+
this.client.call(CHECKOUT_MUTATION.PROCESS, {
|
|
648
|
+
checkout_data: data
|
|
649
|
+
})
|
|
650
|
+
);
|
|
431
651
|
}
|
|
432
652
|
async initializePayment(orderId, method) {
|
|
433
|
-
return
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
653
|
+
return safe2(
|
|
654
|
+
this.client.call("order.initializePayment", {
|
|
655
|
+
order_id: orderId,
|
|
656
|
+
payment_method: method
|
|
657
|
+
})
|
|
658
|
+
);
|
|
437
659
|
}
|
|
438
660
|
async submitAuthorization(input) {
|
|
439
|
-
return
|
|
661
|
+
return safe2(
|
|
662
|
+
this.client.call(PAYMENT_MUTATION.SUBMIT_AUTHORIZATION, input)
|
|
663
|
+
);
|
|
440
664
|
}
|
|
441
665
|
async pollPaymentStatus(orderId) {
|
|
442
|
-
return
|
|
666
|
+
return safe2(
|
|
667
|
+
this.client.call(PAYMENT_MUTATION.CHECK_STATUS, orderId)
|
|
668
|
+
);
|
|
443
669
|
}
|
|
444
670
|
async updateOrderCustomer(orderId, customer) {
|
|
445
|
-
return
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
671
|
+
return safe2(
|
|
672
|
+
this.client.call(ORDER_MUTATION.UPDATE_CUSTOMER, {
|
|
673
|
+
order_id: orderId,
|
|
674
|
+
...customer
|
|
675
|
+
})
|
|
676
|
+
);
|
|
449
677
|
}
|
|
450
678
|
async verifyPayment(orderId) {
|
|
451
|
-
return
|
|
452
|
-
|
|
453
|
-
|
|
679
|
+
return safe2(
|
|
680
|
+
this.client.call("order.verifyPayment", {
|
|
681
|
+
order_id: orderId
|
|
682
|
+
})
|
|
683
|
+
);
|
|
454
684
|
}
|
|
455
685
|
};
|
|
456
686
|
|
|
@@ -491,117 +721,173 @@ var OrderQueries = class {
|
|
|
491
721
|
};
|
|
492
722
|
|
|
493
723
|
// src/link.ts
|
|
724
|
+
function toCimplifyError3(error) {
|
|
725
|
+
if (error instanceof CimplifyError) return error;
|
|
726
|
+
if (error instanceof Error) {
|
|
727
|
+
return new CimplifyError("UNKNOWN_ERROR", error.message, false);
|
|
728
|
+
}
|
|
729
|
+
return new CimplifyError("UNKNOWN_ERROR", String(error), false);
|
|
730
|
+
}
|
|
731
|
+
async function safe3(promise) {
|
|
732
|
+
try {
|
|
733
|
+
return ok(await promise);
|
|
734
|
+
} catch (error) {
|
|
735
|
+
return err(toCimplifyError3(error));
|
|
736
|
+
}
|
|
737
|
+
}
|
|
494
738
|
var LinkService = class {
|
|
495
739
|
constructor(client) {
|
|
496
740
|
this.client = client;
|
|
497
741
|
}
|
|
742
|
+
// --------------------------------------------------------------------------
|
|
743
|
+
// AUTHENTICATION
|
|
744
|
+
// --------------------------------------------------------------------------
|
|
498
745
|
async requestOtp(input) {
|
|
499
|
-
return this.client.linkPost("/v1/link/auth/request-otp", input);
|
|
746
|
+
return safe3(this.client.linkPost("/v1/link/auth/request-otp", input));
|
|
500
747
|
}
|
|
501
748
|
async verifyOtp(input) {
|
|
502
|
-
const
|
|
503
|
-
|
|
504
|
-
|
|
749
|
+
const result = await safe3(
|
|
750
|
+
this.client.linkPost("/v1/link/auth/verify-otp", input)
|
|
751
|
+
);
|
|
752
|
+
if (result.ok && result.value.session_token) {
|
|
753
|
+
this.client.setSessionToken(result.value.session_token);
|
|
505
754
|
}
|
|
506
|
-
return
|
|
755
|
+
return result;
|
|
507
756
|
}
|
|
508
757
|
async logout() {
|
|
509
|
-
const result = await this.client.linkPost("/v1/link/auth/logout");
|
|
510
|
-
|
|
758
|
+
const result = await safe3(this.client.linkPost("/v1/link/auth/logout"));
|
|
759
|
+
if (result.ok) {
|
|
760
|
+
this.client.clearSession();
|
|
761
|
+
}
|
|
511
762
|
return result;
|
|
512
763
|
}
|
|
764
|
+
// --------------------------------------------------------------------------
|
|
765
|
+
// STATUS & DATA
|
|
766
|
+
// --------------------------------------------------------------------------
|
|
513
767
|
async checkStatus(contact) {
|
|
514
|
-
return
|
|
515
|
-
|
|
516
|
-
|
|
768
|
+
return safe3(
|
|
769
|
+
this.client.call(LINK_MUTATION.CHECK_STATUS, {
|
|
770
|
+
contact
|
|
771
|
+
})
|
|
772
|
+
);
|
|
517
773
|
}
|
|
518
774
|
async getLinkData() {
|
|
519
|
-
return this.client.query(LINK_QUERY.DATA);
|
|
775
|
+
return safe3(this.client.query(LINK_QUERY.DATA));
|
|
520
776
|
}
|
|
521
777
|
async getAddresses() {
|
|
522
|
-
return this.client.query(LINK_QUERY.ADDRESSES);
|
|
778
|
+
return safe3(this.client.query(LINK_QUERY.ADDRESSES));
|
|
523
779
|
}
|
|
524
780
|
async getMobileMoney() {
|
|
525
|
-
return this.client.query(LINK_QUERY.MOBILE_MONEY);
|
|
781
|
+
return safe3(this.client.query(LINK_QUERY.MOBILE_MONEY));
|
|
526
782
|
}
|
|
527
783
|
async getPreferences() {
|
|
528
|
-
return this.client.query(LINK_QUERY.PREFERENCES);
|
|
784
|
+
return safe3(this.client.query(LINK_QUERY.PREFERENCES));
|
|
529
785
|
}
|
|
786
|
+
// --------------------------------------------------------------------------
|
|
787
|
+
// ENROLLMENT
|
|
788
|
+
// --------------------------------------------------------------------------
|
|
530
789
|
async enroll(data) {
|
|
531
|
-
return this.client.call(LINK_MUTATION.ENROLL, data);
|
|
790
|
+
return safe3(this.client.call(LINK_MUTATION.ENROLL, data));
|
|
532
791
|
}
|
|
533
792
|
async enrollAndLinkOrder(data) {
|
|
534
|
-
return
|
|
793
|
+
return safe3(
|
|
794
|
+
this.client.call(LINK_MUTATION.ENROLL_AND_LINK_ORDER, data)
|
|
795
|
+
);
|
|
535
796
|
}
|
|
797
|
+
// --------------------------------------------------------------------------
|
|
798
|
+
// PREFERENCES
|
|
799
|
+
// --------------------------------------------------------------------------
|
|
536
800
|
async updatePreferences(preferences) {
|
|
537
|
-
return this.client.call(LINK_MUTATION.UPDATE_PREFERENCES, preferences);
|
|
801
|
+
return safe3(this.client.call(LINK_MUTATION.UPDATE_PREFERENCES, preferences));
|
|
538
802
|
}
|
|
803
|
+
// --------------------------------------------------------------------------
|
|
804
|
+
// ADDRESSES
|
|
805
|
+
// --------------------------------------------------------------------------
|
|
539
806
|
async createAddress(input) {
|
|
540
|
-
return this.client.call(LINK_MUTATION.CREATE_ADDRESS, input);
|
|
807
|
+
return safe3(this.client.call(LINK_MUTATION.CREATE_ADDRESS, input));
|
|
541
808
|
}
|
|
542
809
|
async updateAddress(input) {
|
|
543
|
-
return this.client.call(LINK_MUTATION.UPDATE_ADDRESS, input);
|
|
810
|
+
return safe3(this.client.call(LINK_MUTATION.UPDATE_ADDRESS, input));
|
|
544
811
|
}
|
|
545
812
|
async deleteAddress(addressId) {
|
|
546
|
-
return this.client.call(LINK_MUTATION.DELETE_ADDRESS, addressId);
|
|
813
|
+
return safe3(this.client.call(LINK_MUTATION.DELETE_ADDRESS, addressId));
|
|
547
814
|
}
|
|
548
815
|
async setDefaultAddress(addressId) {
|
|
549
|
-
return this.client.call(LINK_MUTATION.SET_DEFAULT_ADDRESS, addressId);
|
|
816
|
+
return safe3(this.client.call(LINK_MUTATION.SET_DEFAULT_ADDRESS, addressId));
|
|
550
817
|
}
|
|
551
818
|
async trackAddressUsage(addressId) {
|
|
552
|
-
return
|
|
553
|
-
|
|
554
|
-
|
|
819
|
+
return safe3(
|
|
820
|
+
this.client.call(LINK_MUTATION.TRACK_ADDRESS_USAGE, {
|
|
821
|
+
address_id: addressId
|
|
822
|
+
})
|
|
823
|
+
);
|
|
555
824
|
}
|
|
825
|
+
// --------------------------------------------------------------------------
|
|
826
|
+
// MOBILE MONEY
|
|
827
|
+
// --------------------------------------------------------------------------
|
|
556
828
|
async createMobileMoney(input) {
|
|
557
|
-
return this.client.call(LINK_MUTATION.CREATE_MOBILE_MONEY, input);
|
|
829
|
+
return safe3(this.client.call(LINK_MUTATION.CREATE_MOBILE_MONEY, input));
|
|
558
830
|
}
|
|
559
831
|
async deleteMobileMoney(mobileMoneyId) {
|
|
560
|
-
return this.client.call(LINK_MUTATION.DELETE_MOBILE_MONEY, mobileMoneyId);
|
|
832
|
+
return safe3(this.client.call(LINK_MUTATION.DELETE_MOBILE_MONEY, mobileMoneyId));
|
|
561
833
|
}
|
|
562
834
|
async setDefaultMobileMoney(mobileMoneyId) {
|
|
563
|
-
return
|
|
835
|
+
return safe3(
|
|
836
|
+
this.client.call(LINK_MUTATION.SET_DEFAULT_MOBILE_MONEY, mobileMoneyId)
|
|
837
|
+
);
|
|
564
838
|
}
|
|
565
839
|
async trackMobileMoneyUsage(mobileMoneyId) {
|
|
566
|
-
return
|
|
567
|
-
|
|
568
|
-
|
|
840
|
+
return safe3(
|
|
841
|
+
this.client.call(LINK_MUTATION.TRACK_MOBILE_MONEY_USAGE, {
|
|
842
|
+
mobile_money_id: mobileMoneyId
|
|
843
|
+
})
|
|
844
|
+
);
|
|
569
845
|
}
|
|
570
846
|
async verifyMobileMoney(mobileMoneyId) {
|
|
571
|
-
return
|
|
847
|
+
return safe3(
|
|
848
|
+
this.client.call(LINK_MUTATION.VERIFY_MOBILE_MONEY, mobileMoneyId)
|
|
849
|
+
);
|
|
572
850
|
}
|
|
851
|
+
// --------------------------------------------------------------------------
|
|
852
|
+
// SESSIONS
|
|
853
|
+
// --------------------------------------------------------------------------
|
|
573
854
|
async getSessions() {
|
|
574
|
-
return this.client.linkGet("/v1/link/sessions");
|
|
855
|
+
return safe3(this.client.linkGet("/v1/link/sessions"));
|
|
575
856
|
}
|
|
576
857
|
async revokeSession(sessionId) {
|
|
577
|
-
return this.client.linkDelete(`/v1/link/sessions/${sessionId}`);
|
|
858
|
+
return safe3(this.client.linkDelete(`/v1/link/sessions/${sessionId}`));
|
|
578
859
|
}
|
|
579
860
|
async revokeAllSessions() {
|
|
580
|
-
return this.client.linkDelete("/v1/link/sessions");
|
|
861
|
+
return safe3(this.client.linkDelete("/v1/link/sessions"));
|
|
581
862
|
}
|
|
863
|
+
// --------------------------------------------------------------------------
|
|
864
|
+
// REST ALTERNATIVES (for direct API access)
|
|
865
|
+
// --------------------------------------------------------------------------
|
|
582
866
|
async getAddressesRest() {
|
|
583
|
-
return this.client.linkGet("/v1/link/addresses");
|
|
867
|
+
return safe3(this.client.linkGet("/v1/link/addresses"));
|
|
584
868
|
}
|
|
585
869
|
async createAddressRest(input) {
|
|
586
|
-
return this.client.linkPost("/v1/link/addresses", input);
|
|
870
|
+
return safe3(this.client.linkPost("/v1/link/addresses", input));
|
|
587
871
|
}
|
|
588
872
|
async deleteAddressRest(addressId) {
|
|
589
|
-
return this.client.linkDelete(`/v1/link/addresses/${addressId}`);
|
|
873
|
+
return safe3(this.client.linkDelete(`/v1/link/addresses/${addressId}`));
|
|
590
874
|
}
|
|
591
875
|
async setDefaultAddressRest(addressId) {
|
|
592
|
-
return this.client.linkPost(`/v1/link/addresses/${addressId}/default`);
|
|
876
|
+
return safe3(this.client.linkPost(`/v1/link/addresses/${addressId}/default`));
|
|
593
877
|
}
|
|
594
878
|
async getMobileMoneyRest() {
|
|
595
|
-
return this.client.linkGet("/v1/link/mobile-money");
|
|
879
|
+
return safe3(this.client.linkGet("/v1/link/mobile-money"));
|
|
596
880
|
}
|
|
597
881
|
async createMobileMoneyRest(input) {
|
|
598
|
-
return this.client.linkPost("/v1/link/mobile-money", input);
|
|
882
|
+
return safe3(this.client.linkPost("/v1/link/mobile-money", input));
|
|
599
883
|
}
|
|
600
884
|
async deleteMobileMoneyRest(mobileMoneyId) {
|
|
601
|
-
return this.client.linkDelete(`/v1/link/mobile-money/${mobileMoneyId}`);
|
|
885
|
+
return safe3(this.client.linkDelete(`/v1/link/mobile-money/${mobileMoneyId}`));
|
|
602
886
|
}
|
|
603
887
|
async setDefaultMobileMoneyRest(mobileMoneyId) {
|
|
604
|
-
return
|
|
888
|
+
return safe3(
|
|
889
|
+
this.client.linkPost(`/v1/link/mobile-money/${mobileMoneyId}/default`)
|
|
890
|
+
);
|
|
605
891
|
}
|
|
606
892
|
};
|
|
607
893
|
|
|
@@ -1744,6 +2030,7 @@ exports.CimplifyClient = CimplifyClient;
|
|
|
1744
2030
|
exports.CimplifyError = CimplifyError;
|
|
1745
2031
|
exports.DEFAULT_COUNTRY = DEFAULT_COUNTRY;
|
|
1746
2032
|
exports.DEFAULT_CURRENCY = DEFAULT_CURRENCY;
|
|
2033
|
+
exports.ErrorCode = ErrorCode;
|
|
1747
2034
|
exports.InventoryService = InventoryService;
|
|
1748
2035
|
exports.LINK_MUTATION = LINK_MUTATION;
|
|
1749
2036
|
exports.LINK_QUERY = LINK_QUERY;
|
|
@@ -1761,25 +2048,41 @@ exports.PICKUP_TIME_TYPE = PICKUP_TIME_TYPE;
|
|
|
1761
2048
|
exports.QueryBuilder = QueryBuilder;
|
|
1762
2049
|
exports.SchedulingService = SchedulingService;
|
|
1763
2050
|
exports.categorizePaymentError = categorizePaymentError;
|
|
2051
|
+
exports.combine = combine;
|
|
2052
|
+
exports.combineObject = combineObject;
|
|
1764
2053
|
exports.createCimplifyClient = createCimplifyClient;
|
|
1765
2054
|
exports.detectMobileMoneyProvider = detectMobileMoneyProvider;
|
|
2055
|
+
exports.err = err;
|
|
1766
2056
|
exports.extractPriceInfo = extractPriceInfo;
|
|
2057
|
+
exports.flatMap = flatMap;
|
|
1767
2058
|
exports.formatMoney = formatMoney;
|
|
1768
2059
|
exports.formatNumberCompact = formatNumberCompact;
|
|
1769
2060
|
exports.formatPrice = formatPrice;
|
|
1770
2061
|
exports.formatPriceAdjustment = formatPriceAdjustment;
|
|
1771
2062
|
exports.formatPriceCompact = formatPriceCompact;
|
|
1772
2063
|
exports.formatProductPrice = formatProductPrice;
|
|
2064
|
+
exports.fromPromise = fromPromise;
|
|
1773
2065
|
exports.getBasePrice = getBasePrice;
|
|
1774
2066
|
exports.getCurrencySymbol = getCurrencySymbol;
|
|
1775
2067
|
exports.getDiscountPercentage = getDiscountPercentage;
|
|
1776
2068
|
exports.getDisplayPrice = getDisplayPrice;
|
|
1777
2069
|
exports.getMarkupPercentage = getMarkupPercentage;
|
|
2070
|
+
exports.getOrElse = getOrElse;
|
|
1778
2071
|
exports.getProductCurrency = getProductCurrency;
|
|
2072
|
+
exports.isCimplifyError = isCimplifyError;
|
|
2073
|
+
exports.isErr = isErr;
|
|
2074
|
+
exports.isOk = isOk;
|
|
1779
2075
|
exports.isOnSale = isOnSale;
|
|
2076
|
+
exports.isRetryableError = isRetryableError;
|
|
2077
|
+
exports.mapError = mapError;
|
|
2078
|
+
exports.mapResult = mapResult;
|
|
1780
2079
|
exports.normalizePaymentResponse = normalizePaymentResponse;
|
|
1781
2080
|
exports.normalizeStatusResponse = normalizeStatusResponse;
|
|
2081
|
+
exports.ok = ok;
|
|
1782
2082
|
exports.parsePrice = parsePrice;
|
|
1783
2083
|
exports.parsePricePath = parsePricePath;
|
|
1784
2084
|
exports.parsedPriceToPriceInfo = parsedPriceToPriceInfo;
|
|
1785
2085
|
exports.query = query;
|
|
2086
|
+
exports.toNullable = toNullable;
|
|
2087
|
+
exports.tryCatch = tryCatch;
|
|
2088
|
+
exports.unwrap = unwrap;
|