@equinor/fusion-framework-module-http 8.0.3 → 8.0.5
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/CHANGELOG.md +25 -0
- package/dist/esm/configurator.js +8 -1
- package/dist/esm/configurator.js.map +1 -1
- package/dist/esm/errors/ClientNotFoundException.js +10 -0
- package/dist/esm/errors/ClientNotFoundException.js.map +1 -0
- package/dist/esm/errors/HttpJsonResponseError.js +27 -0
- package/dist/esm/errors/HttpJsonResponseError.js.map +1 -0
- package/dist/esm/errors/HttpResponseError.js +19 -0
- package/dist/esm/errors/HttpResponseError.js.map +1 -0
- package/dist/esm/errors/ServerSentEventResponseError.js +25 -0
- package/dist/esm/errors/ServerSentEventResponseError.js.map +1 -0
- package/dist/esm/errors/index.js +5 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/client/client-msal.js +1 -0
- package/dist/esm/lib/client/client-msal.js.map +1 -1
- package/dist/esm/lib/client/client.js +40 -4
- package/dist/esm/lib/client/client.js.map +1 -1
- package/dist/esm/lib/operators/{http-request-handler.js → HttpRequestHandler.js} +3 -3
- package/dist/esm/lib/operators/HttpRequestHandler.js.map +1 -0
- package/dist/esm/lib/operators/{http-response-handler.js → HttpResponseHandler.js} +2 -2
- package/dist/esm/lib/operators/HttpResponseHandler.js.map +1 -0
- package/dist/esm/lib/operators/{process-operators.js → ProcessOperators.js} +4 -1
- package/dist/esm/lib/operators/ProcessOperators.js.map +1 -0
- package/dist/esm/lib/operators/{capitalize-request-method.operator.js → capitalize-request-method-operator.js} +4 -2
- package/dist/esm/lib/operators/capitalize-request-method-operator.js.map +1 -0
- package/dist/esm/lib/operators/{fetch-request.schema.js → fetch-request.schemas.js} +1 -1
- package/dist/esm/lib/operators/fetch-request.schemas.js.map +1 -0
- package/dist/esm/lib/operators/index.js +6 -6
- package/dist/esm/lib/operators/index.js.map +1 -1
- package/dist/esm/lib/operators/{request-validation.operator.js → request-validation-operator.js} +3 -2
- package/dist/esm/lib/operators/{request-validation.operator.js.map → request-validation-operator.js.map} +1 -1
- package/dist/esm/lib/operators/{sse.operator.js → sse-map.operator.js} +5 -3
- package/dist/esm/lib/operators/sse-map.operator.js.map +1 -0
- package/dist/esm/lib/selectors/blob-selector.js +3 -2
- package/dist/esm/lib/selectors/blob-selector.js.map +1 -1
- package/dist/esm/lib/selectors/{sse-selector.js → create-sse-selector.js} +20 -5
- package/dist/esm/lib/selectors/create-sse-selector.js.map +1 -0
- package/dist/esm/lib/selectors/index.js +1 -1
- package/dist/esm/lib/selectors/index.js.map +1 -1
- package/dist/esm/lib/selectors/json-selector.js +1 -1
- package/dist/esm/lib/selectors/json-selector.js.map +1 -1
- package/dist/esm/module.js +4 -1
- package/dist/esm/module.js.map +1 -1
- package/dist/esm/provider.js +14 -8
- package/dist/esm/provider.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/configurator.d.ts +6 -1
- package/dist/types/errors/ClientNotFoundException.d.ts +9 -0
- package/dist/types/errors/HttpJsonResponseError.d.ts +24 -0
- package/dist/types/errors/HttpResponseError.d.ts +15 -0
- package/dist/types/errors/ServerSentEventResponseError.d.ts +23 -0
- package/dist/types/errors/index.d.ts +4 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/lib/client/client-msal.d.ts +1 -0
- package/dist/types/lib/client/client.d.ts +33 -3
- package/dist/types/lib/operators/{http-request-handler.d.ts → HttpRequestHandler.d.ts} +1 -1
- package/dist/types/lib/operators/{http-response-handler.d.ts → HttpResponseHandler.d.ts} +1 -1
- package/dist/types/lib/operators/index.d.ts +6 -6
- package/dist/types/lib/operators/{sse.operator.d.ts → sse-map.operator.d.ts} +1 -1
- package/dist/types/lib/selectors/index.d.ts +2 -2
- package/dist/types/provider.d.ts +7 -8
- package/dist/types/version.d.ts +1 -1
- package/package.json +7 -7
- package/src/configurator.ts +8 -1
- package/src/errors/ClientNotFoundException.ts +9 -0
- package/src/errors/HttpJsonResponseError.ts +32 -0
- package/src/errors/HttpResponseError.ts +21 -0
- package/src/errors/ServerSentEventResponseError.ts +30 -0
- package/src/errors/index.ts +4 -0
- package/src/index.ts +2 -1
- package/src/lib/client/client-msal.ts +1 -0
- package/src/lib/client/client.ts +40 -4
- package/src/lib/operators/{http-request-handler.ts → HttpRequestHandler.ts} +2 -2
- package/src/lib/operators/{http-response-handler.ts → HttpResponseHandler.ts} +1 -1
- package/src/lib/operators/{process-operators.ts → ProcessOperators.ts} +3 -0
- package/src/lib/operators/{capitalize-request-method.operator.ts → capitalize-request-method-operator.ts} +3 -1
- package/src/lib/operators/index.ts +6 -6
- package/src/lib/operators/{request-validation.operator.ts → request-validation-operator.ts} +2 -1
- package/src/lib/operators/{sse.operator.ts → sse-map.operator.ts} +2 -1
- package/src/lib/operators/types.ts +1 -0
- package/src/lib/selectors/blob-selector.ts +3 -2
- package/src/lib/selectors/{sse-selector.ts → create-sse-selector.ts} +34 -17
- package/src/lib/selectors/index.ts +2 -2
- package/src/lib/selectors/json-selector.ts +1 -1
- package/src/module.ts +4 -1
- package/src/provider.ts +14 -8
- package/src/version.ts +1 -1
- package/tests/HttpClient.test.ts +2 -2
- package/tests/operators.test.ts +5 -1
- package/tests/sse.selector.test.ts +34 -21
- package/vitest.config.ts +1 -1
- package/dist/esm/errors.js +0 -58
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/lib/operators/capitalize-request-method.operator.js.map +0 -1
- package/dist/esm/lib/operators/fetch-request.schema.js.map +0 -1
- package/dist/esm/lib/operators/http-request-handler.js.map +0 -1
- package/dist/esm/lib/operators/http-response-handler.js.map +0 -1
- package/dist/esm/lib/operators/process-operators.js.map +0 -1
- package/dist/esm/lib/operators/sse.operator.js.map +0 -1
- package/dist/esm/lib/selectors/sse-selector.js.map +0 -1
- package/dist/types/errors.d.ts +0 -51
- package/src/errors.ts +0 -69
- package/dist/types/lib/operators/{process-operators.d.ts → ProcessOperators.d.ts} +0 -0
- package/dist/types/lib/operators/{capitalize-request-method.operator.d.ts → capitalize-request-method-operator.d.ts} +0 -0
- package/dist/types/lib/operators/{fetch-request.schema.d.ts → fetch-request.schemas.d.ts} +26 -26
- /package/dist/types/lib/operators/{request-validation.operator.d.ts → request-validation-operator.d.ts} +0 -0
- /package/dist/types/lib/selectors/{sse-selector.d.ts → create-sse-selector.d.ts} +0 -0
- /package/src/lib/operators/{fetch-request.schema.ts → fetch-request.schemas.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 8.0.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- de2b4fb: Added missing TSDoc comments on class fields flagged by the new `require-property-tsdoc` fusion-lint rule.
|
|
8
|
+
|
|
9
|
+
## 8.0.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 80c3e4a: Internal: resolve `noConfusingVoidType` Biome warning on the `ProcessOperator` callback type with an explanatory `biome-ignore` comment, since the `| void` relies on TypeScript's void-callback leniency for operator functions that don't transform the request. No public API or behavior change.
|
|
14
|
+
- 80c3e4a: Internal: add required fusion-lint intent comments explaining `as unknown as T` casts in the HTTP client configurator, provider, and low-level fetch client. No behavior change.
|
|
15
|
+
- 80c3e4a: Internal: resolve remaining `fusion-lint` warnings across the module (TSDoc, intent comments, `no-todo-without-issue`). Also reorganizes the error classes into `src/errors/` (one class per file, `HttpResponseError.ts`, `HttpJsonResponseError.ts`, `ServerSentEventResponseError.ts`, `ClientNotFoundException.ts`) and additionally exposes them as an `Errors` namespace:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Still works, unchanged
|
|
19
|
+
import { ClientNotFoundException } from '@equinor/fusion-framework-module-http';
|
|
20
|
+
|
|
21
|
+
// New alternative
|
|
22
|
+
import { Errors } from '@equinor/fusion-framework-module-http';
|
|
23
|
+
new Errors.ClientNotFoundException(...);
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The existing named exports and the `./errors` subpath export (`dist/esm/errors/index.js` / `dist/types/errors/index.d.ts`) both continue to work — no breaking change for consumers.
|
|
27
|
+
|
|
3
28
|
## 8.0.3
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/dist/esm/configurator.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { capitalizeRequestMethodOperator, requestValidationOperator, HttpRequestHandler, } from './lib/operators';
|
|
2
2
|
/** @inheritdoc */
|
|
3
3
|
export class HttpClientConfigurator {
|
|
4
|
+
/** Named client configurations keyed by client name. */
|
|
4
5
|
_clients = {};
|
|
5
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Gets a shallow clone of all named client configurations.
|
|
8
|
+
*
|
|
9
|
+
* @returns A shallow clone of the named client configurations.
|
|
10
|
+
*/
|
|
6
11
|
get clients() {
|
|
7
12
|
return { ...this._clients };
|
|
8
13
|
}
|
|
@@ -30,6 +35,8 @@ export class HttpClientConfigurator {
|
|
|
30
35
|
configureClient(name, args) {
|
|
31
36
|
const argFn = typeof args === 'string' ? { baseUri: args } : args;
|
|
32
37
|
const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;
|
|
38
|
+
// `options` is `HttpClientOptions<T>` (this call's generic), but `_clients` is keyed by the
|
|
39
|
+
// configurator's own `TClient` — callers are expected to keep the two in sync.
|
|
33
40
|
this._clients[name] = {
|
|
34
41
|
...this._clients[name],
|
|
35
42
|
...options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../src/configurator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAmJzB,kBAAkB;AAClB,MAAM,OAAO,sBAAsB;
|
|
1
|
+
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../src/configurator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAmJzB,kBAAkB;AAClB,MAAM,OAAO,sBAAsB;IAGjC,wDAAwD;IAC9C,QAAQ,GAA+C,EAAE,CAAC;IAEpE;;;;OAIG;IACH,IAAW,OAAO;QAChB,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,oFAAoF;IAC3E,qBAAqB,CAAiC;IAE/D,iFAAiF;IACxE,yBAAyB,GAAG,IAAI,kBAAkB,CAAqC;QAC9F,2CAA2C;QAC3C,mBAAmB,EAAE,+BAA+B,EAAE;QACtD,8BAA8B;QAC9B,oBAAoB,EAAE,yBAAyB,EAAE;KAClD,CAAC,CAAC;IAEH;;;OAGG;IACH,YAAY,MAAsC;QAChD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACtC,CAAC;IAED,kBAAkB;IAClB,SAAS,CAAC,IAAY;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,kBAAkB;IAClB,eAAe,CACb,IAAY,EACZ,IAAsE;QAEtE,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,EAA2B,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1E,4FAA4F;QAC5F,+EAA+E;QAC/E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;YACpB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,GAAI,OAAiD;SACtD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when `createClient(name)` is called with an unknown client key.
|
|
3
|
+
*
|
|
4
|
+
* This is only used when the provided string is neither a registered client name
|
|
5
|
+
* nor an absolute `http:` or `https:` URL.
|
|
6
|
+
*/
|
|
7
|
+
export class ClientNotFoundException extends Error {
|
|
8
|
+
}
|
|
9
|
+
export default ClientNotFoundException;
|
|
10
|
+
//# sourceMappingURL=ClientNotFoundException.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientNotFoundException.js","sourceRoot":"","sources":["../../../src/errors/ClientNotFoundException.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;CAAG;AAErD,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { HttpResponseError } from './HttpResponseError.js';
|
|
2
|
+
/**
|
|
3
|
+
* Represents an error that occurs when handling a JSON response in an HTTP request.
|
|
4
|
+
* Extends the base `HttpResponseError` class.
|
|
5
|
+
*
|
|
6
|
+
* @template TType - The type of the data associated with the error.
|
|
7
|
+
* @template TResponse - The type of the HTTP response.
|
|
8
|
+
*/
|
|
9
|
+
export class HttpJsonResponseError extends HttpResponseError {
|
|
10
|
+
static Name = 'HttpJsonResponseError';
|
|
11
|
+
/** The parsed JSON data associated with the error response, if any. */
|
|
12
|
+
data;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new instance of `HttpJsonResponseError`.
|
|
15
|
+
*
|
|
16
|
+
* @param message - The error message.
|
|
17
|
+
* @param response - The HTTP response associated with the error.
|
|
18
|
+
* @param options - Additional options for the error, including the associated data.
|
|
19
|
+
*/
|
|
20
|
+
constructor(message, response, options) {
|
|
21
|
+
super(message, response, options);
|
|
22
|
+
this.name = HttpJsonResponseError.Name;
|
|
23
|
+
this.data = options?.data;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export default HttpJsonResponseError;
|
|
27
|
+
//# sourceMappingURL=HttpJsonResponseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpJsonResponseError.js","sourceRoot":"","sources":["../../../src/errors/HttpJsonResponseError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,OAAO,qBAGX,SAAQ,iBAA4B;IACpC,MAAM,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,uEAAuE;IACvD,IAAI,CAAS;IAE7B;;;;;;OAMG;IACH,YAAY,OAAe,EAAE,QAAmB,EAAE,OAAyC;QACzF,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an error that occurs when handling an HTTP response.
|
|
3
|
+
* @template TResponse The type of the HTTP response.
|
|
4
|
+
*/
|
|
5
|
+
export class HttpResponseError extends Error {
|
|
6
|
+
response;
|
|
7
|
+
static Name = 'HttpResponseError';
|
|
8
|
+
/**
|
|
9
|
+
* @param message - The error message.
|
|
10
|
+
* @param response - The HTTP response associated with the error.
|
|
11
|
+
* @param options - Additional error options.
|
|
12
|
+
*/
|
|
13
|
+
constructor(message, response, options) {
|
|
14
|
+
super(message, options);
|
|
15
|
+
this.response = response;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export default HttpResponseError;
|
|
19
|
+
//# sourceMappingURL=HttpResponseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpResponseError.js","sourceRoot":"","sources":["../../../src/errors/HttpResponseError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,iBAAwC,SAAQ,KAAK;IAS9C,QAAQ;IAR1B,MAAM,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC;;;;OAIG;IACH,YACE,OAAe,EACC,QAAmB,EACnC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAHR,QAAQ;IAI1B,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HttpResponseError } from './HttpResponseError.js';
|
|
2
|
+
/**
|
|
3
|
+
* Represents an error that occurs when handling a server-sent event (SSE) HTTP response.
|
|
4
|
+
*
|
|
5
|
+
* @template TType - The type of additional data associated with the error.
|
|
6
|
+
* @template TResponse - The type of the HTTP response object.
|
|
7
|
+
*
|
|
8
|
+
* @extends HttpResponseError<TResponse>
|
|
9
|
+
*/
|
|
10
|
+
export class ServerSentEventResponseError extends HttpResponseError {
|
|
11
|
+
static Name = 'ServerSentEventResponseError';
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new instance of the error.
|
|
14
|
+
*
|
|
15
|
+
* @param message - The error message describing the cause of the error.
|
|
16
|
+
* @param response - The HTTP response associated with the error.
|
|
17
|
+
* @param options - Optional error options, which may include additional data of type `TType`.
|
|
18
|
+
*/
|
|
19
|
+
constructor(message, response, options) {
|
|
20
|
+
super(message, response, options);
|
|
21
|
+
this.name = ServerSentEventResponseError.Name;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export default ServerSentEventResponseError;
|
|
25
|
+
//# sourceMappingURL=ServerSentEventResponseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerSentEventResponseError.js","sourceRoot":"","sources":["../../../src/errors/ServerSentEventResponseError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,OAAO,4BAGX,SAAQ,iBAA4B;IACpC,MAAM,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAE7C;;;;;;OAMG;IACH,YAAY,OAAe,EAAE,QAAmB,EAAE,OAAyC;QACzF,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC,IAAI,CAAC;IAChD,CAAC;CACF;AAED,eAAe,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
export * from './configurator';
|
|
6
6
|
export * from './provider';
|
|
7
7
|
export * from './module';
|
|
8
|
-
export * from './errors';
|
|
8
|
+
export * as Errors from './errors/index.js';
|
|
9
|
+
export * from './errors/index.js';
|
|
9
10
|
export { default } from './module';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AAEzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AAEzB,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -28,6 +28,7 @@ export class HttpClientMsal extends HttpClient {
|
|
|
28
28
|
*
|
|
29
29
|
* @overrides HttpClient.fetch$
|
|
30
30
|
*
|
|
31
|
+
* @template T - The expected response type.
|
|
31
32
|
* @param path - The path to the resource to fetch.
|
|
32
33
|
* @param init - An optional `MsalFetchRequestInit` object that can include the `scopes` property.
|
|
33
34
|
* @returns An `Observable` that emits the fetched resource.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-msal.js","sourceRoot":"","sources":["../../../../src/lib/client/client-msal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAsBtC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAGX,SAAQ,UAA+B;IACvC;;;OAGG;IACI,aAAa,GAAa,EAAE,CAAC;IAEpC
|
|
1
|
+
{"version":3,"file":"client-msal.js","sourceRoot":"","sources":["../../../../src/lib/client/client-msal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAsBtC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAGX,SAAQ,UAA+B;IACvC;;;OAGG;IACI,aAAa,GAAa,EAAE,CAAC;IAEpC;;;;;;;;;;;;;OAaG;IACI,MAAM,CACX,IAAY,EACZ,IAAmD;QAEnD;;;WAGG;QACH,MAAM,IAAI,GAAG;YACX,GAAG,IAAI;YACP,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;SACV,CAAC;QAE9C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -3,8 +3,8 @@ import { switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
|
3
3
|
import { fromFetch } from 'rxjs/fetch';
|
|
4
4
|
import { HttpRequestHandler, HttpResponseHandler } from '../operators';
|
|
5
5
|
import { blobSelector, jsonSelector } from '../selectors';
|
|
6
|
-
import { HttpResponseError } from '../../errors';
|
|
7
|
-
import { createSseSelector, } from '../selectors/sse-selector';
|
|
6
|
+
import { HttpResponseError } from '../../errors/index.js';
|
|
7
|
+
import { createSseSelector, } from '../selectors/create-sse-selector';
|
|
8
8
|
/** Base http client for executing requests */
|
|
9
9
|
export class HttpClient {
|
|
10
10
|
uri;
|
|
@@ -35,16 +35,23 @@ export class HttpClient {
|
|
|
35
35
|
_abort$ = new Subject();
|
|
36
36
|
/**
|
|
37
37
|
* A stream of requests that are about to be executed.
|
|
38
|
+
* @returns An `Observable` that emits each request before it is executed.
|
|
38
39
|
*/
|
|
39
40
|
get request$() {
|
|
40
41
|
return this._request$.asObservable();
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* A stream of responses that have been received.
|
|
45
|
+
* @returns An `Observable` that emits each response as it is received.
|
|
44
46
|
*/
|
|
45
47
|
get response$() {
|
|
46
48
|
return this._response$.asObservable();
|
|
47
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a new `HttpClient`.
|
|
52
|
+
* @param uri - The base URI used to resolve relative request paths.
|
|
53
|
+
* @param options - Optional request and response handlers.
|
|
54
|
+
*/
|
|
48
55
|
constructor(uri, options) {
|
|
49
56
|
this.uri = uri;
|
|
50
57
|
this.requestHandler = new HttpRequestHandler(options?.requestHandler);
|
|
@@ -63,6 +70,7 @@ export class HttpClient {
|
|
|
63
70
|
/**
|
|
64
71
|
* Fetches data from the specified path and returns a stream response.
|
|
65
72
|
*
|
|
73
|
+
* @template T - The expected shape of the fetched data.
|
|
66
74
|
* @param path - The path to fetch data from.
|
|
67
75
|
* @param args - Optional request initialization options, including a custom selector function.
|
|
68
76
|
* @returns A stream response containing the fetched data.
|
|
@@ -73,6 +81,7 @@ export class HttpClient {
|
|
|
73
81
|
/**
|
|
74
82
|
* Fetches data from the specified path and returns a Promise containing the fetched data.
|
|
75
83
|
*
|
|
84
|
+
* @template T - The expected shape of the fetched data.
|
|
76
85
|
* @param path - The path to fetch data from.
|
|
77
86
|
* @param args - Optional request initialization options, including a custom selector function.
|
|
78
87
|
* @returns A Promise containing the fetched data.
|
|
@@ -80,13 +89,20 @@ export class HttpClient {
|
|
|
80
89
|
fetch(path, args) {
|
|
81
90
|
return firstValueFrom(this.fetch$(path, args));
|
|
82
91
|
}
|
|
83
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* @deprecated Use {@link fetch} instead.
|
|
94
|
+
* @template T - The expected shape of the fetched data.
|
|
95
|
+
* @param path - The path to fetch data from.
|
|
96
|
+
* @param args - Optional request initialization options, including a custom selector function.
|
|
97
|
+
* @returns A Promise containing the fetched data.
|
|
98
|
+
*/
|
|
84
99
|
fetchAsync(path, args) {
|
|
85
100
|
return this.fetch(path, args);
|
|
86
101
|
}
|
|
87
102
|
/**
|
|
88
103
|
* Fetches data from the specified path and returns a stream response containing the data in JSON format.
|
|
89
104
|
*
|
|
105
|
+
* @template T - The expected shape of the parsed JSON data.
|
|
90
106
|
* @param path - The path to fetch the data from.
|
|
91
107
|
* @param args - Optional request initialization options, including a custom selector function and request body.
|
|
92
108
|
* - `body`: The request body, which will be automatically serialized to JSON if it's an object.
|
|
@@ -110,6 +126,7 @@ export class HttpClient {
|
|
|
110
126
|
/**
|
|
111
127
|
* Fetches data from the specified path and returns a Promise containing the fetched data in JSON format.
|
|
112
128
|
*
|
|
129
|
+
* @template T - The expected shape of the parsed JSON data.
|
|
113
130
|
* @param path - The path to fetch the data from.
|
|
114
131
|
* @param args - Optional request initialization options, including a custom selector function and request body.
|
|
115
132
|
* - `body`: The request body, which will be automatically serialized to JSON if it's an object.
|
|
@@ -123,6 +140,7 @@ export class HttpClient {
|
|
|
123
140
|
/**
|
|
124
141
|
* Fetches a blob resource from the specified path and returns a stream response.
|
|
125
142
|
*
|
|
143
|
+
* @template T - The expected shape of the fetched blob data.
|
|
126
144
|
* @param path - The path to the blob resource.
|
|
127
145
|
* @param args - Optional request initialization options, including a custom selector function.
|
|
128
146
|
* @returns A stream response containing the fetched blob data.
|
|
@@ -141,6 +159,7 @@ export class HttpClient {
|
|
|
141
159
|
/**
|
|
142
160
|
* Fetches a blob from the specified path and returns a Promise that resolves to the blob result.
|
|
143
161
|
*
|
|
162
|
+
* @template T - The expected shape of the fetched blob data.
|
|
144
163
|
* @param path - The path to fetch the blob from.
|
|
145
164
|
* @param args - Optional arguments for the fetch request, including request body, headers, and response type.
|
|
146
165
|
* @returns A Promise that resolves to the blob result.
|
|
@@ -182,13 +201,21 @@ export class HttpClient {
|
|
|
182
201
|
// Call the fetch$ method with the provided path and the constructed init object
|
|
183
202
|
return this._fetch$(path, { selector, ...args, headers });
|
|
184
203
|
}
|
|
185
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* @deprecated Use {@link json} instead.
|
|
206
|
+
* @template T - The expected shape of the parsed JSON data.
|
|
207
|
+
* @param path - The path to fetch the data from.
|
|
208
|
+
* @param args - Optional request initialization options, including a custom selector function and request body.
|
|
209
|
+
* @returns A Promise containing the fetched data in JSON format.
|
|
210
|
+
*/
|
|
186
211
|
jsonAsync(path, args) {
|
|
187
212
|
return this.json(path, args);
|
|
188
213
|
}
|
|
189
214
|
/**
|
|
190
215
|
* Executes an HTTP request using the specified method and path.
|
|
191
216
|
*
|
|
217
|
+
* @template T - The expected shape of the result.
|
|
218
|
+
* @template TMethod - The name of the `IHttpClient` method to invoke.
|
|
192
219
|
* @param method - The HTTP method to use for the request, such as 'fetch', 'json', or 'blob'.
|
|
193
220
|
* @param path - The path to the resource to fetch.
|
|
194
221
|
* @param init - Optional request initialization options, including request body, headers, and response type.
|
|
@@ -208,10 +235,13 @@ export class HttpClient {
|
|
|
208
235
|
/**
|
|
209
236
|
* Fetches data from the specified path and returns an Observable that emits the response.
|
|
210
237
|
*
|
|
238
|
+
* @template T - The expected shape of the emitted data.
|
|
211
239
|
* @param path - The path to fetch the data from.
|
|
212
240
|
* @param args - Optional arguments for the fetch request, including a response selector function, request body, headers, and response type.
|
|
213
241
|
* @returns {Observable<T>} An Observable that emits the response data.
|
|
214
242
|
*
|
|
243
|
+
* @throws {HttpResponseError} When the optional `selector` throws while transforming the response.
|
|
244
|
+
*
|
|
215
245
|
* This method handles the following steps:
|
|
216
246
|
* 1. Resolves the full URL by combining the base URI and the provided path.
|
|
217
247
|
* 2. Prepares the request by passing it through the `requestHandler.process()` method.
|
|
@@ -222,6 +252,9 @@ export class HttpClient {
|
|
|
222
252
|
*/
|
|
223
253
|
_fetch$(path, args) {
|
|
224
254
|
const { selector, ...options } = args || {};
|
|
255
|
+
// `fromFetch` yields the raw fetch `Response`, but `responseHandler.process()` (called via
|
|
256
|
+
// `_prepareResponse`) expects the pipeline's generic `TResponse` shape — cast through
|
|
257
|
+
// `unknown` since the two are only compatible after that processing step.
|
|
225
258
|
const response$ = of({
|
|
226
259
|
...options,
|
|
227
260
|
path,
|
|
@@ -239,6 +272,7 @@ export class HttpClient {
|
|
|
239
272
|
tap((x) => this._response$.next(x)),
|
|
240
273
|
/** execute selector */
|
|
241
274
|
switchMap((response) => {
|
|
275
|
+
// only run the selector when one was provided; otherwise pass the response through untouched
|
|
242
276
|
if (selector) {
|
|
243
277
|
try {
|
|
244
278
|
return selector(response);
|
|
@@ -253,6 +287,8 @@ export class HttpClient {
|
|
|
253
287
|
}),
|
|
254
288
|
/** cancel request on abort signal */
|
|
255
289
|
takeUntil(this._abort$));
|
|
290
|
+
// The pipe above resolves to the per-call generic `T` (via the optional `selector`), but
|
|
291
|
+
// the observable's static type tracks the class-level `TResponse` — cast to the caller's `T`.
|
|
256
292
|
return response$;
|
|
257
293
|
}
|
|
258
294
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAc1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProcessOperators } from './
|
|
1
|
+
import { ProcessOperators } from './ProcessOperators';
|
|
2
2
|
import { requestOperatorHeader } from './request-operator-header';
|
|
3
3
|
/**
|
|
4
4
|
* Extends the `ProcessOperators` class to handle HTTP requests.
|
|
@@ -19,8 +19,8 @@ export class HttpRequestHandler extends ProcessOperators {
|
|
|
19
19
|
*/
|
|
20
20
|
setHeader(key, value) {
|
|
21
21
|
const operator = requestOperatorHeader(key, value);
|
|
22
|
-
return this.set(
|
|
22
|
+
return this.set(`header-${key}`, operator);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
export default HttpRequestHandler;
|
|
26
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=HttpRequestHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpRequestHandler.js","sourceRoot":"","sources":["../../../../src/lib/operators/HttpRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIlE;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAA0D,SAAQ,gBAAmB;IAChG;;;;;;OAMG;IACH,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,MAAM,QAAQ,GAAG,qBAAqB,CAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,QAAQ,CAA0B,CAAC;IACtE,CAAC;CACF;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProcessOperators } from './
|
|
1
|
+
import { ProcessOperators } from './ProcessOperators';
|
|
2
2
|
/**
|
|
3
3
|
* The `HttpResponseHandler` class extends the `ProcessOperators` class and is responsible for handling HTTP responses.
|
|
4
4
|
* It provides a common interface for processing HTTP responses, allowing for consistent error handling and response transformation.
|
|
@@ -8,4 +8,4 @@ import { ProcessOperators } from './process-operators';
|
|
|
8
8
|
export class HttpResponseHandler extends ProcessOperators {
|
|
9
9
|
}
|
|
10
10
|
export default HttpResponseHandler;
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=HttpResponseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpResponseHandler.js","sourceRoot":"","sources":["../../../../src/lib/operators/HttpResponseHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,OAAO,mBAAkC,SAAQ,gBAAmB;CAAG;AAE7E,eAAe,mBAAmB,CAAC"}
|
|
@@ -27,6 +27,7 @@ export class ProcessOperators {
|
|
|
27
27
|
* It can be either an instance of IProcessOperators<T> or a record of string keys and ProcessOperator<T> values.
|
|
28
28
|
*/
|
|
29
29
|
constructor(operators) {
|
|
30
|
+
// accept either a raw operators record or another IProcessOperators instance to clone from
|
|
30
31
|
if (operators && 'operators' in operators) {
|
|
31
32
|
this._operators = { ...operators.operators };
|
|
32
33
|
}
|
|
@@ -42,6 +43,7 @@ export class ProcessOperators {
|
|
|
42
43
|
* @throws Error if an operator with the same key already exists.
|
|
43
44
|
*/
|
|
44
45
|
add(key, operator) {
|
|
46
|
+
// guard against silently overwriting an existing operator under the same key
|
|
45
47
|
if (Object.keys(this._operators).includes(key))
|
|
46
48
|
throw Error(`Operator [${key}] already defined`);
|
|
47
49
|
return this.set(key, operator);
|
|
@@ -85,6 +87,7 @@ export class ProcessOperators {
|
|
|
85
87
|
if (!operators.length) {
|
|
86
88
|
return of(request);
|
|
87
89
|
}
|
|
90
|
+
// feed the request through each operator sequentially, keeping the previous value when one returns void
|
|
88
91
|
return from(Object.values(this._operators)).pipe(mergeScan(
|
|
89
92
|
// resolve current operator and return result or previous if void
|
|
90
93
|
(value, operator) => Promise.resolve(operator(value)).then((x) => x ?? value),
|
|
@@ -96,4 +99,4 @@ export class ProcessOperators {
|
|
|
96
99
|
last());
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
|
-
//# sourceMappingURL=
|
|
102
|
+
//# sourceMappingURL=ProcessOperators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProcessOperators.js","sourceRoot":"","sources":["../../../../src/lib/operators/ProcessOperators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGjD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;;;OAIG;IACO,UAAU,CAAqC;IAEzD;;;OAGG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAqE;QAC/E,2FAA2F;QAC3F,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW,EAAE,QAA4B;QAC3C,6EAA6E;QAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC5C,MAAM,KAAK,CAAC,aAAa,GAAG,mBAAmB,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAW,EAAE,QAA4B;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAU;QAChB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,mEAAmE;QACnE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QACD,wGAAwG;QACxG,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAC9C,SAAS;QACP,iEAAiE;QACjE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;QAC7E,gBAAgB;QAChB,OAAO;QACP,yCAAyC;QACzC,CAAC,CACF;QACD,iCAAiC;QACjC,IAAI,EAAE,CACP,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { requestMethodCasing } from './fetch-request.
|
|
1
|
+
import { requestMethodCasing } from './fetch-request.schemas';
|
|
2
2
|
/**
|
|
3
3
|
* Ensures that the HTTP method of the given request is in uppercase.
|
|
4
4
|
*
|
|
@@ -8,11 +8,13 @@ import { requestMethodCasing } from './fetch-request.schema';
|
|
|
8
8
|
export const capitalizeRequestMethodOperator = (options) => (request) => {
|
|
9
9
|
const { error, success, data } = requestMethodCasing().safeParse(request.method);
|
|
10
10
|
request.method = success ? data : request.method?.toUpperCase();
|
|
11
|
+
// surface schema validation issues as warnings when not running silently
|
|
11
12
|
if (error && !options?.silent) {
|
|
13
|
+
// one warning per issue so callers can see exactly what failed to validate
|
|
12
14
|
for (const e of error.issues) {
|
|
13
15
|
console.warn(e.message);
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
return request;
|
|
17
19
|
};
|
|
18
|
-
//# sourceMappingURL=capitalize-request-method
|
|
20
|
+
//# sourceMappingURL=capitalize-request-method-operator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capitalize-request-method-operator.js","sourceRoot":"","sources":["../../../../src/lib/operators/capitalize-request-method-operator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,CAAwB,OAA8B,EAAsB,EAAE,CAC9E,CAAC,OAAO,EAAK,EAAE;IACb,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjF,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAEhE,yEAAyE;IACzE,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9B,2EAA2E;QAC3E,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-request.schemas.js","sourceRoot":"","sources":["../../../../src/lib/operators/fetch-request.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { HttpRequestHandler } from './
|
|
2
|
-
export { HttpResponseHandler } from './
|
|
3
|
-
export { ProcessOperators } from './
|
|
4
|
-
export { capitalizeRequestMethodOperator } from './capitalize-request-method
|
|
5
|
-
export { requestValidationOperator } from './request-validation
|
|
6
|
-
export { sseMap } from './sse.operator';
|
|
1
|
+
export { HttpRequestHandler } from './HttpRequestHandler';
|
|
2
|
+
export { HttpResponseHandler } from './HttpResponseHandler';
|
|
3
|
+
export { ProcessOperators } from './ProcessOperators';
|
|
4
|
+
export { capitalizeRequestMethodOperator } from './capitalize-request-method-operator';
|
|
5
|
+
export { requestValidationOperator } from './request-validation-operator';
|
|
6
|
+
export { sseMap } from './sse-map.operator';
|
|
7
7
|
export * from './types';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,cAAc,SAAS,CAAC"}
|
package/dist/esm/lib/operators/{request-validation.operator.js → request-validation-operator.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { fetchRequestSchema } from './fetch-request.
|
|
1
|
+
import { fetchRequestSchema } from './fetch-request.schemas';
|
|
2
2
|
/**
|
|
3
3
|
* Validates the given request using the `requestInitSchema`.
|
|
4
4
|
*
|
|
@@ -20,10 +20,11 @@ export const requestValidationOperator = (options) => (request) => {
|
|
|
20
20
|
return parse ? result : void 0;
|
|
21
21
|
}
|
|
22
22
|
catch (error) {
|
|
23
|
+
// re-throw so callers relying on `parse` can react to validation failures directly
|
|
23
24
|
if (parse) {
|
|
24
25
|
throw error;
|
|
25
26
|
}
|
|
26
27
|
console.error('Invalid request options', error.message);
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
|
-
//# sourceMappingURL=request-validation
|
|
30
|
+
//# sourceMappingURL=request-validation-operator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-validation
|
|
1
|
+
{"version":3,"file":"request-validation-operator.js","sourceRoot":"","sources":["../../../../src/lib/operators/request-validation-operator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,CAAyB,OAiBxB,EAAsB,EAAE,CACzB,CAAC,OAAO,EAAE,EAAE;IACV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;QAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mFAAmF;QACnF,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAG,KAAoB,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { switchMap } from 'rxjs/operators';
|
|
2
|
-
import { createSseSelector, } from '../selectors/sse-selector';
|
|
2
|
+
import { createSseSelector, } from '../selectors/create-sse-selector';
|
|
3
3
|
/**
|
|
4
4
|
* An operator function for handling Server-Sent Events (SSE) in an RxJS pipeline.
|
|
5
5
|
*
|
|
@@ -28,6 +28,8 @@ import { createSseSelector, } from '../selectors/sse-selector';
|
|
|
28
28
|
* });
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
export const sseMap = (options) => (source) =>
|
|
31
|
+
export const sseMap = (options) => (source) =>
|
|
32
|
+
// parse each raw Response into a stream of typed server-sent events
|
|
33
|
+
source.pipe(switchMap(createSseSelector(options)));
|
|
32
34
|
export default sseMap;
|
|
33
|
-
//# sourceMappingURL=sse.operator.js.map
|
|
35
|
+
//# sourceMappingURL=sse-map.operator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-map.operator.js","sourceRoot":"","sources":["../../../../src/lib/operators/sse-map.operator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,iBAAiB,GAGlB,MAAM,kCAAkC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,CACE,OAA+B,EACU,EAAE,CAC7C,CAAC,MAAM,EAAE,EAAE;AACT,oEAAoE;AACpE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7D,eAAe,MAAM,CAAC"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @throws {Error} If the response is not successful or if there is an error parsing the response.
|
|
7
7
|
*/
|
|
8
8
|
export const blobSelector = async (response) => {
|
|
9
|
+
// treat any non-2xx response as a failure rather than attempting to read its body
|
|
9
10
|
if (!response.ok) {
|
|
10
|
-
// Throw an error if the network response is not successful
|
|
11
11
|
throw new Error('network response was not OK');
|
|
12
12
|
}
|
|
13
13
|
// Status code 204 indicates no content, so throw an error
|
|
@@ -15,6 +15,7 @@ export const blobSelector = async (response) => {
|
|
|
15
15
|
throw new Error('no content');
|
|
16
16
|
}
|
|
17
17
|
// Extract the filename from the 'content-disposition' header
|
|
18
|
+
// locate the segment carrying the filename directive; other directives (e.g. inline/attachment) are ignored
|
|
18
19
|
const filename = response.headers
|
|
19
20
|
.get('content-disposition')
|
|
20
21
|
?.split(';')
|
|
@@ -26,7 +27,7 @@ export const blobSelector = async (response) => {
|
|
|
26
27
|
const blob = await response.blob();
|
|
27
28
|
return { filename, blob };
|
|
28
29
|
}
|
|
29
|
-
catch (
|
|
30
|
+
catch (_err) {
|
|
30
31
|
// Throw an error if there's a problem parsing the response
|
|
31
32
|
throw Error('failed to parse response');
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-selector.js","sourceRoot":"","sources":["../../../../src/lib/selectors/blob-selector.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqB,KAAK,EACjD,QAAmB,EACE,EAAE;IACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,
|
|
1
|
+
{"version":3,"file":"blob-selector.js","sourceRoot":"","sources":["../../../../src/lib/selectors/blob-selector.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqB,KAAK,EACjD,QAAmB,EACE,EAAE;IACvB,kFAAkF;IAClF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,0DAA0D;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,6DAA6D;IAC7D,4GAA4G;IAC5G,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO;SAC9B,GAAG,CAAC,qBAAqB,CAAC;QAC3B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrC,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1B,EAAE,IAAI,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,kEAAkE;QAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,2DAA2D;QAC3D,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|