@jpmorganchase/mosaic-from-http-request 0.1.0-beta.95 → 0.1.0-beta.96
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/fromHttpRequest.d.ts +22 -5
- package/dist/fromHttpRequest.js +28 -12
- package/dist/fromHttpRequest.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,14 +2,31 @@ import 'event-target-polyfill';
|
|
|
2
2
|
import 'yet-another-abortcontroller-polyfill';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { Request } from 'undici';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Error raised when there an error is thrown
|
|
7
|
+
*/
|
|
8
|
+
export interface FromHttpRequestThrownError {
|
|
9
|
+
error: true;
|
|
10
|
+
kind: 'thrown';
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Error raised when there is a network/http error
|
|
15
|
+
*/
|
|
16
|
+
export interface FromHttpRequestHttpError {
|
|
17
|
+
error: true;
|
|
18
|
+
kind: 'http';
|
|
7
19
|
message: string;
|
|
8
|
-
|
|
9
|
-
|
|
20
|
+
status: number;
|
|
21
|
+
statusText: string;
|
|
22
|
+
headers: Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
export type FromHttpRequestError = FromHttpRequestThrownError | FromHttpRequestHttpError;
|
|
25
|
+
export declare function isFromHttpRequestError(response: any): response is FromHttpRequestError;
|
|
26
|
+
export declare function isFromHttpRequestThrownError(response: any): response is FromHttpRequestThrownError;
|
|
10
27
|
/**
|
|
11
28
|
*
|
|
12
29
|
* @param input The resource you would like to fetch. Can be a url or a request object.
|
|
13
30
|
* @returns Observable of JSON or ErrorResponse
|
|
14
31
|
*/
|
|
15
|
-
export declare function fromHttpRequest<TData>(input: string | Request): Observable<TData |
|
|
32
|
+
export declare function fromHttpRequest<TData>(input: string | Request): Observable<TData | FromHttpRequestError>;
|
package/dist/fromHttpRequest.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import 'event-target-polyfill';
|
|
2
2
|
import 'yet-another-abortcontroller-polyfill';
|
|
3
|
-
import { of } from 'rxjs';
|
|
3
|
+
import { from, of } from 'rxjs';
|
|
4
4
|
import { catchError, switchMap } from 'rxjs/operators';
|
|
5
5
|
import contentTypeParser from 'fast-content-type-parse';
|
|
6
6
|
import { fromFetch } from './fromFetch.js';
|
|
7
|
-
export function
|
|
8
|
-
return response.error
|
|
7
|
+
export function isFromHttpRequestError(response) {
|
|
8
|
+
return (!!response.error && response.kind === 'http');
|
|
9
|
+
}
|
|
10
|
+
export function isFromHttpRequestThrownError(response) {
|
|
11
|
+
return (!!response.error &&
|
|
12
|
+
response.kind === 'thrown');
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
*
|
|
@@ -17,19 +21,31 @@ export function fromHttpRequest(input) {
|
|
|
17
21
|
if (response.ok) {
|
|
18
22
|
const contentTypeHeader = response.headers.get('content-type') || '';
|
|
19
23
|
const contentType = contentTypeParser.safeParse(contentTypeHeader).type;
|
|
20
|
-
if (contentType.includes('json')) {
|
|
21
|
-
return response.json();
|
|
22
|
-
}
|
|
23
24
|
if (contentType.includes('text')) {
|
|
24
|
-
return response.text();
|
|
25
|
+
return from(response.text());
|
|
25
26
|
}
|
|
26
27
|
// default to json
|
|
27
|
-
return response.json();
|
|
28
|
+
return from(response.json());
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const headersObj = {};
|
|
31
|
+
response.headers.forEach((value, key) => {
|
|
32
|
+
headersObj[key] = value;
|
|
33
|
+
});
|
|
34
|
+
return of({
|
|
35
|
+
error: true,
|
|
36
|
+
kind: 'http',
|
|
37
|
+
message: `A non-OK HTTP response was received from the server: ${response.status}/${response.statusText}`,
|
|
38
|
+
status: response.status,
|
|
39
|
+
statusText: response.statusText,
|
|
40
|
+
headers: headersObj
|
|
41
|
+
});
|
|
42
|
+
}), catchError(error => {
|
|
43
|
+
// Network or thrown error
|
|
44
|
+
return of({
|
|
45
|
+
error: true,
|
|
46
|
+
kind: 'thrown',
|
|
47
|
+
message: error.message
|
|
48
|
+
});
|
|
33
49
|
}));
|
|
34
50
|
}
|
|
35
51
|
//# sourceMappingURL=fromHttpRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromHttpRequest.js","sourceRoot":"","sources":["../src/fromHttpRequest.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAc,EAAE,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fromHttpRequest.js","sourceRoot":"","sources":["../src/fromHttpRequest.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAc,EAAE,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAyB3C,MAAM,UAAU,sBAAsB,CAAC,QAAa;IAClD,OAAO,CACL,CAAC,CAAE,QAAiC,CAAC,KAAK,IAAK,QAAiC,CAAC,IAAI,KAAK,MAAM,CACjG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAa;IAEb,OAAO,CACL,CAAC,CAAE,QAAuC,CAAC,KAAK;QAC/C,QAAuC,CAAC,IAAI,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAuB;IAEvB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE;QACnB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACrE,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;YACxE,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAoB,CAAC,CAAC;YACjD,CAAC;YACD,kBAAkB;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAoB,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAA2B;YAClC,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,wDAAwD,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE;YACzG,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,EACF,UAAU,CAAC,KAAK,CAAC,EAAE;QACjB,0BAA0B;QAC1B,OAAO,EAAE,CAA6B;YACpC,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jpmorganchase/mosaic-from-http-request",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.96",
|
|
4
4
|
"author": "",
|
|
5
5
|
"description": "Utility package to turn HTTP fetch requests to observables. This package can be deleted when node 18 is used.",
|
|
6
6
|
"license": "Apache-2.0",
|