@map-colonies/mc-utils 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/arrays/index.d.ts +1 -1
  3. package/dist/arrays/index.js +13 -13
  4. package/dist/arrays/subGroups.d.ts +8 -8
  5. package/dist/arrays/subGroups.js +138 -138
  6. package/dist/communication/http/httpClient.d.ts +26 -26
  7. package/dist/communication/http/httpClient.js +333 -333
  8. package/dist/communication/http/index.d.ts +1 -1
  9. package/dist/communication/http/index.js +13 -13
  10. package/dist/communication/index.d.ts +1 -1
  11. package/dist/communication/index.js +13 -13
  12. package/dist/geo/bboxUtils.d.ts +23 -23
  13. package/dist/geo/bboxUtils.js +84 -84
  14. package/dist/geo/geoConvertor.d.ts +18 -18
  15. package/dist/geo/geoConvertor.js +51 -51
  16. package/dist/geo/geoHash.d.ts +24 -24
  17. package/dist/geo/geoHash.js +242 -242
  18. package/dist/geo/geoIntersection.d.ts +12 -12
  19. package/dist/geo/geoIntersection.js +27 -27
  20. package/dist/geo/index.d.ts +8 -8
  21. package/dist/geo/index.js +20 -20
  22. package/dist/geo/tileBatcher.d.ts +8 -8
  23. package/dist/geo/tileBatcher.js +167 -167
  24. package/dist/geo/tileRanger.d.ts +39 -39
  25. package/dist/geo/tileRanger.js +254 -254
  26. package/dist/geo/tiles.d.ts +32 -32
  27. package/dist/geo/tiles.js +65 -65
  28. package/dist/geo/tiles.js.map +1 -1
  29. package/dist/geo/tilesGenerator.d.ts +2 -2
  30. package/dist/geo/tilesGenerator.js +94 -94
  31. package/dist/index.d.ts +4 -4
  32. package/dist/index.js +16 -16
  33. package/dist/models/enums/geo/index.d.ts +1 -1
  34. package/dist/models/enums/geo/index.js +13 -13
  35. package/dist/models/enums/geo/tileOrigin.d.ts +7 -7
  36. package/dist/models/enums/geo/tileOrigin.js +11 -11
  37. package/dist/models/enums/index.d.ts +1 -1
  38. package/dist/models/enums/index.js +13 -13
  39. package/dist/models/index.d.ts +2 -2
  40. package/dist/models/index.js +14 -14
  41. package/dist/models/interfaces/geo/iPoint.d.ts +7 -7
  42. package/dist/models/interfaces/geo/iPoint.js +2 -2
  43. package/dist/models/interfaces/geo/iTile.d.ts +15 -15
  44. package/dist/models/interfaces/geo/iTile.js +2 -2
  45. package/dist/models/interfaces/geo/index.d.ts +2 -2
  46. package/dist/models/interfaces/geo/index.js +14 -14
  47. package/dist/models/interfaces/iLogger.d.ts +6 -6
  48. package/dist/models/interfaces/iLogger.js +2 -2
  49. package/dist/models/interfaces/index.d.ts +2 -2
  50. package/dist/models/interfaces/index.js +14 -14
  51. package/package.json +1 -1
