@compassdigital/sdk.typescript 3.0.0-beta.7 → 3.0.0-beta.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.
- package/lib/base.d.ts +4 -3
- package/lib/base.d.ts.map +1 -1
- package/lib/base.js +26 -20
- package/lib/base.js.map +1 -1
- package/package.json +1 -1
- package/src/base.ts +22 -16
package/lib/base.d.ts
CHANGED
|
@@ -5,17 +5,18 @@ export interface RequestOptions {
|
|
|
5
5
|
debug?: boolean;
|
|
6
6
|
retry?: number;
|
|
7
7
|
base_url?: string;
|
|
8
|
-
|
|
8
|
+
allow?: number[];
|
|
9
9
|
}
|
|
10
|
-
export interface ServiceClientOptions extends Omit<RequestOptions, "
|
|
10
|
+
export interface ServiceClientOptions extends Omit<RequestOptions, "allow"> {
|
|
11
11
|
}
|
|
12
|
-
export declare type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["
|
|
12
|
+
export declare type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["allow"] extends number[] ? null : never)>;
|
|
13
13
|
export declare class ServiceError extends Error {
|
|
14
14
|
status: number;
|
|
15
15
|
code: number;
|
|
16
16
|
constructor(status: number, // http status
|
|
17
17
|
code: number, // service error code
|
|
18
18
|
message: string);
|
|
19
|
+
static from_res(res: Response, message: string): ServiceError;
|
|
19
20
|
}
|
|
20
21
|
export declare abstract class BaseServiceClient {
|
|
21
22
|
private options;
|
package/lib/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;CAAG;AAE9E,oBAAY,YAAY,CAAC,CAAC,EAAE,OAAO,SAAS,cAAc,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAE9H,qBAAa,YAAa,SAAQ,KAAK;IAE5B,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EAAE,cAAc;IAC9B,IAAI,EAAE,MAAM,EAAI,qBAAqB;IAC5C,OAAO,EAAE,MAAM;IAMjB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;CAW9D;AAED,8BAAsB,iBAAiB;IACrC,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,CAAC,EAAE,oBAAoB;IAI1C;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,MAAM;cAIE,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,GAAG,EACT,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,cAAmB,GAC7C,OAAO,CAAC,GAAG,CAAC;CAwChB"}
|
package/lib/base.js
CHANGED
|
@@ -76,9 +76,21 @@ var ServiceError = /** @class */ (function (_super) {
|
|
|
76
76
|
var _this = _super.call(this, message) || this;
|
|
77
77
|
_this.status = status;
|
|
78
78
|
_this.code = code;
|
|
79
|
-
_this.name = "ServiceError";
|
|
79
|
+
_this.name = "ServiceError(" + code + ")";
|
|
80
80
|
return _this;
|
|
81
81
|
}
|
|
82
|
+
ServiceError.from_res = function (res, message) {
|
|
83
|
+
var code = res.status;
|
|
84
|
+
try {
|
|
85
|
+
var data = JSON.parse(message);
|
|
86
|
+
if (data.code && (data.message || data.error)) {
|
|
87
|
+
code = data.code;
|
|
88
|
+
message = data.message || data.error;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (_) { }
|
|
92
|
+
return new ServiceError(res.status, code, message);
|
|
93
|
+
};
|
|
82
94
|
return ServiceError;
|
|
83
95
|
}(Error));
|
|
84
96
|
exports.ServiceError = ServiceError;
|
|
@@ -114,12 +126,12 @@ var BaseServiceClient = /** @class */ (function () {
|
|
|
114
126
|
return 400 <= res.status && res.status < 500;
|
|
115
127
|
};
|
|
116
128
|
BaseServiceClient.prototype.request = function (method, route, body, options) {
|
|
117
|
-
var _a;
|
|
129
|
+
var _a, _b;
|
|
118
130
|
if (options === void 0) { options = {}; }
|
|
119
131
|
return __awaiter(this, void 0, void 0, function () {
|
|
120
|
-
var url, headers, req, res,
|
|
121
|
-
return __generator(this, function (
|
|
122
|
-
switch (
|
|
132
|
+
var url, headers, req, res, _i, _c, status_1, text, data;
|
|
133
|
+
return __generator(this, function (_d) {
|
|
134
|
+
switch (_d.label) {
|
|
123
135
|
case 0:
|
|
124
136
|
options = __assign(__assign({}, this.options), options);
|
|
125
137
|
url = this.build_url(route, options, (_a = options.query) !== null && _a !== void 0 ? _a : {});
|
|
@@ -139,14 +151,17 @@ var BaseServiceClient = /** @class */ (function () {
|
|
|
139
151
|
}
|
|
140
152
|
return [4 /*yield*/, (0, cross_fetch_1.default)(url, req)];
|
|
141
153
|
case 1:
|
|
142
|
-
res =
|
|
154
|
+
res = _d.sent();
|
|
143
155
|
if (!!res.ok) return [3 /*break*/, 3];
|
|
144
|
-
|
|
145
|
-
|
|
156
|
+
for (_i = 0, _c = (_b = options.allow) !== null && _b !== void 0 ? _b : []; _i < _c.length; _i++) {
|
|
157
|
+
status_1 = _c[_i];
|
|
158
|
+
if (res.status === status_1) {
|
|
159
|
+
return [2 /*return*/, null];
|
|
160
|
+
}
|
|
146
161
|
}
|
|
147
162
|
return [4 /*yield*/, res.text()];
|
|
148
163
|
case 2:
|
|
149
|
-
text =
|
|
164
|
+
text = _d.sent();
|
|
150
165
|
if (options.debug) {
|
|
151
166
|
console.log("ERR(" + res.status + ")", url, text);
|
|
152
167
|
}
|
|
@@ -154,19 +169,10 @@ var BaseServiceClient = /** @class */ (function () {
|
|
|
154
169
|
options.retry--;
|
|
155
170
|
return [2 /*return*/, this.request(method, route, body, options)];
|
|
156
171
|
}
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
data_1 = JSON.parse(text);
|
|
160
|
-
if (data_1.code && (data_1.message || data_1.error)) {
|
|
161
|
-
err.code = data_1.code;
|
|
162
|
-
err.message = data_1.message || data_1.error;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch (_) { }
|
|
166
|
-
throw err;
|
|
172
|
+
throw ServiceError.from_res(res, text);
|
|
167
173
|
case 3: return [4 /*yield*/, res.json()];
|
|
168
174
|
case 4:
|
|
169
|
-
data =
|
|
175
|
+
data = _d.sent();
|
|
170
176
|
if (options.debug) {
|
|
171
177
|
console.log("RES(" + res.status + ")", url, JSON.stringify(data, null, 2));
|
|
172
178
|
}
|
package/lib/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAAgC;AAgBhC;IAAkC,gCAAK;IACrC,sBACS,MAAc,EAAE,cAAc;IAC9B,IAAY,EAAI,qBAAqB;IAC5C,OAAe,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/base.ts
CHANGED
|
@@ -8,21 +8,33 @@ export interface RequestOptions {
|
|
|
8
8
|
debug?: boolean;
|
|
9
9
|
retry?: number;
|
|
10
10
|
base_url?: string;
|
|
11
|
-
|
|
11
|
+
allow?: number[];
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export interface ServiceClientOptions extends Omit<RequestOptions, "
|
|
14
|
+
export interface ServiceClientOptions extends Omit<RequestOptions, "allow"> {}
|
|
15
15
|
|
|
16
|
-
export type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["
|
|
16
|
+
export type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["allow"] extends number[] ? null : never)>;
|
|
17
17
|
|
|
18
18
|
export class ServiceError extends Error {
|
|
19
19
|
constructor(
|
|
20
20
|
public status: number, // http status
|
|
21
21
|
public code: number, // service error code
|
|
22
|
-
message: string
|
|
22
|
+
message: string // service error message
|
|
23
23
|
) {
|
|
24
24
|
super(message);
|
|
25
|
-
this.name =
|
|
25
|
+
this.name = `ServiceError(${code})`;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static from_res(res: Response, message: string): ServiceError {
|
|
29
|
+
let code = res.status;
|
|
30
|
+
try {
|
|
31
|
+
let data = JSON.parse(message);
|
|
32
|
+
if (data.code && (data.message || data.error)) {
|
|
33
|
+
code = data.code;
|
|
34
|
+
message = data.message || data.error;
|
|
35
|
+
}
|
|
36
|
+
} catch (_) {}
|
|
37
|
+
return new ServiceError(res.status, code, message);
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
40
|
|
|
@@ -84,8 +96,10 @@ export abstract class BaseServiceClient {
|
|
|
84
96
|
}
|
|
85
97
|
const res = await fetch(url, req);
|
|
86
98
|
if (!res.ok) {
|
|
87
|
-
|
|
88
|
-
|
|
99
|
+
for (const status of options.allow ?? []) {
|
|
100
|
+
if (res.status === status) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
89
103
|
}
|
|
90
104
|
const text = await res.text();
|
|
91
105
|
if (options.debug) {
|
|
@@ -95,15 +109,7 @@ export abstract class BaseServiceClient {
|
|
|
95
109
|
options.retry--;
|
|
96
110
|
return this.request(method, route, body, options);
|
|
97
111
|
}
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
const data = JSON.parse(text);
|
|
101
|
-
if (data.code && (data.message || data.error)) {
|
|
102
|
-
err.code = data.code;
|
|
103
|
-
err.message = data.message || data.error;
|
|
104
|
-
}
|
|
105
|
-
} catch (_) {}
|
|
106
|
-
throw err;
|
|
112
|
+
throw ServiceError.from_res(res, text);
|
|
107
113
|
}
|
|
108
114
|
const data = await res.json();
|
|
109
115
|
if (options.debug) {
|