@datocms/rest-client-utils 0.1.2 → 0.1.8

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.
@@ -14,6 +14,22 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
17
33
  Object.defineProperty(exports, "__esModule", { value: true });
18
34
  exports.ApiError = void 0;
19
35
  function isErrorBody(body) {
@@ -109,20 +125,29 @@ var ApiError = /** @class */ (function (_super) {
109
125
  enumerable: false,
110
126
  configurable: true
111
127
  });
112
- ApiError.prototype.findErrorWithCode = function (codeOrCodes) {
128
+ ApiError.prototype.findError = function (codeOrCodes, filterDetails) {
113
129
  var codes = Array.isArray(codeOrCodes) ? codeOrCodes : [codeOrCodes];
114
- return this.errors.find(function (error) { return codes.includes(error.attributes.code); });
130
+ return this.errors.find(function (error) {
131
+ return codes.includes(error.attributes.code) &&
132
+ (!filterDetails ||
133
+ (typeof filterDetails === 'function'
134
+ ? filterDetails(error.attributes.details)
135
+ : Object.entries(filterDetails).every(function (_a) {
136
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
137
+ return error.attributes.details[key] === value;
138
+ })));
139
+ });
115
140
  };
116
141
  Object.defineProperty(ApiError.prototype, "humanMessage", {
117
142
  get: function () {
118
143
  var _this = this;
119
- var planUpgradeError = this.findErrorWithCode('PLAN_UPGRADE_REQUIRED');
144
+ var planUpgradeError = this.findError('PLAN_UPGRADE_REQUIRED');
120
145
  if (planUpgradeError) {
121
146
  var limit = planUpgradeError.attributes.details.limit;
122
147
  return "".concat(humanMessageForPlanUpgradeLimit[limit], ". Please head over to your account dashboard (https://dashboard.datocms.com/) to upgrade the plan or, if no publicly available plan suits your needs, contact our Sales team (https://www.datocms.com/contact) to get a custom quote!");
123
148
  }
124
149
  var errors = Object.keys(humanMessageForCode)
125
- .filter(function (code) { return _this.findErrorWithCode(code); })
150
+ .filter(function (code) { return _this.findError(code); })
126
151
  .map(function (code) { return humanMessageForCode[code]; });
127
152
  if (errors.length === 0) {
128
153
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/ApiError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAUA,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;QAClE,OAAO,KAAK,CAAC;KACd;IAED,IAAM,YAAY,GAAG,IAAyB,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACrC,OAAO,KAAK,CAAC;KACd;IAED,IAAM,gBAAgB,GAAG,YAAmC,CAAC;IAE7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO,KAAK,CAAC;KACd;IAED,IAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzC,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QAClB,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC;QACzB,OAAuB,CAAC,IAAI,KAAK,WAAW,EAC7C;QACA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAM,mBAAmB,GAAG;IAC1B,iCAAiC,EAAE,oJAAoJ;IACvL,wBAAwB,EAAE,uCAAuC;IACjE,gBAAgB,EAAE,+CAA+C;IACjE,kBAAkB,EAAE,0FAA0F;IAC9G,mBAAmB,EAAE,4BAA4B;IACjD,aAAa,EAAE,6BAA6B;IAC5C,cAAc,EAAE,iHAAiH;IACjI,WAAW,EAAE,wFAAwF;IACrG,2BAA2B,EAAE,4EAA4E;IACzG,qBAAqB,EAAE,sCAAsC;IAC7D,kBAAkB,EAAE,2EAA2E;IAC/F,kBAAkB,EAAE,qKAAqK;IACzL,uBAAuB,EAAE,8DAA8D;IACvF,kBAAkB,EAAE,yFAAyF;IAC7G,qBAAqB,EAAE,6CAA6C;IACpE,gBAAgB,EAAE,oEAAoE;IACtF,kBAAkB,EAAE,qEAAqE;IACzF,0BAA0B,EAAE,qEAAqE;IACjG,oCAAoC,EAAE,oFAAoF;CAC3H,CAAC;AAEF,IAAM,+BAA+B,GAAG;IACtC,cAAc,EAAE,sEAAsE;IACtF,oBAAoB,EAAE,oEAAoE;IAC1F,UAAU,EAAE,wEAAwE;IACpF,KAAK,EAAE,yEAAyE;IAChF,OAAO,EAAE,+DAA+D;IACxE,oBAAoB,EAAE,+DAA+D;IACrF,GAAG,EAAE,yDAAyD;IAC9D,OAAO,EAAE,+DAA+D;IACxE,KAAK,EAAE,uEAAuE;IAC9E,gBAAgB,EAAE,qDAAqD;IACvE,KAAK,EAAE,8FAA8F;IACrG,aAAa,EAAE,4EAA4E;CAC5F,CAAC;AAsBF;IAA8B,4BAAK;IAKjC,kBAAY,UAA8B;;QAA1C,YACE,kBAAM,YAAY,CAAC,SAwBpB;QAvBC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,WAAW,SAAS,CAAC,CAAC;QAElD,IAAI,mBAAmB,IAAI,KAAK,EAAE;YAChC,KAAK,CAAC,iBAAiB,CAAC,KAAI,EAAE,QAAQ,CAAC,CAAC;SACzC;aAAM;YACL,KAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;SAChC;QAED,KAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,KAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,KAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAE5C,IAAI,OAAO,GAAG,UAAG,UAAU,CAAC,OAAO,CAAC,MAAM,cAAI,UAAU,CAAC,OAAO,CAAC,GAAG,eAAK,KAAI,CAAC,QAAQ,CAAC,MAAM,cAAI,KAAI,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC;QAE5H,IAAI,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,OAAO,IAAI,cAAO,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC;SAC1D;QAED,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,KAAI,CAAC,YAAY,EAAE;YACrB,KAAI,CAAC,KAAK,IAAI,wBAAiB,KAAI,CAAC,YAAY,CAAE,CAAC;SACpD;;IACH,CAAC;IAED,sBAAI,4BAAM;aAAV;YACE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACpC,OAAO,EAAE,CAAC;aACX;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC;;;OAAA;IAED,oCAAiB,GAAjB,UAAkB,WAAW;QAC3B,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAArC,CAAqC,CAAC,CAAC;IAC5E,CAAC;IAED,sBAAI,kCAAY;aAAhB;YAAA,iBAoBC;YAnBC,IAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAEzE,IAAI,gBAAgB,EAAE;gBACZ,IAAA,KAAK,GAAK,gBAAgB,CAAC,UAAU,CAAC,OAG7C,MAHY,CAGX;gBACF,OAAO,UAAG,+BAA+B,CAAC,KAAK,CAAC,0OAAuO,CAAC;aACzR;YAED,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBAC5C,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC;iBAC9C,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,mBAAmB,CAAC,IAAI,CAAC,EAAzB,CAAyB,CAAC,CAAC;YAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;YAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IACH,eAAC;AAAD,CAAC,AAlED,CAA8B,KAAK,GAkElC;AAlEY,4BAAQ"}
1
+ {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/ApiError.ts"],"names":[],"mappings":"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"}
@@ -144,7 +144,7 @@ function isErrorWithCode(error) {
144
144
  var requestCount = 1;
145
145
  function request(options) {
146
146
  return __awaiter(this, void 0, void 0, function () {
147
- var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, headers, baseUrl, body, queryString, url, _a, _b, _c, key, value, response_1, waitTimeInSecs, responseBody, _d, jobResult, error, error_1;
147
+ var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, log, headers, baseUrl, body, queryString, url, _a, _b, _c, key, value, response_1, responseContentType, invalidContentType, waitTimeInSecs, responseBody, _d, jobResult, error, error_1;
148
148
  var e_1, _e;
149
149
  return __generator(this, function (_f) {
150
150
  switch (_f.label) {
@@ -156,6 +156,7 @@ function request(options) {
156
156
  retryCount = options.retryCount || 1;
157
157
  logLevel = options.logLevel || LogLevel.NONE;
158
158
  autoRetry = 'autoRetry' in options ? options.autoRetry : true;
159
+ log = options.logFn || (function () { return true; });
159
160
  headers = __assign({ 'content-type': 'application/json', accept: 'application/json', authorization: "Bearer ".concat(options.apiToken), 'user-agent': userAgent }, (options.extraHeaders || {}));
160
161
  baseUrl = options.baseUrl.replace(/\/$/, '');
161
162
  body = options.body ? JSON.stringify(options.body, null, 2) : undefined;
@@ -164,12 +165,12 @@ function request(options) {
164
165
  : '';
165
166
  url = "".concat(baseUrl).concat(options.url).concat(queryString);
166
167
  if (logLevel >= LogLevel.BASIC) {
167
- console.log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
168
+ log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
168
169
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
169
170
  try {
170
171
  for (_a = __values(Object.entries(headers || {})), _b = _a.next(); !_b.done; _b = _a.next()) {
171
172
  _c = __read(_b.value, 2), key = _c[0], value = _c[1];
172
- console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
173
+ log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
173
174
  }
174
175
  }
175
176
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -181,7 +182,7 @@ function request(options) {
181
182
  }
182
183
  }
183
184
  if (logLevel >= LogLevel.BODY && body) {
184
- console.log("[".concat(requestId, "] ").concat(body));
185
+ log("[".concat(requestId, "] ").concat(body));
185
186
  }
186
187
  }
187
188
  _f.label = 1;
@@ -194,8 +195,10 @@ function request(options) {
194
195
  })];
195
196
  case 2:
196
197
  response_1 = _f.sent();
197
- if (!(response_1.status === 429)) return [3 /*break*/, 4];
198
- if (!autoRetry) {
198
+ responseContentType = response_1.headers.get('Content-Type');
199
+ invalidContentType = responseContentType && !responseContentType.includes('application/json');
200
+ if (!(response_1.status === 429 || invalidContentType)) return [3 /*break*/, 4];
201
+ if (!autoRetry || (invalidContentType && options.method !== 'GET')) {
199
202
  throw new ApiError_1.ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, undefined, preCallStack));
200
203
  }
201
204
  waitTimeInSecs = response_1.headers.has('X-RateLimit-Reset')
@@ -203,7 +206,12 @@ function request(options) {
203
206
  parseInt(response_1.headers.get('X-RateLimit-Reset'), 10)
204
207
  : retryCount;
205
208
  if (logLevel >= LogLevel.BASIC) {
206
- console.log("[".concat(requestId, "] Rate limit exceeded, waiting ").concat(waitTimeInSecs, " seconds..."));
209
+ if (response_1.status === 429) {
210
+ log("[".concat(requestId, "] Rate limit exceeded, wait ").concat(waitTimeInSecs, " seconds then retry..."));
211
+ }
212
+ else {
213
+ log("[".concat(requestId, "] Invalid response content type \"").concat(responseContentType, "\" (status ").concat(response_1.status, "). Wait ").concat(waitTimeInSecs, " seconds then retry..."));
214
+ }
207
215
  }
208
216
  return [4 /*yield*/, wait(waitTimeInSecs * 1000)];
209
217
  case 3:
@@ -211,18 +219,18 @@ function request(options) {
211
219
  return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
212
220
  case 4:
213
221
  if (logLevel >= LogLevel.BASIC) {
214
- console.log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
222
+ log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
215
223
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
216
224
  [
217
- 'content-type',
218
225
  'x-api-version',
219
226
  'x-environment',
220
227
  'x-queue-time',
221
228
  'x-ratelimit-remaining',
229
+ 'x-request-id',
222
230
  ].forEach(function (key) {
223
231
  var value = response_1.headers.get(key);
224
232
  if (value) {
225
- console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
233
+ log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
226
234
  }
227
235
  });
228
236
  }
@@ -237,7 +245,7 @@ function request(options) {
237
245
  case 7:
238
246
  responseBody = _d;
239
247
  if (logLevel >= LogLevel.BODY && responseBody) {
240
- console.log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
248
+ log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
241
249
  }
242
250
  if (!(response_1.status === 202)) return [3 /*break*/, 9];
243
251
  return [4 /*yield*/, options.fetchJobResult(responseBody.data.id)];
@@ -253,10 +261,9 @@ function request(options) {
253
261
  return [2 /*return*/, responseBody];
254
262
  }
255
263
  error = new ApiError_1.ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, responseBody, preCallStack));
256
- if (!(autoRetry &&
257
- error.findErrorWithCode('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
264
+ if (!(autoRetry && error.findError('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
258
265
  if (logLevel >= LogLevel.BASIC) {
259
- console.log("[".concat(requestId, "] Data validation in progress, waiting ").concat(retryCount, " seconds..."));
266
+ log("[".concat(requestId, "] Data validation in progress, wait ").concat(retryCount, " seconds then retry..."));
260
267
  }
261
268
  return [4 /*yield*/, wait(retryCount * 1000)];
262
269
  case 10:
@@ -267,7 +274,7 @@ function request(options) {
267
274
  error_1 = _f.sent();
268
275
  if (!(isErrorWithCode(error_1) && error_1.code.includes('ETIMEDOUT'))) return [3 /*break*/, 14];
269
276
  if (logLevel >= LogLevel.BASIC) {
270
- console.log("[".concat(requestId, "] Error ").concat(error_1.code, ", waiting ").concat(retryCount, " seconds..."));
277
+ log("[".concat(requestId, "] Error ").concat(error_1.code, ", wait ").concat(retryCount, " seconds then retry..."));
271
278
  }
272
279
  return [4 /*yield*/, wait(retryCount * 1000)];
273
280
  case 13:
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ export declare type ErrorEntity = {
3
3
  type: 'api_error';
4
4
  attributes: {
5
5
  code: string;
6
- details: unknown;
6
+ details: Record<string, unknown>;
7
7
  };
8
8
  };
9
+ declare type FilterFn = (details: Record<string, unknown>) => boolean;
9
10
  export declare type ApiErrorRequest = {
10
11
  url: string;
11
12
  method: string;
@@ -29,6 +30,7 @@ export declare class ApiError extends Error {
29
30
  preCallStack?: string;
30
31
  constructor(initObject: ApiErrorInitObject);
31
32
  get errors(): ErrorEntity[];
32
- findErrorWithCode(codeOrCodes: any): ErrorEntity | undefined;
33
+ findError(codeOrCodes: string | string[], filterDetails?: Record<string, string> | FilterFn): ErrorEntity | undefined;
33
34
  get humanMessage(): string | null;
34
35
  }
36
+ export {};
@@ -13,6 +13,22 @@ var __extends = (this && this.__extends) || (function () {
13
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
14
  };
15
15
  })();
16
+ var __read = (this && this.__read) || function (o, n) {
17
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
18
+ if (!m) return o;
19
+ var i = m.call(o), r, ar = [], e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ }
23
+ catch (error) { e = { error: error }; }
24
+ finally {
25
+ try {
26
+ if (r && !r.done && (m = i["return"])) m.call(i);
27
+ }
28
+ finally { if (e) throw e.error; }
29
+ }
30
+ return ar;
31
+ };
16
32
  function isErrorBody(body) {
17
33
  if (typeof body !== 'object' || body === null || !('data' in body)) {
18
34
  return false;
@@ -106,20 +122,29 @@ var ApiError = /** @class */ (function (_super) {
106
122
  enumerable: false,
107
123
  configurable: true
108
124
  });
109
- ApiError.prototype.findErrorWithCode = function (codeOrCodes) {
125
+ ApiError.prototype.findError = function (codeOrCodes, filterDetails) {
110
126
  var codes = Array.isArray(codeOrCodes) ? codeOrCodes : [codeOrCodes];
111
- return this.errors.find(function (error) { return codes.includes(error.attributes.code); });
127
+ return this.errors.find(function (error) {
128
+ return codes.includes(error.attributes.code) &&
129
+ (!filterDetails ||
130
+ (typeof filterDetails === 'function'
131
+ ? filterDetails(error.attributes.details)
132
+ : Object.entries(filterDetails).every(function (_a) {
133
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
134
+ return error.attributes.details[key] === value;
135
+ })));
136
+ });
112
137
  };
113
138
  Object.defineProperty(ApiError.prototype, "humanMessage", {
114
139
  get: function () {
115
140
  var _this = this;
116
- var planUpgradeError = this.findErrorWithCode('PLAN_UPGRADE_REQUIRED');
141
+ var planUpgradeError = this.findError('PLAN_UPGRADE_REQUIRED');
117
142
  if (planUpgradeError) {
118
143
  var limit = planUpgradeError.attributes.details.limit;
119
144
  return "".concat(humanMessageForPlanUpgradeLimit[limit], ". Please head over to your account dashboard (https://dashboard.datocms.com/) to upgrade the plan or, if no publicly available plan suits your needs, contact our Sales team (https://www.datocms.com/contact) to get a custom quote!");
120
145
  }
121
146
  var errors = Object.keys(humanMessageForCode)
122
- .filter(function (code) { return _this.findErrorWithCode(code); })
147
+ .filter(function (code) { return _this.findError(code); })
123
148
  .map(function (code) { return humanMessageForCode[code]; });
124
149
  if (errors.length === 0) {
125
150
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/ApiError.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/ApiError.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ declare type RequestOptions = {
22
22
  queryParams?: Record<string, unknown>;
23
23
  body?: unknown;
24
24
  preCallStack?: string;
25
+ logFn?: (message: string) => void;
25
26
  userAgent?: string;
26
27
  };
27
28
  export declare function request<T>(options: RequestOptions): Promise<T>;
@@ -138,7 +138,7 @@ function isErrorWithCode(error) {
138
138
  var requestCount = 1;
139
139
  export function request(options) {
140
140
  return __awaiter(this, void 0, void 0, function () {
141
- var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, headers, baseUrl, body, queryString, url, _a, _b, _c, key, value, response_1, waitTimeInSecs, responseBody, _d, jobResult, error, error_1;
141
+ var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, log, headers, baseUrl, body, queryString, url, _a, _b, _c, key, value, response_1, responseContentType, invalidContentType, waitTimeInSecs, responseBody, _d, jobResult, error, error_1;
142
142
  var e_1, _e;
143
143
  return __generator(this, function (_f) {
144
144
  switch (_f.label) {
@@ -150,6 +150,7 @@ export function request(options) {
150
150
  retryCount = options.retryCount || 1;
151
151
  logLevel = options.logLevel || LogLevel.NONE;
152
152
  autoRetry = 'autoRetry' in options ? options.autoRetry : true;
153
+ log = options.logFn || (function () { return true; });
153
154
  headers = __assign({ 'content-type': 'application/json', accept: 'application/json', authorization: "Bearer ".concat(options.apiToken), 'user-agent': userAgent }, (options.extraHeaders || {}));
154
155
  baseUrl = options.baseUrl.replace(/\/$/, '');
155
156
  body = options.body ? JSON.stringify(options.body, null, 2) : undefined;
@@ -158,12 +159,12 @@ export function request(options) {
158
159
  : '';
159
160
  url = "".concat(baseUrl).concat(options.url).concat(queryString);
160
161
  if (logLevel >= LogLevel.BASIC) {
161
- console.log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
162
+ log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
162
163
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
163
164
  try {
164
165
  for (_a = __values(Object.entries(headers || {})), _b = _a.next(); !_b.done; _b = _a.next()) {
165
166
  _c = __read(_b.value, 2), key = _c[0], value = _c[1];
166
- console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
167
+ log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
167
168
  }
168
169
  }
169
170
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -175,7 +176,7 @@ export function request(options) {
175
176
  }
176
177
  }
177
178
  if (logLevel >= LogLevel.BODY && body) {
178
- console.log("[".concat(requestId, "] ").concat(body));
179
+ log("[".concat(requestId, "] ").concat(body));
179
180
  }
180
181
  }
181
182
  _f.label = 1;
@@ -188,8 +189,10 @@ export function request(options) {
188
189
  })];
189
190
  case 2:
190
191
  response_1 = _f.sent();
191
- if (!(response_1.status === 429)) return [3 /*break*/, 4];
192
- if (!autoRetry) {
192
+ responseContentType = response_1.headers.get('Content-Type');
193
+ invalidContentType = responseContentType && !responseContentType.includes('application/json');
194
+ if (!(response_1.status === 429 || invalidContentType)) return [3 /*break*/, 4];
195
+ if (!autoRetry || (invalidContentType && options.method !== 'GET')) {
193
196
  throw new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, undefined, preCallStack));
194
197
  }
195
198
  waitTimeInSecs = response_1.headers.has('X-RateLimit-Reset')
@@ -197,7 +200,12 @@ export function request(options) {
197
200
  parseInt(response_1.headers.get('X-RateLimit-Reset'), 10)
198
201
  : retryCount;
199
202
  if (logLevel >= LogLevel.BASIC) {
200
- console.log("[".concat(requestId, "] Rate limit exceeded, waiting ").concat(waitTimeInSecs, " seconds..."));
203
+ if (response_1.status === 429) {
204
+ log("[".concat(requestId, "] Rate limit exceeded, wait ").concat(waitTimeInSecs, " seconds then retry..."));
205
+ }
206
+ else {
207
+ log("[".concat(requestId, "] Invalid response content type \"").concat(responseContentType, "\" (status ").concat(response_1.status, "). Wait ").concat(waitTimeInSecs, " seconds then retry..."));
208
+ }
201
209
  }
202
210
  return [4 /*yield*/, wait(waitTimeInSecs * 1000)];
203
211
  case 3:
@@ -205,18 +213,18 @@ export function request(options) {
205
213
  return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
206
214
  case 4:
207
215
  if (logLevel >= LogLevel.BASIC) {
208
- console.log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
216
+ log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
209
217
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
210
218
  [
211
- 'content-type',
212
219
  'x-api-version',
213
220
  'x-environment',
214
221
  'x-queue-time',
215
222
  'x-ratelimit-remaining',
223
+ 'x-request-id',
216
224
  ].forEach(function (key) {
217
225
  var value = response_1.headers.get(key);
218
226
  if (value) {
219
- console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
227
+ log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
220
228
  }
221
229
  });
222
230
  }
@@ -231,7 +239,7 @@ export function request(options) {
231
239
  case 7:
232
240
  responseBody = _d;
233
241
  if (logLevel >= LogLevel.BODY && responseBody) {
234
- console.log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
242
+ log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
235
243
  }
236
244
  if (!(response_1.status === 202)) return [3 /*break*/, 9];
237
245
  return [4 /*yield*/, options.fetchJobResult(responseBody.data.id)];
@@ -247,10 +255,9 @@ export function request(options) {
247
255
  return [2 /*return*/, responseBody];
248
256
  }
249
257
  error = new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, responseBody, preCallStack));
250
- if (!(autoRetry &&
251
- error.findErrorWithCode('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
258
+ if (!(autoRetry && error.findError('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
252
259
  if (logLevel >= LogLevel.BASIC) {
253
- console.log("[".concat(requestId, "] Data validation in progress, waiting ").concat(retryCount, " seconds..."));
260
+ log("[".concat(requestId, "] Data validation in progress, wait ").concat(retryCount, " seconds then retry..."));
254
261
  }
255
262
  return [4 /*yield*/, wait(retryCount * 1000)];
256
263
  case 10:
@@ -261,7 +268,7 @@ export function request(options) {
261
268
  error_1 = _f.sent();
262
269
  if (!(isErrorWithCode(error_1) && error_1.code.includes('ETIMEDOUT'))) return [3 /*break*/, 14];
263
270
  if (logLevel >= LogLevel.BASIC) {
264
- console.log("[".concat(requestId, "] Error ").concat(error_1.code, ", waiting ").concat(retryCount, " seconds..."));
271
+ log("[".concat(requestId, "] Error ").concat(error_1.code, ", wait ").concat(retryCount, " seconds then retry..."));
265
272
  }
266
273
  return [4 /*yield*/, wait(retryCount * 1000)];
267
274
  case 13:
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
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;AAG1D,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,GAAG,EAAE,CAAC;IAElB,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,IAAI,CAAC,IAAI;IAChB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,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;;gCACzC,KAA2B,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,4CAAE;oCAA/C,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oCACpB,GAAG,CAAC,WAAI,SAAS,eAAK,GAAG,eAAK,KAAK,CAAE,CAAC,CAAC;iCACxC;;;;;;;;;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"}
@@ -3,9 +3,10 @@ export declare type ErrorEntity = {
3
3
  type: 'api_error';
4
4
  attributes: {
5
5
  code: string;
6
- details: unknown;
6
+ details: Record<string, unknown>;
7
7
  };
8
8
  };
9
+ declare type FilterFn = (details: Record<string, unknown>) => boolean;
9
10
  export declare type ApiErrorRequest = {
10
11
  url: string;
11
12
  method: string;
@@ -29,6 +30,7 @@ export declare class ApiError extends Error {
29
30
  preCallStack?: string;
30
31
  constructor(initObject: ApiErrorInitObject);
31
32
  get errors(): ErrorEntity[];
32
- findErrorWithCode(codeOrCodes: any): ErrorEntity | undefined;
33
+ findError(codeOrCodes: string | string[], filterDetails?: Record<string, string> | FilterFn): ErrorEntity | undefined;
33
34
  get humanMessage(): string | null;
34
35
  }
36
+ export {};
@@ -22,6 +22,7 @@ declare type RequestOptions = {
22
22
  queryParams?: Record<string, unknown>;
23
23
  body?: unknown;
24
24
  preCallStack?: string;
25
+ logFn?: (message: string) => void;
25
26
  userAgent?: string;
26
27
  };
27
28
  export declare function request<T>(options: RequestOptions): Promise<T>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datocms/rest-client-utils",
3
- "version": "0.1.2",
3
+ "version": "0.1.8",
4
4
  "description": "Utilities for DatoCMS REST API clients",
5
5
  "keywords": [
6
6
  "datocms",
@@ -40,5 +40,5 @@
40
40
  "cross-fetch": "^3.1.5",
41
41
  "qs": "^6.10.3"
42
42
  },
43
- "gitHead": "9edc89423c21752d61d2b776cb11821b5334c83b"
43
+ "gitHead": "ffb2f67a843f695e97dd14e2ca493f9dc9c87823"
44
44
  }
package/src/ApiError.ts CHANGED
@@ -3,11 +3,13 @@ export type ErrorEntity = {
3
3
  type: 'api_error';
4
4
  attributes: {
5
5
  code: string;
6
- details: unknown;
6
+ details: Record<string, unknown>;
7
7
  };
8
8
  };
9
9
  type ErrorBody = { data: ErrorEntity[] };
10
10
 
11
+ type FilterFn = (details: Record<string, unknown>) => boolean;
12
+
11
13
  function isErrorBody(body: unknown): body is ErrorBody {
12
14
  if (typeof body !== 'object' || body === null || !('data' in body)) {
13
15
  return false;
@@ -138,13 +140,25 @@ export class ApiError extends Error {
138
140
  return this.response.body.data;
139
141
  }
140
142
 
141
- findErrorWithCode(codeOrCodes) {
143
+ findError(
144
+ codeOrCodes: string | string[],
145
+ filterDetails?: Record<string, string> | FilterFn,
146
+ ) {
142
147
  const codes = Array.isArray(codeOrCodes) ? codeOrCodes : [codeOrCodes];
143
- return this.errors.find((error) => codes.includes(error.attributes.code));
148
+ return this.errors.find(
149
+ (error) =>
150
+ codes.includes(error.attributes.code) &&
151
+ (!filterDetails ||
152
+ (typeof filterDetails === 'function'
153
+ ? filterDetails(error.attributes.details)
154
+ : Object.entries(filterDetails).every(
155
+ ([key, value]) => error.attributes.details[key] === value,
156
+ ))),
157
+ );
144
158
  }
145
159
 
146
160
  get humanMessage() {
147
- const planUpgradeError = this.findErrorWithCode('PLAN_UPGRADE_REQUIRED');
161
+ const planUpgradeError = this.findError('PLAN_UPGRADE_REQUIRED');
148
162
 
149
163
  if (planUpgradeError) {
150
164
  const { limit } = planUpgradeError.attributes.details as Record<
@@ -155,7 +169,7 @@ export class ApiError extends Error {
155
169
  }
156
170
 
157
171
  const errors = Object.keys(humanMessageForCode)
158
- .filter((code) => this.findErrorWithCode(code))
172
+ .filter((code) => this.findError(code))
159
173
  .map((code) => humanMessageForCode[code]);
160
174
 
161
175
  if (errors.length === 0) {
package/src/request.ts CHANGED
@@ -27,6 +27,7 @@ type RequestOptions = {
27
27
  queryParams?: Record<string, unknown>;
28
28
  body?: unknown;
29
29
  preCallStack?: string;
30
+ logFn?: (message: string) => void;
30
31
  userAgent?: string;
31
32
  };
32
33
 
@@ -113,6 +114,7 @@ export async function request<T>(options: RequestOptions): Promise<T> {
113
114
  const retryCount = options.retryCount || 1;
114
115
  const logLevel = options.logLevel || LogLevel.NONE;
115
116
  const autoRetry = 'autoRetry' in options ? options.autoRetry : true;
117
+ const log = options.logFn || (() => true);
116
118
 
117
119
  const headers = {
118
120
  'content-type': 'application/json',
@@ -133,14 +135,14 @@ export async function request<T>(options: RequestOptions): Promise<T> {
133
135
  const url = `${baseUrl}${options.url}${queryString}`;
134
136
 
135
137
  if (logLevel >= LogLevel.BASIC) {
136
- console.log(`[${requestId}] ${options.method} ${url}`);
138
+ log(`[${requestId}] ${options.method} ${url}`);
137
139
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
138
140
  for (const [key, value] of Object.entries(headers || {})) {
139
- console.log(`[${requestId}] ${key}: ${value}`);
141
+ log(`[${requestId}] ${key}: ${value}`);
140
142
  }
141
143
  }
142
144
  if (logLevel >= LogLevel.BODY && body) {
143
- console.log(`[${requestId}] ${body}`);
145
+ log(`[${requestId}] ${body}`);
144
146
  }
145
147
  }
146
148
 
@@ -151,8 +153,12 @@ export async function request<T>(options: RequestOptions): Promise<T> {
151
153
  body,
152
154
  });
153
155
 
154
- if (response.status === 429) {
155
- if (!autoRetry) {
156
+ const responseContentType = response.headers.get('Content-Type');
157
+ const invalidContentType =
158
+ responseContentType && !responseContentType.includes('application/json');
159
+
160
+ if (response.status === 429 || invalidContentType) {
161
+ if (!autoRetry || (invalidContentType && options.method !== 'GET')) {
156
162
  throw new ApiError(
157
163
  buildApiErrorInitObject(
158
164
  options.method,
@@ -172,9 +178,15 @@ export async function request<T>(options: RequestOptions): Promise<T> {
172
178
  : retryCount;
173
179
 
174
180
  if (logLevel >= LogLevel.BASIC) {
175
- console.log(
176
- `[${requestId}] Rate limit exceeded, waiting ${waitTimeInSecs} seconds...`,
177
- );
181
+ if (response.status === 429) {
182
+ log(
183
+ `[${requestId}] Rate limit exceeded, wait ${waitTimeInSecs} seconds then retry...`,
184
+ );
185
+ } else {
186
+ log(
187
+ `[${requestId}] Invalid response content type "${responseContentType}" (status ${response.status}). Wait ${waitTimeInSecs} seconds then retry...`,
188
+ );
189
+ }
178
190
  }
179
191
 
180
192
  await wait(waitTimeInSecs * 1000);
@@ -183,20 +195,18 @@ export async function request<T>(options: RequestOptions): Promise<T> {
183
195
  }
184
196
 
185
197
  if (logLevel >= LogLevel.BASIC) {
186
- console.log(
187
- `[${requestId}] Status: ${response.status} (${response.statusText})`,
188
- );
198
+ log(`[${requestId}] Status: ${response.status} (${response.statusText})`);
189
199
  if (logLevel >= LogLevel.BODY_AND_HEADERS) {
190
200
  [
191
- 'content-type',
192
201
  'x-api-version',
193
202
  'x-environment',
194
203
  'x-queue-time',
195
204
  'x-ratelimit-remaining',
205
+ 'x-request-id',
196
206
  ].forEach((key) => {
197
207
  const value = response.headers.get(key);
198
208
  if (value) {
199
- console.log(`[${requestId}] ${key}: ${value}`);
209
+ log(`[${requestId}] ${key}: ${value}`);
200
210
  }
201
211
  });
202
212
  }
@@ -206,7 +216,7 @@ export async function request<T>(options: RequestOptions): Promise<T> {
206
216
  response.status === 204 ? undefined : await response.json();
207
217
 
208
218
  if (logLevel >= LogLevel.BODY && responseBody) {
209
- console.log(`[${requestId}] ${JSON.stringify(responseBody, null, 2)}`);
219
+ log(`[${requestId}] ${JSON.stringify(responseBody, null, 2)}`);
210
220
  }
211
221
 
212
222
  if (response.status === 202) {
@@ -245,13 +255,10 @@ export async function request<T>(options: RequestOptions): Promise<T> {
245
255
  ),
246
256
  );
247
257
 
248
- if (
249
- autoRetry &&
250
- error.findErrorWithCode('BATCH_DATA_VALIDATION_IN_PROGRESS')
251
- ) {
258
+ if (autoRetry && error.findError('BATCH_DATA_VALIDATION_IN_PROGRESS')) {
252
259
  if (logLevel >= LogLevel.BASIC) {
253
- console.log(
254
- `[${requestId}] Data validation in progress, waiting ${retryCount} seconds...`,
260
+ log(
261
+ `[${requestId}] Data validation in progress, wait ${retryCount} seconds then retry...`,
255
262
  );
256
263
  }
257
264
 
@@ -264,8 +271,8 @@ export async function request<T>(options: RequestOptions): Promise<T> {
264
271
  } catch (error) {
265
272
  if (isErrorWithCode(error) && error.code.includes('ETIMEDOUT')) {
266
273
  if (logLevel >= LogLevel.BASIC) {
267
- console.log(
268
- `[${requestId}] Error ${error.code}, waiting ${retryCount} seconds...`,
274
+ log(
275
+ `[${requestId}] Error ${error.code}, wait ${retryCount} seconds then retry...`,
269
276
  );
270
277
  }
271
278