Skip to content
This repository was archived by the owner on Jun 25, 2025. It is now read-only.

Commit f93ebeb

Browse files
authored
Merge pull request #49 from rubenpenyafiel/fix/unsettled-request-promises
Bug fixes and improvements in handling requests errors.
2 parents af92232 + 7a9177c commit f93ebeb

15 files changed

Lines changed: 840 additions & 538 deletions

dist/apisearch.js

Lines changed: 256 additions & 158 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/apisearch.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/apisearch.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/apisearch.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/Error/UnknownError.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { ErrorWithMessage } from "./ErrorWithMessage";
2+
/**
3+
* Connection error
4+
*/
5+
export declare class UnknownError extends ErrorWithMessage {
6+
/**
7+
* Unknown error
8+
*
9+
* @return this
10+
*/
11+
static createUnknownError(): UnknownError;
12+
}

lib/Error/UnknownError.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
var tslib_1 = require("tslib");
4+
var ErrorWithMessage_1 = require("./ErrorWithMessage");
5+
/**
6+
* Connection error
7+
*/
8+
var UnknownError = /** @class */ (function (_super) {
9+
tslib_1.__extends(UnknownError, _super);
10+
function UnknownError() {
11+
return _super !== null && _super.apply(this, arguments) || this;
12+
}
13+
/**
14+
* Unknown error
15+
*
16+
* @return this
17+
*/
18+
UnknownError.createUnknownError = function () {
19+
return new this("Unknown error.");
20+
};
21+
return UnknownError;
22+
}(ErrorWithMessage_1.ErrorWithMessage));
23+
exports.UnknownError = UnknownError;

