@utiliread/http 1.17.1 → 1.17.4
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/dist/cjs/event-aggregator.js +30 -0
- package/dist/cjs/event-aggregator.js.map +1 -0
- package/dist/cjs/events.js +19 -0
- package/dist/cjs/events.js.map +1 -0
- package/dist/cjs/helpers.js +16 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/http-builder.js +192 -0
- package/dist/cjs/http-builder.js.map +1 -0
- package/dist/cjs/http-error.js +30 -0
- package/dist/cjs/http-error.js.map +1 -0
- package/dist/cjs/http-response.js +51 -0
- package/dist/cjs/http-response.js.map +1 -0
- package/dist/cjs/http.js +96 -0
- package/dist/cjs/http.js.map +1 -0
- package/dist/cjs/http.spec.js +69 -0
- package/dist/cjs/http.spec.js.map +1 -0
- package/dist/cjs/index.js +38 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/json/index.js +74 -0
- package/dist/cjs/json/index.js.map +1 -0
- package/dist/cjs/jsonpatch/index.js +15 -0
- package/dist/cjs/jsonpatch/index.js.map +1 -0
- package/dist/cjs/mapping.js +37 -0
- package/dist/cjs/mapping.js.map +1 -0
- package/dist/cjs/msgpack/index.js +35 -0
- package/dist/cjs/msgpack/index.js.map +1 -0
- package/dist/cjs/pagination.js +3 -0
- package/dist/cjs/pagination.js.map +1 -0
- package/dist/cjs/problem-details.js +3 -0
- package/dist/cjs/problem-details.js.map +1 -0
- package/dist/cjs/query-string.js +66 -0
- package/dist/cjs/query-string.js.map +1 -0
- package/dist/cjs/query-string.spec.js +52 -0
- package/dist/cjs/query-string.spec.js.map +1 -0
- package/dist/cjs/status-codes.js +71 -0
- package/dist/cjs/status-codes.js.map +1 -0
- package/dist/cjs/timeout-error.js +14 -0
- package/dist/cjs/timeout-error.js.map +1 -0
- package/dist/esm/event-aggregator.d.ts +11 -0
- package/dist/esm/event-aggregator.js +26 -0
- package/dist/esm/event-aggregator.js.map +1 -0
- package/dist/esm/events.d.ts +11 -0
- package/dist/esm/events.js +15 -0
- package/dist/esm/events.js.map +1 -0
- package/dist/esm/helpers.d.ts +5 -0
- package/dist/esm/helpers.js +10 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/http-builder.d.ts +60 -0
- package/dist/esm/http-builder.js +187 -0
- package/dist/esm/http-builder.js.map +1 -0
- package/dist/esm/http-error.d.ts +10 -0
- package/dist/esm/http-error.js +26 -0
- package/dist/esm/http-error.js.map +1 -0
- package/dist/esm/http-response.d.ts +18 -0
- package/dist/esm/http-response.js +46 -0
- package/dist/esm/http-response.js.map +1 -0
- package/dist/esm/http.d.ts +33 -0
- package/dist/esm/http.js +92 -0
- package/dist/esm/http.js.map +1 -0
- package/dist/esm/http.spec.d.ts +1 -0
- package/dist/esm/http.spec.js +67 -0
- package/dist/esm/http.spec.js.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/json/index.d.ts +15 -0
- package/dist/esm/json/index.js +72 -0
- package/dist/esm/json/index.js.map +1 -0
- package/dist/{jsonpatch.d.ts → esm/jsonpatch/index.d.ts} +9 -10
- package/dist/esm/jsonpatch/index.js +13 -0
- package/dist/esm/jsonpatch/index.js.map +1 -0
- package/dist/esm/mapping.d.ts +9 -0
- package/dist/esm/mapping.js +32 -0
- package/dist/esm/mapping.js.map +1 -0
- package/dist/esm/msgpack/index.d.ts +8 -0
- package/dist/esm/msgpack/index.js +33 -0
- package/dist/esm/msgpack/index.js.map +1 -0
- package/dist/esm/pagination.d.ts +23 -0
- package/dist/esm/pagination.js +2 -0
- package/dist/esm/pagination.js.map +1 -0
- package/dist/esm/problem-details.d.ts +7 -0
- package/dist/esm/problem-details.js +2 -0
- package/dist/esm/problem-details.js.map +1 -0
- package/dist/esm/query-string.d.ts +6 -0
- package/dist/esm/query-string.js +62 -0
- package/dist/esm/query-string.js.map +1 -0
- package/dist/esm/query-string.spec.d.ts +1 -0
- package/dist/esm/query-string.spec.js +50 -0
- package/dist/esm/query-string.spec.js.map +1 -0
- package/dist/esm/status-codes.d.ts +67 -0
- package/dist/esm/status-codes.js +68 -0
- package/dist/esm/status-codes.js.map +1 -0
- package/dist/esm/timeout-error.d.ts +3 -0
- package/dist/esm/timeout-error.js +10 -0
- package/dist/esm/timeout-error.js.map +1 -0
- package/json.d.ts +1 -1
- package/jsonpatch.d.ts +1 -1
- package/msgpack.d.ts +1 -1
- package/package.json +12 -19
- package/plugins/json/src/index.ts +17 -19
- package/plugins/json/tsconfig.cjs.json +8 -0
- package/plugins/json/tsconfig.json +6 -1
- package/plugins/jsonpatch/tsconfig.cjs.json +8 -0
- package/plugins/jsonpatch/tsconfig.json +6 -1
- package/plugins/msgpack/src/index.ts +12 -13
- package/plugins/msgpack/tsconfig.cjs.json +8 -0
- package/plugins/msgpack/tsconfig.json +6 -1
- package/src/index.ts +1 -1
- package/src/mapping.d.ts +9 -0
- package/src/mapping.js +32 -0
- package/src/mapping.js.map +1 -0
- package/tsconfig.cjs.json +8 -0
- package/tsconfig.json +14 -2
- package/dist/index.d.ts +0 -227
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -534
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -507
- package/dist/index.mjs.map +0 -1
- package/dist/json.d.ts +0 -15
- package/dist/json.d.ts.map +0 -1
- package/dist/json.js +0 -100
- package/dist/json.js.map +0 -1
- package/dist/json.mjs +0 -100
- package/dist/json.mjs.map +0 -1
- package/dist/jsonpatch.d.ts.map +0 -1
- package/dist/jsonpatch.js +0 -18
- package/dist/jsonpatch.js.map +0 -1
- package/dist/jsonpatch.mjs +0 -18
- package/dist/jsonpatch.mjs.map +0 -1
- package/dist/msgpack.d.ts +0 -9
- package/dist/msgpack.d.ts.map +0 -1
- package/dist/msgpack.js +0 -62
- package/dist/msgpack.js.map +0 -1
- package/dist/msgpack.mjs +0 -62
- package/dist/msgpack.mjs.map +0 -1
- package/plugins/json/package-lock.json +0 -145
- package/plugins/json/package.json +0 -11
- package/plugins/jsonpatch/package-lock.json +0 -124
- package/plugins/jsonpatch/package.json +0 -13
- package/plugins/msgpack/package-lock.json +0 -134
- package/plugins/msgpack/package.json +0 -12
- package/tsconfig.test.json +0 -10
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { HttpResponse, HttpResponseOfT } from './http-response';
|
|
2
|
+
import { TimeoutError } from './timeout-error';
|
|
3
|
+
import { EventAggregator } from './event-aggregator';
|
|
4
|
+
export class HttpBuilder {
|
|
5
|
+
constructor(message, options, /** @internal */ http) {
|
|
6
|
+
this.message = message;
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.http = http;
|
|
9
|
+
this._ensureSuccessStatusCode = true;
|
|
10
|
+
this._onSend = new EventAggregator();
|
|
11
|
+
this._onSent = new EventAggregator();
|
|
12
|
+
}
|
|
13
|
+
onSend(callback) {
|
|
14
|
+
this._onSend.subscribe(callback);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
onSent(callback) {
|
|
18
|
+
this._onSent.subscribe(callback);
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
useHandler(handler) {
|
|
22
|
+
return new HttpBuilderOfT(this, handler);
|
|
23
|
+
}
|
|
24
|
+
async send(abortSignal) {
|
|
25
|
+
if (this.message.contentType) {
|
|
26
|
+
this.message.headers.set('Content-Type', this.message.contentType);
|
|
27
|
+
}
|
|
28
|
+
// Resolve the final url and assign it to the message
|
|
29
|
+
// This makes the final url apper in onSend, onSent, and on Received handlers
|
|
30
|
+
this.message.url = this.getUrl();
|
|
31
|
+
await this._onSend.publish(this.message);
|
|
32
|
+
await this.http._onSend.publish(this.message);
|
|
33
|
+
const init = {
|
|
34
|
+
method: this.message.method,
|
|
35
|
+
body: this.message.content,
|
|
36
|
+
headers: this.message.headers,
|
|
37
|
+
mode: this.message.mode
|
|
38
|
+
};
|
|
39
|
+
if (abortSignal || this.options.timeout) {
|
|
40
|
+
var outerController = new AbortController();
|
|
41
|
+
if (abortSignal) {
|
|
42
|
+
abortSignal.addEventListener("abort", () => {
|
|
43
|
+
outerController.abort();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
init.signal = outerController.signal;
|
|
47
|
+
}
|
|
48
|
+
const fetchResponsePromise = this.options.fetch(this.message.url, init);
|
|
49
|
+
let fetchResponse;
|
|
50
|
+
if (this.options.timeout) {
|
|
51
|
+
fetchResponse = await Promise.race([
|
|
52
|
+
fetchResponsePromise,
|
|
53
|
+
new Promise((_, reject) => setTimeout(() => {
|
|
54
|
+
outerController.abort();
|
|
55
|
+
reject(new TimeoutError());
|
|
56
|
+
}, this.options.timeout))
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
fetchResponse = await fetchResponsePromise;
|
|
61
|
+
}
|
|
62
|
+
const httpResponse = new HttpResponse(fetchResponse);
|
|
63
|
+
if (this._ensureSuccessStatusCode) {
|
|
64
|
+
httpResponse.ensureSuccessfulStatusCode();
|
|
65
|
+
}
|
|
66
|
+
await this._onSent.publish(httpResponse, this.message);
|
|
67
|
+
await this.http._onSent.publish(httpResponse, this.message);
|
|
68
|
+
return httpResponse;
|
|
69
|
+
}
|
|
70
|
+
getUrl() {
|
|
71
|
+
let baseUrl = this.options.baseUrl;
|
|
72
|
+
if (!baseUrl) {
|
|
73
|
+
return this.message.url;
|
|
74
|
+
}
|
|
75
|
+
if (baseUrl.endsWith('/')) {
|
|
76
|
+
baseUrl = baseUrl.substr(0, baseUrl.length - 1);
|
|
77
|
+
}
|
|
78
|
+
if (this.message.url.startsWith('/')) {
|
|
79
|
+
return baseUrl + this.message.url;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return baseUrl + '/' + this.message.url;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
ensureSuccessStatusCode(ensureSuccessStatusCode) {
|
|
86
|
+
this._ensureSuccessStatusCode = ensureSuccessStatusCode === false ? false : true;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
useCors(mode) {
|
|
90
|
+
this.message.mode = mode;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
useTimeout(timeout) {
|
|
94
|
+
this.options.timeout = timeout || undefined;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
// Content Extensions
|
|
98
|
+
with(content, contentType) {
|
|
99
|
+
this.message.content = content;
|
|
100
|
+
this.message.contentType = contentType;
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
withForm(content) {
|
|
104
|
+
this.message.content = content;
|
|
105
|
+
this.message.contentType = undefined;
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
// Modifier Extensions
|
|
109
|
+
addHeader(name, value) {
|
|
110
|
+
this.message.headers.append(name, value);
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
// Expect Extensions
|
|
114
|
+
expectString() {
|
|
115
|
+
return this.useHandler(response => {
|
|
116
|
+
return response.rawResponse.text();
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
expectBinary() {
|
|
120
|
+
return this.useHandler(response => {
|
|
121
|
+
return response.rawResponse.arrayBuffer();
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export class HttpBuilderOfT extends HttpBuilder {
|
|
126
|
+
constructor(inner, handler) {
|
|
127
|
+
super(inner.message, inner.options, inner.http);
|
|
128
|
+
this.inner = inner;
|
|
129
|
+
this.handler = handler;
|
|
130
|
+
this._onReceived = new EventAggregator();
|
|
131
|
+
}
|
|
132
|
+
onSend(callback) {
|
|
133
|
+
this.inner.onSend(callback);
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
onSent(callback) {
|
|
137
|
+
this.inner.onSent(callback);
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
ensureSuccessStatusCode(ensureSuccessStatusCode) {
|
|
141
|
+
this.inner.ensureSuccessStatusCode(ensureSuccessStatusCode);
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
useCors(mode) {
|
|
145
|
+
this.inner.useCors(mode);
|
|
146
|
+
return this;
|
|
147
|
+
}
|
|
148
|
+
useTimeout(timeout) {
|
|
149
|
+
this.inner.useTimeout(timeout);
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
allowEmptyResponse() {
|
|
153
|
+
if (this._onReceived.any) {
|
|
154
|
+
throw new Error("onReceived() must be called after allowEmptyResponse() because the callback type changes");
|
|
155
|
+
}
|
|
156
|
+
return new HttpBuilderOfT(this.inner, response => {
|
|
157
|
+
if (response.statusCode === 204) {
|
|
158
|
+
return Promise.resolve(null);
|
|
159
|
+
}
|
|
160
|
+
return this.handler(response);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
onReceived(callback) {
|
|
164
|
+
this._onReceived.subscribe(callback);
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
send(abortSignal) {
|
|
168
|
+
const responsePromise = this.inner.send(abortSignal).then(x => new HttpResponseOfT(x.rawResponse, this.handler));
|
|
169
|
+
return asSendPromise(responsePromise, () => responsePromise.then(response => this.handleReceive(response)));
|
|
170
|
+
}
|
|
171
|
+
transfer(abortSignal) {
|
|
172
|
+
return this.send(abortSignal).then(response => this.handleReceive(response));
|
|
173
|
+
}
|
|
174
|
+
async handleReceive(response) {
|
|
175
|
+
const request = this.message;
|
|
176
|
+
const value = await response.receive();
|
|
177
|
+
await this._onReceived.publish(response, request, value);
|
|
178
|
+
await this.http._onReceived.publish(response, request, value);
|
|
179
|
+
return value;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function asSendPromise(responsePromise, thenReceive) {
|
|
183
|
+
const sendPromise = responsePromise;
|
|
184
|
+
sendPromise.thenReceive = thenReceive;
|
|
185
|
+
return sendPromise;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=http-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../../src/http-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpResponse } from './http-response';
|
|
2
|
+
import { ProblemDetails } from './problem-details';
|
|
3
|
+
export declare class HttpError extends Error {
|
|
4
|
+
statusCode: number;
|
|
5
|
+
private response;
|
|
6
|
+
private detailsPromise?;
|
|
7
|
+
get hasDetails(): boolean | undefined;
|
|
8
|
+
constructor(statusCode: number, response?: HttpResponse | undefined);
|
|
9
|
+
details<TDetails = ProblemDetails>(): Promise<TDetails>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class HttpError extends Error {
|
|
2
|
+
constructor(statusCode, response = undefined) {
|
|
3
|
+
super(`The response was not successful: ${statusCode}`);
|
|
4
|
+
this.statusCode = statusCode;
|
|
5
|
+
this.response = response;
|
|
6
|
+
this.name = 'HttpError';
|
|
7
|
+
// Set the prototype explicitly to allow for "... instanceof HttpError",
|
|
8
|
+
// see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
9
|
+
Object.setPrototypeOf(this, HttpError.prototype);
|
|
10
|
+
}
|
|
11
|
+
get hasDetails() {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const contentType = (_b = (_a = this.response) === null || _a === void 0 ? void 0 : _a.rawResponse) === null || _b === void 0 ? void 0 : _b.headers.get("Content-Type");
|
|
14
|
+
return contentType === null || contentType === void 0 ? void 0 : contentType.includes("application/problem+json");
|
|
15
|
+
}
|
|
16
|
+
details() {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const rawResponse = (_a = this.response) === null || _a === void 0 ? void 0 : _a.rawResponse;
|
|
19
|
+
if (rawResponse && this.hasDetails) {
|
|
20
|
+
(_b = this.detailsPromise) !== null && _b !== void 0 ? _b : (this.detailsPromise = rawResponse.json().then(details => details));
|
|
21
|
+
return this.detailsPromise.then(details => details);
|
|
22
|
+
}
|
|
23
|
+
return Promise.reject(new Error("There are no problem details in the response"));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=http-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-error.js","sourceRoot":"","sources":["../../src/http-error.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAQhC,YAAmB,UAAkB,EAAU,WAAqC,SAAS;QACzF,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;QADzC,eAAU,GAAV,UAAU,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAsC;QAEzF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QAExB,wEAAwE;QACxE,mJAAmJ;QACnJ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAZD,IAAI,UAAU;;QACV,MAAM,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,WAAW,0CAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5E,OAAO,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAC7D,CAAC;IAWD,OAAO;;QACH,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,WAAW,CAAC;QAE/C,IAAI,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YAChC,MAAA,IAAI,CAAC,cAAc,oCAAnB,IAAI,CAAC,cAAc,GAAK,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAiB,OAAO,CAAC,EAAC;YACpF,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAW,OAAO,CAAC,CAAC;SACjE;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACrF,CAAC;CACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class HttpResponse {
|
|
2
|
+
rawResponse: Response;
|
|
3
|
+
get url(): string;
|
|
4
|
+
get statusCode(): number;
|
|
5
|
+
get headers(): Headers;
|
|
6
|
+
get isInformational(): boolean;
|
|
7
|
+
get isSuccessful(): boolean;
|
|
8
|
+
get isRedirection(): boolean;
|
|
9
|
+
get isClientError(): boolean;
|
|
10
|
+
get isServerError(): boolean;
|
|
11
|
+
constructor(rawResponse: Response);
|
|
12
|
+
ensureSuccessfulStatusCode(): this;
|
|
13
|
+
}
|
|
14
|
+
export declare class HttpResponseOfT<T> extends HttpResponse {
|
|
15
|
+
private handler;
|
|
16
|
+
constructor(rawResponse: Response, handler: (response: HttpResponse) => Promise<T>);
|
|
17
|
+
receive(): Promise<T>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { HttpError } from "./http-error";
|
|
2
|
+
export class HttpResponse {
|
|
3
|
+
constructor(rawResponse) {
|
|
4
|
+
this.rawResponse = rawResponse;
|
|
5
|
+
}
|
|
6
|
+
get url() {
|
|
7
|
+
return this.rawResponse.url;
|
|
8
|
+
}
|
|
9
|
+
get statusCode() {
|
|
10
|
+
return this.rawResponse.status;
|
|
11
|
+
}
|
|
12
|
+
get headers() {
|
|
13
|
+
return this.rawResponse.headers;
|
|
14
|
+
}
|
|
15
|
+
get isInformational() {
|
|
16
|
+
return this.statusCode >= 100 && this.statusCode < 200;
|
|
17
|
+
}
|
|
18
|
+
get isSuccessful() {
|
|
19
|
+
return this.statusCode >= 200 && this.statusCode < 300;
|
|
20
|
+
}
|
|
21
|
+
get isRedirection() {
|
|
22
|
+
return this.statusCode >= 300 && this.statusCode < 400;
|
|
23
|
+
}
|
|
24
|
+
get isClientError() {
|
|
25
|
+
return this.statusCode >= 400 && this.statusCode < 500;
|
|
26
|
+
}
|
|
27
|
+
get isServerError() {
|
|
28
|
+
return this.statusCode >= 500 && this.statusCode < 600;
|
|
29
|
+
}
|
|
30
|
+
ensureSuccessfulStatusCode() {
|
|
31
|
+
if (!this.isSuccessful) {
|
|
32
|
+
throw new HttpError(this.statusCode, this);
|
|
33
|
+
}
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class HttpResponseOfT extends HttpResponse {
|
|
38
|
+
constructor(rawResponse, handler) {
|
|
39
|
+
super(rawResponse);
|
|
40
|
+
this.handler = handler;
|
|
41
|
+
}
|
|
42
|
+
receive() {
|
|
43
|
+
return this.handler(this);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=http-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-response.js","sourceRoot":"","sources":["../../src/http-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAO,YAAY;IAiCvB,YAAmB,WAAqB;QAArB,gBAAW,GAAX,WAAW,CAAU;IAAG,CAAC;IAhC5C,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAIM,0BAA0B;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,eAAmB,SAAQ,YAAY;IAClD,YACE,WAAqB,EACb,OAA+C;QAEvD,KAAK,CAAC,WAAW,CAAC,CAAC;QAFX,YAAO,GAAP,OAAO,CAAwC;IAGzD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Subscription } from "./event-aggregator";
|
|
2
|
+
import { HttpBuilder, HttpMethod, Message } from "./http-builder";
|
|
3
|
+
import { HttpResponse, HttpResponseOfT } from "./http-response";
|
|
4
|
+
export declare type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
|
5
|
+
export declare class Http {
|
|
6
|
+
static defaults: HttpOptions;
|
|
7
|
+
private static instance?;
|
|
8
|
+
options: HttpOptions;
|
|
9
|
+
constructor(options?: Partial<HttpOptions>);
|
|
10
|
+
static request(method: HttpMethod, url: string, params?: any): HttpBuilder;
|
|
11
|
+
static head(url: string, params?: any): HttpBuilder;
|
|
12
|
+
static post(url: string, params?: any): HttpBuilder;
|
|
13
|
+
static get(url: string, params?: any): HttpBuilder;
|
|
14
|
+
static put(url: string, params?: any): HttpBuilder;
|
|
15
|
+
static patch(url: string, params?: any): HttpBuilder;
|
|
16
|
+
static delete(url: string, params?: any): HttpBuilder;
|
|
17
|
+
private static getInstance;
|
|
18
|
+
request(method: HttpMethod, url: string, params?: any): HttpBuilder;
|
|
19
|
+
head(url: string, params?: any): HttpBuilder;
|
|
20
|
+
post(url: string, params?: any): HttpBuilder;
|
|
21
|
+
get(url: string, params?: any): HttpBuilder;
|
|
22
|
+
put(url: string, params?: any): HttpBuilder;
|
|
23
|
+
patch(url: string, params?: any): HttpBuilder;
|
|
24
|
+
delete(url: string, params?: any): HttpBuilder;
|
|
25
|
+
onSend(callback: (request: Message) => void | Promise<void>): Subscription;
|
|
26
|
+
onSent(callback: (response: HttpResponse, request: Message) => void | Promise<void>): Subscription;
|
|
27
|
+
onReceived(callback: (response: HttpResponseOfT<any>, request: Message, value: any) => void | Promise<void>): Subscription;
|
|
28
|
+
}
|
|
29
|
+
export interface HttpOptions {
|
|
30
|
+
fetch?: Fetch;
|
|
31
|
+
timeout?: number;
|
|
32
|
+
baseUrl?: string;
|
|
33
|
+
}
|
package/dist/esm/http.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { EventAggregator } from "./event-aggregator";
|
|
2
|
+
import { HttpBuilder } from "./http-builder";
|
|
3
|
+
import { QueryString } from "./query-string";
|
|
4
|
+
export class Http {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
/** @internal */
|
|
7
|
+
this._onSend = new EventAggregator();
|
|
8
|
+
/** @internal */
|
|
9
|
+
this._onSent = new EventAggregator();
|
|
10
|
+
/** @internal */
|
|
11
|
+
this._onReceived = new EventAggregator();
|
|
12
|
+
this.options = Object.assign({}, Http.defaults, options); // Later sources' properties overwrite earlier ones.
|
|
13
|
+
}
|
|
14
|
+
static request(method, url, params) {
|
|
15
|
+
return this.getInstance().request(method, url, params);
|
|
16
|
+
}
|
|
17
|
+
static head(url, params) {
|
|
18
|
+
return this.getInstance().head(url, params);
|
|
19
|
+
}
|
|
20
|
+
static post(url, params) {
|
|
21
|
+
return this.getInstance().post(url, params);
|
|
22
|
+
}
|
|
23
|
+
static get(url, params) {
|
|
24
|
+
return this.getInstance().get(url, params);
|
|
25
|
+
}
|
|
26
|
+
static put(url, params) {
|
|
27
|
+
return this.getInstance().put(url, params);
|
|
28
|
+
}
|
|
29
|
+
static patch(url, params) {
|
|
30
|
+
return this.getInstance().patch(url, params);
|
|
31
|
+
}
|
|
32
|
+
static delete(url, params) {
|
|
33
|
+
return this.getInstance().delete(url, params);
|
|
34
|
+
}
|
|
35
|
+
static getInstance() {
|
|
36
|
+
if (!this.instance) {
|
|
37
|
+
this.instance = new Http();
|
|
38
|
+
// The singleton instance should always use the static options
|
|
39
|
+
this.instance.options = Http.defaults;
|
|
40
|
+
}
|
|
41
|
+
return this.instance;
|
|
42
|
+
}
|
|
43
|
+
request(method, url, params) {
|
|
44
|
+
const message = {
|
|
45
|
+
method,
|
|
46
|
+
url: url + QueryString.serialize(params),
|
|
47
|
+
headers: new Headers(),
|
|
48
|
+
properties: {},
|
|
49
|
+
};
|
|
50
|
+
const fetch = this.options.fetch;
|
|
51
|
+
if (!fetch) {
|
|
52
|
+
throw Error("fetch() is not properly configured");
|
|
53
|
+
}
|
|
54
|
+
const builder = new HttpBuilder(message, {
|
|
55
|
+
fetch,
|
|
56
|
+
timeout: this.options.timeout,
|
|
57
|
+
baseUrl: this.options.baseUrl,
|
|
58
|
+
}, this);
|
|
59
|
+
return builder;
|
|
60
|
+
}
|
|
61
|
+
head(url, params) {
|
|
62
|
+
return this.request("HEAD", url, params);
|
|
63
|
+
}
|
|
64
|
+
post(url, params) {
|
|
65
|
+
return this.request("POST", url, params);
|
|
66
|
+
}
|
|
67
|
+
get(url, params) {
|
|
68
|
+
return this.request("GET", url, params);
|
|
69
|
+
}
|
|
70
|
+
put(url, params) {
|
|
71
|
+
return this.request("PUT", url, params);
|
|
72
|
+
}
|
|
73
|
+
patch(url, params) {
|
|
74
|
+
return this.request("PATCH", url, params);
|
|
75
|
+
}
|
|
76
|
+
delete(url, params) {
|
|
77
|
+
return this.request("DELETE", url, params);
|
|
78
|
+
}
|
|
79
|
+
onSend(callback) {
|
|
80
|
+
return this._onSend.subscribe(callback);
|
|
81
|
+
}
|
|
82
|
+
onSent(callback) {
|
|
83
|
+
return this._onSent.subscribe(callback);
|
|
84
|
+
}
|
|
85
|
+
onReceived(callback) {
|
|
86
|
+
return this._onReceived.subscribe(callback);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
Http.defaults = {
|
|
90
|
+
fetch: self.fetch ? self.fetch.bind(self) : undefined,
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { expect } from "chai";
|
|
2
|
+
import { Http } from "./http";
|
|
3
|
+
describe("static http", () => {
|
|
4
|
+
it("can get", () => {
|
|
5
|
+
const builder = Http.get("hello");
|
|
6
|
+
expect(builder.getUrl()).to.equal("hello");
|
|
7
|
+
expect(builder.options.fetch).to.equal(Http.defaults.fetch);
|
|
8
|
+
});
|
|
9
|
+
it("can get with leading /", () => {
|
|
10
|
+
const builder = Http.get("/hello");
|
|
11
|
+
expect(builder.getUrl()).to.equal("/hello");
|
|
12
|
+
expect(builder.options.fetch).to.equal(Http.defaults.fetch);
|
|
13
|
+
});
|
|
14
|
+
it("can get with changed default fetch", () => {
|
|
15
|
+
Http.get("/hello"); // Creates internal singleton
|
|
16
|
+
// Change static default after request is created
|
|
17
|
+
const fetch = Http.defaults.fetch;
|
|
18
|
+
Http.defaults.fetch = fakeFetch;
|
|
19
|
+
const builder = Http.get("/hello");
|
|
20
|
+
expect(builder.options.fetch).to.equal(fakeFetch);
|
|
21
|
+
Http.defaults.fetch = fetch;
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("instance http", () => {
|
|
25
|
+
it("can get with different timeout", () => {
|
|
26
|
+
const http = new Http();
|
|
27
|
+
const builder = http.get("/hello");
|
|
28
|
+
expect(builder.options.fetch).to.equal(Http.defaults.fetch);
|
|
29
|
+
expect(builder.options.timeout).to.equal(undefined);
|
|
30
|
+
});
|
|
31
|
+
it("can get with different timeout", () => {
|
|
32
|
+
const http = new Http({ timeout: 123 });
|
|
33
|
+
const builder = http.get("/hello");
|
|
34
|
+
expect(builder.options.fetch).to.equal(Http.defaults.fetch);
|
|
35
|
+
expect(builder.options.timeout).to.equal(123);
|
|
36
|
+
});
|
|
37
|
+
it("can get with different fetch", () => {
|
|
38
|
+
const http = new Http({ fetch: fakeFetch });
|
|
39
|
+
const builder = http.get("/hello");
|
|
40
|
+
expect(builder.options.fetch).to.equal(fakeFetch);
|
|
41
|
+
expect(builder.options.timeout).to.equal(undefined);
|
|
42
|
+
});
|
|
43
|
+
it("can get hello with base url", () => {
|
|
44
|
+
const http = new Http({ baseUrl: "base" });
|
|
45
|
+
const builder = http.get("hello");
|
|
46
|
+
expect(builder.getUrl()).to.equal("base/hello");
|
|
47
|
+
});
|
|
48
|
+
it("can get hello with base/", () => {
|
|
49
|
+
const http = new Http({ baseUrl: "base/" });
|
|
50
|
+
const builder = http.get("hello");
|
|
51
|
+
expect(builder.getUrl()).to.equal("base/hello");
|
|
52
|
+
});
|
|
53
|
+
it("can get /hello with base url", () => {
|
|
54
|
+
const http = new Http({ baseUrl: "base" });
|
|
55
|
+
const builder = http.get("/hello");
|
|
56
|
+
expect(builder.getUrl()).to.equal("base/hello");
|
|
57
|
+
});
|
|
58
|
+
it("can get /hello with base/", () => {
|
|
59
|
+
const http = new Http({ baseUrl: "base/" });
|
|
60
|
+
const builder = http.get("/hello");
|
|
61
|
+
expect(builder.getUrl()).to.equal("base/hello");
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
function fakeFetch(input, init) {
|
|
65
|
+
return Promise.resolve(new Response());
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=http.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.spec.js","sourceRoot":"","sources":["../../src/http.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { Http } from "./http";
|
|
2
|
+
export type { Page, PaginationResult, InfinitePage, InfinitePaginationResult, } from "./pagination";
|
|
3
|
+
export type { ProblemDetails } from "./problem-details";
|
|
4
|
+
export { QueryString } from "./query-string";
|
|
5
|
+
export { HttpResponse, HttpResponseOfT } from "./http-response";
|
|
6
|
+
export { HttpBuilder, HttpBuilderOfT } from "./http-builder";
|
|
7
|
+
export type { Message } from "./http-builder";
|
|
8
|
+
export { HttpError } from "./http-error";
|
|
9
|
+
export { TimeoutError } from "./timeout-error";
|
|
10
|
+
export { events } from "./events";
|
|
11
|
+
export * from "./helpers";
|
|
12
|
+
export type { Fetch } from "./http";
|
|
13
|
+
export type { Subscription } from "./event-aggregator";
|
|
14
|
+
export { statusCodes } from "./status-codes";
|
|
15
|
+
export * as Mapping from "./mapping";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { Http } from "./http";
|
|
2
|
+
export { QueryString } from "./query-string";
|
|
3
|
+
export { HttpResponse, HttpResponseOfT } from "./http-response";
|
|
4
|
+
export { HttpBuilder, HttpBuilderOfT } from "./http-builder";
|
|
5
|
+
export { HttpError } from "./http-error";
|
|
6
|
+
export { TimeoutError } from "./timeout-error";
|
|
7
|
+
export { events } from "./events";
|
|
8
|
+
export * from "./helpers";
|
|
9
|
+
export { statusCodes } from "./status-codes";
|
|
10
|
+
export * as Mapping from "./mapping";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;AAE7D,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;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Mapping } from "@utiliread/http";
|
|
2
|
+
import type { InfinitePaginationResult, PaginationResult } from "@utiliread/http";
|
|
3
|
+
declare module "@utiliread/http" {
|
|
4
|
+
interface HttpBuilder {
|
|
5
|
+
withJson(content: any): this;
|
|
6
|
+
expectJson<T>(typeOrMapper?: Mapping.TypeOrMapper<T>): HttpBuilderOfT<T>;
|
|
7
|
+
expectJsonArray<T>(typeOrMapper: Mapping.TypeOrMapper<T>): HttpBuilderOfT<T[]>;
|
|
8
|
+
expectJsonNullableArray<T>(typeOrMapper: Mapping.TypeOrMapper<T>): HttpBuilderOfT<(T | null)[]>;
|
|
9
|
+
expectJsonPaginationResult<T>(typeOrMapper: Mapping.TypeOrMapper<T>): HttpBuilderOfT<PaginationResult<T>>;
|
|
10
|
+
expectJsonInfinitePaginationResult<T>(typeOrMapper: Mapping.TypeOrMapper<T>): HttpBuilderOfT<InfinitePaginationResult<T>>;
|
|
11
|
+
}
|
|
12
|
+
interface HttpBuilderOfT<T> {
|
|
13
|
+
withJson(content: any): this;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { HttpBuilder, HttpBuilderOfT, Mapping } from "@utiliread/http";
|
|
2
|
+
import { deserialize, serialize } from "@utiliread/json";
|
|
3
|
+
HttpBuilder.prototype.withJson = function (content) {
|
|
4
|
+
this.message.content = serialize(content);
|
|
5
|
+
this.message.contentType = "application/json";
|
|
6
|
+
return this;
|
|
7
|
+
};
|
|
8
|
+
HttpBuilderOfT.prototype.withJson = function (content) {
|
|
9
|
+
this.message.content = serialize(content);
|
|
10
|
+
this.message.contentType = "application/json";
|
|
11
|
+
return this;
|
|
12
|
+
};
|
|
13
|
+
HttpBuilder.prototype.expectJson = function (typeOrMapper) {
|
|
14
|
+
this.message.headers.set("Accept", "application/json");
|
|
15
|
+
return this.useHandler((response) => {
|
|
16
|
+
return response.rawResponse
|
|
17
|
+
.json()
|
|
18
|
+
.then((x) => Mapping.getMapper(deserialize, typeOrMapper)(x));
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
HttpBuilder.prototype.expectJsonArray = function (typeOrMapper) {
|
|
22
|
+
this.message.headers.set("Accept", "application/json");
|
|
23
|
+
return this.useHandler((response) => {
|
|
24
|
+
return response.rawResponse.json().then((x) => {
|
|
25
|
+
const itemFactory = Mapping.getMapper(deserialize, typeOrMapper);
|
|
26
|
+
return x.map(itemFactory);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
HttpBuilder.prototype.expectJsonNullableArray = function (typeOrMapper) {
|
|
31
|
+
this.message.headers.set("Accept", "application/json");
|
|
32
|
+
return this.useHandler((response) => {
|
|
33
|
+
return response.rawResponse.json().then((x) => {
|
|
34
|
+
const itemFactory = Mapping.getNullableMapper(deserialize, typeOrMapper);
|
|
35
|
+
return x.map(itemFactory);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
HttpBuilder.prototype.expectJsonPaginationResult = function (typeOrMapper) {
|
|
40
|
+
this.message.headers.set("Accept", "application/json");
|
|
41
|
+
return this.useHandler((response) => {
|
|
42
|
+
return response.rawResponse.json().then((x) => {
|
|
43
|
+
const itemFactory = Mapping.getMapper(deserialize, typeOrMapper);
|
|
44
|
+
return {
|
|
45
|
+
meta: {
|
|
46
|
+
pageCount: x.meta.pageCount,
|
|
47
|
+
pageSize: x.meta.pageSize,
|
|
48
|
+
totalItems: x.meta.totalItems,
|
|
49
|
+
},
|
|
50
|
+
data: x.data.map(itemFactory),
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
HttpBuilder.prototype.expectJsonInfinitePaginationResult = function (typeOrMapper) {
|
|
56
|
+
this.message.headers.set("Accept", "application/json");
|
|
57
|
+
return this.useHandler((response) => {
|
|
58
|
+
return response.rawResponse
|
|
59
|
+
.json()
|
|
60
|
+
.then((x) => {
|
|
61
|
+
const itemFactory = Mapping.getMapper(deserialize, typeOrMapper);
|
|
62
|
+
return {
|
|
63
|
+
meta: {
|
|
64
|
+
pageSize: x.meta.pageSize,
|
|
65
|
+
continuationToken: x.meta.continuationToken,
|
|
66
|
+
},
|
|
67
|
+
data: x.data.map(itemFactory),
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=index.js.map
|