@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 CHANGED
@@ -5,17 +5,18 @@ export interface RequestOptions {
5
5
  debug?: boolean;
6
6
  retry?: number;
7
7
  base_url?: string;
8
- allow_404?: true;
8
+ allow?: number[];
9
9
  }
10
- export interface ServiceClientOptions extends Omit<RequestOptions, "allow_404"> {
10
+ export interface ServiceClientOptions extends Omit<RequestOptions, "allow"> {
11
11
  }
12
- export declare type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["allow_404"] extends true ? null : never)>;
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,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;CAAG;AAElF,oBAAY,YAAY,CAAC,CAAC,EAAE,OAAO,SAAS,cAAc,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,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;CAKlB;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;CA8ChB"}
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, text, err, data_1, data;
121
- return __generator(this, function (_b) {
122
- switch (_b.label) {
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 = _b.sent();
154
+ res = _d.sent();
143
155
  if (!!res.ok) return [3 /*break*/, 3];
144
- if (options.allow_404 && res.status === 404) {
145
- return [2 /*return*/, null];
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 = _b.sent();
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
- err = new ServiceError(res.status, res.status, text);
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 = _b.sent();
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":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compassdigital/sdk.typescript",
3
- "version": "3.0.0-beta.7",
3
+ "version": "3.0.0-beta.8",
4
4
  "description": "Compass Digital Labs TypeScript SDK",
5
5
  "type": "commonjs",
6
6
  "main": "./lib/index.js",
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
- allow_404?: true;
11
+ allow?: number[];
12
12
  }
13
13
 
14
- export interface ServiceClientOptions extends Omit<RequestOptions, "allow_404"> {}
14
+ export interface ServiceClientOptions extends Omit<RequestOptions, "allow"> {}
15
15
 
16
- export type ResponseType<T, Options extends RequestOptions> = Promise<T | (Options["allow_404"] extends true ? null : never)>;
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 // service error message
22
+ message: string // service error message
23
23
  ) {
24
24
  super(message);
25
- this.name = "ServiceError";
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
- if (options.allow_404 && res.status === 404) {
88
- return null;
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
- const err = new ServiceError(res.status, res.status, text);
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) {