lib/Http/AxiosClient.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
exports.__esModule = true;
33
var tslib_1 = require("tslib");
44
var axios_1 = require("axios");
5+
var __1 = require("..");
56
var Client_1 = require("./Client");
67
var Response_1 = require("./Response");
78
/**
@@ -55,24 +56,24 @@ var AxiosClient = /** @class */ (function (_super) {
5556
this.abort(url);
5657
}
5758
return [2 /*return*/, new Promise(function (resolve, reject) {
58-
var headers = "get" == method
59+
var headers = "get" === method
5960
? {}
6061
: {
6162
"Content-Encoding": "gzip",
6263
"Content-Type": "application/json"
6364
};
6465
var axiosRequestConfig = {
65-
url: url + "?" + Client_1.Client.objectToUrlParameters(tslib_1.__assign({}, parameters, {
66-
'token': credentials.token
67-
})),
66+
baseURL: that.host.replace(/\/*$/g, ""),
6867
data: data,
6968
headers: headers,
7069
method: method,
71-
baseURL: that.host.replace(/\/*$/g, ""),
7270
timeout: that.timeout,
73-
transformRequest: [function (data) { return JSON.stringify(data); }]
71+
transformRequest: [function (rawData) { return JSON.stringify(rawData); }],
72+
url: url + "?" + Client_1.Client.objectToUrlParameters(tslib_1.__assign({}, parameters, {
73+
token: credentials.token
74+
}))
7475
};
75-
if (typeof _this.cancelToken[url] != 'undefined') {
76+
if (typeof _this.cancelToken[url] !== "undefined") {
7677
axiosRequestConfig.cancelToken = _this.cancelToken[url].token;
7778
}
7879
axios_1["default"]
@@ -81,11 +82,16 @@ var AxiosClient = /** @class */ (function (_super) {
8182
var response = new Response_1.Response(axiosResponse.status, axiosResponse.data);
8283
return resolve(response);
8384
})["catch"](function (error) {
84-
if (error.response === undefined) {
85-
return;
85+
var response;
86+
if (error.response) {
87+
response = new Response_1.Response(error.response.status, error.response.data);
88+
}
89+
else {
90+
response = new Response_1.Response(__1.ConnectionError.getTransportableHTTPError(), {
91+
message: "Connection failed or timed out"
92+
});
8693
}
87-
var response = new Response_1.Response(error.response.status, error.response.data);
88-
return reject(response);
94+
reject(response);
8995
});
9096
})];
9197
});
@@ -98,7 +104,7 @@ var AxiosClient = /** @class */ (function (_super) {
98104
* @param url
99105
*/
100106
AxiosClient.prototype.abort = function (url) {
101-
if (typeof this.cancelToken[url] != 'undefined') {
107+
if (typeof this.cancelToken[url] !== "undefined") {
102108
this.cancelToken[url].cancel();
103109
}
104110
this.generateCancelToken(url);

lib/Repository/HttpRepository.d.ts

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { Config } from "../Config/Config";
22
import { HttpClient } from "../Http/HttpClient";
3-
import { Response } from "../Http/Response";
43
import { Changes } from "../Model/Changes";
4+
import { Index } from "../Model/Index";
5+
import { IndexUUID } from "../Model/IndexUUID";
56
import { Item } from "../Model/Item";
67
import { ItemUUID } from "../Model/ItemUUID";
78
import { Query } from "../Query/Query";
89
import { Result } from "../Result/Result";
910
import { Transformer } from "../Transformer/Transformer";
1011
import { Repository } from "./Repository";
11-
import { IndexUUID } from "../Model/IndexUUID";
12-
import { Index } from "../Model/Index";
1312
/**
1413
* Aggregation class
1514
*/
@@ -36,84 +35,80 @@ export declare class HttpRepository extends Repository {
3635
* Generate item document by a simple object.
3736
*
3837
* @param object
38+
*
39+
* @returns {void}
3940
*/
4041
addObject(object: any): void;
4142
/**
4243
* Delete item document by uuid.
4344
*
4445
* @param object
46+
*
47+
* @returns {void}
4548
*/
4649
deleteObject(object: any): void;
4750
/**
4851
* Flush update items
4952
*
50-
* @param itemsToUpdate
53+
* @param {Item[]} itemsToUpdate
5154
*
5255
* @return {Promise<void>}
5356
*/
5457
flushUpdateItems(itemsToUpdate: Item[]): Promise<void>;
5558
/**
5659
* Flush delete items
5760
*
58-
* @param itemsToDelete
61+
* @param {ItemUUID[]} itemsToDelete
5962
*
6063
* @return {Promise<void>}
6164
*/
6265
flushDeleteItems(itemsToDelete: ItemUUID[]): Promise<void>;
6366
/**
6467
* Query
6568
*
66-
* @param query
69+
* @param {Query} query
6770
*
6871
* @return {Promise<Result>}
6972
*/
7073
query(query: Query): Promise<Result>;
71-
/**
72-
* Apply transformers to results
73-
*
74-
* @param result
75-
*
76-
* @return {Result}
77-
*/
78-
private applyTransformersToResult;
7974
/**
8075
* Update items
8176
*
82-
* @param query
83-
* @param changes
77+
* @param {Query} query
78+
* @param {Changes} changes
8479
*
8580
* @return {Promise<void>}
8681
*/
8782
updateItems(query: Query, changes: Changes): Promise<void>;
8883
/**
8984
* Create index
9085
*
91-
* @param indexUUID
92-
* @param config
86+
* @param {IndexUUID} indexUUID
87+
* @param {Config} config
9388
*
9489
* @return {Promise<void>}
9590
*/
9691
createIndex(indexUUID: IndexUUID, config: Config): Promise<void>;
9792
/**
9893
* Delete index
9994
*
100-
* @param indexUUID
95+
* @param {IndexUUID} indexUUID
10196
*
10297
* @return {Promise<void>}
10398
*/
10499
deleteIndex(indexUUID: IndexUUID): Promise<void>;
105100
/**
106101
* Reset index
107102
*
108-
* @param indexUUID
103+
* @param {IndexUUID} indexUUID
109104
*
110105
* @return {Promise<void>}
111106
*/
112107
resetIndex(indexUUID: IndexUUID): Promise<void>;
113108
/**
114109
* Check index
115110
*
116-
* @param indexUUID
111+
* @param {IndexUUID} indexUUID
117112
*
118113
* @return {Promise<boolean>}
119114
*/
@@ -127,8 +122,8 @@ export declare class HttpRepository extends Repository {
127122
/**
128123
* Configure index
129124
*
130-
* @param indexUUID
131-
* @param config
125+
* @param {IndexUUID} indexUUID
126+
* @param {Config} config
132127
*
133128
* @return {Promise<void>}
134129
*/
@@ -140,9 +135,17 @@ export declare class HttpRepository extends Repository {
140135
*/
141136
private getCredentials;
142137
/**
143-
* throw error if needed
138+
* Apply transformers to results
139+
*
140+
* @param {Result} result
141+
*
142+
* @return {Result}
143+
*/
144+
private applyTransformersToResult;
145+
/**
146+
* Create exception to match an error response
144147
*
145-
* @param response
148+
* @param any response
146149
*/
147-
static throwTransportableExceptionIfNeeded(response: Response): void;
150+
private createErrorFromResponse;
148151
}

0 commit comments

Comments
 (0)