@datocms/rest-client-utils 0.1.5 → 1.1.1
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/cjs/ApiError.js +1 -17
- package/dist/cjs/ApiError.js.map +1 -1
- package/dist/cjs/deserialize.js +1 -17
- package/dist/cjs/deserialize.js.map +1 -1
- package/dist/cjs/rawPageIterator.js +33 -73
- package/dist/cjs/rawPageIterator.js.map +1 -1
- package/dist/cjs/request.js +35 -70
- package/dist/cjs/request.js.map +1 -1
- package/dist/cjs/serialize.js +3 -19
- package/dist/cjs/serialize.js.map +1 -1
- package/dist/cjs/wait.js.map +1 -1
- package/dist/esm/ApiError.js +1 -17
- package/dist/esm/ApiError.js.map +1 -1
- package/dist/esm/deserialize.js +1 -17
- package/dist/esm/deserialize.js.map +1 -1
- package/dist/esm/rawPageIterator.js +33 -73
- package/dist/esm/rawPageIterator.js.map +1 -1
- package/dist/esm/request.js +32 -67
- package/dist/esm/request.js.map +1 -1
- package/dist/esm/serialize.js +3 -19
- package/dist/esm/serialize.js.map +1 -1
- package/dist/esm/wait.d.ts +1 -1
- package/dist/esm/wait.js.map +1 -1
- package/dist/types/wait.d.ts +1 -1
- package/package.json +5 -2
- package/src/ApiError.ts +2 -2
- package/src/request.ts +19 -15
- package/src/serialize.ts +2 -2
- package/src/wait.ts +1 -1
package/dist/esm/deserialize.js
CHANGED
|
@@ -9,22 +9,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
-
if (!m) return o;
|
|
15
|
-
var i = m.call(o), r, ar = [], e;
|
|
16
|
-
try {
|
|
17
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
-
}
|
|
19
|
-
catch (error) { e = { error: error }; }
|
|
20
|
-
finally {
|
|
21
|
-
try {
|
|
22
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
-
}
|
|
24
|
-
finally { if (e) throw e.error; }
|
|
25
|
-
}
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
12
|
function hasData(thing) {
|
|
29
13
|
return typeof thing === 'object' && !!thing && 'data' in thing;
|
|
30
14
|
}
|
|
@@ -32,7 +16,7 @@ export function deserializeJsonEntity(_a) {
|
|
|
32
16
|
var id = _a.id, type = _a.type, attributes = _a.attributes, relationships = _a.relationships, meta = _a.meta;
|
|
33
17
|
return __assign(__assign(__assign(__assign(__assign({}, (id ? { id: id } : {})), (type ? { type: type } : {})), (attributes || {})), (relationships
|
|
34
18
|
? Object.fromEntries(Object.entries(relationships).map(function (_a) {
|
|
35
|
-
var
|
|
19
|
+
var rel = _a[0], value = _a[1];
|
|
36
20
|
return [
|
|
37
21
|
rel,
|
|
38
22
|
value === null || value === void 0 ? void 0 : value.data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":";;;;;;;;;;;AAcA,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAI,EAMzB;QALd,EAAE,QAAA,EACF,IAAI,UAAA,EACJ,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,IAAI,UAAA;IAEJ,OAAO,iDACF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACtB,CAAC,UAAU,IAAI,EAAE,CAAC,GAClB,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAC,EAAY;gBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;YAAM,OAAA;gBAClD,GAAG;gBACH,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI;aACZ;QAHmD,CAGnD,CAAC,CACH;QACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrB,CAAC;AACT,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAI,IAAa;IACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;KAClC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAiB,CAAC;KAC7D;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC;AAC1D,CAAC"}
|
|
@@ -37,24 +37,12 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
|
|
|
37
37
|
function reject(value) { resume("throw", value); }
|
|
38
38
|
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
39
39
|
};
|
|
40
|
-
var __values = (this && this.__values) || function(o) {
|
|
41
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
42
|
-
if (m) return m.call(o);
|
|
43
|
-
if (o && typeof o.length === "number") return {
|
|
44
|
-
next: function () {
|
|
45
|
-
if (o && i >= o.length) o = void 0;
|
|
46
|
-
return { value: o && o[i++], done: !o };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
50
|
-
};
|
|
51
40
|
import { Scheduler } from 'async-scheduler';
|
|
52
41
|
export function rawPageIterator(pagination, callPerformer, iteratorOptions) {
|
|
53
42
|
return __asyncGenerator(this, arguments, function rawPageIterator_1() {
|
|
54
|
-
var perPage, concurrency, firstResponse,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
switch (_g.label) {
|
|
43
|
+
var perPage, concurrency, firstResponse, _i, _a, item, totalCount, limiter, promises, _loop_1, offset, response, _b, _c, item;
|
|
44
|
+
return __generator(this, function (_d) {
|
|
45
|
+
switch (_d.label) {
|
|
58
46
|
case 0:
|
|
59
47
|
perPage = (iteratorOptions === null || iteratorOptions === void 0 ? void 0 : iteratorOptions.perPage) || pagination.defaultLimit;
|
|
60
48
|
if (perPage > pagination.maxLimit) {
|
|
@@ -66,35 +54,21 @@ export function rawPageIterator(pagination, callPerformer, iteratorOptions) {
|
|
|
66
54
|
}
|
|
67
55
|
return [4 /*yield*/, __await(callPerformer({ limit: perPage, offset: 0 }))];
|
|
68
56
|
case 1:
|
|
69
|
-
firstResponse =
|
|
70
|
-
|
|
57
|
+
firstResponse = _d.sent();
|
|
58
|
+
_i = 0, _a = firstResponse.data;
|
|
59
|
+
_d.label = 2;
|
|
71
60
|
case 2:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
_g.label = 3;
|
|
75
|
-
case 3:
|
|
76
|
-
if (!!_b.done) return [3 /*break*/, 7];
|
|
77
|
-
item = _b.value;
|
|
61
|
+
if (!(_i < _a.length)) return [3 /*break*/, 6];
|
|
62
|
+
item = _a[_i];
|
|
78
63
|
return [4 /*yield*/, __await(item)];
|
|
79
|
-
case
|
|
64
|
+
case 3: return [4 /*yield*/, _d.sent()];
|
|
65
|
+
case 4:
|
|
66
|
+
_d.sent();
|
|
67
|
+
_d.label = 5;
|
|
80
68
|
case 5:
|
|
81
|
-
|
|
82
|
-
|
|
69
|
+
_i++;
|
|
70
|
+
return [3 /*break*/, 2];
|
|
83
71
|
case 6:
|
|
84
|
-
_b = _a.next();
|
|
85
|
-
return [3 /*break*/, 3];
|
|
86
|
-
case 7: return [3 /*break*/, 10];
|
|
87
|
-
case 8:
|
|
88
|
-
e_1_1 = _g.sent();
|
|
89
|
-
e_1 = { error: e_1_1 };
|
|
90
|
-
return [3 /*break*/, 10];
|
|
91
|
-
case 9:
|
|
92
|
-
try {
|
|
93
|
-
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
94
|
-
}
|
|
95
|
-
finally { if (e_1) throw e_1.error; }
|
|
96
|
-
return [7 /*endfinally*/];
|
|
97
|
-
case 10:
|
|
98
72
|
totalCount = firstResponse.meta.total_count;
|
|
99
73
|
limiter = new Scheduler(concurrency);
|
|
100
74
|
promises = [];
|
|
@@ -106,41 +80,27 @@ export function rawPageIterator(pagination, callPerformer, iteratorOptions) {
|
|
|
106
80
|
for (offset = perPage; offset < totalCount; offset += perPage) {
|
|
107
81
|
_loop_1(offset);
|
|
108
82
|
}
|
|
109
|
-
|
|
110
|
-
case
|
|
111
|
-
if (!(promises.length > 0)) return [3 /*break*/,
|
|
83
|
+
_d.label = 7;
|
|
84
|
+
case 7:
|
|
85
|
+
if (!(promises.length > 0)) return [3 /*break*/, 14];
|
|
112
86
|
return [4 /*yield*/, __await(promises.shift())];
|
|
113
|
-
case
|
|
114
|
-
response =
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
case 14:
|
|
121
|
-
if (!!_d.done) return [3 /*break*/, 18];
|
|
122
|
-
item = _d.value;
|
|
87
|
+
case 8:
|
|
88
|
+
response = _d.sent();
|
|
89
|
+
_b = 0, _c = response.data;
|
|
90
|
+
_d.label = 9;
|
|
91
|
+
case 9:
|
|
92
|
+
if (!(_b < _c.length)) return [3 /*break*/, 13];
|
|
93
|
+
item = _c[_b];
|
|
123
94
|
return [4 /*yield*/, __await(item)];
|
|
124
|
-
case
|
|
125
|
-
case
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
case
|
|
129
|
-
|
|
130
|
-
return [3 /*break*/,
|
|
131
|
-
case
|
|
132
|
-
case
|
|
133
|
-
e_2_1 = _g.sent();
|
|
134
|
-
e_2 = { error: e_2_1 };
|
|
135
|
-
return [3 /*break*/, 21];
|
|
136
|
-
case 20:
|
|
137
|
-
try {
|
|
138
|
-
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
139
|
-
}
|
|
140
|
-
finally { if (e_2) throw e_2.error; }
|
|
141
|
-
return [7 /*endfinally*/];
|
|
142
|
-
case 21: return [3 /*break*/, 11];
|
|
143
|
-
case 22: return [2 /*return*/];
|
|
95
|
+
case 10: return [4 /*yield*/, _d.sent()];
|
|
96
|
+
case 11:
|
|
97
|
+
_d.sent();
|
|
98
|
+
_d.label = 12;
|
|
99
|
+
case 12:
|
|
100
|
+
_b++;
|
|
101
|
+
return [3 /*break*/, 9];
|
|
102
|
+
case 13: return [3 /*break*/, 7];
|
|
103
|
+
case 14: return [2 /*return*/];
|
|
144
104
|
}
|
|
145
105
|
});
|
|
146
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiB5C,MAAM,UAAiB,eAAe,CACpC,UAA6B,EAC7B,aAG6B,EAC7B,eAAiC;;;;;;oBAE3B,OAAO,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,KAAI,UAAU,CAAC,YAAY,CAAC;oBAEpE,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE;wBACjC,MAAM,IAAI,KAAK,CACb,wDAAiD,UAAU,CAAC,QAAQ,CAAE,CACvE,CAAC;qBACH;oBAEK,WAAW,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,CAAC,CAAC;oBAEtD,IAAI,WAAW,GAAG,EAAE,EAAE;wBACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;qBACzE;oBAEqB,6BAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAA;;oBAAlE,aAAa,GAAG,SAAkD;0BAEnC,EAAlB,KAAA,aAAa,CAAC,IAAI;;;yBAAlB,CAAA,cAAkB,CAAA;oBAA1B,IAAI;iDACP,IAAI;wBAAV,gCAAU;;oBAAV,SAAU,CAAC;;;oBADM,IAAkB,CAAA;;;oBAI/B,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;oBAE5C,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;oBACrC,QAAQ,GAA8B,EAAE,CAAC;wCAEtC,MAAM;wBACb,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,OAAO,CAAuB;4BACpC,OAAA,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAA,EAAE,CAAC;wBAAzC,CAAyC,CAC1C,CACF,CAAC;;oBALJ,KAAS,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO;gCAAxD,MAAM;qBAMd;;;yBAEM,CAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;oBAEP,6BAAM,QAAQ,CAAC,KAAK,EAAG,GAAA;;oBAAlC,QAAQ,GAAG,SAAuB;0BACR,EAAb,KAAA,QAAQ,CAAC,IAAI;;;yBAAb,CAAA,cAAa,CAAA;oBAArB,IAAI;iDACP,IAAI;yBAAV,gCAAU;;oBAAV,SAAU,CAAC;;;oBADM,IAAa,CAAA;;;;;;;CAInC"}
|
package/dist/esm/request.js
CHANGED
|
@@ -45,36 +45,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
45
45
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
var __values = (this && this.__values) || function(o) {
|
|
49
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
50
|
-
if (m) return m.call(o);
|
|
51
|
-
if (o && typeof o.length === "number") return {
|
|
52
|
-
next: function () {
|
|
53
|
-
if (o && i >= o.length) o = void 0;
|
|
54
|
-
return { value: o && o[i++], done: !o };
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
58
|
-
};
|
|
59
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
60
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
61
|
-
if (!m) return o;
|
|
62
|
-
var i = m.call(o), r, ar = [], e;
|
|
63
|
-
try {
|
|
64
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
65
|
-
}
|
|
66
|
-
catch (error) { e = { error: error }; }
|
|
67
|
-
finally {
|
|
68
|
-
try {
|
|
69
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
70
|
-
}
|
|
71
|
-
finally { if (e) throw e.error; }
|
|
72
|
-
}
|
|
73
|
-
return ar;
|
|
74
|
-
};
|
|
75
48
|
import qs from 'qs';
|
|
76
49
|
import fetch from 'cross-fetch';
|
|
77
50
|
import { ApiError } from './ApiError';
|
|
51
|
+
import { wait } from './wait';
|
|
78
52
|
export var LogLevel;
|
|
79
53
|
(function (LogLevel) {
|
|
80
54
|
/** No logging */
|
|
@@ -127,21 +101,15 @@ function buildApiErrorInitObjectFromJobResult(method, url, requestHeaders, reque
|
|
|
127
101
|
preCallStack: preCallStack,
|
|
128
102
|
};
|
|
129
103
|
}
|
|
130
|
-
function wait(time) {
|
|
131
|
-
return new Promise(function (resolve) {
|
|
132
|
-
setTimeout(resolve, time);
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
104
|
function isErrorWithCode(error) {
|
|
136
105
|
return typeof error === 'object' && !!error && 'code' in error;
|
|
137
106
|
}
|
|
138
107
|
var requestCount = 1;
|
|
139
108
|
export function request(options) {
|
|
140
109
|
return __awaiter(this, void 0, void 0, function () {
|
|
141
|
-
var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, log, headers, baseUrl, body, queryString, url, _a, _b,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
switch (_f.label) {
|
|
110
|
+
var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, log, headers, baseUrl, body, queryString, url, _i, _a, _b, key, value, response_1, responseContentType, invalidContentType, waitTimeInSecs, responseBody, _c, jobResult, error, error_1;
|
|
111
|
+
return __generator(this, function (_d) {
|
|
112
|
+
switch (_d.label) {
|
|
145
113
|
case 0:
|
|
146
114
|
requestId = requestCount;
|
|
147
115
|
requestCount += 1;
|
|
@@ -161,36 +129,29 @@ export function request(options) {
|
|
|
161
129
|
if (logLevel >= LogLevel.BASIC) {
|
|
162
130
|
log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
|
|
163
131
|
if (logLevel >= LogLevel.BODY_AND_HEADERS) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
171
|
-
finally {
|
|
172
|
-
try {
|
|
173
|
-
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
174
|
-
}
|
|
175
|
-
finally { if (e_1) throw e_1.error; }
|
|
132
|
+
for (_i = 0, _a = Object.entries(headers || {}); _i < _a.length; _i++) {
|
|
133
|
+
_b = _a[_i], key = _b[0], value = _b[1];
|
|
134
|
+
log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
|
|
176
135
|
}
|
|
177
136
|
}
|
|
178
137
|
if (logLevel >= LogLevel.BODY && body) {
|
|
179
138
|
log("[".concat(requestId, "] ").concat(body));
|
|
180
139
|
}
|
|
181
140
|
}
|
|
182
|
-
|
|
141
|
+
_d.label = 1;
|
|
183
142
|
case 1:
|
|
184
|
-
|
|
143
|
+
_d.trys.push([1, 12, , 15]);
|
|
185
144
|
return [4 /*yield*/, fetch(url, {
|
|
186
145
|
method: options.method,
|
|
187
146
|
headers: headers,
|
|
188
147
|
body: body,
|
|
189
148
|
})];
|
|
190
149
|
case 2:
|
|
191
|
-
response_1 =
|
|
192
|
-
|
|
193
|
-
|
|
150
|
+
response_1 = _d.sent();
|
|
151
|
+
responseContentType = response_1.headers.get('Content-Type');
|
|
152
|
+
invalidContentType = responseContentType && !responseContentType.includes('application/json');
|
|
153
|
+
if (!(response_1.status === 429 || invalidContentType)) return [3 /*break*/, 4];
|
|
154
|
+
if (!autoRetry || (invalidContentType && options.method !== 'GET')) {
|
|
194
155
|
throw new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, undefined, preCallStack));
|
|
195
156
|
}
|
|
196
157
|
waitTimeInSecs = response_1.headers.has('X-RateLimit-Reset')
|
|
@@ -198,18 +159,22 @@ export function request(options) {
|
|
|
198
159
|
parseInt(response_1.headers.get('X-RateLimit-Reset'), 10)
|
|
199
160
|
: retryCount;
|
|
200
161
|
if (logLevel >= LogLevel.BASIC) {
|
|
201
|
-
|
|
162
|
+
if (response_1.status === 429) {
|
|
163
|
+
log("[".concat(requestId, "] Rate limit exceeded, wait ").concat(waitTimeInSecs, " seconds then retry..."));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
log("[".concat(requestId, "] Invalid response content type \"").concat(responseContentType, "\" (status ").concat(response_1.status, "). Wait ").concat(waitTimeInSecs, " seconds then retry..."));
|
|
167
|
+
}
|
|
202
168
|
}
|
|
203
169
|
return [4 /*yield*/, wait(waitTimeInSecs * 1000)];
|
|
204
170
|
case 3:
|
|
205
|
-
|
|
171
|
+
_d.sent();
|
|
206
172
|
return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
|
|
207
173
|
case 4:
|
|
208
174
|
if (logLevel >= LogLevel.BASIC) {
|
|
209
175
|
log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
|
|
210
176
|
if (logLevel >= LogLevel.BODY_AND_HEADERS) {
|
|
211
177
|
[
|
|
212
|
-
'content-type',
|
|
213
178
|
'x-api-version',
|
|
214
179
|
'x-environment',
|
|
215
180
|
'x-queue-time',
|
|
@@ -224,26 +189,26 @@ export function request(options) {
|
|
|
224
189
|
}
|
|
225
190
|
}
|
|
226
191
|
if (!(response_1.status === 204)) return [3 /*break*/, 5];
|
|
227
|
-
|
|
192
|
+
_c = undefined;
|
|
228
193
|
return [3 /*break*/, 7];
|
|
229
194
|
case 5: return [4 /*yield*/, response_1.json()];
|
|
230
195
|
case 6:
|
|
231
|
-
|
|
232
|
-
|
|
196
|
+
_c = _d.sent();
|
|
197
|
+
_d.label = 7;
|
|
233
198
|
case 7:
|
|
234
|
-
responseBody =
|
|
199
|
+
responseBody = _c;
|
|
235
200
|
if (logLevel >= LogLevel.BODY && responseBody) {
|
|
236
201
|
log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
|
|
237
202
|
}
|
|
238
203
|
if (!(response_1.status === 202)) return [3 /*break*/, 9];
|
|
239
204
|
return [4 /*yield*/, options.fetchJobResult(responseBody.data.id)];
|
|
240
205
|
case 8:
|
|
241
|
-
jobResult =
|
|
206
|
+
jobResult = _d.sent();
|
|
242
207
|
if (jobResult.status < 200 || jobResult.status >= 300) {
|
|
243
208
|
throw new ApiError(buildApiErrorInitObjectFromJobResult(options.method, url, headers, options.body, jobResult.status, jobResult.payload, preCallStack));
|
|
244
209
|
}
|
|
245
210
|
responseBody = jobResult.payload;
|
|
246
|
-
|
|
211
|
+
_d.label = 9;
|
|
247
212
|
case 9:
|
|
248
213
|
if (response_1.status >= 200 && response_1.status < 300) {
|
|
249
214
|
return [2 /*return*/, responseBody];
|
|
@@ -251,22 +216,22 @@ export function request(options) {
|
|
|
251
216
|
error = new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, responseBody, preCallStack));
|
|
252
217
|
if (!(autoRetry && error.findError('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
|
|
253
218
|
if (logLevel >= LogLevel.BASIC) {
|
|
254
|
-
log("[".concat(requestId, "] Data validation in progress,
|
|
219
|
+
log("[".concat(requestId, "] Data validation in progress, wait ").concat(retryCount, " seconds then retry..."));
|
|
255
220
|
}
|
|
256
221
|
return [4 /*yield*/, wait(retryCount * 1000)];
|
|
257
222
|
case 10:
|
|
258
|
-
|
|
223
|
+
_d.sent();
|
|
259
224
|
return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
|
|
260
225
|
case 11: throw error;
|
|
261
226
|
case 12:
|
|
262
|
-
error_1 =
|
|
227
|
+
error_1 = _d.sent();
|
|
263
228
|
if (!(isErrorWithCode(error_1) && error_1.code.includes('ETIMEDOUT'))) return [3 /*break*/, 14];
|
|
264
229
|
if (logLevel >= LogLevel.BASIC) {
|
|
265
|
-
log("[".concat(requestId, "] Error ").concat(error_1.code, ",
|
|
230
|
+
log("[".concat(requestId, "] Error ").concat(error_1.code, ", wait ").concat(retryCount, " seconds then retry..."));
|
|
266
231
|
}
|
|
267
232
|
return [4 /*yield*/, wait(retryCount * 1000)];
|
|
268
233
|
case 13:
|
|
269
|
-
|
|
234
|
+
_d.sent();
|
|
270
235
|
return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
|
|
271
236
|
case 14: throw error_1;
|
|
272
237
|
case 15: return [2 /*return*/];
|
package/dist/esm/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,iBAAiB;IACjB,uCAAQ,CAAA;IACR,8DAA8D;IAC9D,yCAAS,CAAA;IACT,0EAA0E;IAC1E,uCAAQ,CAAA;IACR,4FAA4F;IAC5F,+DAAoB,CAAA;AACtB,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AAmBD,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,GAAG;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAc,EACd,GAAW,EACX,cAAsC,EACtC,WAAoB,EACpB,QAAkB,EAClB,YAAqB,EACrB,YAAqB;IAErB,OAAO;QACL,OAAO,EAAE;YACP,GAAG,KAAA;YACH,MAAM,QAAA;YACN,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,WAAW;SAClB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,IAAI,EAAE,YAAY;SACnB;QACD,YAAY,cAAA;KACb,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,MAAc,EACd,GAAW,EACX,cAAsC,EACtC,WAAoB,EACpB,cAAsB,EACtB,YAAqB,EACrB,YAAqB;IAErB,OAAO;QACL,OAAO,EAAE;YACP,GAAG,KAAA;YACH,MAAM,QAAA;YACN,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,WAAW;SAClB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,YAAY;SACnB;QACD,YAAY,cAAA;KACb,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACjE,CAAC;AAED,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,MAAM,UAAgB,OAAO,CAAI,OAAuB;;;;;;oBAChD,SAAS,GAAG,YAAY,CAAC;oBAC/B,YAAY,IAAI,CAAC,CAAC;oBAEZ,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;oBACpC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,4BAA4B,CAAC;oBAC9D,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;oBACrC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;oBAC7C,SAAS,GAAG,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9D,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;oBAEpC,OAAO,cACX,cAAc,EAAE,kBAAkB,EAClC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,iBAAU,OAAO,CAAC,QAAQ,CAAE,EAC3C,YAAY,EAAE,SAAS,IACpB,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAChC,CAAC;oBAEI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAExE,WAAW,GACf,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;wBAChE,CAAC,CAAC,WAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAE;wBACtE,CAAC,CAAC,EAAE,CAAC;oBAEH,GAAG,GAAG,UAAG,OAAO,SAAG,OAAO,CAAC,GAAG,SAAG,WAAW,CAAE,CAAC;oBAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC9B,GAAG,CAAC,WAAI,SAAS,eAAK,OAAO,CAAC,MAAM,cAAI,GAAG,CAAE,CAAC,CAAC;wBAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE;4BACzC,WAAwD,EAA7B,KAAA,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAA7B,cAA6B,EAA7B,IAA6B,EAAE;gCAA/C,WAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gCACpB,GAAG,CAAC,WAAI,SAAS,eAAK,GAAG,eAAK,KAAK,CAAE,CAAC,CAAC;6BACxC;yBACF;wBACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE;4BACrC,GAAG,CAAC,WAAI,SAAS,eAAK,IAAI,CAAE,CAAC,CAAC;yBAC/B;qBACF;;;;oBAGkB,qBAAM,KAAK,CAAC,GAAG,EAAE;4BAChC,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,OAAO,SAAA;4BACP,IAAI,MAAA;yBACL,CAAC,EAAA;;oBAJI,aAAW,SAIf;oBAEI,mBAAmB,GAAG,UAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC3D,kBAAkB,GACtB,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;yBAEvE,CAAA,UAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAA,EAA7C,wBAA6C;oBAC/C,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;wBAClE,MAAM,IAAI,QAAQ,CAChB,uBAAuB,CACrB,OAAO,CAAC,MAAM,EACd,GAAG,EACH,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,UAAQ,EACR,SAAS,EACT,YAAY,CACb,CACF,CAAC;qBACH;oBAEK,cAAc,GAAG,UAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;wBAC9D,CAAC,CAAC,oEAAoE;4BACpE,QAAQ,CAAC,UAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAE,EAAE,EAAE,CAAC;wBAC1D,CAAC,CAAC,UAAU,CAAC;oBAEf,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC9B,IAAI,UAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;4BAC3B,GAAG,CACD,WAAI,SAAS,yCAA+B,cAAc,2BAAwB,CACnF,CAAC;yBACH;6BAAM;4BACL,GAAG,CACD,WAAI,SAAS,+CAAoC,mBAAmB,wBAAa,UAAQ,CAAC,MAAM,qBAAW,cAAc,2BAAwB,CAClJ,CAAC;yBACH;qBACF;oBAED,qBAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAA;;oBAAjC,SAAiC,CAAC;oBAElC,sBAAO,OAAO,uBAAM,OAAO,KAAE,UAAU,EAAE,UAAU,GAAG,CAAC,IAAG,EAAC;;oBAG7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC9B,GAAG,CAAC,WAAI,SAAS,uBAAa,UAAQ,CAAC,MAAM,eAAK,UAAQ,CAAC,UAAU,MAAG,CAAC,CAAC;wBAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE;4BACzC;gCACE,eAAe;gCACf,eAAe;gCACf,cAAc;gCACd,uBAAuB;gCACvB,cAAc;6BACf,CAAC,OAAO,CAAC,UAAC,GAAG;gCACZ,IAAM,KAAK,GAAG,UAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gCACxC,IAAI,KAAK,EAAE;oCACT,GAAG,CAAC,WAAI,SAAS,eAAK,GAAG,eAAK,KAAK,CAAE,CAAC,CAAC;iCACxC;4BACH,CAAC,CAAC,CAAC;yBACJ;qBACF;yBAGC,CAAA,UAAQ,CAAC,MAAM,KAAK,GAAG,CAAA,EAAvB,wBAAuB;oBAAG,KAAA,SAAS,CAAA;;wBAAG,qBAAM,UAAQ,CAAC,IAAI,EAAE,EAAA;;oBAArB,KAAA,SAAqB,CAAA;;;oBADzD,YAAY,KAC6C;oBAE7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,YAAY,EAAE;wBAC7C,GAAG,CAAC,WAAI,SAAS,eAAK,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;qBAChE;yBAEG,CAAA,UAAQ,CAAC,MAAM,KAAK,GAAG,CAAA,EAAvB,wBAAuB;oBACP,qBAAM,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA;;oBAA9D,SAAS,GAAG,SAAkD;oBAEpE,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;wBACrD,MAAM,IAAI,QAAQ,CAChB,oCAAoC,CAClC,OAAO,CAAC,MAAM,EACd,GAAG,EACH,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,OAAO,EACjB,YAAY,CACb,CACF,CAAC;qBACH;oBAED,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;;;oBAGnC,IAAI,UAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,UAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;wBACnD,sBAAO,YAAY,EAAC;qBACrB;oBAEK,KAAK,GAAG,IAAI,QAAQ,CACxB,uBAAuB,CACrB,OAAO,CAAC,MAAM,EACd,GAAG,EACH,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,UAAQ,EACR,YAAY,EACZ,YAAY,CACb,CACF,CAAC;yBAEE,CAAA,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAA,EAAjE,yBAAiE;oBACnE,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC9B,GAAG,CACD,WAAI,SAAS,iDAAuC,UAAU,2BAAwB,CACvF,CAAC;qBACH;oBAED,qBAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAE9B,sBAAO,OAAO,uBAAM,OAAO,KAAE,UAAU,EAAE,UAAU,GAAG,CAAC,IAAG,EAAC;yBAG7D,MAAM,KAAK,CAAC;;;yBAER,CAAA,eAAe,CAAC,OAAK,CAAC,IAAI,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA,EAA1D,yBAA0D;oBAC5D,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC9B,GAAG,CACD,WAAI,SAAS,qBAAW,OAAK,CAAC,IAAI,oBAAU,UAAU,2BAAwB,CAC/E,CAAC;qBACH;oBAED,qBAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAE9B,sBAAO,OAAO,uBAAM,OAAO,KAAE,UAAU,EAAE,UAAU,GAAG,CAAC,IAAG,EAAC;yBAG7D,MAAM,OAAK,CAAC;;;;;CAEf"}
|
package/dist/esm/serialize.js
CHANGED
|
@@ -20,22 +20,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
}
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
24
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
25
|
-
if (!m) return o;
|
|
26
|
-
var i = m.call(o), r, ar = [], e;
|
|
27
|
-
try {
|
|
28
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
29
|
-
}
|
|
30
|
-
catch (error) { e = { error: error }; }
|
|
31
|
-
finally {
|
|
32
|
-
try {
|
|
33
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
34
|
-
}
|
|
35
|
-
finally { if (e) throw e.error; }
|
|
36
|
-
}
|
|
37
|
-
return ar;
|
|
38
|
-
};
|
|
39
23
|
function isRel(object) {
|
|
40
24
|
return (typeof object === 'object' && !!object && 'id' in object && 'type' in object);
|
|
41
25
|
}
|
|
@@ -52,7 +36,7 @@ export function serializeRequestBody(body, options) {
|
|
|
52
36
|
var relationships = {};
|
|
53
37
|
if (options.attributes === '*') {
|
|
54
38
|
Object.entries(otherProperties).forEach(function (_a) {
|
|
55
|
-
var
|
|
39
|
+
var key = _a[0], value = _a[1];
|
|
56
40
|
if (options.relationships.includes(key)) {
|
|
57
41
|
if (isRel(value)) {
|
|
58
42
|
var id_1 = value.id, type_1 = value.type;
|
|
@@ -79,7 +63,7 @@ export function serializeRequestBody(body, options) {
|
|
|
79
63
|
}
|
|
80
64
|
else if (options.relationships === '*') {
|
|
81
65
|
Object.entries(otherProperties).forEach(function (_a) {
|
|
82
|
-
var
|
|
66
|
+
var key = _a[0], value = _a[1];
|
|
83
67
|
if (options.attributes.includes(key)) {
|
|
84
68
|
attributes[key] = value;
|
|
85
69
|
}
|
|
@@ -106,7 +90,7 @@ export function serializeRequestBody(body, options) {
|
|
|
106
90
|
}
|
|
107
91
|
else {
|
|
108
92
|
Object.entries(otherProperties).forEach(function (_a) {
|
|
109
|
-
var
|
|
93
|
+
var key = _a[0], value = _a[1];
|
|
110
94
|
if (options.attributes.includes(key)) {
|
|
111
95
|
attributes[key] = value;
|
|
112
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/wait.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function wait(time:
|
|
1
|
+
export declare function wait(time: number): Promise<unknown>;
|
package/dist/esm/wait.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/types/wait.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function wait(time:
|
|
1
|
+
export declare function wait(time: number): Promise<unknown>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datocms/rest-client-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Utilities for DatoCMS REST API clients",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"datocms",
|
|
@@ -40,5 +40,8 @@
|
|
|
40
40
|
"cross-fetch": "^3.1.5",
|
|
41
41
|
"qs": "^6.10.3"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "d3b88053a1500682a3d679622975b3da7fe6aff5",
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/qs": "^6.9.7"
|
|
46
|
+
}
|
|
44
47
|
}
|
package/src/ApiError.ts
CHANGED
|
@@ -43,7 +43,7 @@ function isErrorBody(body: unknown): body is ErrorBody {
|
|
|
43
43
|
return true;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
const humanMessageForCode = {
|
|
46
|
+
const humanMessageForCode: Record<string, string | undefined> = {
|
|
47
47
|
BATCH_DATA_VALIDATION_IN_PROGRESS: `The schema of this model changed, we're re-running validations over every record in background. Please retry with this operation in a few seconds!`,
|
|
48
48
|
INSUFFICIENT_PERMISSIONS: `Your role does not permit this action`,
|
|
49
49
|
MAINTENANCE_MODE: `The project is currently in maintenance mode!`,
|
|
@@ -65,7 +65,7 @@ const humanMessageForCode = {
|
|
|
65
65
|
UPLOAD_NOT_PASSING_FIELD_VALIDATIONS: `Couldn't update this asset since some records are failing to pass the validations!`,
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
const humanMessageForPlanUpgradeLimit = {
|
|
68
|
+
const humanMessageForPlanUpgradeLimit: Record<string, string | undefined> = {
|
|
69
69
|
build_triggers: `You've reached the maximum number of build triggers your plan allows`,
|
|
70
70
|
sandbox_environments: `You've reached the maximum number of environments your plan allows`,
|
|
71
71
|
item_types: `You've reached the maximum number of models your plan allows to create`,
|
package/src/request.ts
CHANGED
|
@@ -2,6 +2,7 @@ import qs from 'qs';
|
|
|
2
2
|
import fetch from 'cross-fetch';
|
|
3
3
|
import { ApiError, ApiErrorInitObject } from './ApiError';
|
|
4
4
|
import { JobResult } from './internalTypes';
|
|
5
|
+
import { wait } from './wait';
|
|
5
6
|
|
|
6
7
|
export enum LogLevel {
|
|
7
8
|
/** No logging */
|
|
@@ -32,7 +33,7 @@ type RequestOptions = {
|
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
function headersToObject(headers: Headers): Record<string, string> {
|
|
35
|
-
const result = {};
|
|
36
|
+
const result: Record<string, string> = {};
|
|
36
37
|
|
|
37
38
|
headers.forEach((value, key) => {
|
|
38
39
|
result[key] = value;
|
|
@@ -93,12 +94,6 @@ function buildApiErrorInitObjectFromJobResult(
|
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
function wait(time) {
|
|
97
|
-
return new Promise((resolve) => {
|
|
98
|
-
setTimeout(resolve, time);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
97
|
function isErrorWithCode(error: unknown): error is { code: string } {
|
|
103
98
|
return typeof error === 'object' && !!error && 'code' in error;
|
|
104
99
|
}
|
|
@@ -153,8 +148,12 @@ export async function request<T>(options: RequestOptions): Promise<T> {
|
|
|
153
148
|
body,
|
|
154
149
|
});
|
|
155
150
|
|
|
156
|
-
|
|
157
|
-
|
|
151
|
+
const responseContentType = response.headers.get('Content-Type');
|
|
152
|
+
const invalidContentType =
|
|
153
|
+
responseContentType && !responseContentType.includes('application/json');
|
|
154
|
+
|
|
155
|
+
if (response.status === 429 || invalidContentType) {
|
|
156
|
+
if (!autoRetry || (invalidContentType && options.method !== 'GET')) {
|
|
158
157
|
throw new ApiError(
|
|
159
158
|
buildApiErrorInitObject(
|
|
160
159
|
options.method,
|
|
@@ -174,9 +173,15 @@ export async function request<T>(options: RequestOptions): Promise<T> {
|
|
|
174
173
|
: retryCount;
|
|
175
174
|
|
|
176
175
|
if (logLevel >= LogLevel.BASIC) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
if (response.status === 429) {
|
|
177
|
+
log(
|
|
178
|
+
`[${requestId}] Rate limit exceeded, wait ${waitTimeInSecs} seconds then retry...`,
|
|
179
|
+
);
|
|
180
|
+
} else {
|
|
181
|
+
log(
|
|
182
|
+
`[${requestId}] Invalid response content type "${responseContentType}" (status ${response.status}). Wait ${waitTimeInSecs} seconds then retry...`,
|
|
183
|
+
);
|
|
184
|
+
}
|
|
180
185
|
}
|
|
181
186
|
|
|
182
187
|
await wait(waitTimeInSecs * 1000);
|
|
@@ -188,7 +193,6 @@ export async function request<T>(options: RequestOptions): Promise<T> {
|
|
|
188
193
|
log(`[${requestId}] Status: ${response.status} (${response.statusText})`);
|
|
189
194
|
if (logLevel >= LogLevel.BODY_AND_HEADERS) {
|
|
190
195
|
[
|
|
191
|
-
'content-type',
|
|
192
196
|
'x-api-version',
|
|
193
197
|
'x-environment',
|
|
194
198
|
'x-queue-time',
|
|
@@ -249,7 +253,7 @@ export async function request<T>(options: RequestOptions): Promise<T> {
|
|
|
249
253
|
if (autoRetry && error.findError('BATCH_DATA_VALIDATION_IN_PROGRESS')) {
|
|
250
254
|
if (logLevel >= LogLevel.BASIC) {
|
|
251
255
|
log(
|
|
252
|
-
`[${requestId}] Data validation in progress,
|
|
256
|
+
`[${requestId}] Data validation in progress, wait ${retryCount} seconds then retry...`,
|
|
253
257
|
);
|
|
254
258
|
}
|
|
255
259
|
|
|
@@ -263,7 +267,7 @@ export async function request<T>(options: RequestOptions): Promise<T> {
|
|
|
263
267
|
if (isErrorWithCode(error) && error.code.includes('ETIMEDOUT')) {
|
|
264
268
|
if (logLevel >= LogLevel.BASIC) {
|
|
265
269
|
log(
|
|
266
|
-
`[${requestId}] Error ${error.code},
|
|
270
|
+
`[${requestId}] Error ${error.code}, wait ${retryCount} seconds then retry...`,
|
|
267
271
|
);
|
|
268
272
|
}
|
|
269
273
|
|
package/src/serialize.ts
CHANGED
|
@@ -41,8 +41,8 @@ export function serializeRequestBody<T>(body: unknown, options: Options): T {
|
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
42
|
const { id, type, meta, ...otherProperties } = body as any;
|
|
43
43
|
|
|
44
|
-
const attributes = {};
|
|
45
|
-
const relationships = {};
|
|
44
|
+
const attributes: Record<string, unknown> = {};
|
|
45
|
+
const relationships: Record<string, unknown> = {};
|
|
46
46
|
|
|
47
47
|
if (options.attributes === '*') {
|
|
48
48
|
Object.entries(otherProperties).forEach(([key, value]) => {
|