@instockng/api-client 1.0.5 → 1.0.7

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 (49) hide show
  1. package/dist/apps/backend/src/lib/meta-capi.d.ts +1 -1
  2. package/dist/apps/backend/src/lib/meta-capi.js +1 -1
  3. package/dist/apps/backend/src/lib/order-recovery.d.ts +86 -0
  4. package/dist/apps/backend/src/lib/order-recovery.js +7 -2
  5. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.d.ts +7 -0
  6. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.js +41 -0
  7. package/dist/apps/backend/src/routes/admin/orders.d.ts +310 -20
  8. package/dist/apps/backend/src/routes/admin/orders.js +26 -2
  9. package/dist/apps/backend/src/routes/public/orders.d.ts +288 -6
  10. package/dist/apps/backend/src/routes/public/orders.js +1 -1
  11. package/dist/apps/backend/src/validators/order.d.ts +6 -37
  12. package/dist/apps/backend/src/validators/order.js +6 -7
  13. package/dist/enum-types.d.ts +8 -0
  14. package/dist/enum-types.js +5 -0
  15. package/dist/fetchers/carts.js +5 -0
  16. package/dist/fetchers/orders.d.ts +258 -1
  17. package/dist/hooks/admin/abandoned-carts.js +12 -8
  18. package/dist/hooks/admin/brands.js +15 -10
  19. package/dist/hooks/admin/customers.js +3 -2
  20. package/dist/hooks/admin/delivery-zones.js +24 -16
  21. package/dist/hooks/admin/discount-codes.js +24 -16
  22. package/dist/hooks/admin/inventory.js +15 -10
  23. package/dist/hooks/admin/orders.d.ts +285 -3
  24. package/dist/hooks/admin/orders.js +24 -15
  25. package/dist/hooks/admin/products.js +15 -10
  26. package/dist/hooks/admin/stats.js +3 -2
  27. package/dist/hooks/admin/variants.js +18 -12
  28. package/dist/hooks/admin/warehouses.js +15 -10
  29. package/dist/hooks/public/orders.d.ts +258 -1
  30. package/dist/hooks/useApiConfig.d.ts +2 -1
  31. package/dist/hooks/useApiConfig.js +2 -2
  32. package/dist/packages/api-client/src/enum-types.d.ts +8 -0
  33. package/dist/packages/api-client/src/enum-types.js +5 -0
  34. package/dist/packages/api-client/src/fetchers/carts.js +5 -0
  35. package/dist/packages/api-client/src/fetchers/orders.d.ts +258 -1
  36. package/dist/packages/api-client/src/hooks/admin/orders.d.ts +285 -3
  37. package/dist/packages/api-client/src/hooks/admin/orders.js +7 -4
  38. package/dist/packages/api-client/src/hooks/public/orders.d.ts +258 -1
  39. package/dist/packages/api-client/src/rpc-client.d.ts +891 -319
  40. package/dist/packages/api-client/src/types.d.ts +1 -4
  41. package/dist/packages/api-client/src/utils/query-keys.d.ts +1 -1
  42. package/dist/packages/api-client/src/utils/query-keys.js +1 -1
  43. package/dist/provider.d.ts +7 -4
  44. package/dist/provider.js +5 -3
  45. package/dist/rpc-client.d.ts +891 -319
  46. package/dist/types.d.ts +1 -0
  47. package/dist/utils/query-keys.d.ts +1 -1
  48. package/dist/utils/query-keys.js +1 -1
  49. package/package.json +1 -1
