typedrest 0.4.1 → 0.6.0

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 (110) hide show
  1. package/README.md +42 -4
  2. package/endpoints/{CachingEndpoint.ts → CachingEndpoint.d.ts} +0 -1
  3. package/endpoints/Endpoint.d.ts +121 -0
  4. package/endpoints/Endpoint.js +9 -22
  5. package/endpoints/{EntryEndpoint.ts → EntryEndpoint.d.ts} +7 -27
  6. package/endpoints/EntryEndpoint.js +3 -14
  7. package/endpoints/generic/{CollectionEndpoint.ts → CollectionEndpoint.d.ts} +2 -5
  8. package/endpoints/generic/{ETagEndpointBase.ts → ETagEndpointBase.d.ts} +7 -38
  9. package/endpoints/generic/ETagEndpointBase.js +27 -42
  10. package/endpoints/generic/{ElementEndpoint.ts → ElementEndpoint.d.ts} +12 -70
  11. package/endpoints/generic/ElementEndpoint.js +39 -60
  12. package/endpoints/generic/{GenericCollectionEndpoint.ts → GenericCollectionEndpoint.d.ts} +43 -75
  13. package/endpoints/generic/GenericCollectionEndpoint.js +70 -44
  14. package/endpoints/generic/{IndexerEndpoint.ts → IndexerEndpoint.d.ts} +4 -11
  15. package/endpoints/generic/PartialResponse.d.ts +19 -0
  16. package/endpoints/generic/PartialResponse.js +33 -0
  17. package/endpoints/generic/{index.ts → index.d.ts} +1 -0
  18. package/endpoints/generic/index.js +2 -1
  19. package/endpoints/{index.ts → index.d.ts} +2 -2
  20. package/endpoints/index.js +3 -2
  21. package/endpoints/raw/{BlobEndpoint.ts → BlobEndpoint.d.ts} +9 -29
  22. package/endpoints/raw/BlobEndpoint.js +10 -27
  23. package/endpoints/raw/{UploadEndpoint.ts → UploadEndpoint.d.ts} +4 -18
  24. package/endpoints/raw/UploadEndpoint.js +11 -22
  25. package/endpoints/reactive/Delay.d.ts +7 -0
  26. package/endpoints/reactive/Delay.js +27 -0
  27. package/endpoints/reactive/GenericStreamingCollectionEndpoint.d.ts +32 -0
  28. package/endpoints/reactive/GenericStreamingCollectionEndpoint.js +79 -0
  29. package/endpoints/reactive/PollingEndpoint.d.ts +39 -0
  30. package/endpoints/reactive/PollingEndpoint.js +67 -0
  31. package/endpoints/reactive/SseStreamingEndpoint.d.ts +50 -0
  32. package/endpoints/reactive/SseStreamingEndpoint.js +120 -0
  33. package/endpoints/reactive/StreamingCollectionEndpoint.d.ts +17 -0
  34. package/endpoints/reactive/StreamingCollectionEndpoint.js +23 -0
  35. package/endpoints/reactive/StreamingEndpoint.d.ts +28 -0
  36. package/endpoints/reactive/StreamingEndpoint.js +56 -0
  37. package/endpoints/reactive/index.d.ts +5 -0
  38. package/endpoints/reactive/index.js +22 -0
  39. package/endpoints/rpc/{ActionEndpoint.ts → ActionEndpoint.d.ts} +3 -10
  40. package/endpoints/rpc/ActionEndpoint.js +3 -14
  41. package/endpoints/rpc/{ConsumerEndpoint.ts → ConsumerEndpoint.d.ts} +3 -12
  42. package/endpoints/rpc/ConsumerEndpoint.js +5 -16
  43. package/endpoints/rpc/{FunctionEndpoint.ts → FunctionEndpoint.d.ts} +3 -14
  44. package/endpoints/rpc/FunctionEndpoint.js +6 -17
  45. package/endpoints/rpc/{ProducerEndpoint.ts → ProducerEndpoint.d.ts} +3 -11
  46. package/endpoints/rpc/ProducerEndpoint.js +4 -15
  47. package/endpoints/rpc/{RpcEndpointBase.ts → RpcEndpointBase.d.ts} +4 -12
  48. package/endpoints/rpc/RpcEndpointBase.js +3 -14
  49. package/errors/DefaultErrorHandler.d.ts +21 -0
  50. package/errors/DefaultErrorHandler.js +19 -27
  51. package/errors/{Errors.ts → Errors.d.ts} +23 -19
  52. package/errors/Errors.js +8 -2
  53. package/http/EntityStream.d.ts +10 -0
  54. package/http/EntityStream.js +42 -0
  55. package/http/FetchHttpClient.d.ts +15 -0
  56. package/http/FetchHttpClient.js +1 -1
  57. package/http/{HttpClient.ts → HttpClient.d.ts} +1 -3
  58. package/http/HttpContentRange.d.ts +23 -0
  59. package/http/HttpContentRange.js +39 -0
  60. package/http/HttpHeader.d.ts +16 -0
  61. package/http/HttpHeader.js +6 -1
  62. package/http/{HttpMethod.ts → HttpMethod.d.ts} +1 -1
  63. package/http/{HttpStatusCode.ts → HttpStatusCode.d.ts} +5 -2
  64. package/http/HttpStatusCode.js +4 -1
  65. package/http/ResponseCache.d.ts +19 -0
  66. package/http/ResponseCache.js +4 -15
  67. package/http/RetryAfter.d.ts +6 -0
  68. package/http/RetryAfter.js +24 -0
  69. package/http/ServerSentEvents.d.ts +50 -0
  70. package/http/ServerSentEvents.js +140 -0
  71. package/http/{index.ts → index.d.ts} +4 -0
  72. package/http/index.js +5 -1
  73. package/links/AggregateLinkExtractor.d.ts +17 -0
  74. package/links/AggregateLinkExtractor.js +7 -18
  75. package/links/HalLinkExtractor.d.ts +13 -0
  76. package/links/HalLinkExtractor.js +9 -20
  77. package/links/HeaderLinkExtractor.d.ts +13 -0
  78. package/links/HeaderLinkExtractor.js +4 -15
  79. package/links/{Link.ts → Link.d.ts} +6 -2
  80. package/links/{LinkExtractor.ts → LinkExtractor.d.ts} +0 -1
  81. package/package.json +66 -16
  82. package/serializers/JsonSerializer.d.ts +18 -0
  83. package/serializers/{Serializer.ts → Serializer.d.ts} +0 -2
  84. package/endpoints/Endpoint.test.ts +0 -300
  85. package/endpoints/Endpoint.ts +0 -247
  86. package/endpoints/generic/CollectionEndpoint.test.ts +0 -215
  87. package/endpoints/generic/ElementEndpoint.test.ts +0 -262
  88. package/endpoints/generic/IndexerEndpoint.test.ts +0 -12
  89. package/endpoints/raw/BlobEndpoint.test.ts +0 -52
  90. package/endpoints/raw/UploadEndpoint.test.ts +0 -47
  91. package/endpoints/rpc/ActionEndpoint.test.ts +0 -36
  92. package/endpoints/rpc/ConsumerEndpoint.test.ts +0 -29
  93. package/endpoints/rpc/FunctionEndpoint.test.ts +0 -29
  94. package/endpoints/rpc/ProducerEndpoint.test.ts +0 -32
  95. package/errors/DefaultErrorHandler.ts +0 -62
  96. package/http/FetchHttpClient.ts +0 -26
  97. package/http/HttpHeader.ts +0 -11
  98. package/http/ResponseCache.ts +0 -25
  99. package/jest.config.js +0 -12
  100. package/links/AggregateLinkExtractor.ts +0 -28
  101. package/links/HalLinkExtractor.ts +0 -45
  102. package/links/HeaderLinkExtractor.ts +0 -56
  103. package/serializers/JsonSerializer.ts +0 -25
  104. /package/endpoints/raw/{index.ts → index.d.ts} +0 -0
  105. /package/endpoints/rpc/{index.ts → index.d.ts} +0 -0
  106. /package/errors/{ErrorHandler.ts → ErrorHandler.d.ts} +0 -0
  107. /package/errors/{index.ts → index.d.ts} +0 -0
  108. /package/{index.ts → index.d.ts} +0 -0
  109. /package/links/{index.ts → index.d.ts} +0 -0
  110. /package/serializers/{index.ts → index.d.ts} +0 -0