@@ -1,334 +1,334 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || function (mod) {
26
- if (mod && mod.__esModule) return mod;
27
- var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
- __setModuleDefault(result, mod);
30
- return result;
31
- };
32
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
- return new (P || (P = Promise))(function (resolve, reject) {
35
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
- step((generator = generator.apply(thisArg, _arguments || [])).next());
39
- });
40
- };
41
- var __generator = (this && this.__generator) || function (thisArg, body) {
42
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
- function verb(n) { return function (v) { return step([n, v]); }; }
45
- function step(op) {
46
- if (f) throw new TypeError("Generator is already executing.");
47
- while (_) try {
48
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
- if (y = 0, t) op = [op[0] & 2, t.value];
50
- switch (op[0]) {
51
- case 0: case 1: t = op; break;
52
- case 4: _.label++; return { value: op[1], done: false };
53
- case 5: _.label++; y = op[1]; op = [0]; continue;
54
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
- default:
56
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
- if (t[2]) _.ops.pop();
61
- _.trys.pop(); continue;
62
- }
63
- op = body.call(thisArg, _);
64
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
- }
67
- };
68
- var __importDefault = (this && this.__importDefault) || function (mod) {
69
- return (mod && mod.__esModule) ? mod : { "default": mod };
70
- };
71
- Object.defineProperty(exports, "__esModule", { value: true });
72
- exports.HttpClient = void 0;
73
- var axios_1 = __importDefault(require("axios"));
74
- var http_status_codes_1 = __importDefault(require("http-status-codes"));
75
- var axios_retry_1 = __importStar(require("axios-retry"));
76
- var lodash_1 = require("lodash");
77
- var error_types_1 = require("@map-colonies/error-types");
78
- var HttpClient = /** @class */ (function () {
79
- function HttpClient(logger, baseUrl, targetService, retryConfig, disableDebugLogs) {
80
- var _this = this;
81
- if (targetService === void 0) { targetService = ''; }
82
- if (disableDebugLogs === void 0) { disableDebugLogs = false; }
83
- var _a;
84
- this.logger = logger;
85
- this.targetService = targetService;
86
- this.disableDebugLogs = disableDebugLogs;
87
- this.axiosOptions = {};
88
- this.axiosClient = axios_1.default.create();
89
- this.axiosOptions.baseURL = baseUrl;
90
- var axiosRetryConfig = retryConfig
91
- ? this.parseConfig(retryConfig)
92
- : {
93
- retries: 0,
94
- };
95
- var delayFunc = (_a = axiosRetryConfig.retryDelay) !== null && _a !== void 0 ? _a : (function () { return 0; });
96
- axiosRetryConfig.retryDelay = function (retryCount, error) {
97
- _this.logger.error("error from ".concat(_this.targetService, ". retries: ").concat(retryCount, ". error: ").concat(error.message));
98
- return delayFunc(retryCount, error);
99
- };
100
- (0, axios_retry_1.default)(this.axiosClient, axiosRetryConfig);
101
- }
102
- HttpClient.prototype.get = function (url, queryParams, retryConfig, auth, headers) {
103
- return __awaiter(this, void 0, void 0, function () {
104
- var reqConfig, res, err_1, error;
105
- return __generator(this, function (_a) {
106
- switch (_a.label) {
107
- case 0:
108
- _a.trys.push([0, 2, , 3]);
109
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
110
- return [4 /*yield*/, this.axiosClient.get(url, reqConfig)];
111
- case 1:
112
- res = _a.sent();
113
- return [2 /*return*/, res.data];
114
- case 2:
115
- err_1 = _a.sent();
116
- error = this.wrapError(url, err_1);
117
- throw error;
118
- case 3: return [2 /*return*/];
119
- }
120
- });
121
- });
122
- };
123
- HttpClient.prototype.post = function (url, body, queryParams, retryConfig, auth, headers) {
124
- return __awaiter(this, void 0, void 0, function () {
125
- var reqConfig, res, err_2, error;
126
- return __generator(this, function (_a) {
127
- switch (_a.label) {
128
- case 0:
129
- _a.trys.push([0, 2, , 3]);
130
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
131
- return [4 /*yield*/, this.axiosClient.post(url, body, reqConfig)];
132
- case 1:
133
- res = _a.sent();
134
- return [2 /*return*/, res.data];
135
- case 2:
136
- err_2 = _a.sent();
137
- error = this.wrapError(url, err_2, body);
138
- throw error;
139
- case 3: return [2 /*return*/];
140
- }
141
- });
142
- });
143
- };
144
- HttpClient.prototype.put = function (url, body, queryParams, retryConfig, auth, headers) {
145
- return __awaiter(this, void 0, void 0, function () {
146
- var reqConfig, res, err_3, error;
147
- return __generator(this, function (_a) {
148
- switch (_a.label) {
149
- case 0:
150
- _a.trys.push([0, 2, , 3]);
151
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
152
- return [4 /*yield*/, this.axiosClient.put(url, body, reqConfig)];
153
- case 1:
154
- res = _a.sent();
155
- return [2 /*return*/, res.data];
156
- case 2:
157
- err_3 = _a.sent();
158
- error = this.wrapError(url, err_3, body);
159
- throw error;
160
- case 3: return [2 /*return*/];
161
- }
162
- });
163
- });
164
- };
165
- HttpClient.prototype.delete = function (url, queryParams, retryConfig, auth, headers) {
166
- return __awaiter(this, void 0, void 0, function () {
167
- var reqConfig, res, err_4, error;
168
- return __generator(this, function (_a) {
169
- switch (_a.label) {
170
- case 0:
171
- _a.trys.push([0, 2, , 3]);
172
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
173
- return [4 /*yield*/, this.axiosClient.delete(url, reqConfig)];
174
- case 1:
175
- res = _a.sent();
176
- return [2 /*return*/, res.data];
177
- case 2:
178
- err_4 = _a.sent();
179
- error = this.wrapError(url, err_4);
180
- throw error;
181
- case 3: return [2 /*return*/];
182
- }
183
- });
184
- });
185
- };
186
- HttpClient.prototype.head = function (url, queryParams, retryConfig, auth, headers) {
187
- return __awaiter(this, void 0, void 0, function () {
188
- var reqConfig, res, err_5, error;
189
- return __generator(this, function (_a) {
190
- switch (_a.label) {
191
- case 0:
192
- _a.trys.push([0, 2, , 3]);
193
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
194
- return [4 /*yield*/, this.axiosClient.head(url, reqConfig)];
195
- case 1:
196
- res = _a.sent();
197
- return [2 /*return*/, res.data];
198
- case 2:
199
- err_5 = _a.sent();
200
- error = this.wrapError(url, err_5);
201
- throw error;
202
- case 3: return [2 /*return*/];
203
- }
204
- });
205
- });
206
- };
207
- HttpClient.prototype.options = function (url, queryParams, retryConfig, auth, headers) {
208
- return __awaiter(this, void 0, void 0, function () {
209
- var reqConfig, res, err_6, error;
210
- return __generator(this, function (_a) {
211
- switch (_a.label) {
212
- case 0:
213
- _a.trys.push([0, 2, , 3]);
214
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
215
- return [4 /*yield*/, this.axiosClient.options(url, reqConfig)];
216
- case 1:
217
- res = _a.sent();
218
- return [2 /*return*/, res.data];
219
- case 2:
220
- err_6 = _a.sent();
221
- error = this.wrapError(url, err_6);
222
- throw error;
223
- case 3: return [2 /*return*/];
224
- }
225
- });
226
- });
227
- };
228
- HttpClient.prototype.patch = function (url, body, queryParams, retryConfig, auth, headers) {
229
- return __awaiter(this, void 0, void 0, function () {
230
- var reqConfig, res, err_7, error;
231
- return __generator(this, function (_a) {
232
- switch (_a.label) {
233
- case 0:
234
- _a.trys.push([0, 2, , 3]);
235
- reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
236
- return [4 /*yield*/, this.axiosClient.patch(url, body, reqConfig)];
237
- case 1:
238
- res = _a.sent();
239
- return [2 /*return*/, res.data];
240
- case 2:
241
- err_7 = _a.sent();
242
- error = this.wrapError(url, err_7);
243
- throw error;
244
- case 3: return [2 /*return*/];
245
- }
246
- });
247
- });
248
- };
249
- HttpClient.prototype.getRequestConfig = function (retryConfig, queryParams, auth, headers) {
250
- var reqConfig = retryConfig ? __assign(__assign({}, this.axiosOptions), { 'axios-retry': retryConfig }) : this.axiosOptions;
251
- if (queryParams !== undefined) {
252
- reqConfig.params = reqConfig.params !== undefined ? __assign(__assign({}, reqConfig.params), queryParams) : queryParams;
253
- }
254
- if (auth !== undefined) {
255
- reqConfig.auth = auth;
256
- }
257
- if (headers !== undefined) {
258
- reqConfig.headers = reqConfig.headers !== undefined ? __assign(__assign({}, reqConfig.headers), headers) : headers;
259
- }
260
- return reqConfig;
261
- };
262
- HttpClient.prototype.wrapError = function (url, err, body) {
263
- var _a;
264
- var message = (0, lodash_1.get)(err, 'response.data.message', undefined);
265
- switch ((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) {
266
- case http_status_codes_1.default.BAD_REQUEST:
267
- if (body !== undefined) {
268
- body = JSON.stringify(body);
269
- if (!this.disableDebugLogs) {
270
- this.logger.debug("invalid request sent to ".concat(this.targetService, " at ").concat(url, ". body: ").concat(body, ". error: ").concat(err.message));
271
- }
272
- }
273
- else if (!this.disableDebugLogs) {
274
- this.logger.debug("invalid request sent to ".concat(this.targetService, " at ").concat(url, ". error: ").concat(err.message));
275
- }
276
- return new error_types_1.BadRequestError(err, message);
277
- case http_status_codes_1.default.NOT_FOUND:
278
- if (!this.disableDebugLogs) {
279
- this.logger.debug("request url not found for service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
280
- }
281
- return new error_types_1.NotFoundError(err, message);
282
- case http_status_codes_1.default.CONFLICT:
283
- if (!this.disableDebugLogs) {
284
- this.logger.debug("request url conflicted, for service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
285
- }
286
- return new error_types_1.ConflictError(err, message);
287
- case http_status_codes_1.default.FORBIDDEN:
288
- if (!this.disableDebugLogs) {
289
- this.logger.debug("forbidden request sent service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
290
- }
291
- throw new error_types_1.ForbiddenError(err, message);
292
- case http_status_codes_1.default.UNAUTHORIZED:
293
- if (!this.disableDebugLogs) {
294
- this.logger.debug("unauthorized request sent service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
295
- }
296
- throw new error_types_1.UnauthorizedError(err, message);
297
- default:
298
- if (body !== undefined) {
299
- body = JSON.stringify(body);
300
- this.logger.error("error from ".concat(this.targetService, " at ").concat(url, ". body: ").concat(body, ". error: ").concat(err.message));
301
- }
302
- else {
303
- this.logger.error("error from ".concat(this.targetService, " at ").concat(url, ". error: ").concat(err.message));
304
- }
305
- return new error_types_1.InternalServerError(err);
306
- }
307
- };
308
- HttpClient.prototype.parseConfig = function (config) {
309
- var retries = config.attempts - 1;
310
- if (retries < 0) {
311
- throw new Error('invalid retry configuration: attempts must be positive');
312
- }
313
- var delay;
314
- if (config.delay === 'exponential') {
315
- delay = axios_retry_1.exponentialDelay;
316
- }
317
- else if (typeof config.delay === 'number') {
318
- delay = function () {
319
- return config.delay;
320
- };
321
- }
322
- else {
323
- throw new Error('invalid retry configuration: delay must be "exponential" or number');
324
- }
325
- return {
326
- retries: retries,
327
- retryDelay: delay,
328
- shouldResetTimeout: config.shouldResetTimeout,
329
- };
330
- };
331
- return HttpClient;
332
- }());
333
- exports.HttpClient = HttpClient;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
+ return new (P || (P = Promise))(function (resolve, reject) {
35
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
39
+ });
40
+ };
41
+ var __generator = (this && this.__generator) || function (thisArg, body) {
42
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
+ function verb(n) { return function (v) { return step([n, v]); }; }
45
+ function step(op) {
46
+ if (f) throw new TypeError("Generator is already executing.");
47
+ while (_) try {
48
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
+ if (y = 0, t) op = [op[0] & 2, t.value];
50
+ switch (op[0]) {
51
+ case 0: case 1: t = op; break;
52
+ case 4: _.label++; return { value: op[1], done: false };
53
+ case 5: _.label++; y = op[1]; op = [0]; continue;
54
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
+ default:
56
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
+ if (t[2]) _.ops.pop();
61
+ _.trys.pop(); continue;
62
+ }
63
+ op = body.call(thisArg, _);
64
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
+ }
67
+ };
68
+ var __importDefault = (this && this.__importDefault) || function (mod) {
69
+ return (mod && mod.__esModule) ? mod : { "default": mod };
70
+ };
71
+ Object.defineProperty(exports, "__esModule", { value: true });
72
+ exports.HttpClient = void 0;
73
+ var axios_1 = __importDefault(require("axios"));
74
+ var http_status_codes_1 = __importDefault(require("http-status-codes"));
75
+ var axios_retry_1 = __importStar(require("axios-retry"));
76
+ var lodash_1 = require("lodash");
77
+ var error_types_1 = require("@map-colonies/error-types");
78
+ var HttpClient = /** @class */ (function () {
79
+ function HttpClient(logger, baseUrl, targetService, retryConfig, disableDebugLogs) {
80
+ var _this = this;
81
+ if (targetService === void 0) { targetService = ''; }
82
+ if (disableDebugLogs === void 0) { disableDebugLogs = false; }
83
+ var _a;
84
+ this.logger = logger;
85
+ this.targetService = targetService;
86
+ this.disableDebugLogs = disableDebugLogs;
87
+ this.axiosOptions = {};
88
+ this.axiosClient = axios_1.default.create();
89
+ this.axiosOptions.baseURL = baseUrl;
90
+ var axiosRetryConfig = retryConfig
91
+ ? this.parseConfig(retryConfig)
92
+ : {
93
+ retries: 0,
94
+ };
95
+ var delayFunc = (_a = axiosRetryConfig.retryDelay) !== null && _a !== void 0 ? _a : (function () { return 0; });
96
+ axiosRetryConfig.retryDelay = function (retryCount, error) {
97
+ _this.logger.error("error from ".concat(_this.targetService, ". retries: ").concat(retryCount, ". error: ").concat(error.message));
98
+ return delayFunc(retryCount, error);
99
+ };
100
+ (0, axios_retry_1.default)(this.axiosClient, axiosRetryConfig);
101
+ }
102
+ HttpClient.prototype.get = function (url, queryParams, retryConfig, auth, headers) {
103
+ return __awaiter(this, void 0, void 0, function () {
104
+ var reqConfig, res, err_1, error;
105
+ return __generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0:
108
+ _a.trys.push([0, 2, , 3]);
109
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
110
+ return [4 /*yield*/, this.axiosClient.get(url, reqConfig)];
111
+ case 1:
112
+ res = _a.sent();
113
+ return [2 /*return*/, res.data];
114
+ case 2:
115
+ err_1 = _a.sent();
116
+ error = this.wrapError(url, err_1);
117
+ throw error;
118
+ case 3: return [2 /*return*/];
119
+ }
120
+ });
121
+ });
122
+ };
123
+ HttpClient.prototype.post = function (url, body, queryParams, retryConfig, auth, headers) {
124
+ return __awaiter(this, void 0, void 0, function () {
125
+ var reqConfig, res, err_2, error;
126
+ return __generator(this, function (_a) {
127
+ switch (_a.label) {
128
+ case 0:
129
+ _a.trys.push([0, 2, , 3]);
130
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
131
+ return [4 /*yield*/, this.axiosClient.post(url, body, reqConfig)];
132
+ case 1:
133
+ res = _a.sent();
134
+ return [2 /*return*/, res.data];
135
+ case 2:
136
+ err_2 = _a.sent();
137
+ error = this.wrapError(url, err_2, body);
138
+ throw error;
139
+ case 3: return [2 /*return*/];
140
+ }
141
+ });
142
+ });
143
+ };
144
+ HttpClient.prototype.put = function (url, body, queryParams, retryConfig, auth, headers) {
145
+ return __awaiter(this, void 0, void 0, function () {
146
+ var reqConfig, res, err_3, error;
147
+ return __generator(this, function (_a) {
148
+ switch (_a.label) {
149
+ case 0:
150
+ _a.trys.push([0, 2, , 3]);
151
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
152
+ return [4 /*yield*/, this.axiosClient.put(url, body, reqConfig)];
153
+ case 1:
154
+ res = _a.sent();
155
+ return [2 /*return*/, res.data];
156
+ case 2:
157
+ err_3 = _a.sent();
158
+ error = this.wrapError(url, err_3, body);
159
+ throw error;
160
+ case 3: return [2 /*return*/];
161
+ }
162
+ });
163
+ });
164
+ };
165
+ HttpClient.prototype.delete = function (url, queryParams, retryConfig, auth, headers) {
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ var reqConfig, res, err_4, error;
168
+ return __generator(this, function (_a) {
169
+ switch (_a.label) {
170
+ case 0:
171
+ _a.trys.push([0, 2, , 3]);
172
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
173
+ return [4 /*yield*/, this.axiosClient.delete(url, reqConfig)];
174
+ case 1:
175
+ res = _a.sent();
176
+ return [2 /*return*/, res.data];
177
+ case 2:
178
+ err_4 = _a.sent();
179
+ error = this.wrapError(url, err_4);
180
+ throw error;
181
+ case 3: return [2 /*return*/];
182
+ }
183
+ });
184
+ });
185
+ };
186
+ HttpClient.prototype.head = function (url, queryParams, retryConfig, auth, headers) {
187
+ return __awaiter(this, void 0, void 0, function () {
188
+ var reqConfig, res, err_5, error;
189
+ return __generator(this, function (_a) {
190
+ switch (_a.label) {
191
+ case 0:
192
+ _a.trys.push([0, 2, , 3]);
193
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
194
+ return [4 /*yield*/, this.axiosClient.head(url, reqConfig)];
195
+ case 1:
196
+ res = _a.sent();
197
+ return [2 /*return*/, res.data];
198
+ case 2:
199
+ err_5 = _a.sent();
200
+ error = this.wrapError(url, err_5);
201
+ throw error;
202
+ case 3: return [2 /*return*/];
203
+ }
204
+ });
205
+ });
206
+ };
207
+ HttpClient.prototype.options = function (url, queryParams, retryConfig, auth, headers) {
208
+ return __awaiter(this, void 0, void 0, function () {
209
+ var reqConfig, res, err_6, error;
210
+ return __generator(this, function (_a) {
211
+ switch (_a.label) {
212
+ case 0:
213
+ _a.trys.push([0, 2, , 3]);
214
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
215
+ return [4 /*yield*/, this.axiosClient.options(url, reqConfig)];
216
+ case 1:
217
+ res = _a.sent();
218
+ return [2 /*return*/, res.data];
219
+ case 2:
220
+ err_6 = _a.sent();
221
+ error = this.wrapError(url, err_6);
222
+ throw error;
223
+ case 3: return [2 /*return*/];
224
+ }
225
+ });
226
+ });
227
+ };
228
+ HttpClient.prototype.patch = function (url, body, queryParams, retryConfig, auth, headers) {
229
+ return __awaiter(this, void 0, void 0, function () {
230
+ var reqConfig, res, err_7, error;
231
+ return __generator(this, function (_a) {
232
+ switch (_a.label) {
233
+ case 0:
234
+ _a.trys.push([0, 2, , 3]);
235
+ reqConfig = this.getRequestConfig(retryConfig, queryParams, auth, headers);
236
+ return [4 /*yield*/, this.axiosClient.patch(url, body, reqConfig)];
237
+ case 1:
238
+ res = _a.sent();
239
+ return [2 /*return*/, res.data];
240
+ case 2:
241
+ err_7 = _a.sent();
242
+ error = this.wrapError(url, err_7);
243
+ throw error;
244
+ case 3: return [2 /*return*/];
245
+ }
246
+ });
247
+ });
248
+ };
249
+ HttpClient.prototype.getRequestConfig = function (retryConfig, queryParams, auth, headers) {
250
+ var reqConfig = retryConfig ? __assign(__assign({}, this.axiosOptions), { 'axios-retry': retryConfig }) : this.axiosOptions;
251
+ if (queryParams !== undefined) {
252
+ reqConfig.params = reqConfig.params !== undefined ? __assign(__assign({}, reqConfig.params), queryParams) : queryParams;
253
+ }
254
+ if (auth !== undefined) {
255
+ reqConfig.auth = auth;
256
+ }
257
+ if (headers !== undefined) {
258
+ reqConfig.headers = reqConfig.headers !== undefined ? __assign(__assign({}, reqConfig.headers), headers) : headers;
259
+ }
260
+ return reqConfig;
261
+ };
262
+ HttpClient.prototype.wrapError = function (url, err, body) {
263
+ var _a;
264
+ var message = (0, lodash_1.get)(err, 'response.data.message', undefined);
265
+ switch ((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) {
266
+ case http_status_codes_1.default.BAD_REQUEST:
267
+ if (body !== undefined) {
268
+ body = JSON.stringify(body);
269
+ if (!this.disableDebugLogs) {
270
+ this.logger.debug("invalid request sent to ".concat(this.targetService, " at ").concat(url, ". body: ").concat(body, ". error: ").concat(err.message));
271
+ }
272
+ }
273
+ else if (!this.disableDebugLogs) {
274
+ this.logger.debug("invalid request sent to ".concat(this.targetService, " at ").concat(url, ". error: ").concat(err.message));
275
+ }
276
+ return new error_types_1.BadRequestError(err, message);
277
+ case http_status_codes_1.default.NOT_FOUND:
278
+ if (!this.disableDebugLogs) {
279
+ this.logger.debug("request url not found for service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
280
+ }
281
+ return new error_types_1.NotFoundError(err, message);
282
+ case http_status_codes_1.default.CONFLICT:
283
+ if (!this.disableDebugLogs) {
284
+ this.logger.debug("request url conflicted, for service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
285
+ }
286
+ return new error_types_1.ConflictError(err, message);
287
+ case http_status_codes_1.default.FORBIDDEN:
288
+ if (!this.disableDebugLogs) {
289
+ this.logger.debug("forbidden request sent service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
290
+ }
291
+ throw new error_types_1.ForbiddenError(err, message);
292
+ case http_status_codes_1.default.UNAUTHORIZED:
293
+ if (!this.disableDebugLogs) {
294
+ this.logger.debug("unauthorized request sent service ".concat(this.targetService, ", target url: ").concat(url, ", error: ").concat(err.message));
295
+ }
296
+ throw new error_types_1.UnauthorizedError(err, message);
297
+ default:
298
+ if (body !== undefined) {
299
+ body = JSON.stringify(body);
300
+ this.logger.error("error from ".concat(this.targetService, " at ").concat(url, ". body: ").concat(body, ". error: ").concat(err.message));
301
+ }
302
+ else {
303
+ this.logger.error("error from ".concat(this.targetService, " at ").concat(url, ". error: ").concat(err.message));
304
+ }
305
+ return new error_types_1.InternalServerError(err);
306
+ }
307
+ };
308
+ HttpClient.prototype.parseConfig = function (config) {
309
+ var retries = config.attempts - 1;
310
+ if (retries < 0) {
311
+ throw new Error('invalid retry configuration: attempts must be positive');
312
+ }
313
+ var delay;
314
+ if (config.delay === 'exponential') {
315
+ delay = axios_retry_1.exponentialDelay;
316
+ }
317
+ else if (typeof config.delay === 'number') {
318
+ delay = function () {
319
+ return config.delay;
320
+ };
321
+ }
322
+ else {
323
+ throw new Error('invalid retry configuration: delay must be "exponential" or number');
324
+ }
325
+ return {
326
+ retries: retries,
327
+ retryDelay: delay,
328
+ shouldResetTimeout: config.shouldResetTimeout,
329
+ };
330
+ };
331
+ return HttpClient;
332
+ }());
333
+ exports.HttpClient = HttpClient;
334
334
  //# sourceMappingURL=httpClient.js.map