@@ -280,4 +280,261 @@ export declare function fetchOrder(orderId: string, token: string): Promise<{
280
280
  * @param token - User action token
281
281
  * @returns Confirmed order
282
282
  */
283
- export declare function confirmOrder(orderId: string, token: string): Promise<unknown>;
283
+ export declare function confirmOrder(orderId: string, token: string): Promise<{
284
+ subtotal: number;
285
+ deliveryCharge: number;
286
+ totalPrice: number;
287
+ discountAmount: number;
288
+ createdAt: string;
289
+ updatedAt: string;
290
+ deletedAt: string;
291
+ prospectSince: string;
292
+ lastRecoveryAttemptAt: string;
293
+ brand: {
294
+ createdAt: string;
295
+ updatedAt: string;
296
+ deletedAt: string;
297
+ name: string;
298
+ id: string;
299
+ slug: string;
300
+ logoUrl: string | null;
301
+ siteUrl: string;
302
+ domain: string;
303
+ metaPixelId: string | null;
304
+ };
305
+ deliveryZone: {
306
+ deliveryCost: number;
307
+ freeShippingThreshold: number;
308
+ createdAt: string;
309
+ updatedAt: string;
310
+ deletedAt: string;
311
+ state: {
312
+ createdAt: string;
313
+ updatedAt: string;
314
+ deletedAt: string;
315
+ name: string;
316
+ id: string;
317
+ isActive: boolean;
318
+ };
319
+ name: string;
320
+ id: string;
321
+ brandId: string | null;
322
+ stateId: string;
323
+ allowCOD: boolean;
324
+ allowOnline: boolean;
325
+ waybillOnly: boolean;
326
+ estimatedDays: number | null;
327
+ isActive: boolean;
328
+ };
329
+ items: {
330
+ priceAtPurchase: number;
331
+ variant: {
332
+ price: number;
333
+ createdAt: string;
334
+ updatedAt: string;
335
+ deletedAt: string;
336
+ product: {
337
+ createdAt: string;
338
+ updatedAt: string;
339
+ deletedAt: string;
340
+ name: string;
341
+ id: string;
342
+ slug: string;
343
+ brandId: string;
344
+ isActive: boolean;
345
+ description: string | null;
346
+ thumbnailUrl: string | null;
347
+ quantityDiscounts: string | number | boolean | {
348
+ [x: string]: string | number | boolean | /*elided*/ any | {
349
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
350
+ length: number;
351
+ toString: never;
352
+ toLocaleString: never;
353
+ pop: never;
354
+ push: never;
355
+ concat: never;
356
+ join: never;
357
+ reverse: never;
358
+ shift: never;
359
+ slice: never;
360
+ sort: never;
361
+ splice: never;
362
+ unshift: never;
363
+ indexOf: never;
364
+ lastIndexOf: never;
365
+ every: never;
366
+ some: never;
367
+ forEach: never;
368
+ map: never;
369
+ filter: never;
370
+ reduce: never;
371
+ reduceRight: never;
372
+ find: never;
373
+ findIndex: never;
374
+ fill: never;
375
+ copyWithin: never;
376
+ entries: never;
377
+ keys: never;
378
+ values: never;
379
+ includes: never;
380
+ flatMap: never;
381
+ flat: never;
382
+ [Symbol.iterator]: never;
383
+ readonly [Symbol.unscopables]: {
384
+ [x: number]: boolean;
385
+ length?: boolean;
386
+ toString?: boolean;
387
+ toLocaleString?: boolean;
388
+ pop?: boolean;
389
+ push?: boolean;
390
+ concat?: boolean;
391
+ join?: boolean;
392
+ reverse?: boolean;
393
+ shift?: boolean;
394
+ slice?: boolean;
395
+ sort?: boolean;
396
+ splice?: boolean;
397
+ unshift?: boolean;
398
+ indexOf?: boolean;
399
+ lastIndexOf?: boolean;
400
+ every?: boolean;
401
+ some?: boolean;
402
+ forEach?: boolean;
403
+ map?: boolean;
404
+ filter?: boolean;
405
+ reduce?: boolean;
406
+ reduceRight?: boolean;
407
+ find?: boolean;
408
+ findIndex?: boolean;
409
+ fill?: boolean;
410
+ copyWithin?: boolean;
411
+ entries?: boolean;
412
+ keys?: boolean;
413
+ values?: boolean;
414
+ includes?: boolean;
415
+ flatMap?: boolean;
416
+ flat?: boolean;
417
+ };
418
+ };
419
+ } | {
420
+ [x: number]: string | number | boolean | {
421
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
422
+ } | /*elided*/ any;
423
+ length: number;
424
+ toString: never;
425
+ toLocaleString: never;
426
+ pop: never;
427
+ push: never;
428
+ concat: never;
429
+ join: never;
430
+ reverse: never;
431
+ shift: never;
432
+ slice: never;
433
+ sort: never;
434
+ splice: never;
435
+ unshift: never;
436
+ indexOf: never;
437
+ lastIndexOf: never;
438
+ every: never;
439
+ some: never;
440
+ forEach: never;
441
+ map: never;
442
+ filter: never;
443
+ reduce: never;
444
+ reduceRight: never;
445
+ find: never;
446
+ findIndex: never;
447
+ fill: never;
448
+ copyWithin: never;
449
+ entries: never;
450
+ keys: never;
451
+ values: never;
452
+ includes: never;
453
+ flatMap: never;
454
+ flat: never;
455
+ [Symbol.iterator]: never;
456
+ readonly [Symbol.unscopables]: {
457
+ [x: number]: boolean;
458
+ length?: boolean;
459
+ toString?: boolean;
460
+ toLocaleString?: boolean;
461
+ pop?: boolean;
462
+ push?: boolean;
463
+ concat?: boolean;
464
+ join?: boolean;
465
+ reverse?: boolean;
466
+ shift?: boolean;
467
+ slice?: boolean;
468
+ sort?: boolean;
469
+ splice?: boolean;
470
+ unshift?: boolean;
471
+ indexOf?: boolean;
472
+ lastIndexOf?: boolean;
473
+ every?: boolean;
474
+ some?: boolean;
475
+ forEach?: boolean;
476
+ map?: boolean;
477
+ filter?: boolean;
478
+ reduce?: boolean;
479
+ reduceRight?: boolean;
480
+ find?: boolean;
481
+ findIndex?: boolean;
482
+ fill?: boolean;
483
+ copyWithin?: boolean;
484
+ entries?: boolean;
485
+ keys?: boolean;
486
+ values?: boolean;
487
+ includes?: boolean;
488
+ flatMap?: boolean;
489
+ flat?: boolean;
490
+ };
491
+ };
492
+ };
493
+ name: string | null;
494
+ id: string;
495
+ isActive: boolean;
496
+ thumbnailUrl: string | null;
497
+ productId: string;
498
+ sku: string;
499
+ trackInventory: boolean;
500
+ lowStockThreshold: number | null;
501
+ };
502
+ warehouse: {
503
+ createdAt: string;
504
+ updatedAt: string;
505
+ deletedAt: string;
506
+ name: string;
507
+ id: string;
508
+ isActive: boolean;
509
+ address: string | null;
510
+ city: string | null;
511
+ state: string | null;
512
+ };
513
+ id: string;
514
+ orderId: string;
515
+ variantId: string;
516
+ warehouseId: string | null;
517
+ quantity: number;
518
+ }[];
519
+ id: string;
520
+ email: string | null;
521
+ brandId: string;
522
+ deliveryZoneId: string;
523
+ recoveryAttempts: number;
524
+ recoveryDiscountCodeId: string | null;
525
+ wasRecovered: boolean;
526
+ estimatedDays: number | null;
527
+ orderNumber: number;
528
+ firstName: string;
529
+ lastName: string;
530
+ phone: string;
531
+ address: string;
532
+ city: string;
533
+ discountCodeId: string | null;
534
+ paymentMethod: import("@prisma/client").$Enums.PaymentMethod;
535
+ paystackReference: string | null;
536
+ status: import("@prisma/client").$Enums.OrderStatus;
537
+ cancellationReason: string | null;
538
+ prospectReason: import("@prisma/client").$Enums.ProspectReason | null;
539
+ userActionToken: string;
540
+ }>;
@@ -9,14 +9,24 @@ import { createAdminRpcClients } from '../../rpc-client';
9
9
  /**
10
10
  * Hook to list all orders with pagination using admin RPC
11
11
  *
12
+ * @param filters - Query parameters for filtering orders
12
13
  * @param options - React Query options
13
14
  *
14
15
  * @example
15
16
  * ```tsx
16
- * const { data: orders, isLoading } = useListOrders();
17
+ * const { data: orders, isLoading } = useListOrders({ search: 'john', page: 1 });
17
18
  * ```
18
19
  */
19
- export declare function useListOrders(options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['orders']['index']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
20
+ export declare function useListOrders(filters?: {
21
+ page?: number;
22
+ limit?: number;
23
+ brandId?: string;
24
+ status?: string;
25
+ paymentMethod?: string;
26
+ search?: string;
27
+ startDate?: string;
28
+ endDate?: string;
29
+ }, options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['orders']['index']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
20
30
  data: {
21
31
  subtotal: number;
22
32
  deliveryCharge: number;
@@ -1370,7 +1380,279 @@ export declare function useUpdateOrder(orderId: string, options?: UseMutationOpt
1370
1380
  * @param orderId - Order UUID
1371
1381
  * @param options - React Query mutation options
1372
1382
  */
1373
- export declare function useUpdateOrderStatus(orderId: string, options?: UseMutationOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['orders'][':id']['status']['$patch']>>['json']>>, Error, any>): import("@tanstack/react-query").UseMutationResult<unknown, Error, any, unknown>;
1383
+ export declare function useUpdateOrderStatus(orderId: string, options?: UseMutationOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['orders'][':id']['status']['$patch']>>['json']>>, Error, any>): import("@tanstack/react-query").UseMutationResult<{
1384
+ subtotal: number;
1385
+ deliveryCharge: number;
1386
+ totalPrice: number;
1387
+ discountAmount: number;
1388
+ createdAt: string;
1389
+ updatedAt: string;
1390
+ deletedAt: string;
1391
+ prospectSince: string;
1392
+ lastRecoveryAttemptAt: string;
1393
+ brand: {
1394
+ createdAt: string;
1395
+ updatedAt: string;
1396
+ deletedAt: string;
1397
+ name: string;
1398
+ id: string;
1399
+ slug: string;
1400
+ logoUrl: string | null;
1401
+ siteUrl: string;
1402
+ domain: string;
1403
+ metaPixelId: string | null;
1404
+ };
1405
+ deliveryZone: {
1406
+ deliveryCost: number;
1407
+ freeShippingThreshold: number;
1408
+ createdAt: string;
1409
+ updatedAt: string;
1410
+ deletedAt: string;
1411
+ state: {
1412
+ createdAt: string;
1413
+ updatedAt: string;
1414
+ deletedAt: string;
1415
+ name: string;
1416
+ id: string;
1417
+ isActive: boolean;
1418
+ };
1419
+ name: string;
1420
+ id: string;
1421
+ brandId: string | null;
1422
+ stateId: string;
1423
+ allowCOD: boolean;
1424
+ allowOnline: boolean;
1425
+ waybillOnly: boolean;
1426
+ estimatedDays: number | null;
1427
+ isActive: boolean;
1428
+ };
1429
+ items: {
1430
+ priceAtPurchase: number;
1431
+ variant: {
1432
+ price: number;
1433
+ createdAt: string;
1434
+ updatedAt: string;
1435
+ deletedAt: string;
1436
+ product: {
1437
+ createdAt: string;
1438
+ updatedAt: string;
1439
+ deletedAt: string;
1440
+ name: string;
1441
+ id: string;
1442
+ slug: string;
1443
+ brandId: string;
1444
+ isActive: boolean;
1445
+ description: string | null;
1446
+ thumbnailUrl: string | null;
1447
+ quantityDiscounts: string | number | boolean | {
1448
+ [x: string]: string | number | boolean | /*elided*/ any | {
1449
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1450
+ length: number;
1451
+ toString: never;
1452
+ toLocaleString: never;
1453
+ pop: never;
1454
+ push: never;
1455
+ concat: never;
1456
+ join: never;
1457
+ reverse: never;
1458
+ shift: never;
1459
+ slice: never;
1460
+ sort: never;
1461
+ splice: never;
1462
+ unshift: never;
1463
+ indexOf: never;
1464
+ lastIndexOf: never;
1465
+ every: never;
1466
+ some: never;
1467
+ forEach: never;
1468
+ map: never;
1469
+ filter: never;
1470
+ reduce: never;
1471
+ reduceRight: never;
1472
+ find: never;
1473
+ findIndex: never;
1474
+ fill: never;
1475
+ copyWithin: never;
1476
+ entries: never;
1477
+ keys: never;
1478
+ values: never;
1479
+ includes: never;
1480
+ flatMap: never;
1481
+ flat: never;
1482
+ [Symbol.iterator]: never;
1483
+ readonly [Symbol.unscopables]: {
1484
+ [x: number]: boolean;
1485
+ length?: boolean;
1486
+ toString?: boolean;
1487
+ toLocaleString?: boolean;
1488
+ pop?: boolean;
1489
+ push?: boolean;
1490
+ concat?: boolean;
1491
+ join?: boolean;
1492
+ reverse?: boolean;
1493
+ shift?: boolean;
1494
+ slice?: boolean;
1495
+ sort?: boolean;
1496
+ splice?: boolean;
1497
+ unshift?: boolean;
1498
+ indexOf?: boolean;
1499
+ lastIndexOf?: boolean;
1500
+ every?: boolean;
1501
+ some?: boolean;
1502
+ forEach?: boolean;
1503
+ map?: boolean;
1504
+ filter?: boolean;
1505
+ reduce?: boolean;
1506
+ reduceRight?: boolean;
1507
+ find?: boolean;
1508
+ findIndex?: boolean;
1509
+ fill?: boolean;
1510
+ copyWithin?: boolean;
1511
+ entries?: boolean;
1512
+ keys?: boolean;
1513
+ values?: boolean;
1514
+ includes?: boolean;
1515
+ flatMap?: boolean;
1516
+ flat?: boolean;
1517
+ };
1518
+ };
1519
+ } | {
1520
+ [x: number]: string | number | boolean | {
1521
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1522
+ } | /*elided*/ any;
1523
+ length: number;
1524
+ toString: never;
1525
+ toLocaleString: never;
1526
+ pop: never;
1527
+ push: never;
1528
+ concat: never;
1529
+ join: never;
1530
+ reverse: never;
1531
+ shift: never;
1532
+ slice: never;
1533
+ sort: never;
1534
+ splice: never;
1535
+ unshift: never;
1536
+ indexOf: never;
1537
+ lastIndexOf: never;
1538
+ every: never;
1539
+ some: never;
1540
+ forEach: never;
1541
+ map: never;
1542
+ filter: never;
1543
+ reduce: never;
1544
+ reduceRight: never;
1545
+ find: never;
1546
+ findIndex: never;
1547
+ fill: never;
1548
+ copyWithin: never;
1549
+ entries: never;
1550
+ keys: never;
1551
+ values: never;
1552
+ includes: never;
1553
+ flatMap: never;
1554
+ flat: never;
1555
+ [Symbol.iterator]: never;
1556
+ readonly [Symbol.unscopables]: {
1557
+ [x: number]: boolean;
1558
+ length?: boolean;
1559
+ toString?: boolean;
1560
+ toLocaleString?: boolean;
1561
+ pop?: boolean;
1562
+ push?: boolean;
1563
+ concat?: boolean;
1564
+ join?: boolean;
1565
+ reverse?: boolean;
1566
+ shift?: boolean;
1567
+ slice?: boolean;
1568
+ sort?: boolean;
1569
+ splice?: boolean;
1570
+ unshift?: boolean;
1571
+ indexOf?: boolean;
1572
+ lastIndexOf?: boolean;
1573
+ every?: boolean;
1574
+ some?: boolean;
1575
+ forEach?: boolean;
1576
+ map?: boolean;
1577
+ filter?: boolean;
1578
+ reduce?: boolean;
1579
+ reduceRight?: boolean;
1580
+ find?: boolean;
1581
+ findIndex?: boolean;
1582
+ fill?: boolean;
1583
+ copyWithin?: boolean;
1584
+ entries?: boolean;
1585
+ keys?: boolean;
1586
+ values?: boolean;
1587
+ includes?: boolean;
1588
+ flatMap?: boolean;
1589
+ flat?: boolean;
1590
+ };
1591
+ };
1592
+ };
1593
+ name: string | null;
1594
+ id: string;
1595
+ isActive: boolean;
1596
+ thumbnailUrl: string | null;
1597
+ productId: string;
1598
+ sku: string;
1599
+ trackInventory: boolean;
1600
+ lowStockThreshold: number | null;
1601
+ };
1602
+ warehouse: {
1603
+ createdAt: string;
1604
+ updatedAt: string;
1605
+ deletedAt: string;
1606
+ name: string;
1607
+ id: string;
1608
+ isActive: boolean;
1609
+ address: string | null;
1610
+ city: string | null;
1611
+ state: string | null;
1612
+ };
1613
+ id: string;
1614
+ orderId: string;
1615
+ variantId: string;
1616
+ warehouseId: string | null;
1617
+ quantity: number;
1618
+ }[];
1619
+ id: string;
1620
+ email: string | null;
1621
+ brandId: string;
1622
+ deliveryZoneId: string;
1623
+ recoveryAttempts: number;
1624
+ recoveryDiscountCodeId: string | null;
1625
+ wasRecovered: boolean;
1626
+ estimatedDays: number | null;
1627
+ orderNumber: number;
1628
+ firstName: string;
1629
+ lastName: string;
1630
+ phone: string;
1631
+ address: string;
1632
+ city: string;
1633
+ discountCodeId: string | null;
1634
+ paymentMethod: import("@prisma/client").$Enums.PaymentMethod;
1635
+ paystackReference: string | null;
1636
+ status: import("@prisma/client").$Enums.OrderStatus;
1637
+ cancellationReason: string | null;
1638
+ prospectReason: import("@prisma/client").$Enums.ProspectReason | null;
1639
+ userActionToken: string;
1640
+ } | {
1641
+ error: {
1642
+ code: string;
1643
+ message: string;
1644
+ };
1645
+ } | {
1646
+ error: {
1647
+ code: string;
1648
+ message: string;
1649
+ };
1650
+ } | {
1651
+ error: {
1652
+ code: string;
1653
+ message: string;
1654
+ };
1655
+ }, Error, any, unknown>;
1374
1656
  /**
1375
1657
  * Hook to delete an order using admin RPC
1376
1658
  *
@@ -12,21 +12,24 @@ import { useApiConfig } from '../useApiConfig';
12
12
  /**
13
13
  * Hook to list all orders with pagination using admin RPC
14
14
  *
15
+ * @param filters - Query parameters for filtering orders
15
16
  * @param options - React Query options
16
17
  *
17
18
  * @example
18
19
  * ```tsx
19
- * const { data: orders, isLoading } = useListOrders();
20
+ * const { data: orders, isLoading } = useListOrders({ search: 'john', page: 1 });
20
21
  * ```
21
22
  */
22
- export function useListOrders(options) {
23
+ export function useListOrders(filters, options) {
23
24
  const { baseURL, getAuthToken } = useApiConfig();
24
25
  return useQueryUnwrapped({
25
- queryKey: queryKeys.admin.orders.list(),
26
+ queryKey: queryKeys.admin.orders.list(filters),
26
27
  queryFn: async () => {
27
28
  const token = await getAuthToken();
28
29
  const clients = createAdminRpcClients(baseURL);
29
- const res = await clients.orders.index.$get({}, authHeaders(token));
30
+ // Clean undefined values from filters
31
+ const cleanFilters = filters ? Object.fromEntries(Object.entries(filters).filter(([_, v]) => v !== undefined)) : undefined;
32
+ const res = await clients.orders.index.$get({ query: cleanFilters }, authHeaders(token));
30
33
  if (!res.ok) {
31
34
  throw new Error(`Failed to fetch orders: ${res.statusText}`);
32
35
  }