@compassdigital/sdk.typescript 3.0.0-beta.8 → 3.0.0-rc.1

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 (226) hide show
  1. package/README.md +121 -8
  2. package/bin/gen.js +484 -0
  3. package/bin/index.js +3 -0
  4. package/gen.ts +99 -41
  5. package/lib/base.d.ts +134 -9
  6. package/lib/base.d.ts.map +1 -1
  7. package/lib/base.js +293 -48
  8. package/lib/base.js.map +1 -1
  9. package/lib/index.d.ts +592 -337
  10. package/lib/index.d.ts.map +1 -1
  11. package/lib/index.js +544 -245
  12. package/lib/index.js.map +1 -1
  13. package/lib/interface/announcement.d.ts.map +1 -0
  14. package/lib/interface/announcement.js +4 -0
  15. package/lib/interface/announcement.js.map +1 -0
  16. package/lib/interface/brand.d.ts.map +1 -0
  17. package/lib/interface/brand.js +4 -0
  18. package/lib/interface/brand.js.map +1 -0
  19. package/lib/{calendar.d.ts → interface/calendar.d.ts} +4 -1
  20. package/lib/interface/calendar.d.ts.map +1 -0
  21. package/lib/interface/calendar.js +4 -0
  22. package/lib/interface/calendar.js.map +1 -0
  23. package/lib/interface/config.d.ts.map +1 -0
  24. package/lib/interface/config.js +4 -0
  25. package/lib/interface/config.js.map +1 -0
  26. package/lib/interface/datalake.d.ts.map +1 -0
  27. package/lib/interface/datalake.js +4 -0
  28. package/lib/interface/datalake.js.map +1 -0
  29. package/lib/interface/delivery.d.ts.map +1 -0
  30. package/lib/interface/delivery.js +4 -0
  31. package/lib/interface/delivery.js.map +1 -0
  32. package/lib/interface/dh.d.ts.map +1 -0
  33. package/lib/interface/dh.js +4 -0
  34. package/lib/interface/dh.js.map +1 -0
  35. package/lib/interface/email.d.ts +21 -0
  36. package/lib/interface/email.d.ts.map +1 -0
  37. package/lib/interface/email.js +4 -0
  38. package/lib/interface/email.js.map +1 -0
  39. package/lib/interface/file.d.ts.map +1 -0
  40. package/lib/interface/file.js +4 -0
  41. package/lib/interface/file.js.map +1 -0
  42. package/lib/{kds.d.ts → interface/kds.d.ts} +1 -0
  43. package/lib/interface/kds.d.ts.map +1 -0
  44. package/lib/interface/kds.js +4 -0
  45. package/lib/interface/kds.js.map +1 -0
  46. package/lib/{location.d.ts → interface/location.d.ts} +50 -20
  47. package/lib/interface/location.d.ts.map +1 -0
  48. package/lib/interface/location.js +4 -0
  49. package/lib/interface/location.js.map +1 -0
  50. package/lib/interface/logger.d.ts.map +1 -0
  51. package/lib/interface/logger.js +4 -0
  52. package/lib/interface/logger.js.map +1 -0
  53. package/lib/interface/loyalty.d.ts.map +1 -0
  54. package/lib/interface/loyalty.js +4 -0
  55. package/lib/interface/loyalty.js.map +1 -0
  56. package/lib/interface/mealplan.d.ts.map +1 -0
  57. package/lib/interface/mealplan.js +4 -0
  58. package/lib/interface/mealplan.js.map +1 -0
  59. package/lib/interface/menu.d.ts +448 -0
  60. package/lib/interface/menu.d.ts.map +1 -0
  61. package/lib/interface/menu.js +4 -0
  62. package/lib/interface/menu.js.map +1 -0
  63. package/lib/interface/message.d.ts.map +1 -0
  64. package/lib/interface/message.js +4 -0
  65. package/lib/interface/message.js.map +1 -0
  66. package/lib/{order.d.ts → interface/order.d.ts} +11 -4
  67. package/lib/interface/order.d.ts.map +1 -0
  68. package/lib/interface/order.js +4 -0
  69. package/lib/interface/order.js.map +1 -0
  70. package/lib/{partner.d.ts → interface/partner.d.ts} +243 -4
  71. package/lib/interface/partner.d.ts.map +1 -0
  72. package/lib/interface/partner.js +4 -0
  73. package/lib/interface/partner.js.map +1 -0
  74. package/lib/{payment.d.ts → interface/payment.d.ts} +1 -0
  75. package/lib/interface/payment.d.ts.map +1 -0
  76. package/lib/interface/payment.js +4 -0
  77. package/lib/interface/payment.js.map +1 -0
  78. package/lib/{promo.d.ts → interface/promo.d.ts} +1 -0
  79. package/lib/interface/promo.d.ts.map +1 -0
  80. package/lib/interface/promo.js +4 -0
  81. package/lib/interface/promo.js.map +1 -0
  82. package/lib/{report.d.ts → interface/report.d.ts} +2 -0
  83. package/lib/interface/report.d.ts.map +1 -0
  84. package/lib/interface/report.js +4 -0
  85. package/lib/interface/report.js.map +1 -0
  86. package/lib/interface/schedule.d.ts.map +1 -0
  87. package/lib/interface/schedule.js +4 -0
  88. package/lib/interface/schedule.js.map +1 -0
  89. package/lib/{shoppingcart.d.ts → interface/shoppingcart.d.ts} +10 -1
  90. package/lib/interface/shoppingcart.d.ts.map +1 -0
  91. package/lib/interface/shoppingcart.js +4 -0
  92. package/lib/interface/shoppingcart.js.map +1 -0
  93. package/lib/interface/task.d.ts.map +1 -0
  94. package/lib/interface/task.js +4 -0
  95. package/lib/interface/task.js.map +1 -0
  96. package/lib/{user.d.ts → interface/user.d.ts} +19 -0
  97. package/lib/interface/user.d.ts.map +1 -0
  98. package/lib/interface/user.js +4 -0
  99. package/lib/interface/user.js.map +1 -0
  100. package/lib/interface/vote.d.ts.map +1 -0
  101. package/lib/interface/vote.js +4 -0
  102. package/lib/interface/vote.js.map +1 -0
  103. package/manifest.json +4 -0
  104. package/package.json +15 -5
  105. package/src/base.ts +315 -35
  106. package/src/index.ts +2630 -988
  107. package/src/{announcement.ts → interface/announcement.ts} +2 -0
  108. package/src/{brand.ts → interface/brand.ts} +2 -0
  109. package/src/{calendar.ts → interface/calendar.ts} +7 -1
  110. package/src/{config.ts → interface/config.ts} +2 -0
  111. package/src/{datalake.ts → interface/datalake.ts} +2 -0
  112. package/src/{delivery.ts → interface/delivery.ts} +2 -0
  113. package/src/{dh.ts → interface/dh.ts} +2 -0
  114. package/src/interface/email.ts +30 -0
  115. package/src/{file.ts → interface/file.ts} +2 -0
  116. package/src/{kds.ts → interface/kds.ts} +4 -0
  117. package/src/{location.ts → interface/location.ts} +76 -35
  118. package/src/{logger.ts → interface/logger.ts} +2 -0
  119. package/src/{loyalty.ts → interface/loyalty.ts} +2 -0
  120. package/src/{mealplan.ts → interface/mealplan.ts} +2 -0
  121. package/src/interface/menu.ts +649 -0
  122. package/src/{message.ts → interface/message.ts} +2 -0
  123. package/src/{order.ts → interface/order.ts} +21 -6
  124. package/src/{partner.ts → interface/partner.ts} +291 -5
  125. package/src/{payment.ts → interface/payment.ts} +4 -0
  126. package/src/{promo.ts → interface/promo.ts} +3 -0
  127. package/src/{report.ts → interface/report.ts} +4 -0
  128. package/src/{schedule.ts → interface/schedule.ts} +2 -0
  129. package/src/{shoppingcart.ts → interface/shoppingcart.ts} +14 -1
  130. package/src/{task.ts → interface/task.ts} +2 -0
  131. package/src/{user.ts → interface/user.ts} +34 -1
  132. package/src/{vote.ts → interface/vote.ts} +2 -0
  133. package/template.ejs +3 -3
  134. package/test/client.test.ts +192 -0
  135. package/test/gen.test.ts +22 -0
  136. package/lib/announcement.d.ts.map +0 -1
  137. package/lib/announcement.js +0 -3
  138. package/lib/announcement.js.map +0 -1
  139. package/lib/brand.d.ts.map +0 -1
  140. package/lib/brand.js +0 -3
  141. package/lib/brand.js.map +0 -1
  142. package/lib/calendar.d.ts.map +0 -1
  143. package/lib/calendar.js +0 -3
  144. package/lib/calendar.js.map +0 -1
  145. package/lib/config.d.ts.map +0 -1
  146. package/lib/config.js +0 -3
  147. package/lib/config.js.map +0 -1
  148. package/lib/datalake.d.ts.map +0 -1
  149. package/lib/datalake.js +0 -3
  150. package/lib/datalake.js.map +0 -1
  151. package/lib/delivery.d.ts.map +0 -1
  152. package/lib/delivery.js +0 -3
  153. package/lib/delivery.js.map +0 -1
  154. package/lib/dh.d.ts.map +0 -1
  155. package/lib/dh.js +0 -3
  156. package/lib/dh.js.map +0 -1
  157. package/lib/email.d.ts +0 -5
  158. package/lib/email.d.ts.map +0 -1
  159. package/lib/email.js +0 -3
  160. package/lib/email.js.map +0 -1
  161. package/lib/file.d.ts.map +0 -1
  162. package/lib/file.js +0 -3
  163. package/lib/file.js.map +0 -1
  164. package/lib/kds.d.ts.map +0 -1
  165. package/lib/kds.js +0 -3
  166. package/lib/kds.js.map +0 -1
  167. package/lib/location.d.ts.map +0 -1
  168. package/lib/location.js +0 -3
  169. package/lib/location.js.map +0 -1
  170. package/lib/logger.d.ts.map +0 -1
  171. package/lib/logger.js +0 -3
  172. package/lib/logger.js.map +0 -1
  173. package/lib/loyalty.d.ts.map +0 -1
  174. package/lib/loyalty.js +0 -3
  175. package/lib/loyalty.js.map +0 -1
  176. package/lib/mealplan.d.ts.map +0 -1
  177. package/lib/mealplan.js +0 -3
  178. package/lib/mealplan.js.map +0 -1
  179. package/lib/message.d.ts.map +0 -1
  180. package/lib/message.js +0 -3
  181. package/lib/message.js.map +0 -1
  182. package/lib/order.d.ts.map +0 -1
  183. package/lib/order.js +0 -3
  184. package/lib/order.js.map +0 -1
  185. package/lib/partner.d.ts.map +0 -1
  186. package/lib/partner.js +0 -3
  187. package/lib/partner.js.map +0 -1
  188. package/lib/payment.d.ts.map +0 -1
  189. package/lib/payment.js +0 -3
  190. package/lib/payment.js.map +0 -1
  191. package/lib/promo.d.ts.map +0 -1
  192. package/lib/promo.js +0 -3
  193. package/lib/promo.js.map +0 -1
  194. package/lib/report.d.ts.map +0 -1
  195. package/lib/report.js +0 -3
  196. package/lib/report.js.map +0 -1
  197. package/lib/schedule.d.ts.map +0 -1
  198. package/lib/schedule.js +0 -3
  199. package/lib/schedule.js.map +0 -1
  200. package/lib/shoppingcart.d.ts.map +0 -1
  201. package/lib/shoppingcart.js +0 -3
  202. package/lib/shoppingcart.js.map +0 -1
  203. package/lib/task.d.ts.map +0 -1
  204. package/lib/task.js +0 -3
  205. package/lib/task.js.map +0 -1
  206. package/lib/user.d.ts.map +0 -1
  207. package/lib/user.js +0 -3
  208. package/lib/user.js.map +0 -1
  209. package/lib/vote.d.ts.map +0 -1
  210. package/lib/vote.js +0 -3
  211. package/lib/vote.js.map +0 -1
  212. package/src/email.ts +0 -4
  213. /package/lib/{announcement.d.ts → interface/announcement.d.ts} +0 -0
  214. /package/lib/{brand.d.ts → interface/brand.d.ts} +0 -0
  215. /package/lib/{config.d.ts → interface/config.d.ts} +0 -0
  216. /package/lib/{datalake.d.ts → interface/datalake.d.ts} +0 -0
  217. /package/lib/{delivery.d.ts → interface/delivery.d.ts} +0 -0
  218. /package/lib/{dh.d.ts → interface/dh.d.ts} +0 -0
  219. /package/lib/{file.d.ts → interface/file.d.ts} +0 -0
  220. /package/lib/{logger.d.ts → interface/logger.d.ts} +0 -0
  221. /package/lib/{loyalty.d.ts → interface/loyalty.d.ts} +0 -0
  222. /package/lib/{mealplan.d.ts → interface/mealplan.d.ts} +0 -0
  223. /package/lib/{message.d.ts → interface/message.d.ts} +0 -0
  224. /package/lib/{schedule.d.ts → interface/schedule.d.ts} +0 -0
  225. /package/lib/{task.d.ts → interface/task.d.ts} +0 -0
  226. /package/lib/{vote.d.ts → interface/vote.d.ts} +0 -0
