@utiliread/http 1.11.0 → 1.13.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 (47) hide show
  1. package/.vscode/settings.json +2 -2
  2. package/dist/cjs/events.js +19 -85
  3. package/dist/cjs/events.js.map +1 -1
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/msgpack.js +17 -0
  7. package/dist/cjs/msgpack.js.map +1 -1
  8. package/dist/esm/events.d.ts +7 -21
  9. package/dist/esm/events.js +17 -84
  10. package/dist/esm/events.js.map +1 -1
  11. package/dist/esm/index.d.ts +2 -1
  12. package/dist/esm/index.js +1 -0
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/msgpack.d.ts +1 -0
  15. package/dist/esm/msgpack.js +18 -1
  16. package/dist/esm/msgpack.js.map +1 -1
  17. package/karma.config.js +30 -30
  18. package/package.json +1 -1
  19. package/src/event-aggregator.ts +31 -31
  20. package/src/events.ts +39 -0
  21. package/src/helpers.ts +13 -13
  22. package/src/http-builder.ts +254 -254
  23. package/src/http-error.ts +25 -25
  24. package/src/http-response.ts +55 -55
  25. package/src/http.spec.ts +104 -104
  26. package/src/http.ts +121 -121
  27. package/src/index.ts +17 -16
  28. package/src/json.ts +138 -138
  29. package/src/mapping.ts +42 -42
  30. package/src/msgpack.ts +63 -48
  31. package/src/pagination.ts +25 -25
  32. package/src/problem-details.ts +7 -7
  33. package/src/query-string.spec.ts +62 -62
  34. package/src/query-string.ts +69 -69
  35. package/src/timeout-error.ts +10 -10
  36. package/tsconfig.cjs.json +8 -8
  37. package/tsconfig.json +13 -13
  38. package/dist/cjs/settings.js +0 -3
  39. package/dist/cjs/settings.js.map +0 -1
  40. package/dist/cjs/utils.js +0 -8
  41. package/dist/cjs/utils.js.map +0 -1
  42. package/dist/esm/settings.d.ts +0 -6
  43. package/dist/esm/settings.js +0 -2
  44. package/dist/esm/settings.js.map +0 -1
  45. package/dist/esm/utils.d.ts +0 -3
  46. package/dist/esm/utils.js +0 -4
  47. package/dist/esm/utils.js.map +0 -1
