@bagelink/sdk 1.9.166 → 1.9.168
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.cjs +31 -24
- package/dist/index.d.cts +14 -10
- package/dist/index.d.mts +14 -10
- package/dist/index.d.ts +14 -10
- package/dist/index.mjs +31 -24
- package/package.json +1 -1
- package/src/index.ts +42 -30
package/dist/index.cjs
CHANGED
|
@@ -1457,12 +1457,14 @@ class ApiResponse extends Array {
|
|
|
1457
1457
|
/** Raw axios response */
|
|
1458
1458
|
$raw;
|
|
1459
1459
|
/** Total number of items (from x-total-count header) */
|
|
1460
|
-
|
|
1461
|
-
/**
|
|
1460
|
+
total;
|
|
1461
|
+
/** Number of items per page (from x-limit header) */
|
|
1462
|
+
limit;
|
|
1463
|
+
/** Number of items skipped (from x-offset header) */
|
|
1464
|
+
offset;
|
|
1465
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
1462
1466
|
page;
|
|
1463
|
-
/**
|
|
1464
|
-
perPage;
|
|
1465
|
-
/** Total number of pages (calculated) */
|
|
1467
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
1466
1468
|
totalPages;
|
|
1467
1469
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
1468
1470
|
rateLimit;
|
|
@@ -1477,9 +1479,10 @@ class ApiResponse extends Array {
|
|
|
1477
1479
|
if (response) {
|
|
1478
1480
|
this.$raw = response;
|
|
1479
1481
|
this.$metadata = ApiResponse.parseMetadataStatic(response);
|
|
1480
|
-
this.
|
|
1482
|
+
this.total = this.$metadata.total;
|
|
1483
|
+
this.limit = this.$metadata.limit;
|
|
1484
|
+
this.offset = this.$metadata.offset;
|
|
1481
1485
|
this.page = this.$metadata.page;
|
|
1482
|
-
this.perPage = this.$metadata.perPage;
|
|
1483
1486
|
this.totalPages = this.$metadata.totalPages;
|
|
1484
1487
|
this.rateLimit = this.$metadata.rateLimit;
|
|
1485
1488
|
this.rateLimitReset = this.$metadata.rateLimitReset;
|
|
@@ -1495,16 +1498,17 @@ class ApiResponse extends Array {
|
|
|
1495
1498
|
const obj = Object.assign(/* @__PURE__ */ Object.create(null), data);
|
|
1496
1499
|
obj.$raw = response;
|
|
1497
1500
|
obj.$metadata = ApiResponse.parseMetadataStatic(response);
|
|
1498
|
-
obj.
|
|
1501
|
+
obj.total = obj.$metadata.total;
|
|
1502
|
+
obj.limit = obj.$metadata.limit;
|
|
1503
|
+
obj.offset = obj.$metadata.offset;
|
|
1499
1504
|
obj.page = obj.$metadata.page;
|
|
1500
|
-
obj.perPage = obj.$metadata.perPage;
|
|
1501
1505
|
obj.totalPages = obj.$metadata.totalPages;
|
|
1502
1506
|
obj.rateLimit = obj.$metadata.rateLimit;
|
|
1503
1507
|
obj.rateLimitReset = obj.$metadata.rateLimitReset;
|
|
1504
1508
|
obj.getHeader = (name) => response?.headers[name.toLowerCase()];
|
|
1505
|
-
obj.hasPagination = obj.
|
|
1506
|
-
obj.hasNextPage = obj.
|
|
1507
|
-
obj.hasPrevPage = obj.
|
|
1509
|
+
obj.hasPagination = obj.total !== void 0 || obj.offset !== void 0;
|
|
1510
|
+
obj.hasNextPage = obj.total !== void 0 && obj.limit !== void 0 && obj.offset !== void 0 ? obj.offset + obj.limit < obj.total : false;
|
|
1511
|
+
obj.hasPrevPage = obj.offset !== void 0 ? obj.offset > 0 : false;
|
|
1508
1512
|
return obj;
|
|
1509
1513
|
}
|
|
1510
1514
|
const instance = new ApiResponse(data, response);
|
|
@@ -1514,16 +1518,19 @@ class ApiResponse extends Array {
|
|
|
1514
1518
|
const { headers } = response;
|
|
1515
1519
|
const metadata = {};
|
|
1516
1520
|
if (headers["x-total-count"]) {
|
|
1517
|
-
metadata.
|
|
1521
|
+
metadata.total = Number(headers["x-total-count"]);
|
|
1518
1522
|
}
|
|
1519
|
-
if (headers["x-
|
|
1520
|
-
metadata.
|
|
1523
|
+
if (headers["x-limit"]) {
|
|
1524
|
+
metadata.limit = Number(headers["x-limit"]);
|
|
1521
1525
|
}
|
|
1522
|
-
if (headers["x-
|
|
1523
|
-
metadata.
|
|
1526
|
+
if (headers["x-offset"]) {
|
|
1527
|
+
metadata.offset = Number(headers["x-offset"]);
|
|
1524
1528
|
}
|
|
1525
|
-
if (metadata.
|
|
1526
|
-
metadata.totalPages = Math.ceil(metadata.
|
|
1529
|
+
if (metadata.total !== void 0 && metadata.limit) {
|
|
1530
|
+
metadata.totalPages = Math.ceil(metadata.total / metadata.limit);
|
|
1531
|
+
}
|
|
1532
|
+
if (metadata.offset !== void 0 && metadata.limit) {
|
|
1533
|
+
metadata.page = Math.floor(metadata.offset / metadata.limit) + 1;
|
|
1527
1534
|
}
|
|
1528
1535
|
if (headers["x-ratelimit-remaining"] || headers["x-rate-limit-remaining"]) {
|
|
1529
1536
|
metadata.rateLimit = Number(
|
|
@@ -1546,15 +1553,15 @@ class ApiResponse extends Array {
|
|
|
1546
1553
|
return this.$raw.headers[name.toLowerCase()];
|
|
1547
1554
|
}
|
|
1548
1555
|
get hasPagination() {
|
|
1549
|
-
return this.
|
|
1556
|
+
return this.total !== void 0 || this.offset !== void 0;
|
|
1550
1557
|
}
|
|
1551
1558
|
get hasNextPage() {
|
|
1552
|
-
if (
|
|
1553
|
-
return this.
|
|
1559
|
+
if (this.total === void 0 || this.limit === void 0 || this.offset === void 0) return false;
|
|
1560
|
+
return this.offset + this.limit < this.total;
|
|
1554
1561
|
}
|
|
1555
1562
|
get hasPrevPage() {
|
|
1556
|
-
if (
|
|
1557
|
-
return this.
|
|
1563
|
+
if (this.offset === void 0) return false;
|
|
1564
|
+
return this.offset > 0;
|
|
1558
1565
|
}
|
|
1559
1566
|
}
|
|
1560
1567
|
function parseApiError(error) {
|
package/dist/index.d.cts
CHANGED
|
@@ -529,12 +529,14 @@ declare function formatAPIErrorMessage(err: unknown): string;
|
|
|
529
529
|
*/
|
|
530
530
|
interface ResponseMetadata {
|
|
531
531
|
/** Total number of items (from x-total-count header) */
|
|
532
|
-
|
|
533
|
-
/**
|
|
532
|
+
total?: number;
|
|
533
|
+
/** Number of items per page (from x-limit header) */
|
|
534
|
+
limit?: number;
|
|
535
|
+
/** Number of items skipped (from x-offset header) */
|
|
536
|
+
offset?: number;
|
|
537
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
534
538
|
page?: number;
|
|
535
|
-
/**
|
|
536
|
-
perPage?: number;
|
|
537
|
-
/** Total number of pages */
|
|
539
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
538
540
|
totalPages?: number;
|
|
539
541
|
/** Rate limit remaining (from x-rate-limit-remaining header) */
|
|
540
542
|
rateLimit?: number;
|
|
@@ -558,12 +560,14 @@ declare class ApiResponse<TData = any> extends Array<TData extends Array<infer U
|
|
|
558
560
|
/** Raw axios response */
|
|
559
561
|
$raw: AxiosResponse<TData>;
|
|
560
562
|
/** Total number of items (from x-total-count header) */
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
+
total?: number;
|
|
564
|
+
/** Number of items per page (from x-limit header) */
|
|
565
|
+
limit?: number;
|
|
566
|
+
/** Number of items skipped (from x-offset header) */
|
|
567
|
+
offset?: number;
|
|
568
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
563
569
|
page?: number;
|
|
564
|
-
/**
|
|
565
|
-
perPage?: number;
|
|
566
|
-
/** Total number of pages (calculated) */
|
|
570
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
567
571
|
totalPages?: number;
|
|
568
572
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
569
573
|
rateLimit?: number;
|
package/dist/index.d.mts
CHANGED
|
@@ -529,12 +529,14 @@ declare function formatAPIErrorMessage(err: unknown): string;
|
|
|
529
529
|
*/
|
|
530
530
|
interface ResponseMetadata {
|
|
531
531
|
/** Total number of items (from x-total-count header) */
|
|
532
|
-
|
|
533
|
-
/**
|
|
532
|
+
total?: number;
|
|
533
|
+
/** Number of items per page (from x-limit header) */
|
|
534
|
+
limit?: number;
|
|
535
|
+
/** Number of items skipped (from x-offset header) */
|
|
536
|
+
offset?: number;
|
|
537
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
534
538
|
page?: number;
|
|
535
|
-
/**
|
|
536
|
-
perPage?: number;
|
|
537
|
-
/** Total number of pages */
|
|
539
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
538
540
|
totalPages?: number;
|
|
539
541
|
/** Rate limit remaining (from x-rate-limit-remaining header) */
|
|
540
542
|
rateLimit?: number;
|
|
@@ -558,12 +560,14 @@ declare class ApiResponse<TData = any> extends Array<TData extends Array<infer U
|
|
|
558
560
|
/** Raw axios response */
|
|
559
561
|
$raw: AxiosResponse<TData>;
|
|
560
562
|
/** Total number of items (from x-total-count header) */
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
+
total?: number;
|
|
564
|
+
/** Number of items per page (from x-limit header) */
|
|
565
|
+
limit?: number;
|
|
566
|
+
/** Number of items skipped (from x-offset header) */
|
|
567
|
+
offset?: number;
|
|
568
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
563
569
|
page?: number;
|
|
564
|
-
/**
|
|
565
|
-
perPage?: number;
|
|
566
|
-
/** Total number of pages (calculated) */
|
|
570
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
567
571
|
totalPages?: number;
|
|
568
572
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
569
573
|
rateLimit?: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -529,12 +529,14 @@ declare function formatAPIErrorMessage(err: unknown): string;
|
|
|
529
529
|
*/
|
|
530
530
|
interface ResponseMetadata {
|
|
531
531
|
/** Total number of items (from x-total-count header) */
|
|
532
|
-
|
|
533
|
-
/**
|
|
532
|
+
total?: number;
|
|
533
|
+
/** Number of items per page (from x-limit header) */
|
|
534
|
+
limit?: number;
|
|
535
|
+
/** Number of items skipped (from x-offset header) */
|
|
536
|
+
offset?: number;
|
|
537
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
534
538
|
page?: number;
|
|
535
|
-
/**
|
|
536
|
-
perPage?: number;
|
|
537
|
-
/** Total number of pages */
|
|
539
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
538
540
|
totalPages?: number;
|
|
539
541
|
/** Rate limit remaining (from x-rate-limit-remaining header) */
|
|
540
542
|
rateLimit?: number;
|
|
@@ -558,12 +560,14 @@ declare class ApiResponse<TData = any> extends Array<TData extends Array<infer U
|
|
|
558
560
|
/** Raw axios response */
|
|
559
561
|
$raw: AxiosResponse<TData>;
|
|
560
562
|
/** Total number of items (from x-total-count header) */
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
+
total?: number;
|
|
564
|
+
/** Number of items per page (from x-limit header) */
|
|
565
|
+
limit?: number;
|
|
566
|
+
/** Number of items skipped (from x-offset header) */
|
|
567
|
+
offset?: number;
|
|
568
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
563
569
|
page?: number;
|
|
564
|
-
/**
|
|
565
|
-
perPage?: number;
|
|
566
|
-
/** Total number of pages (calculated) */
|
|
570
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
567
571
|
totalPages?: number;
|
|
568
572
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
569
573
|
rateLimit?: number;
|
package/dist/index.mjs
CHANGED
|
@@ -1451,12 +1451,14 @@ class ApiResponse extends Array {
|
|
|
1451
1451
|
/** Raw axios response */
|
|
1452
1452
|
$raw;
|
|
1453
1453
|
/** Total number of items (from x-total-count header) */
|
|
1454
|
-
|
|
1455
|
-
/**
|
|
1454
|
+
total;
|
|
1455
|
+
/** Number of items per page (from x-limit header) */
|
|
1456
|
+
limit;
|
|
1457
|
+
/** Number of items skipped (from x-offset header) */
|
|
1458
|
+
offset;
|
|
1459
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
1456
1460
|
page;
|
|
1457
|
-
/**
|
|
1458
|
-
perPage;
|
|
1459
|
-
/** Total number of pages (calculated) */
|
|
1461
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
1460
1462
|
totalPages;
|
|
1461
1463
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
1462
1464
|
rateLimit;
|
|
@@ -1471,9 +1473,10 @@ class ApiResponse extends Array {
|
|
|
1471
1473
|
if (response) {
|
|
1472
1474
|
this.$raw = response;
|
|
1473
1475
|
this.$metadata = ApiResponse.parseMetadataStatic(response);
|
|
1474
|
-
this.
|
|
1476
|
+
this.total = this.$metadata.total;
|
|
1477
|
+
this.limit = this.$metadata.limit;
|
|
1478
|
+
this.offset = this.$metadata.offset;
|
|
1475
1479
|
this.page = this.$metadata.page;
|
|
1476
|
-
this.perPage = this.$metadata.perPage;
|
|
1477
1480
|
this.totalPages = this.$metadata.totalPages;
|
|
1478
1481
|
this.rateLimit = this.$metadata.rateLimit;
|
|
1479
1482
|
this.rateLimitReset = this.$metadata.rateLimitReset;
|
|
@@ -1489,16 +1492,17 @@ class ApiResponse extends Array {
|
|
|
1489
1492
|
const obj = Object.assign(/* @__PURE__ */ Object.create(null), data);
|
|
1490
1493
|
obj.$raw = response;
|
|
1491
1494
|
obj.$metadata = ApiResponse.parseMetadataStatic(response);
|
|
1492
|
-
obj.
|
|
1495
|
+
obj.total = obj.$metadata.total;
|
|
1496
|
+
obj.limit = obj.$metadata.limit;
|
|
1497
|
+
obj.offset = obj.$metadata.offset;
|
|
1493
1498
|
obj.page = obj.$metadata.page;
|
|
1494
|
-
obj.perPage = obj.$metadata.perPage;
|
|
1495
1499
|
obj.totalPages = obj.$metadata.totalPages;
|
|
1496
1500
|
obj.rateLimit = obj.$metadata.rateLimit;
|
|
1497
1501
|
obj.rateLimitReset = obj.$metadata.rateLimitReset;
|
|
1498
1502
|
obj.getHeader = (name) => response?.headers[name.toLowerCase()];
|
|
1499
|
-
obj.hasPagination = obj.
|
|
1500
|
-
obj.hasNextPage = obj.
|
|
1501
|
-
obj.hasPrevPage = obj.
|
|
1503
|
+
obj.hasPagination = obj.total !== void 0 || obj.offset !== void 0;
|
|
1504
|
+
obj.hasNextPage = obj.total !== void 0 && obj.limit !== void 0 && obj.offset !== void 0 ? obj.offset + obj.limit < obj.total : false;
|
|
1505
|
+
obj.hasPrevPage = obj.offset !== void 0 ? obj.offset > 0 : false;
|
|
1502
1506
|
return obj;
|
|
1503
1507
|
}
|
|
1504
1508
|
const instance = new ApiResponse(data, response);
|
|
@@ -1508,16 +1512,19 @@ class ApiResponse extends Array {
|
|
|
1508
1512
|
const { headers } = response;
|
|
1509
1513
|
const metadata = {};
|
|
1510
1514
|
if (headers["x-total-count"]) {
|
|
1511
|
-
metadata.
|
|
1515
|
+
metadata.total = Number(headers["x-total-count"]);
|
|
1512
1516
|
}
|
|
1513
|
-
if (headers["x-
|
|
1514
|
-
metadata.
|
|
1517
|
+
if (headers["x-limit"]) {
|
|
1518
|
+
metadata.limit = Number(headers["x-limit"]);
|
|
1515
1519
|
}
|
|
1516
|
-
if (headers["x-
|
|
1517
|
-
metadata.
|
|
1520
|
+
if (headers["x-offset"]) {
|
|
1521
|
+
metadata.offset = Number(headers["x-offset"]);
|
|
1518
1522
|
}
|
|
1519
|
-
if (metadata.
|
|
1520
|
-
metadata.totalPages = Math.ceil(metadata.
|
|
1523
|
+
if (metadata.total !== void 0 && metadata.limit) {
|
|
1524
|
+
metadata.totalPages = Math.ceil(metadata.total / metadata.limit);
|
|
1525
|
+
}
|
|
1526
|
+
if (metadata.offset !== void 0 && metadata.limit) {
|
|
1527
|
+
metadata.page = Math.floor(metadata.offset / metadata.limit) + 1;
|
|
1521
1528
|
}
|
|
1522
1529
|
if (headers["x-ratelimit-remaining"] || headers["x-rate-limit-remaining"]) {
|
|
1523
1530
|
metadata.rateLimit = Number(
|
|
@@ -1540,15 +1547,15 @@ class ApiResponse extends Array {
|
|
|
1540
1547
|
return this.$raw.headers[name.toLowerCase()];
|
|
1541
1548
|
}
|
|
1542
1549
|
get hasPagination() {
|
|
1543
|
-
return this.
|
|
1550
|
+
return this.total !== void 0 || this.offset !== void 0;
|
|
1544
1551
|
}
|
|
1545
1552
|
get hasNextPage() {
|
|
1546
|
-
if (
|
|
1547
|
-
return this.
|
|
1553
|
+
if (this.total === void 0 || this.limit === void 0 || this.offset === void 0) return false;
|
|
1554
|
+
return this.offset + this.limit < this.total;
|
|
1548
1555
|
}
|
|
1549
1556
|
get hasPrevPage() {
|
|
1550
|
-
if (
|
|
1551
|
-
return this.
|
|
1557
|
+
if (this.offset === void 0) return false;
|
|
1558
|
+
return this.offset > 0;
|
|
1552
1559
|
}
|
|
1553
1560
|
}
|
|
1554
1561
|
function parseApiError(error) {
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -23,12 +23,14 @@ export { unwrap, type Unwrapped } from './unwrap'
|
|
|
23
23
|
*/
|
|
24
24
|
export interface ResponseMetadata {
|
|
25
25
|
/** Total number of items (from x-total-count header) */
|
|
26
|
-
|
|
27
|
-
/**
|
|
26
|
+
total?: number
|
|
27
|
+
/** Number of items per page (from x-limit header) */
|
|
28
|
+
limit?: number
|
|
29
|
+
/** Number of items skipped (from x-offset header) */
|
|
30
|
+
offset?: number
|
|
31
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
28
32
|
page?: number
|
|
29
|
-
/**
|
|
30
|
-
perPage?: number
|
|
31
|
-
/** Total number of pages */
|
|
33
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
32
34
|
totalPages?: number
|
|
33
35
|
/** Rate limit remaining (from x-rate-limit-remaining header) */
|
|
34
36
|
rateLimit?: number
|
|
@@ -55,15 +57,18 @@ export class ApiResponse<TData = any> extends Array<TData extends Array<infer U>
|
|
|
55
57
|
public $raw!: AxiosResponse<TData>
|
|
56
58
|
|
|
57
59
|
/** Total number of items (from x-total-count header) */
|
|
58
|
-
public
|
|
60
|
+
public total?: number
|
|
59
61
|
|
|
60
|
-
/**
|
|
61
|
-
public
|
|
62
|
+
/** Number of items per page (from x-limit header) */
|
|
63
|
+
public limit?: number
|
|
64
|
+
|
|
65
|
+
/** Number of items skipped (from x-offset header) */
|
|
66
|
+
public offset?: number
|
|
62
67
|
|
|
63
|
-
/**
|
|
64
|
-
public
|
|
68
|
+
/** Current page number (calculated: Math.floor(offset / limit) + 1) */
|
|
69
|
+
public page?: number
|
|
65
70
|
|
|
66
|
-
/** Total number of pages (calculated) */
|
|
71
|
+
/** Total number of pages (calculated: Math.ceil(total / limit)) */
|
|
67
72
|
public totalPages?: number
|
|
68
73
|
|
|
69
74
|
/** Rate limit remaining (from x-ratelimit-remaining header) */
|
|
@@ -86,9 +91,10 @@ export class ApiResponse<TData = any> extends Array<TData extends Array<infer U>
|
|
|
86
91
|
if (response) {
|
|
87
92
|
this.$raw = response as AxiosResponse<TData>
|
|
88
93
|
this.$metadata = ApiResponse.parseMetadataStatic(response)
|
|
89
|
-
this.
|
|
94
|
+
this.total = this.$metadata.total
|
|
95
|
+
this.limit = this.$metadata.limit
|
|
96
|
+
this.offset = this.$metadata.offset
|
|
90
97
|
this.page = this.$metadata.page
|
|
91
|
-
this.perPage = this.$metadata.perPage
|
|
92
98
|
this.totalPages = this.$metadata.totalPages
|
|
93
99
|
this.rateLimit = this.$metadata.rateLimit
|
|
94
100
|
this.rateLimitReset = this.$metadata.rateLimitReset
|
|
@@ -106,16 +112,19 @@ export class ApiResponse<TData = any> extends Array<TData extends Array<infer U>
|
|
|
106
112
|
const obj = Object.assign(Object.create(null), data) as any
|
|
107
113
|
obj.$raw = response
|
|
108
114
|
obj.$metadata = ApiResponse.parseMetadataStatic(response)
|
|
109
|
-
obj.
|
|
115
|
+
obj.total = obj.$metadata.total
|
|
116
|
+
obj.limit = obj.$metadata.limit
|
|
117
|
+
obj.offset = obj.$metadata.offset
|
|
110
118
|
obj.page = obj.$metadata.page
|
|
111
|
-
obj.perPage = obj.$metadata.perPage
|
|
112
119
|
obj.totalPages = obj.$metadata.totalPages
|
|
113
120
|
obj.rateLimit = obj.$metadata.rateLimit
|
|
114
121
|
obj.rateLimitReset = obj.$metadata.rateLimitReset
|
|
115
122
|
obj.getHeader = (name: string) => response?.headers[name.toLowerCase()]
|
|
116
|
-
obj.hasPagination = obj.
|
|
117
|
-
obj.hasNextPage = obj.
|
|
118
|
-
|
|
123
|
+
obj.hasPagination = obj.total !== undefined || obj.offset !== undefined
|
|
124
|
+
obj.hasNextPage = obj.total !== undefined && obj.limit !== undefined && obj.offset !== undefined
|
|
125
|
+
? obj.offset + obj.limit < obj.total
|
|
126
|
+
: false
|
|
127
|
+
obj.hasPrevPage = obj.offset !== undefined ? obj.offset > 0 : false
|
|
119
128
|
return obj
|
|
120
129
|
}
|
|
121
130
|
|
|
@@ -129,17 +138,20 @@ export class ApiResponse<TData = any> extends Array<TData extends Array<infer U>
|
|
|
129
138
|
const metadata: ResponseMetadata = {}
|
|
130
139
|
|
|
131
140
|
if (headers['x-total-count']) {
|
|
132
|
-
metadata.
|
|
141
|
+
metadata.total = Number(headers['x-total-count'])
|
|
133
142
|
}
|
|
134
|
-
if (headers['x-
|
|
135
|
-
metadata.
|
|
143
|
+
if (headers['x-limit']) {
|
|
144
|
+
metadata.limit = Number(headers['x-limit'])
|
|
136
145
|
}
|
|
137
|
-
if (headers['x-
|
|
138
|
-
metadata.
|
|
146
|
+
if (headers['x-offset']) {
|
|
147
|
+
metadata.offset = Number(headers['x-offset'])
|
|
139
148
|
}
|
|
140
149
|
|
|
141
|
-
if (metadata.
|
|
142
|
-
metadata.totalPages = Math.ceil(metadata.
|
|
150
|
+
if (metadata.total !== undefined && metadata.limit) {
|
|
151
|
+
metadata.totalPages = Math.ceil(metadata.total / metadata.limit)
|
|
152
|
+
}
|
|
153
|
+
if (metadata.offset !== undefined && metadata.limit) {
|
|
154
|
+
metadata.page = Math.floor(metadata.offset / metadata.limit) + 1
|
|
143
155
|
}
|
|
144
156
|
|
|
145
157
|
if (headers['x-ratelimit-remaining'] || headers['x-rate-limit-remaining']) {
|
|
@@ -167,17 +179,17 @@ export class ApiResponse<TData = any> extends Array<TData extends Array<infer U>
|
|
|
167
179
|
}
|
|
168
180
|
|
|
169
181
|
public get hasPagination(): boolean {
|
|
170
|
-
return this.
|
|
182
|
+
return this.total !== undefined || this.offset !== undefined
|
|
171
183
|
}
|
|
172
184
|
|
|
173
185
|
public get hasNextPage(): boolean {
|
|
174
|
-
if (
|
|
175
|
-
return this.
|
|
186
|
+
if (this.total === undefined || this.limit === undefined || this.offset === undefined) return false
|
|
187
|
+
return this.offset + this.limit < this.total
|
|
176
188
|
}
|
|
177
189
|
|
|
178
190
|
public get hasPrevPage(): boolean {
|
|
179
|
-
if (
|
|
180
|
-
return this.
|
|
191
|
+
if (this.offset === undefined) return false
|
|
192
|
+
return this.offset > 0
|
|
181
193
|
}
|
|
182
194
|
}
|
|
183
195
|
|