package/lib/base.js CHANGED
@@ -64,9 +64,70 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
64
64
  var __importDefault = (this && this.__importDefault) || function (mod) {
65
65
  return (mod && mod.__esModule) ? mod : { "default": mod };
66
66
  };
67
+ var _a;
67
68
  Object.defineProperty(exports, "__esModule", { value: true });
68
- exports.BaseServiceClient = exports.ServiceError = void 0;
69
+ exports.BaseServiceClient = exports.ServiceError = exports.ResponsePromise = void 0;
69
70
  var cross_fetch_1 = __importDefault(require("cross-fetch"));
71
+ /**
72
+ * We have to re-implement the promise methods instead of just existing
73
+ * the existing Promise class due to: https://github.com/microsoft/TypeScript/issues/15202
74
+ */
75
+ var ResponsePromise = /** @class */ (function () {
76
+ function ResponsePromise(promise) {
77
+ this.promise = promise;
78
+ /**
79
+ * Implements Promise interface.
80
+ */
81
+ this[_a] = "[object ResponsePromise]";
82
+ }
83
+ /**
84
+ * Implements Promise interface.
85
+ */
86
+ ResponsePromise.prototype.then = function (onfulfilled, onrejected) {
87
+ return new ResponsePromise(this.promise.then(onfulfilled, onrejected));
88
+ };
89
+ /**
90
+ * Implements Promise interface.
91
+ */
92
+ ResponsePromise.prototype.catch = function (onrejected) {
93
+ return new ResponsePromise(this.promise.catch(onrejected));
94
+ };
95
+ /**
96
+ * Implements Promise interface.
97
+ */
98
+ ResponsePromise.prototype.finally = function (onfinally) {
99
+ return new ResponsePromise(this.promise.finally(onfinally));
100
+ };
101
+ /**
102
+ * Returns a promise that resolves to null if http status code
103
+ * or service error code matches one of the provided codes.
104
+ * If no codes are specified, all codes are ignored.
105
+ */
106
+ ResponsePromise.prototype.ignore = function () {
107
+ var codes = [];
108
+ for (var _i = 0; _i < arguments.length; _i++) {
109
+ codes[_i] = arguments[_i];
110
+ }
111
+ return new ResponsePromise(ServiceError.ignore(codes, this.promise));
112
+ };
113
+ /**
114
+ * Returns a promise that resolves to either the response body
115
+ * or a ServiceError.
116
+ */
117
+ ResponsePromise.prototype.combine = function () {
118
+ var codes = [];
119
+ for (var _i = 0; _i < arguments.length; _i++) {
120
+ codes[_i] = arguments[_i];
121
+ }
122
+ return new ResponsePromise(ServiceError.combine(codes, this.promise));
123
+ };
124
+ return ResponsePromise;
125
+ }());
126
+ exports.ResponsePromise = ResponsePromise;
127
+ _a = Symbol.toStringTag;
128
+ /**
129
+ * An error returned from an api service.
130
+ */
70
131
  var ServiceError = /** @class */ (function (_super) {
71
132
  __extends(ServiceError, _super);
72
133
  function ServiceError(status, // http status
@@ -77,23 +138,136 @@ var ServiceError = /** @class */ (function (_super) {
77
138
  _this.status = status;
78
139
  _this.code = code;
79
140
  _this.name = "ServiceError(" + code + ")";
141
+ // TODO: remove this if we change compilation target > es5
142
+ Object.setPrototypeOf(_this, ServiceError.prototype);
80
143
  return _this;
81
144
  }
82
- ServiceError.from_res = function (res, message) {
145
+ /**
146
+ * Returns the http status code from err.
147
+ * If err isn't an instance of ServiceError, -1 is returned.
148
+ */
149
+ ServiceError.status = function (err) {
150
+ if (err instanceof ServiceError) {
151
+ return err.status;
152
+ }
153
+ return -1;
154
+ };
155
+ /**
156
+ * Returns the service error code from err.
157
+ * If err isn't an instance of ServiceError, -1 is returned.
158
+ */
159
+ ServiceError.code = function (err) {
160
+ if (err instanceof ServiceError) {
161
+ return err.code;
162
+ }
163
+ return -1;
164
+ };
165
+ /**
166
+ * Returns a promise that resolves to null if http status code
167
+ * or service error code matches one of the provided codes.
168
+ * If no codes are specified, all codes are ignored.
169
+ */
170
+ ServiceError.ignore = function (codes, response) {
171
+ return __awaiter(this, void 0, void 0, function () {
172
+ var err_1, _i, codes_1, code;
173
+ return __generator(this, function (_b) {
174
+ switch (_b.label) {
175
+ case 0:
176
+ _b.trys.push([0, 2, , 3]);
177
+ return [4 /*yield*/, response];
178
+ case 1: return [2 /*return*/, _b.sent()];
179
+ case 2:
180
+ err_1 = _b.sent();
181
+ if (err_1 instanceof ServiceError) {
182
+ if (codes.length === 0) {
183
+ return [2 /*return*/, null];
184
+ }
185
+ for (_i = 0, codes_1 = codes; _i < codes_1.length; _i++) {
186
+ code = codes_1[_i];
187
+ if (err_1.status === code || err_1.code === code) {
188
+ return [2 /*return*/, null];
189
+ }
190
+ }
191
+ }
192
+ throw err_1;
193
+ case 3: return [2 /*return*/];
194
+ }
195
+ });
196
+ });
197
+ };
198
+ /**
199
+ * Returns a promise that resolves to either T or a ServiceError.
200
+ */
201
+ ServiceError.combine = function (codes, response) {
202
+ return __awaiter(this, void 0, void 0, function () {
203
+ var data, err_2, _i, codes_2, code;
204
+ return __generator(this, function (_b) {
205
+ switch (_b.label) {
206
+ case 0:
207
+ _b.trys.push([0, 2, , 3]);
208
+ return [4 /*yield*/, response];
209
+ case 1:
210
+ data = _b.sent();
211
+ return [2 /*return*/, { ok: true, data: data, err: null }];
212
+ case 2:
213
+ err_2 = _b.sent();
214
+ if (err_2 instanceof ServiceError) {
215
+ if (codes.length === 0) {
216
+ return [2 /*return*/, { ok: false, data: null, err: err_2 }];
217
+ }
218
+ for (_i = 0, codes_2 = codes; _i < codes_2.length; _i++) {
219
+ code = codes_2[_i];
220
+ if (err_2.status === code || err_2.code === code) {
221
+ return [2 /*return*/, { ok: false, data: null, err: err_2 }];
222
+ }
223
+ }
224
+ }
225
+ throw err_2;
226
+ case 3: return [2 /*return*/];
227
+ }
228
+ });
229
+ });
230
+ };
231
+ /**
232
+ * Constructs a ServiceError from the provided response data.
233
+ */
234
+ ServiceError.from_res = function (res) {
235
+ var message = res.body;
83
236
  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;
237
+ if (res.err) {
238
+ // network error
239
+ if (res.err instanceof Error) {
240
+ message = res.err.message;
241
+ }
242
+ else {
243
+ message = "Network Error";
244
+ }
245
+ code = 0;
246
+ }
247
+ else {
248
+ try {
249
+ var data = JSON.parse(res.body);
250
+ if (data.code && (data.message || data.error)) {
251
+ code = data.code;
252
+ message = data.message || data.error;
253
+ }
89
254
  }
255
+ catch (_) { }
256
+ }
257
+ var err = new ServiceError(res.status, code, message);
258
+ // override the stack trace so that it doesn't include the from_res helper.
259
+ if (Error.captureStackTrace) {
260
+ Error.captureStackTrace(err, ServiceError.from_res);
90
261
  }
91
- catch (_) { }
92
- return new ServiceError(res.status, code, message);
262
+ return err;
93
263
  };
94
264
  return ServiceError;
95
265
  }(Error));
96
266
  exports.ServiceError = ServiceError;
267
+ /**
268
+ * BaseServiceClient contains the logic for executing http requests.
269
+ * This class is meant to be extended by the generated code.
270
+ */
97
271
  var BaseServiceClient = /** @class */ (function () {
98
272
  function BaseServiceClient(options) {
99
273
  this.options = options !== null && options !== void 0 ? options : {};
@@ -101,8 +275,8 @@ var BaseServiceClient = /** @class */ (function () {
101
275
  /**
102
276
  * Combine the route and query parameters into a full url.
103
277
  */
104
- BaseServiceClient.prototype.build_url = function (route, _a, params) {
105
- var base_url = _a.base_url, _b = _a.stage, stage = _b === void 0 ? "dev" : _b;
278
+ BaseServiceClient.prototype.build_url = function (route, _b, params) {
279
+ var base_url = _b.base_url, _c = _b.stage, stage = _c === void 0 ? "dev" : _c;
106
280
  var url = "https://api.compassdigital.org/" + stage + route;
107
281
  // use the base url if one was provided.
108
282
  if (base_url) {
@@ -113,8 +287,8 @@ var BaseServiceClient = /** @class */ (function () {
113
287
  }
114
288
  // add query parameters.
115
289
  var query = [];
116
- for (var _i = 0, _c = Object.entries(params); _i < _c.length; _i++) {
117
- var _d = _c[_i], name_1 = _d[0], value = _d[1];
290
+ for (var _i = 0, _d = Object.entries(params); _i < _d.length; _i++) {
291
+ var _e = _d[_i], name_1 = _e[0], value = _e[1];
118
292
  query.push(encodeURIComponent(name_1) + "=" + encodeURIComponent(value));
119
293
  }
120
294
  if (query.length > 0) {
@@ -122,57 +296,128 @@ var BaseServiceClient = /** @class */ (function () {
122
296
  }
123
297
  return url;
124
298
  };
125
- BaseServiceClient.prototype.is_4xx = function (res) {
126
- return 400 <= res.status && res.status < 500;
299
+ /**
300
+ * Perform the http request or pass it to the intercept function
301
+ * if one was configured.
302
+ */
303
+ BaseServiceClient.prototype.fetch = function (req, options) {
304
+ return __awaiter(this, void 0, void 0, function () {
305
+ var res, err_3;
306
+ var _b;
307
+ return __generator(this, function (_c) {
308
+ switch (_c.label) {
309
+ case 0:
310
+ if (options === null || options === void 0 ? void 0 : options.intercept) {
311
+ return [2 /*return*/, options.intercept(req, this.fetch.bind(this))];
312
+ }
313
+ _c.label = 1;
314
+ case 1:
315
+ _c.trys.push([1, 4, , 5]);
316
+ return [4 /*yield*/, (0, cross_fetch_1.default)(req.url, {
317
+ method: req.method,
318
+ body: req.body,
319
+ headers: req.headers,
320
+ })];
321
+ case 2:
322
+ res = _c.sent();
323
+ _b = {
324
+ ok: res.ok,
325
+ status: res.status
326
+ };
327
+ return [4 /*yield*/, res.text()];
328
+ case 3: return [2 /*return*/, (_b.body = _c.sent(),
329
+ _b)];
330
+ case 4:
331
+ err_3 = _c.sent();
332
+ return [2 /*return*/, {
333
+ ok: false,
334
+ status: 0,
335
+ body: "",
336
+ err: err_3,
337
+ }];
338
+ case 5: return [2 /*return*/];
339
+ }
340
+ });
341
+ });
342
+ };
343
+ /**
344
+ * Returns true if the status code represents a transient error
345
+ * or it's a network error.
346
+ */
347
+ BaseServiceClient.prototype.should_retry = function (res) {
348
+ if (res.err) {
349
+ return true;
350
+ }
351
+ switch (res.status) {
352
+ case 408: // timeout
353
+ case 413: // too large
354
+ case 429: // too many requests
355
+ case 500: // generic error response
356
+ case 502: // invalid upstream response
357
+ case 503: // service unavailable
358
+ case 504: // gateway timeout
359
+ case 522: // tcp connection timeout
360
+ return true;
361
+ default:
362
+ return false;
363
+ }
364
+ };
365
+ /**
366
+ * Returns the merged options.
367
+ */
368
+ BaseServiceClient.prototype.get_options = function (options) {
369
+ return __assign(__assign(__assign({}, this.options), options), { headers: __assign(__assign({}, this.options.headers), options.headers) });
370
+ };
371
+ /**
372
+ * A delegate to _request that wraps the response in a ResponsePromise.
373
+ */
374
+ BaseServiceClient.prototype.request = function (service, name, method, route, body, options) {
375
+ if (options === void 0) { options = {}; }
376
+ var promise = this._request(service, name, method, route, body, options);
377
+ return new ResponsePromise(promise);
127
378
  };
128
- BaseServiceClient.prototype.request = function (method, route, body, options) {
129
- var _a, _b;
379
+ /**
380
+ * The main logic for fulfilling a request as perscribed by
381
+ * the request options.
382
+ */
383
+ BaseServiceClient.prototype._request = function (service, name, method, route, body, options) {
384
+ var _b;
130
385
  if (options === void 0) { options = {}; }
131
386
  return __awaiter(this, void 0, void 0, function () {
132
- var url, headers, req, res, _i, _c, status_1, text, data;
133
- return __generator(this, function (_d) {
134
- switch (_d.label) {
387
+ var url, headers, req, res, err, data;
388
+ return __generator(this, function (_c) {
389
+ switch (_c.label) {
135
390
  case 0:
136
- options = __assign(__assign({}, this.options), options);
137
- url = this.build_url(route, options, (_a = options.query) !== null && _a !== void 0 ? _a : {});
138
- headers = Object.assign({}, options.headers);
391
+ options = this.get_options(options);
392
+ url = this.build_url(route, options, (_b = options.query) !== null && _b !== void 0 ? _b : {});
393
+ headers = Object.assign({
394
+ "User-Agent": "CDL/ServiceClient"
395
+ }, options.headers);
139
396
  if (options.token) {
140
397
  headers["Authorization"] = "Bearer " + options.token;
141
398
  }
142
- req = {
143
- method: method,
144
- headers: headers,
145
- };
399
+ req = { name: name, service: service, url: url, method: method, headers: headers };
146
400
  if (body) {
147
401
  req.body = JSON.stringify(body);
148
402
  }
149
403
  if (options.debug) {
150
404
  console.log("REQ(" + method.toUpperCase() + ")", url, JSON.stringify(req, null, 2));
151
405
  }
152
- return [4 /*yield*/, (0, cross_fetch_1.default)(url, req)];
406
+ return [4 /*yield*/, this.fetch(req, options)];
153
407
  case 1:
154
- res = _d.sent();
155
- if (!!res.ok) return [3 /*break*/, 3];
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];
408
+ res = _c.sent();
409
+ if (!res.ok) {
410
+ err = ServiceError.from_res(res);
411
+ if (options.debug) {
412
+ console.log("ERR(" + res.status + ")", url, err.message);
160
413
  }
414
+ if (typeof options.retry === "number" && options.retry > 0 && this.should_retry(res)) {
415
+ options.retry--;
416
+ return [2 /*return*/, this.request(service, name, method, route, body, options)];
417
+ }
418
+ throw err;
161
419
  }
162
- return [4 /*yield*/, res.text()];
163
- case 2:
164
- text = _d.sent();
165
- if (options.debug) {
166
- console.log("ERR(" + res.status + ")", url, text);
167
- }
168
- if (typeof options.retry === "number" && options.retry > 0 && !this.is_4xx(res)) {
169
- options.retry--;
170
- return [2 /*return*/, this.request(method, route, body, options)];
171
- }
172
- throw ServiceError.from_res(res, text);
173
- case 3: return [4 /*yield*/, res.json()];
174
- case 4:
175
- data = _d.sent();
420
+ data = res.body ? JSON.parse(res.body) : res.body;
176
421
  if (options.debug) {
177
422
  console.log("RES(" + res.status + ")", url, JSON.stringify(data, null, 2));
178
423
  }
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAAgC;AAsDhC;;;GAGG;AACH;IAOE,yBAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;QALvC;;WAEG;QACH,QAAoB,GAAG,0BAA0B,CAAC;IAER,CAAC;IAE3C;;OAEG;IACH,8BAAI,GAAJ,UACE,WAAqE,EACrE,UAAuE;QAEvE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,+BAAK,GAAL,UACE,UAAqE;QAErE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,iCAAO,GAAP,UAAQ,SAA+B;QACrC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,gCAAM,GAAN;QAAO,eAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,0BAAkB;;QACvB,OAAO,IAAI,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,iCAAO,GAAP;QAAQ,eAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,0BAAkB;;QACxB,OAAO,IAAI,eAAe,CAAC,YAAY,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IACH,sBAAC;AAAD,CAAC,AAnDD,IAmDC;AAnDY,0CAAe;KAKzB,MAAM,CAAC,WAAW;AA4DrB;;GAEG;AACH;IAAkC,gCAAK;IACrC,sBACS,MAAc,EAAE,cAAc;IAC9B,IAAY,EAAI,qBAAqB;IAC5C,OAAe,CAAQ,wBAAwB;;QAHjD,YAKE,kBAAM,OAAO,CAAC,SAKf;QATQ,YAAM,GAAN,MAAM,CAAQ;QACd,UAAI,GAAJ,IAAI,CAAQ;QAInB,KAAI,CAAC,IAAI,GAAG,kBAAgB,IAAI,MAAG,CAAC;QAEpC,0DAA0D;QAC1D,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;;IACtD,CAAC;IAED;;;OAGG;IACI,mBAAM,GAAb,UAAc,GAAQ;QACpB,IAAI,GAAG,YAAY,YAAY,EAAE;YAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED;;;OAGG;IACI,iBAAI,GAAX,UAAY,GAAQ;QAClB,IAAI,GAAG,YAAY,YAAY,EAAE;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC;SACjB;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACU,mBAAM,GAAnB,UAAuB,KAAe,EAAE,QAAoB;;;;;;;wBAEjD,qBAAM,QAAQ,EAAA;4BAArB,sBAAO,SAAc,EAAC;;;wBAEtB,IAAI,KAAG,YAAY,YAAY,EAAE;4BAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gCACtB,sBAAO,IAAI,EAAC;6BACb;4BACD,WAAwB,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gCAAf,IAAI;gCACb,IAAI,KAAG,CAAC,MAAM,KAAK,IAAI,IAAI,KAAG,CAAC,IAAI,KAAK,IAAI,EAAE;oCAC5C,sBAAO,IAAI,EAAC;iCACb;6BACF;yBACF;wBACD,MAAM,KAAG,CAAC;;;;;KAEb;IAED;;OAEG;IACU,oBAAO,GAApB,UAAwB,KAAe,EAAE,QAAoB;;;;;;;wBAE5C,qBAAM,QAAQ,EAAA;;wBAArB,IAAI,GAAG,SAAc;wBAC3B,sBAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,MAAA,EAAE,GAAG,EAAE,IAAI,EAAE,EAAC;;;wBAErC,IAAI,KAAG,YAAY,YAAY,EAAE;4BAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gCACtB,sBAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAA,EAAE,EAAA;6BACtC;4BACD,WAAwB,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gCAAf,IAAI;gCACb,IAAI,KAAG,CAAC,MAAM,KAAK,IAAI,IAAI,KAAG,CAAC,IAAI,KAAK,IAAI,EAAE;oCAC5C,sBAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAA,EAAE,EAAC;iCACvC;6BACF;yBACF;wBACD,MAAM,KAAG,CAAC;;;;;KAEb;IAED;;OAEG;IACI,qBAAQ,GAAf,UAAgB,GAAiB;QAC/B,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,EAAE;YACX,gBAAgB;YAChB,IAAI,GAAG,CAAC,GAAG,YAAY,KAAK,EAAE;gBAC5B,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;aAC3B;iBAAM;gBACL,OAAO,GAAG,eAAe,CAAC;aAC3B;YACD,IAAI,GAAG,CAAC,CAAC;SACV;aAAM;YACL,IAAI;gBACF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC7C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACjB,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;iBACtC;aACF;YAAC,OAAO,CAAC,EAAE,GAAE;SACf;QACD,IAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,2EAA2E;QAC3E,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;SACrD;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACH,mBAAC;AAAD,CAAC,AA9GD,CAAkC,KAAK,GA8GtC;AA9GY,oCAAY;AAgHzB;;;GAGG;AACH;IAGE,2BAAY,OAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,qCAAS,GAAjB,UAAkB,KAAa,EAAE,EAA2C,EAAE,MAAW;YAAtD,QAAQ,cAAA,EAAE,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA;QACxD,IAAI,GAAG,GAAG,oCAAkC,KAAK,GAAG,KAAO,CAAC;QAC5D,wCAAwC;QACxC,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC1B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAClC;YACD,GAAG,GAAG,KAAG,QAAQ,GAAG,KAAO,CAAC;SAC7B;QACD,wBAAwB;QACxB,IAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAA4B,UAAsB,EAAtB,KAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAtB,cAAsB,EAAtB,IAAsB,EAAE;YAAzC,IAAA,WAAa,EAAZ,MAAI,QAAA,EAAE,KAAK,QAAA;YACrB,KAAK,CAAC,IAAI,CAAI,kBAAkB,CAAC,MAAI,CAAC,SAAI,kBAAkB,CAAC,KAAY,CAAG,CAAC,CAAC;SAC/E;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC9B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACW,iCAAK,GAAnB,UAAoB,GAAgB,EAAE,OAAwB;;;;;;;wBAC5D,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;4BACtB,sBAAO,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;yBACtD;;;;wBAEa,qBAAM,IAAA,qBAAK,EAAC,GAAG,CAAC,GAAG,EAAE;gCAC/B,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,IAAI,EAAE,GAAG,CAAC,IAAI;gCACd,OAAO,EAAE,GAAG,CAAC,OAAO;6BACrB,CAAC,EAAA;;wBAJI,GAAG,GAAG,SAIV;;4BAEA,EAAE,EAAE,GAAG,CAAC,EAAE;4BACV,MAAM,EAAE,GAAG,CAAC,MAAM;;wBACZ,qBAAM,GAAG,CAAC,IAAI,EAAE,EAAA;4BAHxB,uBAGE,OAAI,GAAE,SAAgB;iCACtB;;;wBAEF,sBAAO;gCACL,EAAE,EAAE,KAAK;gCACT,MAAM,EAAE,CAAC;gCACT,IAAI,EAAE,EAAE;gCACR,GAAG,EAAE,KAAG;6BACT,EAAA;;;;;KAEJ;IAED;;;OAGG;IACK,wCAAY,GAApB,UAAqB,GAAiB;QACpC,IAAI,GAAG,CAAC,GAAG,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,QAAQ,GAAG,CAAC,MAAM,EAAE;YAClB,KAAK,GAAG,CAAC,CAAC,UAAU;YACpB,KAAK,GAAG,CAAC,CAAC,YAAY;YACtB,KAAK,GAAG,CAAC,CAAC,oBAAoB;YAC9B,KAAK,GAAG,CAAC,CAAC,yBAAyB;YACnC,KAAK,GAAG,CAAC,CAAC,4BAA4B;YACtC,KAAK,GAAG,CAAC,CAAC,sBAAsB;YAChC,KAAK,GAAG,CAAC,CAAC,kBAAkB;YAC5B,KAAK,GAAG,EAAE,yBAAyB;gBACjC,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAED;;OAEG;IACK,uCAAW,GAAnB,UAAoB,OAAuB;QACzC,sCACK,IAAI,CAAC,OAAO,GACZ,OAAO,KACV,OAAO,wBACF,IAAI,CAAC,OAAO,CAAC,OAAO,GACpB,OAAO,CAAC,OAAO,KAEpB;IACJ,CAAC;IAED;;OAEG;IACO,mCAAO,GAAjB,UACE,OAAe,EACf,IAAY,EACZ,MAAc,EACd,KAAa,EACb,IAAS,EACT,OAA8C;QAA9C,wBAAA,EAAA,YAA8C;QAE9C,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACW,oCAAQ,GAAtB,UACE,OAAe,EACf,IAAY,EACZ,MAAc,EACd,KAAa,EACb,IAAS,EACT,OAA8C;;QAA9C,wBAAA,EAAA,YAA8C;;;;;;wBAE9C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAC9B,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC;wBAC1D,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;4BAC5B,YAAY,EAAE,mBAAmB;yBAClC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;wBACpB,IAAI,OAAO,CAAC,KAAK,EAAE;4BACjB,OAAO,CAAC,eAAe,CAAC,GAAG,YAAU,OAAO,CAAC,KAAO,CAAC;yBACtD;wBACK,GAAG,GAAgB,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC;wBACjE,IAAI,IAAI,EAAE;4BACR,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;yBACjC;wBACD,IAAI,OAAO,CAAC,KAAK,EAAE;4BACjB,OAAO,CAAC,GAAG,CAAC,SAAO,MAAM,CAAC,WAAW,EAAE,MAAG,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;yBAChF;wBACW,qBAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAA;;wBAApC,GAAG,GAAG,SAA8B;wBAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;4BACL,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BACvC,IAAI,OAAO,CAAC,KAAK,EAAE;gCACjB,OAAO,CAAC,GAAG,CAAC,SAAO,GAAG,CAAC,MAAM,MAAG,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;6BACrD;4BACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;gCACpF,OAAO,CAAC,KAAK,EAAE,CAAC;gCAChB,sBAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAC;6BAClE;4BACD,MAAM,GAAG,CAAC;yBACX;wBACK,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;wBACxD,IAAI,OAAO,CAAC,KAAK,EAAE;4BACjB,OAAO,CAAC,GAAG,CAAC,SAAO,GAAG,CAAC,MAAM,MAAG,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;yBACvE;wBACD,sBAAO,IAAI,EAAC;;;;KACb;IACH,wBAAC;AAAD,CAAC,AA5JD,IA4JC;AA5JqB,8CAAiB"}