@@ -1,3 +1,3 @@
1
- {
2
- "typescript.tsdk": "node_modules\\typescript\\lib"
1
+ {
2
+ "typescript.tsdk": "node_modules\\typescript\\lib"
3
3
  }
@@ -1,89 +1,23 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.DefaultEventHub = exports.HttpEvent = void 0;
40
- var HttpEvent = /** @class */ (function () {
41
- function HttpEvent() {
42
- }
43
- return HttpEvent;
44
- }());
45
- exports.HttpEvent = HttpEvent;
46
- var DefaultEventHub = /** @class */ (function () {
47
- function DefaultEventHub() {
48
- this.subscribers = [];
49
- }
50
- DefaultEventHub.prototype.publish = function (event) {
51
- return __awaiter(this, void 0, void 0, function () {
52
- var subscribers, _i, subscribers_1, subscriber;
53
- return __generator(this, function (_a) {
54
- switch (_a.label) {
55
- case 0:
56
- subscribers = this.subscribers.slice();
57
- _i = 0, subscribers_1 = subscribers;
58
- _a.label = 1;
59
- case 1:
60
- if (!(_i < subscribers_1.length)) return [3 /*break*/, 4];
61
- subscriber = subscribers_1[_i];
62
- return [4 /*yield*/, Promise.resolve(subscriber(event))];
63
- case 2:
64
- _a.sent();
65
- _a.label = 3;
66
- case 3:
67
- _i++;
68
- return [3 /*break*/, 1];
69
- case 4: return [2 /*return*/];
70
- }
71
- });
72
- });
3
+ exports.events = void 0;
4
+ var http_builder_1 = require("./http-builder");
5
+ function events(action, configure) {
6
+ return function () {
7
+ var params = [];
8
+ for (var _i = 0; _i < arguments.length; _i++) {
9
+ params[_i] = arguments[_i];
10
+ }
11
+ var builder = action.apply(void 0, params);
12
+ var events = configure.apply(void 0, params);
13
+ if (events.sent) {
14
+ builder.onSent(events.sent);
15
+ }
16
+ if (builder instanceof http_builder_1.HttpBuilderOfT && events.received) {
17
+ builder.onReceived(events.received);
18
+ }
19
+ return builder;
73
20
  };
74
- DefaultEventHub.prototype.subscribe = function (callback) {
75
- var subscribers = this.subscribers;
76
- subscribers.push(callback);
77
- return {
78
- dispose: function () {
79
- var index = subscribers.indexOf(callback);
80
- if (index !== -1) {
81
- subscribers.splice(index, 1);
82
- }
83
- },
84
- };
85
- };
86
- return DefaultEventHub;
87
- }());
88
- exports.DefaultEventHub = DefaultEventHub;
21
+ }
22
+ exports.events = events;
89
23
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;IAAA;IAQA,CAAC;IAAD,gBAAC;AAAD,CAAC,AARD,IAQC;AARY,8BAAS;AAetB;IAAA;QACU,gBAAW,GAAiB,EAAE,CAAC;IAqBzC,CAAC;IAnBO,iCAAO,GAAb,UAAc,KAAgB;;;;;;wBACtB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;8BACT,EAAX,2BAAW;;;6BAAX,CAAA,yBAAW,CAAA;wBAAzB,UAAU;wBACnB,qBAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAA;;wBAAxC,SAAwC,CAAC;;;wBADlB,IAAW,CAAA;;;;;;KAGrC;IAED,mCAAS,GAAT,UAAU,QAAoB;QAC5B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE;gBACP,IAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBAChB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IACH,sBAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBY,0CAAe"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":";;;AAAA,+CAAsE;AAuBtE,SAAgB,MAAM,CAClB,MAA2B,EAC3B,SAAkD;IAEpD,OAAO;QAAU,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC3B,IAAM,OAAO,GAAG,MAAM,eAAI,MAAM,CAAC,CAAC;QAClC,IAAM,MAAM,GAAG,SAAS,eAAI,MAAM,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,YAAY,6BAAc,IAAI,MAAM,CAAC,QAAQ,EAAE;YACxD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAfD,wBAeC"}
package/dist/cjs/index.js CHANGED
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.TimeoutError = exports.HttpError = exports.HttpBuilderOfT = exports.HttpBuilder = exports.HttpResponseOfT = exports.HttpResponse = exports.QueryString = exports.Http = void 0;
13
+ exports.events = exports.TimeoutError = exports.HttpError = exports.HttpBuilderOfT = exports.HttpBuilder = exports.HttpResponseOfT = exports.HttpResponse = exports.QueryString = exports.Http = void 0;
14
14
  var http_1 = require("./http");
15
15
  Object.defineProperty(exports, "Http", { enumerable: true, get: function () { return http_1.Http; } });
16
16
  var query_string_1 = require("./query-string");
@@ -25,5 +25,7 @@ var http_error_1 = require("./http-error");
25
25
  Object.defineProperty(exports, "HttpError", { enumerable: true, get: function () { return http_error_1.HttpError; } });
26
26
  var timeout_error_1 = require("./timeout-error");
27
27
  Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return timeout_error_1.TimeoutError; } });
28
+ var events_1 = require("./events");
29
+ Object.defineProperty(exports, "events", { enumerable: true, get: function () { return events_1.events; } });
28
30
  __exportStar(require("./helpers"), exports);
29
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAQb,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,iDAAgE;AAAvD,6GAAA,YAAY,OAAA;AAAE,gHAAA,eAAe,OAAA;AACtC,+CAA6D;AAApD,2GAAA,WAAW,OAAA;AAAE,8GAAA,cAAc,OAAA;AACpC,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAQb,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,iDAAgE;AAAvD,6GAAA,YAAY,OAAA;AAAE,gHAAA,eAAe,OAAA;AACtC,+CAAsE;AAA7D,2GAAA,WAAW,OAAA;AAAE,8GAAA,cAAc,OAAA;AACpC,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,4CAA0B"}
@@ -59,6 +59,23 @@ var msgpack_1 = require("@utiliread/msgpack");
59
59
  var http_builder_1 = require("./http-builder");
60
60
  var msgpack_2 = require("@msgpack/msgpack");
61
61
  var mapping_1 = require("./mapping");