@@ -1,21 +1,16 @@
1
1
  import { RpcEndpointBase } from "./RpcEndpointBase";
2
2
  import { Endpoint } from "../Endpoint";
3
- import { HttpMethod, HttpHeader } from "../../http";
4
-
5
3
  /**
6
4
  * RPC endpoint that takes `TEntity` as input when invoked.
7
5
  * @typeParam TEntity The type of entity the endpoint takes as input.
8
6
  */
9
- export class ConsumerEndpoint<TEntity> extends RpcEndpointBase {
7
+ export declare class ConsumerEndpoint<TEntity> extends RpcEndpointBase {
10
8
  /**
11
9
  * Creates a new consumer endpoint.
12
10
  * @param referrer The endpoint used to navigate to this one.
13
11
  * @param relativeUri The URI of this endpoint relative to the `referrer`'s. Add a `./` prefix here to imply a trailing slash in the `referrer`'s URI.
14
12
  */
15
- constructor(referrer: Endpoint, relativeUri: URL | string) {
16
- super(referrer, relativeUri);
17
- }
18
-
13
+ constructor(referrer: Endpoint, relativeUri: URL | string);
19
14
  /**
20
15
  * Sends the entity to the consumer.
21
16
  * @param entity The `TEntity` to post as input.
@@ -25,9 +20,5 @@ export class ConsumerEndpoint<TEntity> extends RpcEndpointBase {
25
20
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
26
21
  * @throws {@link errors!HttpError}: Other non-success status code
27
22
  */
28
- async invoke(entity: TEntity, signal?: AbortSignal) {
29
- await this.send(HttpMethod.Post, signal, {
30
- [HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
31
- }, this.serializer.serialize(entity));
32
- }
23
+ invoke(entity: TEntity, signal?: AbortSignal): Promise<void>;
33
24
  }
@@ -1,13 +1,4 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.ConsumerEndpoint = void 0;
13
4
  const RpcEndpointBase_1 = require("./RpcEndpointBase");
@@ -34,13 +25,11 @@ class ConsumerEndpoint extends RpcEndpointBase_1.RpcEndpointBase {
34
25
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
35
26
  * @throws {@link errors!HttpError}: Other non-success status code
36
27
  */
37
- invoke(entity, signal) {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- yield this.send(http_1.HttpMethod.Post, signal, {
40
- [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
41
- }, this.serializer.serialize(entity));
42
- });
28
+ async invoke(entity, signal) {
29
+ await this.send(http_1.HttpMethod.Post, signal, {
30
+ [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
31
+ }, this.serializer.serialize(entity));
43
32
  }
44
33
  }
45
34
  exports.ConsumerEndpoint = ConsumerEndpoint;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZXJFbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnN1bWVyRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUFvRDtBQUVwRDs7O0dBR0c7QUFDSCxNQUFhLGdCQUEwQixTQUFRLGlDQUFlO0lBQzFEOzs7O09BSUc7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUI7UUFDckQsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDRyxNQUFNLENBQUMsTUFBZSxFQUFFLE1BQW9COztZQUM5QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNyQyxDQUFDLGlCQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7YUFDbkUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7S0FBQTtDQUNKO0FBeEJELDRDQXdCQyJ9
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZXJFbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnN1bWVyRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUFvRDtBQUVwRDs7O0dBR0c7QUFDSCxNQUFhLGdCQUEwQixTQUFRLGlDQUFlO0lBQzFEOzs7O09BSUc7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUI7UUFDckQsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWUsRUFBRSxNQUFvQjtRQUM5QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3JDLENBQUMsaUJBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztTQUNuRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBeEJELDRDQXdCQyJ9
@@ -1,22 +1,17 @@
1
1
  import { RpcEndpointBase } from "./RpcEndpointBase";
2
2
  import { Endpoint } from "../Endpoint";
3
- import { HttpMethod, HttpHeader } from "../../http";
4
-
5
3
  /**
6
4
  * RPC endpoint that takes `TEntity` as input and returns `TResult` as output when invoked.
7
5
  * @typeParam TEntity The type of entity the endpoint takes as input.
8
6
  * @typeParam TResult The type of entity the endpoint returns as output.
9
7
  */
10
- export class FunctionEndpoint<TEntity, TResult> extends RpcEndpointBase {
8
+ export declare class FunctionEndpoint<TEntity, TResult> extends RpcEndpointBase {
11
9
  /**
12
10
  * Creates a new function endpoint.
13
11
  * @param referrer The endpoint used to navigate to this one.
14
12
  * @param relativeUri The URI of this endpoint relative to the `referrer`'s. Add a `./` prefix here to imply a trailing slash in the `referrer`'s URI.
15
13
  */
16
- constructor(referrer: Endpoint, relativeUri: URL | string) {
17
- super(referrer, relativeUri);
18
- }
19
-
14
+ constructor(referrer: Endpoint, relativeUri: URL | string);
20
15
  /**
21
16
  * Invokes the function.
22
17
  * @param entity The `TEntity` to post as input.
@@ -27,11 +22,5 @@ export class FunctionEndpoint<TEntity, TResult> extends RpcEndpointBase {
27
22
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
28
23
  * @throws {@link errors!HttpError}: Other non-success status code
29
24
  */
30
- async invoke(entity: TEntity, signal?: AbortSignal): Promise<TResult> {
31
- const response = await this.send(HttpMethod.Post, signal, {
32
- [HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
33
- }, this.serializer.serialize(entity));
34
-
35
- return this.serializer.deserialize<TResult>(await response.text());
36
- }
25
+ invoke(entity: TEntity, signal?: AbortSignal): Promise<TResult>;
37
26
  }
@@ -1,13 +1,4 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.FunctionEndpoint = void 0;
13
4
  const RpcEndpointBase_1 = require("./RpcEndpointBase");
@@ -36,14 +27,12 @@ class FunctionEndpoint extends RpcEndpointBase_1.RpcEndpointBase {
36
27
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
37
28
  * @throws {@link errors!HttpError}: Other non-success status code
38
29
  */
39
- invoke(entity, signal) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- const response = yield this.send(http_1.HttpMethod.Post, signal, {
42
- [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
43
- }, this.serializer.serialize(entity));
44
- return this.serializer.deserialize(yield response.text());
45
- });
30
+ async invoke(entity, signal) {
31
+ const response = await this.send(http_1.HttpMethod.Post, signal, {
32
+ [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
33
+ }, this.serializer.serialize(entity));
34
+ return this.serializer.deserialize(await response.text());
46
35
  }
47
36
  }
48
37
  exports.FunctionEndpoint = FunctionEndpoint;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25FbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZ1bmN0aW9uRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUFvRDtBQUVwRDs7OztHQUlHO0FBQ0gsTUFBYSxnQkFBbUMsU0FBUSxpQ0FBZTtJQUNuRTs7OztPQUlHO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFdBQXlCO1FBQ3JELEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNHLE1BQU0sQ0FBQyxNQUFlLEVBQUUsTUFBb0I7O1lBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3RELENBQUMsaUJBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQzthQUNuRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBVSxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7S0FBQTtDQUNKO0FBM0JELDRDQTJCQyJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25FbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZ1bmN0aW9uRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUFvRDtBQUVwRDs7OztHQUlHO0FBQ0gsTUFBYSxnQkFBbUMsU0FBUSxpQ0FBZTtJQUNuRTs7OztPQUlHO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFdBQXlCO1FBQ3JELEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBZSxFQUFFLE1BQW9CO1FBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDdEQsQ0FBQyxpQkFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1NBQ25FLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFVLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNKO0FBM0JELDRDQTJCQyJ9
@@ -1,21 +1,16 @@
1
1
  import { RpcEndpointBase } from "./RpcEndpointBase";
2
2
  import { Endpoint } from "../Endpoint";
3
- import { HttpMethod } from "../../http";
4
-
5
3
  /**
6
4
  * RPC endpoint that returns `TResult` as output when invoked.
7
5
  * @typeParam TResult The type of entity the endpoint returns as output.
8
6
  */
9
- export class ProducerEndpoint<TResult> extends RpcEndpointBase {
7
+ export declare class ProducerEndpoint<TResult> extends RpcEndpointBase {
10
8
  /**
11
9
  * Creates a new producer endpoint.
12
10
  * @param referrer The endpoint used to navigate to this one.
13
11
  * @param relativeUri The URI of this endpoint relative to the `referrer`'s. Add a `./` prefix here to imply a trailing slash in the `referrer`'s URI.
14
12
  */
15
- constructor(referrer: Endpoint, relativeUri: URL | string) {
16
- super(referrer, relativeUri);
17
- }
18
-
13
+ constructor(referrer: Endpoint, relativeUri: URL | string);
19
14
  /**
20
15
  * Gets a result from the producer.
21
16
  * @param signal Used to cancel the request.
@@ -25,8 +20,5 @@ export class ProducerEndpoint<TResult> extends RpcEndpointBase {
25
20
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
26
21
  * @throws {@link errors!HttpError}: Other non-success status code
27
22
  */
28
- async invoke(signal?: AbortSignal): Promise<TResult> {
29
- const response = await this.send(HttpMethod.Post, signal);
30
- return this.serializer.deserialize<TResult>(await response.text());
31
- }
23
+ invoke(signal?: AbortSignal): Promise<TResult>;
32
24
  }
@@ -1,13 +1,4 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.ProducerEndpoint = void 0;
13
4
  const RpcEndpointBase_1 = require("./RpcEndpointBase");
@@ -34,12 +25,10 @@ class ProducerEndpoint extends RpcEndpointBase_1.RpcEndpointBase {
34
25
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
35
26
  * @throws {@link errors!HttpError}: Other non-success status code
36
27
  */
37
- invoke(signal) {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- const response = yield this.send(http_1.HttpMethod.Post, signal);
40
- return this.serializer.deserialize(yield response.text());
41
- });
28
+ async invoke(signal) {
29
+ const response = await this.send(http_1.HttpMethod.Post, signal);
30
+ return this.serializer.deserialize(await response.text());
42
31
  }
43
32
  }
44
33
  exports.ProducerEndpoint = ProducerEndpoint;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjZXJFbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlByb2R1Y2VyRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUF3QztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFhLGdCQUEwQixTQUFRLGlDQUFlO0lBQzFEOzs7O09BSUc7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUI7UUFDckQsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDRyxNQUFNLENBQUMsTUFBb0I7O1lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFVLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztLQUFBO0NBQ0o7QUF2QkQsNENBdUJDIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjZXJFbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlByb2R1Y2VyRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQW9EO0FBRXBELHFDQUF3QztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFhLGdCQUEwQixTQUFRLGlDQUFlO0lBQzFEOzs7O09BSUc7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUI7UUFDckQsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQW9CO1FBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFVLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNKO0FBdkJELDRDQXVCQyJ9
@@ -1,19 +1,14 @@
1
1
  import { Endpoint } from "../Endpoint";
2
- import { HttpMethod } from "../../http";
3
-
4
2
  /**
5
3
  * Base class for building RPC endpoints.
6
4
  */
7
- export class RpcEndpointBase extends Endpoint {
5
+ export declare class RpcEndpointBase extends Endpoint {
8
6
  /**
9
7
  * Creates a new RPC endpoint.
10
8
  * @param referrer The endpoint used to navigate to this one.
11
9
  * @param relativeUri The URI of this endpoint relative to the `referrer`'s. Add a `./` prefix here to imply a trailing slash in the `referrer`'s URI.
12
10
  */
13
- constructor(referrer: Endpoint, relativeUri: URL | string) {
14
- super(referrer, relativeUri);
15
- }
16
-
11
+ constructor(referrer: Endpoint, relativeUri: URL | string);
17
12
  /**
18
13
  * Queries the server about capabilities of the endpoint without performing any action.
19
14
  * @param signal Used to cancel the request.
@@ -22,14 +17,11 @@ export class RpcEndpointBase extends Endpoint {
22
17
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
23
18
  * @throws {@link errors!HttpError}: Other non-success status code
24
19
  */
25
- async probe(signal?: AbortSignal) {
26
- await this.send(HttpMethod.Options, signal);
27
- }
28
-
20
+ probe(signal?: AbortSignal): Promise<void>;
29
21
  /**
30
22
  * Shows whether the server has indicated that the invoke method is currently allowed.
31
23
  * Uses cached data from last response.
32
24
  * @returns `true` if the method is allowed, `false` if the method is not allowed, `undefined` if no request has been sent yet or the server did not specify allowed methods.
33
25
  */
34
- get invokeAllowed() { return this.isMethodAllowed(HttpMethod.Post); }
26
+ get invokeAllowed(): boolean | undefined;
35
27
  }
@@ -1,13 +1,4 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.RpcEndpointBase = void 0;
13
4
  const Endpoint_1 = require("../Endpoint");
@@ -32,10 +23,8 @@ class RpcEndpointBase extends Endpoint_1.Endpoint {
32
23
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
33
24
  * @throws {@link errors!HttpError}: Other non-success status code
34
25
  */
35
- probe(signal) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- yield this.send(http_1.HttpMethod.Options, signal);
38
- });
26
+ async probe(signal) {
27
+ await this.send(http_1.HttpMethod.Options, signal);
39
28
  }
40
29
  /**
41
30
  * Shows whether the server has indicated that the invoke method is currently allowed.
@@ -45,4 +34,4 @@ class RpcEndpointBase extends Endpoint_1.Endpoint {
45
34
  get invokeAllowed() { return this.isMethodAllowed(http_1.HttpMethod.Post); }
46
35
  }
47
36
  exports.RpcEndpointBase = RpcEndpointBase;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjRW5kcG9pbnRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUnBjRW5kcG9pbnRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QztBQUN2QyxxQ0FBd0M7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsbUJBQVE7SUFDekM7Ozs7T0FJRztJQUNILFlBQVksUUFBa0IsRUFBRSxXQUF5QjtRQUNyRCxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0csS0FBSyxDQUFDLE1BQW9COztZQUM1QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN4RTtBQTVCRCwwQ0E0QkMifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjRW5kcG9pbnRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUnBjRW5kcG9pbnRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QyxxQ0FBd0M7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsbUJBQVE7SUFDekM7Ozs7T0FJRztJQUNILFlBQVksUUFBa0IsRUFBRSxXQUF5QjtRQUNyRCxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFvQjtRQUM1QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDeEU7QUE1QkQsMENBNEJDIn0=
@@ -0,0 +1,21 @@
1
+ import { ErrorHandler } from "./ErrorHandler";
2
+ /**
3
+ * Handles errors in HTTP responses by mapping status codes to common error types.
4
+ */
5
+ export declare class DefaultErrorHandler implements ErrorHandler {
6
+ /**
7
+ * Throws appropriate `Error`s based on HTTP status codes and response bodies.
8
+ *
9
+ * @throws {@link errors!BadRequestError}: {@link http!HttpStatusCode.BadRequest}
10
+ * @throws {@link errors!AuthenticationError}: {@link http!HttpStatusCode.Unauthorized}
11
+ * @throws {@link errors!AuthorizationError}: {@link http!HttpStatusCode.Forbidden}
12
+ * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
13
+ * @throws {@link errors!TimeoutError}: {@link http!HttpStatusCode.RequestTimeout}
14
+ * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
15
+ * @throws {@link errors!ConcurrencyError}: {@link http!HttpStatusCode.PreconditionFailed}
16
+ * @throws {@link errors!RangeNotSatisfiableError}: {@link http!HttpStatusCode.RangeNotSatisfiable}
17
+ * @throws {@link errors!HttpError}: Other non-success status code
18
+ */
19
+ handle(response: Response): Promise<void>;
20
+ private static errorType;
21
+ }
@@ -1,13 +1,4 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.DefaultErrorHandler = void 0;
13
4
  const Errors_1 = require("./Errors");
@@ -26,26 +17,25 @@ class DefaultErrorHandler {
26
17
  * @throws {@link errors!TimeoutError}: {@link http!HttpStatusCode.RequestTimeout}
27
18
  * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
28
19
  * @throws {@link errors!ConcurrencyError}: {@link http!HttpStatusCode.PreconditionFailed}
20
+ * @throws {@link errors!RangeNotSatisfiableError}: {@link http!HttpStatusCode.RangeNotSatisfiable}
29
21
  * @throws {@link errors!HttpError}: Other non-success status code
30
22
  */
31
- handle(response) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- var _a, _b;
34
- if (response.ok)
35
- return;
36
- const contentType = response.headers.get(http_1.HttpHeader.ContentType);
37
- let jsonBody;
38
- if ((contentType === null || contentType === void 0 ? void 0 : contentType.startsWith("application/json")) || (contentType === null || contentType === void 0 ? void 0 : contentType.includes("+json"))) {
39
- try {
40
- jsonBody = yield response.json();
41
- }
42
- catch (_c) {
43
- jsonBody = undefined;
44
- }
23
+ async handle(response) {
24
+ var _a, _b;
25
+ if (response.ok)
26
+ return;
27
+ const contentType = response.headers.get(http_1.HttpHeader.ContentType);
28
+ let jsonBody;
29
+ if ((contentType === null || contentType === void 0 ? void 0 : contentType.startsWith("application/json")) || (contentType === null || contentType === void 0 ? void 0 : contentType.includes("+json"))) {
30
+ try {
31
+ jsonBody = await response.json();
45
32
  }
46
- const errorType = DefaultErrorHandler.errorType(response.status);
47
- throw new errorType((_b = (_a = jsonBody === null || jsonBody === void 0 ? void 0 : jsonBody.message) !== null && _a !== void 0 ? _a : jsonBody === null || jsonBody === void 0 ? void 0 : jsonBody.details) !== null && _b !== void 0 ? _b : `HTTP ${response.status} ${response.statusText}`, response.status, jsonBody);
48
- });
33
+ catch (_c) {
34
+ jsonBody = undefined;
35
+ }
36
+ }
37
+ const errorType = DefaultErrorHandler.errorType(response.status);
38
+ throw new errorType((_b = (_a = jsonBody === null || jsonBody === void 0 ? void 0 : jsonBody.message) !== null && _a !== void 0 ? _a : jsonBody === null || jsonBody === void 0 ? void 0 : jsonBody.details) !== null && _b !== void 0 ? _b : `HTTP ${response.status} ${response.statusText}`, response.status, jsonBody);
49
39
  }
50
40
  static errorType(status) {
51
41
  switch (status) {
@@ -64,10 +54,12 @@ class DefaultErrorHandler {
64
54
  return Errors_1.ConflictError;
65
55
  case http_1.HttpStatusCode.PreconditionFailed:
66
56
  return Errors_1.ConcurrencyError;
57
+ case http_1.HttpStatusCode.RangeNotSatisfiable:
58
+ return Errors_1.RangeNotSatisfiableError;
67
59
  default:
68
60
  return Errors_1.HttpError;
69
61
  }
70
62
  }
71
63
  }
72
64
  exports.DefaultErrorHandler = DefaultErrorHandler;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EscUNBQTZKO0FBQzdKLGtDQUFxRDtBQUVyRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzVCOzs7Ozs7Ozs7OztPQVdHO0lBQ0csTUFBTSxDQUFDLFFBQWtCOzs7WUFDM0IsSUFBSSxRQUFRLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBRXhCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakUsSUFBSSxRQUFhLENBQUM7WUFDbEIsSUFBSSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBSSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBLEVBQUUsQ0FBQztnQkFDaEYsSUFBSSxDQUFDO29CQUNELFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsQ0FBQztnQkFBQyxXQUFNLENBQUM7b0JBQ0wsUUFBUSxHQUFHLFNBQVMsQ0FBQztnQkFDekIsQ0FBQztZQUNMLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxTQUFTLENBQ2YsTUFBQSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxPQUFPLG1DQUFJLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxPQUFPLG1DQUFJLFFBQVEsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQzFGLFFBQVEsQ0FBQyxNQUFNLEVBQ2YsUUFBUSxDQUFDLENBQUM7UUFDbEIsQ0FBQztLQUFBO0lBRU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFzQjtRQUMzQyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2IsS0FBSyxxQkFBYyxDQUFDLFVBQVU7Z0JBQzFCLE9BQU8sd0JBQWUsQ0FBQztZQUMzQixLQUFLLHFCQUFjLENBQUMsWUFBWTtnQkFDNUIsT0FBTyw0QkFBbUIsQ0FBQztZQUMvQixLQUFLLHFCQUFjLENBQUMsU0FBUztnQkFDekIsT0FBTywyQkFBa0IsQ0FBQztZQUM5QixLQUFLLHFCQUFjLENBQUMsUUFBUSxDQUFDO1lBQzdCLEtBQUsscUJBQWMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLHNCQUFhLENBQUM7WUFDekIsS0FBSyxxQkFBYyxDQUFDLGNBQWM7Z0JBQzlCLE9BQU8scUJBQVksQ0FBQztZQUN4QixLQUFLLHFCQUFjLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxzQkFBYSxDQUFDO1lBQ3pCLEtBQUsscUJBQWMsQ0FBQyxrQkFBa0I7Z0JBQ2xDLE9BQU8seUJBQWdCLENBQUM7WUFDNUI7Z0JBQ0ksT0FBTyxrQkFBUyxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUF0REQsa0RBc0RDIn0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUNBQXVMO0FBQ3ZMLGtDQUFxRDtBQUVyRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzVCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBa0I7O1FBQzNCLElBQUksUUFBUSxDQUFDLEVBQUU7WUFBRSxPQUFPO1FBRXhCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakUsSUFBSSxRQUFhLENBQUM7UUFDbEIsSUFBSSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBSSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBLEVBQUUsQ0FBQztZQUNoRixJQUFJLENBQUM7Z0JBQ0QsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JDLENBQUM7WUFBQyxXQUFNLENBQUM7Z0JBQ0wsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUN6QixDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLFNBQVMsQ0FDZixNQUFBLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sbUNBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sbUNBQUksUUFBUSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFDMUYsUUFBUSxDQUFDLE1BQU0sRUFDZixRQUFRLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFzQjtRQUMzQyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2IsS0FBSyxxQkFBYyxDQUFDLFVBQVU7Z0JBQzFCLE9BQU8sd0JBQWUsQ0FBQztZQUMzQixLQUFLLHFCQUFjLENBQUMsWUFBWTtnQkFDNUIsT0FBTyw0QkFBbUIsQ0FBQztZQUMvQixLQUFLLHFCQUFjLENBQUMsU0FBUztnQkFDekIsT0FBTywyQkFBa0IsQ0FBQztZQUM5QixLQUFLLHFCQUFjLENBQUMsUUFBUSxDQUFDO1lBQzdCLEtBQUsscUJBQWMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLHNCQUFhLENBQUM7WUFDekIsS0FBSyxxQkFBYyxDQUFDLGNBQWM7Z0JBQzlCLE9BQU8scUJBQVksQ0FBQztZQUN4QixLQUFLLHFCQUFjLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxzQkFBYSxDQUFDO1lBQ3pCLEtBQUsscUJBQWMsQ0FBQyxrQkFBa0I7Z0JBQ2xDLE9BQU8seUJBQWdCLENBQUM7WUFDNUIsS0FBSyxxQkFBYyxDQUFDLG1CQUFtQjtnQkFDbkMsT0FBTyxpQ0FBd0IsQ0FBQztZQUNwQztnQkFDSSxPQUFPLGtCQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXpERCxrREF5REMifQ==
@@ -1,51 +1,55 @@
1
1
  import { HttpStatusCode } from "../http";
2
-
3
2
  /**
4
3
  * Thrown on HTTP response with a non-successful status code (4xx or 5xx).
5
4
  */
6
- export class HttpError extends Error {
5
+ export declare class HttpError extends Error {
6
+ status: HttpStatusCode;
7
+ data?: any | undefined;
7
8
  /**
8
9
  * Creates a new HTTP error.
9
10
  * @param message The error message.
10
11
  * @param status The HTTP status code.
11
12
  * @param data Additional error data.
12
13
  */
13
- constructor(message: string, public status: HttpStatusCode, public data?: any) {
14
- super(message);
15
- }
14
+ constructor(message: string, status: HttpStatusCode, data?: any | undefined);
16
15
  }
17
-
18
16
  /**
19
17
  * Thrown on HTTP response for a bad request (usually {@link http!HttpStatusCode.BadRequest}).
20
18
  */
21
- export class BadRequestError extends HttpError {}
22
-
19
+ export declare class BadRequestError extends HttpError {
20
+ }
23
21
  /**
24
22
  * Thrown on HTTP response for an unauthenticated request, i.e. missing credentials (usually {@link http!HttpStatusCode.Unauthorized}).
25
23
  */
26
- export class AuthenticationError extends HttpError {}
27
-
24
+ export declare class AuthenticationError extends HttpError {
25
+ }
28
26
  /**
29
27
  * Thrown on HTTP response for an unauthorized request, i.e. missing permissions (usually {@link http!HttpStatusCode.Forbidden}).
30
28
  */
31
- export class AuthorizationError extends HttpError {}
32
-
29
+ export declare class AuthorizationError extends HttpError {
30
+ }
33
31
  /**
34
32
  * Thrown on HTTP response for a missing resource (usually {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}).
35
33
  */
36
- export class NotFoundError extends HttpError {}
37
-
34
+ export declare class NotFoundError extends HttpError {
35
+ }
38
36
  /**
39
37
  * Thrown on HTTP response for a timed-out operation (usually {@link http!HttpStatusCode.RequestTimeout}).
40
38
  */
41
- export class TimeoutError extends HttpError {}
42
-
39
+ export declare class TimeoutError extends HttpError {
40
+ }
43
41
  /**
44
42
  * Thrown on HTTP response for a resource conflict (usually {@link http!HttpStatusCode.Conflict}).
45
43
  */
46
- export class ConflictError extends HttpError {}
47
-
44
+ export declare class ConflictError extends HttpError {
45
+ }
48
46
  /**
49
47
  * Thrown on HTTP response for a failed precondition or mid-air collision (usually {@link http!HttpStatusCode.PreconditionFailed}).
50
48
  */
51
- export class ConcurrencyError extends HttpError {}
49
+ export declare class ConcurrencyError extends HttpError {
50
+ }
51
+ /**
52
+ * Thrown on HTTP response for a requested range that the server can not provide (usually {@link http!HttpStatusCode.RangeNotSatisfiable}).
53
+ */
54
+ export declare class RangeNotSatisfiableError extends HttpError {
55
+ }
package/errors/Errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConcurrencyError = exports.ConflictError = exports.TimeoutError = exports.NotFoundError = exports.AuthorizationError = exports.AuthenticationError = exports.BadRequestError = exports.HttpError = void 0;
3
+ exports.RangeNotSatisfiableError = exports.ConcurrencyError = exports.ConflictError = exports.TimeoutError = exports.NotFoundError = exports.AuthorizationError = exports.AuthenticationError = exports.BadRequestError = exports.HttpError = void 0;
4
4
  /**
5
5
  * Thrown on HTTP response with a non-successful status code (4xx or 5xx).
6
6
  */
@@ -60,4 +60,10 @@ exports.ConflictError = ConflictError;
60
60
  class ConcurrencyError extends HttpError {
61
61
  }
62
62
  exports.ConcurrencyError = ConcurrencyError;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsS0FBSztJQUNoQzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZSxFQUFTLE1BQXNCLEVBQVMsSUFBVTtRQUN6RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEaUIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFNO0lBRTdFLENBQUM7Q0FDSjtBQVZELDhCQVVDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsU0FBUztDQUFHO0FBQWpELDBDQUFpRDtBQUVqRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsU0FBUztDQUFHO0FBQXJELGtEQUFxRDtBQUVyRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsU0FBUztDQUFHO0FBQXBELGdEQUFvRDtBQUVwRDs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLFNBQVM7Q0FBRztBQUEvQyxzQ0FBK0M7QUFFL0M7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxTQUFTO0NBQUc7QUFBOUMsb0NBQThDO0FBRTlDOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsU0FBUztDQUFHO0FBQS9DLHNDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsU0FBUztDQUFHO0FBQWxELDRDQUFrRCJ9
63
+ /**
64
+ * Thrown on HTTP response for a requested range that the server can not provide (usually {@link http!HttpStatusCode.RangeNotSatisfiable}).
65
+ */
66
+ class RangeNotSatisfiableError extends HttpError {
67
+ }
68
+ exports.RangeNotSatisfiableError = RangeNotSatisfiableError;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsS0FBSztJQUNoQzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZSxFQUFTLE1BQXNCLEVBQVMsSUFBVTtRQUN6RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEaUIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFNO0lBRTdFLENBQUM7Q0FDSjtBQVZELDhCQVVDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsU0FBUztDQUFHO0FBQWpELDBDQUFpRDtBQUVqRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsU0FBUztDQUFHO0FBQXJELGtEQUFxRDtBQUVyRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsU0FBUztDQUFHO0FBQXBELGdEQUFvRDtBQUVwRDs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLFNBQVM7Q0FBRztBQUEvQyxzQ0FBK0M7QUFFL0M7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxTQUFTO0NBQUc7QUFBOUMsb0NBQThDO0FBRTlDOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsU0FBUztDQUFHO0FBQS9DLHNDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsU0FBUztDQUFHO0FBQWxELDRDQUFrRDtBQUVsRDs7R0FFRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsU0FBUztDQUFHO0FBQTFELDREQUEwRCJ9
@@ -0,0 +1,10 @@
1
+ import { Serializer } from "../serializers";
2
+ /**
3
+ * Exposes the body of a `Response` as a stream of deserialized entities.
4
+ * @typeParam TEntity The type of entity the stream provides.
5
+ * @param response The response to read the body from.
6
+ * @param serializer Controls the deserialization of the entities in the body.
7
+ * @param separator The character sequence used to detect that a new entity starts in the stream.
8
+ * @returns A stream that ends when the server closes the connection.
9
+ */
10
+ export declare function entityStream<TEntity>(response: Response, serializer: Serializer, separator?: string): AsyncIterableIterator<TEntity>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.entityStream = entityStream;
4
+ /**
5
+ * Exposes the body of a `Response` as a stream of deserialized entities.
6
+ * @typeParam TEntity The type of entity the stream provides.
7
+ * @param response The response to read the body from.
8
+ * @param serializer Controls the deserialization of the entities in the body.
9
+ * @param separator The character sequence used to detect that a new entity starts in the stream.
10
+ * @returns A stream that ends when the server closes the connection.
11
+ */
12
+ async function* entityStream(response, serializer, separator = "\n") {
13
+ if (!response.body)
14
+ return;
15
+ const reader = response.body.getReader();
16
+ const decoder = new TextDecoder();
17
+ let buffer = "";
18
+ try {
19
+ while (true) {
20
+ const { done, value } = await reader.read();
21
+ if (done)
22
+ break;
23
+ buffer += decoder.decode(value, { stream: true });
24
+ let index;
25
+ while ((index = buffer.indexOf(separator)) !== -1) {
26
+ const entity = buffer.slice(0, index);
27
+ buffer = buffer.slice(index + separator.length);
28
+ if (entity.trim())
29
+ yield serializer.deserialize(entity);
30
+ }
31
+ }
32
+ // Tolerate a missing separator after the last entity
33
+ buffer += decoder.decode();
34
+ if (buffer.trim())
35
+ yield serializer.deserialize(buffer);
36
+ }
37
+ finally {
38
+ // NOTE: Ignore errors here so that a failure that already ended the stream is not masked.
39
+ await reader.cancel().catch(() => { });
40
+ }
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5U3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRW50aXR5U3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsb0NBNkJDO0FBckNEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBVSxRQUFrQixFQUFFLFVBQXNCLEVBQUUsWUFBb0IsSUFBSTtJQUM3RyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBRTNCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxDQUFDO1FBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxJQUFJO2dCQUFFLE1BQU07WUFFaEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFbEQsSUFBSSxLQUFhLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtvQkFBRSxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQVUsTUFBTSxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNMLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQVUsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztZQUFTLENBQUM7UUFDUCwwRkFBMEY7UUFDMUYsTUFBTSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDTCxDQUFDIn0=
@@ -0,0 +1,15 @@
1
+ import { HttpMethod } from "./HttpMethod";
2
+ import { HttpClient } from "./HttpClient";
3
+ /**
4
+ * Communicates with remote resources using JavaScript's standard Fetch API.
5
+ */
6
+ export declare class FetchHttpClient implements HttpClient {
7
+ /**
8
+ * @inheritDoc
9
+ */
10
+ defaultHeaders: Headers;
11
+ /**
12
+ * @inheritDoc
13
+ */
14
+ send(uri: URL, method: HttpMethod, signal?: AbortSignal, headers?: RequestInit["headers"], body?: RequestInit["body"]): Promise<Response>;
15
+ }
@@ -25,4 +25,4 @@ class FetchHttpClient {
25
25
  }
26
26
  }
27
27
  exports.FetchHttpClient = FetchHttpClient;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmV0Y2hIdHRwQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRmV0Y2hIdHRwQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBQTVCO1FBQ0k7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFlbkMsQ0FBQztJQWJHOztPQUVHO0lBQ0gsSUFBSSxDQUFDLEdBQVEsRUFBRSxNQUFrQixFQUFFLE1BQW9CLEVBQUUsT0FBcUIsRUFBRSxJQUFlO1FBQzNGLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0o7QUFuQkQsMENBbUJDIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmV0Y2hIdHRwQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRmV0Y2hIdHRwQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBQTVCO1FBQ0k7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFlbkMsQ0FBQztJQWJHOztPQUVHO0lBQ0gsSUFBSSxDQUFDLEdBQVEsRUFBRSxNQUFrQixFQUFFLE1BQW9CLEVBQUUsT0FBZ0MsRUFBRSxJQUEwQjtRQUNqSCxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNKO0FBbkJELDBDQW1CQyJ9
@@ -1,5 +1,4 @@
1
1
  import { HttpMethod } from "./HttpMethod";
2
-
3
2
  /**
4
3
  * HTTP client used to communicate with remote resources.
5
4
  */
@@ -8,7 +7,6 @@ export interface HttpClient {
8
7
  * Default HTTP headers to set for requests when not explicitly overridden.
9
8
  */
10
9
  defaultHeaders: Headers;
11
-
12
10
  /**
13
11
  * Sends an HTTP request.
14
12
  * @param uri The URI to send the message to.
@@ -17,5 +15,5 @@ export interface HttpClient {
17
15
  * @param headers The HTTP headers to set.
18
16
  * @param body The body to send.
19
17
  */
20
- send(uri: URL, method: HttpMethod, signal?: AbortSignal, headers?: HeadersInit, body?: BodyInit): Promise<Response>;
18
+ send(uri: URL, method: HttpMethod, signal?: AbortSignal, headers?: RequestInit["headers"], body?: RequestInit["body"]): Promise<Response>;
21
19
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Describes which subset of a set of elements a response contains.
3
+ */
4
+ export declare class HttpContentRange {
5
+ readonly unit: string;
6
+ readonly from?: number | undefined;
7
+ readonly to?: number | undefined;
8
+ readonly length?: number | undefined;
9
+ /**
10
+ * Creates a new content range.
11
+ * @param unit The unit the range is expressed in, e.g. `elements`.
12
+ * @param from The index at which the data starts.
13
+ * @param to The index at which the data stops.
14
+ * @param length The total number of elements available on the server; `undefined` if unknown.
15
+ */
16
+ constructor(unit: string, from?: number | undefined, to?: number | undefined, length?: number | undefined);
17
+ private static readonly pattern;
18
+ /**
19
+ * Extracts the content range from a `Response`.
20
+ * @returns The content range; `undefined` if the response has no (valid) {@link HttpHeader.ContentRange} header.
21
+ */
22
+ static from(response: Response): HttpContentRange | undefined;
23
+ }