62
+ http_builder_1.HttpBuilder.prototype.expectMessagePack = function (typeOrMapper) {
63
+ var _this = this;
64
+ this.message.headers.set("Accept", "application/x-msgpack");
65
+ return this.useHandler(function (response) { return __awaiter(_this, void 0, void 0, function () {
66
+ var itemFactory, decoded;
67
+ return __generator(this, function (_a) {
68
+ switch (_a.label) {
69
+ case 0:
70
+ itemFactory = (0, mapping_1.getMapper)(msgpack_1.deserialize, typeOrMapper);
71
+ return [4 /*yield*/, (0, msgpack_2.decodeAsync)(response.body)];
72
+ case 1:
73
+ decoded = _a.sent();
74
+ return [2 /*return*/, itemFactory(decoded)];
75
+ }
76
+ });
77
+ }); });
78
+ };
62
79
  http_builder_1.HttpBuilder.prototype.expectMessagePackArray = function (typeOrMapper) {
63
80
  var _this = this;
64
81
  this.message.headers.set("Accept", "application/x-msgpack");
@@ -1 +1 @@
1
- {"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../src/msgpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAiD;AACjD,+CAA6C;AAC7C,4CAAqD;AACrD,qCAAoD;AAepD,0BAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAFe,iBAa9C;IATC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;;oBAC9B,KAAK,GAAQ,EAAE,CAAC;oBAChB,WAAW,GAAG,IAAA,mBAAS,EAAC,qBAAW,EAAE,YAAY,CAAC,CAAC;;;;oBAChC,KAAA,cAAA,IAAA,2BAAiB,EAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;oBAAzC,IAAI,WAAA,CAAA;oBACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;yBAEhC,sBAAO,KAAK,EAAC;;;SACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,0BAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAE5D,SAAgB,OAAO,CAAC,QAAkB;;;;;;;wBAClC,WAAW,GAAG,IAAA,mBAAS,EAAC,qBAAW,EAAE,YAAY,CAAC,CAAC;;;;wBAChC,KAAA,cAAA,IAAA,2BAAiB,EAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;wBAAzC,IAAI,WAAA,CAAA;qDACb,WAAW,CAAC,IAAI,CAAC;4BAAvB,gCAAuB;;wBAAvB,SAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAE3B;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,UAAC,QAAQ,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
1
+ {"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../src/msgpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAiD;AACjD,+CAA6C;AAC7C,4CAAkE;AAClE,qCAAoD;AAkBpD,0BAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAExC,YAA8B;IAFU,iBAUzC;IANC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;oBAC9B,WAAW,GAAG,IAAA,mBAAS,EAAC,qBAAW,EAAE,YAAY,CAAC,CAAC;oBACzC,qBAAM,IAAA,qBAAW,EAAC,QAAQ,CAAC,IAAK,CAAC,EAAA;;oBAA3C,OAAO,GAAG,SAAiC;oBACjD,sBAAO,WAAW,CAAC,OAAO,CAAC,EAAC;;;SAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,0BAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAFe,iBAa9C;IATC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;;oBAC9B,KAAK,GAAQ,EAAE,CAAC;oBAChB,WAAW,GAAG,IAAA,mBAAS,EAAC,qBAAW,EAAE,YAAY,CAAC,CAAC;;;;oBAChC,KAAA,cAAA,IAAA,2BAAiB,EAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;oBAAzC,IAAI,WAAA,CAAA;oBACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;yBAEhC,sBAAO,KAAK,EAAC;;;SACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,0BAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAE5D,SAAgB,OAAO,CAAC,QAAkB;;;;;;;wBAClC,WAAW,GAAG,IAAA,mBAAS,EAAC,qBAAW,EAAE,YAAY,CAAC,CAAC;;;;wBAChC,KAAA,cAAA,IAAA,2BAAiB,EAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;wBAAzC,IAAI,WAAA,CAAA;qDACb,WAAW,CAAC,IAAI,CAAC;4BAAvB,gCAAuB;;wBAAvB,SAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAE3B;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,UAAC,QAAQ,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
@@ -1,25 +1,11 @@
1
- import { HttpMethod } from "./http-builder";
1
+ import { HttpBuilder, HttpBuilderOfT, Message } from "./http-builder";
2
2
  import { HttpResponse } from "./http-response";
3
- declare type CallbackFn = (event: HttpEvent) => void | Promise<void>;
4
- export declare class HttpEvent {
5
- hook: "sent" | "received";
6
- method: HttpMethod;
7
- url: string;
8
- reducer: Function;
9
- params: any[];
10
- response: HttpResponse;
11
- value?: any;
3
+ interface Events {
4
+ sent: (response: HttpResponse, request: Message) => void | Promise<void>;
12
5
  }
13
- export interface EventHub {
14
- publish(event: HttpEvent): Promise<void>;
15
- subscribe(callback: CallbackFn): Subscription;
16
- }
17
- export declare class DefaultEventHub implements EventHub {
18
- private subscribers;
19
- publish(event: HttpEvent): Promise<void>;
20
- subscribe(callback: CallbackFn): Subscription;
21
- }
22
- export interface Subscription {
23
- dispose(): void;
6
+ interface EventsOfT<T> extends Events {
7
+ received: (response: HttpResponse, request: Message, value: T) => void | Promise<void>;
24
8
  }
9
+ export declare function events<B extends HttpBuilder, P extends any[]>(action: (...params: P) => B, configure: (...params: P) => Partial<Events>): (...params: P) => B;
10
+ export declare function events<B extends HttpBuilderOfT<T>, P extends any[], T>(action: (...params: P) => B, configure: (...params: P) => Partial<EventsOfT<T>>): (...params: P) => B;
25
11
  export {};
@@ -1,86 +1,19 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (_) try {
17
- 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;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- var HttpEvent = /** @class */ (function () {
38
- function HttpEvent() {
39
- }
40
- return HttpEvent;
41
- }());
42
- export { HttpEvent };
43
- var DefaultEventHub = /** @class */ (function () {
44
- function DefaultEventHub() {
45
- this.subscribers = [];
46
- }
47
- DefaultEventHub.prototype.publish = function (event) {
48
- return __awaiter(this, void 0, void 0, function () {
49
- var subscribers, _i, subscribers_1, subscriber;
50
- return __generator(this, function (_a) {
51
- switch (_a.label) {
52
- case 0:
53
- subscribers = this.subscribers.slice();
54
- _i = 0, subscribers_1 = subscribers;
55
- _a.label = 1;
56
- case 1:
57
- if (!(_i < subscribers_1.length)) return [3 /*break*/, 4];
58
- subscriber = subscribers_1[_i];
59
- return [4 /*yield*/, Promise.resolve(subscriber(event))];
60
- case 2:
61
- _a.sent();
62
- _a.label = 3;
63
- case 3:
64
- _i++;
65
- return [3 /*break*/, 1];
66
- case 4: return [2 /*return*/];
67
- }
68
- });
69
- });
1
+ import { HttpBuilderOfT } from "./http-builder";
2
+ export function events(action, configure) {
3
+ return function () {
4
+ var params = [];
5
+ for (var _i = 0; _i < arguments.length; _i++) {
6
+ params[_i] = arguments[_i];
7
+ }
8
+ var builder = action.apply(void 0, params);
9
+ var events = configure.apply(void 0, params);
10
+ if (events.sent) {
11
+ builder.onSent(events.sent);
12
+ }
13
+ if (builder instanceof HttpBuilderOfT && events.received) {
14
+ builder.onReceived(events.received);
15
+ }
16
+ return builder;
70
17
  };
71
- DefaultEventHub.prototype.subscribe = function (callback) {
72
- var subscribers = this.subscribers;
73
- subscribers.push(callback);
74
- return {
75
- dispose: function () {
76
- var index = subscribers.indexOf(callback);
77
- if (index !== -1) {
78
- subscribers.splice(index, 1);
79
- }
80
- },
81
- };
82
- };
83
- return DefaultEventHub;
84
- }());
85
- export { DefaultEventHub };
18
+ }
86
19
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;IAAA;IAQA,CAAC;IAAD,gBAAC;AAAD,CAAC,AARD,IAQC;;AAOD;IAAA;QACU,gBAAW,GAAiB,EAAE,CAAC;IAqBzC,CAAC;IAnBO,iCAAO,GAAb,UAAc,KAAgB;;;;;;wBACtB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;8BACT,EAAX,2BAAW;;;6BAAX,CAAA,yBAAW,CAAA;wBAAzB,UAAU;wBACnB,qBAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAA;;wBAAxC,SAAwC,CAAC;;;wBADlB,IAAW,CAAA;;;;;;KAGrC;IAED,mCAAS,GAAT,UAAU,QAAoB;QAC5B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE;gBACP,IAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBAChB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IACH,sBAAC;AAAD,CAAC,AAtBD,IAsBC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAW,MAAM,gBAAgB,CAAC;AAuBtE,MAAM,UAAU,MAAM,CAClB,MAA2B,EAC3B,SAAkD;IAEpD,OAAO;QAAU,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC3B,IAAM,OAAO,GAAG,MAAM,eAAI,MAAM,CAAC,CAAC;QAClC,IAAM,MAAM,GAAG,SAAS,eAAI,MAAM,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,YAAY,cAAc,IAAI,MAAM,CAAC,QAAQ,EAAE;YACxD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
@@ -3,9 +3,10 @@ export { Page, PaginationResult, InfinitePage, InfinitePaginationResult, } from
3
3
  export { ProblemDetails } from "./problem-details";
4
4
  export { QueryString } from "./query-string";
5
5
  export { HttpResponse, HttpResponseOfT } from "./http-response";
6
- export { HttpBuilder, HttpBuilderOfT } from "./http-builder";
6
+ export { HttpBuilder, HttpBuilderOfT, Message } from "./http-builder";
7
7
  export { HttpError } from "./http-error";
8
8
  export { TimeoutError } from "./timeout-error";
9
+ export { events } from "./events";
9
10
  export * from "./helpers";
10
11
  export { Fetch } from "./http";
11
12
  export { Subscription } from "./event-aggregator";
package/dist/esm/index.js CHANGED
@@ -4,5 +4,6 @@ export { HttpResponse, HttpResponseOfT } from "./http-response";
4
4
  export { HttpBuilder, HttpBuilderOfT } from "./http-builder";
5
5
  export { HttpError } from "./http-error";
6
6
  export { TimeoutError } from "./timeout-error";
7
+ export { events } from "./events";
7
8
  export * from "./helpers";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAW,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,WAAW,CAAC"}
@@ -2,6 +2,7 @@ import { Mapper, Type } from "./mapping";
2
2
  declare type TypeOrMapper<T> = Type<T> | Mapper<T>;
3
3
  declare module "@utiliread/http" {
4
4
  interface HttpBuilder {
5
+ expectMessagePack<T>(typeOrMapper?: TypeOrMapper<T>): HttpBuilderOfT<T>;
5
6
  expectMessagePackArray<T>(typeOrMapper?: TypeOrMapper<T>): HttpBuilderOfT<T[]>;
6
7
  streamMessagePackArray<T>(typeOrMapper?: TypeOrMapper<T>): HttpBuilderOfT<AsyncGenerator<T, void, unknown>>;
7
8
  }
@@ -55,8 +55,25 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
55
55
  };
56
56
  import { deserialize } from "@utiliread/msgpack";
57
57
  import { HttpBuilder } from "./http-builder";
58
- import { decodeArrayStream } from "@msgpack/msgpack";
58
+ import { decodeArrayStream, decodeAsync } from "@msgpack/msgpack";
59
59
  import { getMapper } from "./mapping";
60
+ HttpBuilder.prototype.expectMessagePack = function (typeOrMapper) {
61
+ var _this = this;
62
+ this.message.headers.set("Accept", "application/x-msgpack");
63
+ return this.useHandler(function (response) { return __awaiter(_this, void 0, void 0, function () {
64
+ var itemFactory, decoded;
65
+ return __generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0:
68
+ itemFactory = getMapper(deserialize, typeOrMapper);
69
+ return [4 /*yield*/, decodeAsync(response.body)];
70
+ case 1:
71
+ decoded = _a.sent();
72
+ return [2 /*return*/, itemFactory(decoded)];
73
+ }
74
+ });
75
+ }); });
76
+ };
60
77
  HttpBuilder.prototype.expectMessagePackArray = function (typeOrMapper) {
61
78
  var _this = this;
62
79
  this.message.headers.set("Accept", "application/x-msgpack");
@@ -1 +1 @@
1
- {"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../src/msgpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAepD,WAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAFe,iBAa9C;IATC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;;oBAC9B,KAAK,GAAQ,EAAE,CAAC;oBAChB,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;;oBAChC,KAAA,cAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;oBAAzC,IAAI,WAAA,CAAA;oBACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;yBAEhC,sBAAO,KAAK,EAAC;;;SACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAE5D,SAAgB,OAAO,CAAC,QAAkB;;;;;;;wBAClC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;;wBAChC,KAAA,cAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;wBAAzC,IAAI,WAAA,CAAA;qDACb,WAAW,CAAC,IAAI,CAAC;4BAAvB,gCAAuB;;wBAAvB,SAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAE3B;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,UAAC,QAAQ,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
1
+ {"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../src/msgpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAkBpD,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAExC,YAA8B;IAFU,iBAUzC;IANC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;oBAC9B,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oBACzC,qBAAM,WAAW,CAAC,QAAQ,CAAC,IAAK,CAAC,EAAA;;oBAA3C,OAAO,GAAG,SAAiC;oBACjD,sBAAO,WAAW,CAAC,OAAO,CAAC,EAAC;;;SAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAFe,iBAa9C;IATC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,UAAO,QAAQ;;;;;;oBAC9B,KAAK,GAAQ,EAAE,CAAC;oBAChB,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;;oBAChC,KAAA,cAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;oBAAzC,IAAI,WAAA,CAAA;oBACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;yBAEhC,sBAAO,KAAK,EAAC;;;SACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAE7C,YAA8B;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IAE5D,SAAgB,OAAO,CAAC,QAAkB;;;;;;;wBAClC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;;wBAChC,KAAA,cAAA,iBAAiB,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAA;;;;;wBAAzC,IAAI,WAAA,CAAA;qDACb,WAAW,CAAC,IAAI,CAAC;4BAAvB,gCAAuB;;wBAAvB,SAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAE3B;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,UAAC,QAAQ,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
package/karma.config.js CHANGED
@@ -1,31 +1,31 @@
1
- const tsconfig = require('./tsconfig.json');
2
-
3
- module.exports = function (config) {
4
- config.set({
5
- frameworks: ['mocha', 'chai', 'karma-typescript'],
6
- files: [
7
- 'src/**/*.ts'
8
- ],
9
- preprocessors: {
10
- 'src/**/*.ts': ['karma-typescript']
11
- },
12
- reporters: ['progress', 'karma-typescript'],
13
- browsers: ['ChromeHeadless', 'ChromeDebugging'],
14
- customLaunchers: {
15
- ChromeDebugging: {
16
- base: 'Chrome',
17
- flags: ['--remote-debugging-port=9222']
18
- }
19
- },
20
- karmaTypescriptConfig: {
21
- bundlerOptions: {
22
- entrypoints: /\.spec\.ts$/,
23
- sourceMap: tsconfig.compilerOptions.sourceMap
24
- },
25
- coverageOptions: {
26
- instrumentation: false
27
- },
28
- tsconfig: './tsconfig.cjs.json'
29
- }
30
- })
1
+ const tsconfig = require('./tsconfig.json');
2
+
3
+ module.exports = function (config) {
4
+ config.set({
5
+ frameworks: ['mocha', 'chai', 'karma-typescript'],
6
+ files: [
7
+ 'src/**/*.ts'
8
+ ],
9
+ preprocessors: {
10
+ 'src/**/*.ts': ['karma-typescript']
11
+ },
12
+ reporters: ['progress', 'karma-typescript'],
13
+ browsers: ['ChromeHeadless', 'ChromeDebugging'],
14
+ customLaunchers: {
15
+ ChromeDebugging: {
16
+ base: 'Chrome',
17
+ flags: ['--remote-debugging-port=9222']
18
+ }
19
+ },
20
+ karmaTypescriptConfig: {
21
+ bundlerOptions: {
22
+ entrypoints: /\.spec\.ts$/,
23
+ sourceMap: tsconfig.compilerOptions.sourceMap
24
+ },
25
+ coverageOptions: {
26
+ instrumentation: false
27
+ },
28
+ tsconfig: './tsconfig.cjs.json'
29
+ }
30
+ })
31
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utiliread/http",
3
- "version": "1.11.0",
3
+ "version": "1.13.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -1,32 +1,32 @@
1
- type Callback<P extends any[] = any[]> = (...params: P) => void | Promise<void>;
2
-
3
- export class EventAggregator<P extends any[]> {
4
- private callbacks: Function[] = [];
5
-
6
- get any() {
7
- return this.callbacks.length > 0;
8
- }
9
-
10
- subscribe(callback: Callback<P>): Subscription {
11
- this.callbacks.push(callback);
12
- return {
13
- dispose: () => {
14
- const index = this.callbacks.indexOf(callback);
15
- if (index >= 0) {
16
- this.callbacks.splice(index, 1);
17
- }
18
- }
19
- }
20
- }
21
-
22
- async publish(...params: P) {
23
- const callbacks = this.callbacks.slice();
24
- for (const callback of callbacks) {
25
- await Promise.resolve(callback.apply(this, params));
26
- }
27
- }
28
- }
29
-
30
- export interface Subscription {
31
- dispose(): void;
1
+ type Callback<P extends any[] = any[]> = (...params: P) => void | Promise<void>;
2
+
3
+ export class EventAggregator<P extends any[]> {
4
+ private callbacks: Function[] = [];
5
+
6
+ get any() {
7
+ return this.callbacks.length > 0;
8
+ }
9
+
10
+ subscribe(callback: Callback<P>): Subscription {
11
+ this.callbacks.push(callback);
12
+ return {
13
+ dispose: () => {
14
+ const index = this.callbacks.indexOf(callback);
15
+ if (index >= 0) {
16
+ this.callbacks.splice(index, 1);
17
+ }
18
+ }
19
+ }
20
+ }
21
+
22
+ async publish(...params: P) {
23
+ const callbacks = this.callbacks.slice();
24
+ for (const callback of callbacks) {
25
+ await Promise.resolve(callback.apply(this, params));
26
+ }
27
+ }
28
+ }
29
+
30
+ export interface Subscription {
31
+ dispose(): void;
32
32
  }
package/src/events.ts ADDED
@@ -0,0 +1,39 @@
1
+ import { HttpBuilder, HttpBuilderOfT, Message } from "./http-builder";
2
+ import { HttpResponse } from "./http-response";
3
+
4
+ interface Events {
5
+ sent: (response: HttpResponse, request: Message) => void | Promise<void>;
6
+ }
7
+
8
+ interface EventsOfT<T> extends Events {
9
+ received: (
10
+ response: HttpResponse,
11
+ request: Message,
12
+ value: T
13
+ ) => void | Promise<void>;
14
+ }
15
+
16
+ export function events<B extends HttpBuilder, P extends any[]>(
17
+ action: (...params: P) => B,
18
+ configure: (...params: P) => Partial<Events>
19
+ ): (...params: P) => B;
20
+ export function events<B extends HttpBuilderOfT<T>, P extends any[], T>(
21
+ action: (...params: P) => B,
22
+ configure: (...params: P) => Partial<EventsOfT<T>>
23
+ ): (...params: P) => B;
24
+ export function events<B extends HttpBuilderOfT<T>, P extends any[], T>(
25
+ action: (...params: P) => B,
26
+ configure: (...params: P) => Partial<EventsOfT<T>>
27
+ ): (...params: P) => B {
28
+ return function (...params: P) {
29
+ const builder = action(...params);
30
+ const events = configure(...params);
31
+ if (events.sent) {
32
+ builder.onSent(events.sent);
33
+ }
34
+ if (builder instanceof HttpBuilderOfT && events.received) {
35
+ builder.onReceived(events.received);
36
+ }
37
+ return builder;
38
+ };
39
+ }
package/src/helpers.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { HttpError } from './http-error';
2
- import { TimeoutError } from './timeout-error';
3
-
4
- export function isHttpError(error: Error): error is HttpError {
5
- return error.name === "HttpError";
6
- }
7
-
8
- export function isAbortError(error: Error): boolean {
9
- return error.name === "AbortError";
10
- }
11
-
12
- export function isTimeoutError(error: Error): error is TimeoutError {
13
- return error.name === "TimeoutError";
1
+ import { HttpError } from './http-error';
2
+ import { TimeoutError } from './timeout-error';
3
+
4
+ export function isHttpError(error: Error): error is HttpError {
5
+ return error.name === "HttpError";
6
+ }
7
+
8
+ export function isAbortError(error: Error): boolean {
9
+ return error.name === "AbortError";
10
+ }
11
+
12
+ export function isTimeoutError(error: Error): error is TimeoutError {
13
+ return error.name === "TimeoutError";
14
14
  }