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,16 +1,8 @@
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.GenericCollectionEndpoint = void 0;
13
4
  const ETagEndpointBase_1 = require("./ETagEndpointBase");
5
+ const PartialResponse_1 = require("./PartialResponse");
14
6
  const http_1 = require("../../http");
15
7
  /**
16
8
  * Endpoint for a collection of `TEntity`s addressable as `TElementEndpoint`s.<br>
@@ -28,6 +20,12 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
28
20
  constructor(referrer, relativeUri, elementEndpoint) {
29
21
  super(referrer, relativeUri);
30
22
  this.elementEndpoint = elementEndpoint;
23
+ /**
24
+ * The unit used when requesting ranges of elements. Sent in the {@link http!HttpHeader.Range} header.
25
+ */
26
+ this.rangeUnit = "elements";
27
+ // NOTE: Only modified when the server reports its capabilities.
28
+ this.acceptedRangeUnits = [];
31
29
  this.setDefaultLinkTemplate("child", "./{id}");
32
30
  }
33
31
  /**
@@ -64,10 +62,44 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
64
62
  * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
65
63
  * @throws {@link errors!HttpError}: Other non-success status code
66
64
  */
67
- readAll(signal) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- return this.serializer.deserialize(yield this.getContent(signal));
65
+ async readAll(signal) {
66
+ return this.serializer.deserialize(await this.getContent(signal));
67
+ }
68
+ /**
69
+ * @inheritDoc
70
+ */
71
+ handleCapabilities(response) {
72
+ super.handleCapabilities(response);
73
+ const header = response.headers.get(http_1.HttpHeader.AcceptRanges);
74
+ if (header) {
75
+ this.acceptedRangeUnits = header.split(",").map(x => x.trim());
76
+ }
77
+ }
78
+ /**
79
+ * Shows whether the server has indicated that {@link readRange} is currently allowed.
80
+ * Uses cached data from last response.
81
+ * @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 accepted range units.
82
+ */
83
+ get readRangeAllowed() {
84
+ if (this.acceptedRangeUnits.length === 0)
85
+ return undefined;
86
+ return this.acceptedRangeUnits.indexOf(this.rangeUnit) !== -1;
87
+ }
88
+ /**
89
+ * Returns a subset of the `TEntity`s in the collection.
90
+ * @param from The index of the first element to return. Leave unspecified to return the last `to` elements ("tail").
91
+ * @param to The index of the last element to return. Leave unspecified to return all elements starting at `from`.
92
+ * @param signal Used to cancel the request.
93
+ * @throws {@link errors!AuthenticationError}: {@link http!HttpStatusCode.Unauthorized}
94
+ * @throws {@link errors!AuthorizationError}: {@link http!HttpStatusCode.Forbidden}
95
+ * @throws {@link errors!RangeNotSatisfiableError}: {@link http!HttpStatusCode.RangeNotSatisfiable}, i.e. the requested range lies outside of the elements currently available
96
+ * @throws {@link errors!HttpError}: Other non-success status code
97
+ */
98
+ async readRange(from, to, signal) {
99
+ const response = await this.send(http_1.HttpMethod.Get, signal, {
100
+ [http_1.HttpHeader.Range]: `${this.rangeUnit}=${from !== null && from !== void 0 ? from : ""}-${to !== null && to !== void 0 ? to : ""}`
70
101
  });
102
+ return new PartialResponse_1.PartialResponse(this.serializer.deserialize(await response.text()), http_1.HttpContentRange.from(response));
71
103
  }
72
104
  /**
73
105
  * Shows whether the server has indicated that {@link create} is currently allowed.
@@ -86,30 +118,28 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
86
118
  * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
87
119
  * @throws {@link errors!HttpError}: Other non-success status code
88
120
  */
89
- create(entity, signal) {
90
- return __awaiter(this, void 0, void 0, function* () {
91
- const response = yield this.send(http_1.HttpMethod.Post, signal, {
92
- [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
93
- }, this.serializer.serialize(entity));
94
- const location = response.headers.get(http_1.HttpHeader.Location);
95
- let elementEndpoint;
96
- if (location) {
97
- // Explicit element endpoint URL from "Location" header
98
- elementEndpoint = new this.elementEndpoint(this, this.join(location));
121
+ async create(entity, signal) {
122
+ const response = await this.send(http_1.HttpMethod.Post, signal, {
123
+ [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
124
+ }, this.serializer.serialize(entity));
125
+ const location = response.headers.get(http_1.HttpHeader.Location);
126
+ let elementEndpoint;
127
+ if (location) {
128
+ // Explicit element endpoint URL from "Location" header
129
+ elementEndpoint = new this.elementEndpoint(this, this.join(location));
130
+ }
131
+ else {
132
+ try {
133
+ // Infer URL from entity ID in response body
134
+ elementEndpoint = this.get(this.serializer.deserialize(await response.clone().text()));
99
135
  }
100
- else {
101
- try {
102
- // Infer URL from entity ID in response body
103
- elementEndpoint = this.get(this.serializer.deserialize(yield response.clone().text()));
104
- }
105
- catch (_a) {
106
- // No element endpoint
107
- return undefined;
108
- }
136
+ catch (_a) {
137
+ // No element endpoint
138
+ return undefined;
109
139
  }
110
- elementEndpoint.responseCache = yield http_1.ResponseCache.from(response);
111
- return elementEndpoint;
112
- });
140
+ }
141
+ elementEndpoint.responseCache = await http_1.ResponseCache.from(response);
142
+ return elementEndpoint;
113
143
  }
114
144
  /**
115
145
  * Shows whether the server has indicated that {@link createAll} is currently allowed.
@@ -127,12 +157,10 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
127
157
  * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
128
158
  * @throws {@link errors!HttpError}: Other non-success status code
129
159
  */
130
- createAll(entities, signal) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- yield this.send(http_1.HttpMethod.Patch, signal, {
133
- [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
134
- }, this.serializer.serialize(entities));
135
- });
160
+ async createAll(entities, signal) {
161
+ await this.send(http_1.HttpMethod.Patch, signal, {
162
+ [http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
163
+ }, this.serializer.serialize(entities));
136
164
  }
137
165
  /**
138
166
  * Shows whether the server has indicated that {@link setAll} is currently allowed.
@@ -149,9 +177,7 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
149
177
  * @throws {@link errors!ConflictError}: {@link http!HttpStatusCode.Conflict}
150
178
  * @throws {@link errors!HttpError}: Other non-success status code
151
179
  */
152
- setAll(entities) {
153
- return __awaiter(this, void 0, void 0, function* () { yield this.putContent(entities); });
154
- }
180
+ async setAll(entities) { await this.putContent(entities); }
155
181
  /**
156
182
  * Determines whether the collection contains a specific element.
157
183
  * @param element The ID identifying the entity or an entity to extract the ID from.
@@ -193,4 +219,4 @@ class GenericCollectionEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
193
219
  delete(element) { return this.get(element).delete(); }
194
220
  }
195
221
  exports.GenericCollectionEndpoint = GenericCollectionEndpoint;
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJpY0NvbGxlY3Rpb25FbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkdlbmVyaWNDb2xsZWN0aW9uRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseURBQXNEO0FBSXRELHFDQUFtRTtBQUVuRTs7Ozs7R0FLRztBQUNILE1BQWEseUJBQXNGLFNBQVEsbUNBQWdCO0lBQ3ZIOzs7OztPQUtHO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFdBQXlCLEVBQW1CLGVBQXVFO1FBQy9JLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFEMkMsb0JBQWUsR0FBZixlQUFlLENBQXdEO1FBRS9JLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxPQUEyQjtRQUMzQixJQUFJLE9BQU8sSUFBSSxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBRWpGLElBQUksRUFBVSxDQUFDO1FBQ2YsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ0osRUFBRSxHQUFJLE9BQWUsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxFQUFFLEtBQUssU0FBUztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsT0FBTyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFDRCxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFFOUUsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVB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
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJpY0NvbGxlY3Rpb25FbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkdlbmVyaWNDb2xsZWN0aW9uRW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQXNEO0FBRXRELHVEQUFvRDtBQUdwRCxxQ0FBcUY7QUFFckY7Ozs7O0dBS0c7QUFDSCxNQUFhLHlCQUFzRixTQUFRLG1DQUFnQjtJQUN2SDs7Ozs7T0FLRztJQUNILFlBQVksUUFBa0IsRUFBRSxXQUF5QixFQUFtQixlQUF1RTtRQUMvSSxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRDJDLG9CQUFlLEdBQWYsZUFBZSxDQUF3RDtRQTJDbko7O1dBRUc7UUFDSCxjQUFTLEdBQUcsVUFBVSxDQUFDO1FBRXZCLGdFQUFnRTtRQUN4RCx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUEvQ3RDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxPQUEyQjtRQUMzQixJQUFJLE9BQU8sSUFBSSxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBRWpGLElBQUksRUFBVSxDQUFDO1FBQ2YsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ0osRUFBRSxHQUFJLE9BQWUsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxFQUFFLEtBQUssU0FBUztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsT0FBTyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFDRCxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFD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
@@ -1,27 +1,20 @@
1
1
  import { Endpoint } from "../Endpoint";
2
-
3
2
  /**
4
3
  * Endpoint that addresses child `TElementEndpoint`s by ID.
5
4
  * @typeParam TElementEndpoint The type of {@link Endpoint} to provide for individual elements.
6
5
  */
7
- export class IndexerEndpoint<TElementEndpoint extends Endpoint> extends Endpoint {
6
+ export declare class IndexerEndpoint<TElementEndpoint extends Endpoint> extends Endpoint {
7
+ private readonly elementEndpoint;
8
8
  /**
9
9
  * Creates a new indexer endpoint.
10
10
  * @param referrer The endpoint used to navigate to this one.
11
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.
12
12
  * @param elementEndpoint A factory method for creating instances of `TElementEndpoint`.
13
13
  */
14
- constructor(referrer: Endpoint, relativeUri: URL | string, private readonly elementEndpoint: new (referrer: Endpoint, uri: URL) => TElementEndpoint) {
15
- super(referrer, relativeUri);
16
- this.setDefaultLinkTemplate("child", "./{id}");
17
- }
18
-
14
+ constructor(referrer: Endpoint, relativeUri: URL | string, elementEndpoint: new (referrer: Endpoint, uri: URL) => TElementEndpoint);
19
15
  /**
20
16
  * Returns a `TElementEndpoint` for a specific child element.
21
17
  * @param id The ID identifying the entity.
22
18
  */
23
- get(id: string): TElementEndpoint {
24
- if (id == null || id === "") throw new Error("id must not be null, unspecified or empty.");
25
- return new this.elementEndpoint(this, this.linkTemplate("child", { id }));
26
- }
19
+ get(id: string): TElementEndpoint;
27
20
  }
@@ -0,0 +1,19 @@
1
+ import { HttpContentRange } from "../../http";
2
+ /**
3
+ * Represents a subset of a set of elements.
4
+ * @typeParam TEntity The type of element the response contains.
5
+ */
6
+ export declare class PartialResponse<TEntity> {
7
+ readonly elements: TEntity[];
8
+ readonly range?: HttpContentRange | undefined;
9
+ /**
10
+ * Creates a new partial response.
11
+ * @param elements The returned elements.
12
+ * @param range The range the `elements` come from.
13
+ */
14
+ constructor(elements: TEntity[], range?: HttpContentRange | undefined);
15
+ /**
16
+ * Indicates whether the response reaches the end of the elements available on the server.
17
+ */
18
+ get endReached(): boolean;
19
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartialResponse = void 0;
4
+ /**
5
+ * Represents a subset of a set of elements.
6
+ * @typeParam TEntity The type of element the response contains.
7
+ */
8
+ class PartialResponse {
9
+ /**
10
+ * Creates a new partial response.
11
+ * @param elements The returned elements.
12
+ * @param range The range the `elements` come from.
13
+ */
14
+ constructor(elements, range) {
15
+ this.elements = elements;
16
+ this.range = range;
17
+ }
18
+ /**
19
+ * Indicates whether the response reaches the end of the elements available on the server.
20
+ */
21
+ get endReached() {
22
+ var _a;
23
+ // No range specified, must be complete response
24
+ if (((_a = this.range) === null || _a === void 0 ? void 0 : _a.to) === undefined)
25
+ return true;
26
+ // No length specified, can't be the end
27
+ if (this.range.length === undefined)
28
+ return false;
29
+ return this.range.to === this.range.length - 1;
30
+ }
31
+ }
32
+ exports.PartialResponse = PartialResponse;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFydGlhbFJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGFydGlhbFJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7R0FHRztBQUNILE1BQWEsZUFBZTtJQUN4Qjs7OztPQUlHO0lBQ0gsWUFBNEIsUUFBbUIsRUFBa0IsS0FBd0I7UUFBN0QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFrQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtJQUN6RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFVBQVU7O1FBQ1YsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLEVBQUUsTUFBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFOUMsd0NBQXdDO1FBQ3hDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRWxELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDSjtBQXJCRCwwQ0FxQkMifQ==
@@ -1,5 +1,6 @@
1
1
  export * from "./IndexerEndpoint";
2
2
  export * from "./ETagEndpointBase";
3
+ export * from "./PartialResponse";
3
4
  export * from "./GenericCollectionEndpoint";
4
5
  export * from "./CollectionEndpoint";
5
6
  export * from "./ElementEndpoint";
@@ -16,7 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./IndexerEndpoint"), exports);
18
18
  __exportStar(require("./ETagEndpointBase"), exports);
19
+ __exportStar(require("./PartialResponse"), exports);
19
20
  __exportStar(require("./GenericCollectionEndpoint"), exports);
20
21
  __exportStar(require("./CollectionEndpoint"), exports);
21
22
  __exportStar(require("./ElementEndpoint"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWtDO0FBQ2xDLHFEQUFtQztBQUNuQyw4REFBNEM7QUFDNUMsdURBQXFDO0FBQ3JDLG9EQUFrQyJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWtDO0FBQ2xDLHFEQUFtQztBQUNuQyxvREFBa0M7QUFDbEMsOERBQTRDO0FBQzVDLHVEQUFxQztBQUNyQyxvREFBa0MifQ==
@@ -1,7 +1,7 @@
1
- export * as generic from "./generic";
1
+ export * as generic from "./generic";
2
2
  export * as rpc from "./rpc";
3
3
  export * as raw from "./raw";
4
-
4
+ export * as reactive from "./reactive";
5
5
  export * from "./Endpoint";
6
6
  export * from "./EntryEndpoint";
7
7
  export * from "./CachingEndpoint";
@@ -36,11 +36,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.raw = exports.rpc = exports.generic = void 0;
39
+ exports.reactive = exports.raw = exports.rpc = exports.generic = void 0;
40
40
  exports.generic = __importStar(require("./generic"));
41
41
  exports.rpc = __importStar(require("./rpc"));
42
42
  exports.raw = __importStar(require("./raw"));
43
+ exports.reactive = __importStar(require("./reactive"));
43
44
  __exportStar(require("./Endpoint"), exports);
44
45
  __exportStar(require("./EntryEndpoint"), exports);
45
46
  __exportStar(require("./CachingEndpoint"), exports);
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUM7QUFDckMsNkNBQTZCO0FBQzdCLDZDQUE2QjtBQUU3Qiw2Q0FBMkI7QUFDM0Isa0RBQWdDO0FBQ2hDLG9EQUFrQyJ9
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUM7QUFDckMsNkNBQTZCO0FBQzdCLDZDQUE2QjtBQUM3Qix1REFBdUM7QUFFdkMsNkNBQTJCO0FBQzNCLGtEQUFnQztBQUNoQyxvREFBa0MifQ==
@@ -1,19 +1,14 @@
1
1
  import { Endpoint } from "../Endpoint";
2
- import { HttpMethod, HttpHeader } from "../../http";
3
-
4
2
  /**
5
3
  * Endpoint for a binary blob that can be downloaded or uploaded.
6
4
  */
7
- export class BlobEndpoint extends Endpoint {
5
+ export declare class BlobEndpoint extends Endpoint {
8
6
  /**
9
7
  * Creates a new blob 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,17 +17,13 @@ export class BlobEndpoint 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 {@link download} 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 downloadAllowed() { return this.isMethodAllowed(HttpMethod.Get); }
35
-
26
+ get downloadAllowed(): boolean | undefined;
36
27
  /**
37
28
  * Downloads the blob's content.
38
29
  * @param signal Used to cancel the request.
@@ -42,18 +33,13 @@ export class BlobEndpoint extends Endpoint {
42
33
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
43
34
  * @throws {@link errors!HttpError}: Other non-success status code
44
35
  */
45
- async download(signal?: AbortSignal): Promise<Blob> {
46
- const response = await this.send(HttpMethod.Get, signal);
47
- return response.blob();
48
- }
49
-
36
+ download(signal?: AbortSignal): Promise<Blob>;
50
37
  /**
51
38
  * Shows whether the server has indicated that {@link upload} is currently allowed.
52
39
  * Uses cached data from last response.
53
40
  * @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.
54
41
  */
55
- get uploadAllowed() { return this.isMethodAllowed(HttpMethod.Put); }
56
-
42
+ get uploadAllowed(): boolean | undefined;
57
43
  /**
58
44
  * Uploads data as the blob's content.
59
45
  * @param blob The blob to read the upload data from.
@@ -63,17 +49,13 @@ export class BlobEndpoint extends Endpoint {
63
49
  * @throws {@link errors!AuthorizationError}: {@link http!HttpStatusCode.Forbidden}
64
50
  * @throws {@link errors!HttpError}: Other non-success status code
65
51
  */
66
- async uploadFrom(blob: Blob, signal?: AbortSignal) {
67
- await this.send(HttpMethod.Put, signal, { [HttpHeader.ContentType]: blob.type }, blob);
68
- }
69
-
52
+ uploadFrom(blob: Blob, signal?: AbortSignal): Promise<void>;
70
53
  /**
71
54
  * Shows whether the server has indicated that {@link delete} is currently allowed.
72
55
  * Uses cached data from last response.
73
56
  * @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.
74
57
  */
75
- get deleteAllowed() { return this.isMethodAllowed(HttpMethod.Delete); }
76
-
58
+ get deleteAllowed(): boolean | undefined;
77
59
  /**
78
60
  * Deletes the blob from the server.
79
61
  * @param signal Used to cancel the request.
@@ -83,7 +65,5 @@ export class BlobEndpoint extends Endpoint {
83
65
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
84
66
  * @throws {@link errors!HttpError}: Other non-success status code
85
67
  */
86
- async delete(signal?: AbortSignal) {
87
- await this.send(HttpMethod.Delete, signal);
88
- }
68
+ delete(signal?: AbortSignal): Promise<void>;
89
69
  }
@@ -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.BlobEndpoint = void 0;
13
4
  const Endpoint_1 = require("../Endpoint");
@@ -32,10 +23,8 @@ class BlobEndpoint 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 {@link download} is currently allowed.
@@ -52,11 +41,9 @@ class BlobEndpoint extends Endpoint_1.Endpoint {
52
41
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
53
42
  * @throws {@link errors!HttpError}: Other non-success status code
54
43
  */
55
- download(signal) {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- const response = yield this.send(http_1.HttpMethod.Get, signal);
58
- return response.blob();
59
- });
44
+ async download(signal) {
45
+ const response = await this.send(http_1.HttpMethod.Get, signal);
46
+ return response.blob();
60
47
  }
61
48
  /**
62
49
  * Shows whether the server has indicated that {@link upload} is currently allowed.
@@ -73,10 +60,8 @@ class BlobEndpoint extends Endpoint_1.Endpoint {
73
60
  * @throws {@link errors!AuthorizationError}: {@link http!HttpStatusCode.Forbidden}
74
61
  * @throws {@link errors!HttpError}: Other non-success status code
75
62
  */
76
- uploadFrom(blob, signal) {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- yield this.send(http_1.HttpMethod.Put, signal, { [http_1.HttpHeader.ContentType]: blob.type }, blob);
79
- });
63
+ async uploadFrom(blob, signal) {
64
+ await this.send(http_1.HttpMethod.Put, signal, { [http_1.HttpHeader.ContentType]: blob.type }, blob);
80
65
  }
81
66
  /**
82
67
  * Shows whether the server has indicated that {@link delete} is currently allowed.
@@ -93,11 +78,9 @@ class BlobEndpoint extends Endpoint_1.Endpoint {
93
78
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
94
79
  * @throws {@link errors!HttpError}: Other non-success status code
95
80
  */
96
- delete(signal) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- yield this.send(http_1.HttpMethod.Delete, signal);
99
- });
81
+ async delete(signal) {
82
+ await this.send(http_1.HttpMethod.Delete, signal);
100
83
  }
101
84
  }
102
85
  exports.BlobEndpoint = BlobEndpoint;
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvYkVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQmxvYkVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QztBQUN2QyxxQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxtQkFBUTtJQUN0Qzs7OztPQUlHO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFdBQXlCO1FBQ3JELEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDRyxLQUFLLENBQUMsTUFBb0I7O1lBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO0tBQUE7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRFOzs7Ozs7OztPQVFHO0lBQ0csUUFBUSxDQUFDLE1BQW9COztZQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwRTs7Ozs7Ozs7T0FRRztJQUNHLFVBQVUsQ0FBQyxJQUFVLEVBQUUsTUFBb0I7O1lBQzdDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGlCQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNGLENBQUM7S0FBQTtJQUVEOzs7O09BSUc7SUFDSCxJQUFJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkU7Ozs7Ozs7O09BUUc7SUFDRyxNQUFNLENBQUMsTUFBb0I7O1lBQzdCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDO0tBQUE7Q0FDSjtBQWxGRCxvQ0FrRkMifQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvYkVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQmxvYkVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QyxxQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxtQkFBUTtJQUN0Qzs7OztPQUlHO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFdBQXlCO1FBQ3JELEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQW9CO1FBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RTs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBb0I7UUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBFOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFVLEVBQUUsTUFBb0I7UUFDN0MsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsaUJBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkU7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQW9CO1FBQzdCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0o7QUFsRkQsb0NBa0ZDIn0=
@@ -1,20 +1,16 @@
1
1
  import { Endpoint } from "../Endpoint";
2
- import { HttpMethod, HttpHeader } from "../../http";
3
-
4
2
  /**
5
3
  * Endpoint that accepts binary uploads using multi-part form encoding or raw bodies.
6
4
  */
7
- export class UploadEndpoint extends Endpoint {
5
+ export declare class UploadEndpoint extends Endpoint {
6
+ private readonly formField?;
8
7
  /**
9
8
  * Creates a new upload endpoint.
10
9
  * @param referrer The endpoint used to navigate to this one.
11
10
  * @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
11
  * @param formField The name of the form field to place the uploaded data into; leave unspecified to use raw bodies instead of a multi-part forms.
13
12
  */
14
- constructor(referrer: Endpoint, relativeUri: URL | string, private readonly formField?: string) {
15
- super(referrer, relativeUri);
16
- }
17
-
13
+ constructor(referrer: Endpoint, relativeUri: URL | string, formField?: string | undefined);
18
14
  /**
19
15
  * Uploads data to the endpoint.
20
16
  * @param blob The blob or file to read the upload data from.
@@ -25,15 +21,5 @@ export class UploadEndpoint extends Endpoint {
25
21
  * @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
26
22
  * @throws {@link errors!HttpError}: Other non-success status code
27
23
  */
28
- async uploadFrom(blob: Blob | File, signal?: AbortSignal) {
29
- const fileName = blob instanceof File ? blob.name : undefined;
30
-
31
- if (this.formField) {
32
- const formData = new FormData();
33
- formData.set(this.formField, blob, fileName);
34
- await this.send(HttpMethod.Post, signal, undefined, formData);
35
- } else {
36
- await this.send(HttpMethod.Post, signal, { [HttpHeader.ContentType]: blob.type }, blob);
37
- }
38
- }
24
+ uploadFrom(blob: Blob | File, signal?: AbortSignal): Promise<void>;
39
25
  }
@@ -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.UploadEndpoint = void 0;
13
4
  const Endpoint_1 = require("../Endpoint");
@@ -36,19 +27,17 @@ class UploadEndpoint extends Endpoint_1.Endpoint {
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
- uploadFrom(blob, signal) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- const fileName = blob instanceof File ? blob.name : undefined;
42
- if (this.formField) {
43
- const formData = new FormData();
44
- formData.set(this.formField, blob, fileName);
45
- yield this.send(http_1.HttpMethod.Post, signal, undefined, formData);
46
- }
47
- else {
48
- yield this.send(http_1.HttpMethod.Post, signal, { [http_1.HttpHeader.ContentType]: blob.type }, blob);
49
- }
50
- });
30
+ async uploadFrom(blob, signal) {
31
+ const fileName = blob instanceof File ? blob.name : undefined;
32
+ if (this.formField) {
33
+ const formData = new FormData();
34
+ formData.set(this.formField, blob, fileName);
35
+ await this.send(http_1.HttpMethod.Post, signal, undefined, formData);
36
+ }
37
+ else {
38
+ await this.send(http_1.HttpMethod.Post, signal, { [http_1.HttpHeader.ContentType]: blob.type }, blob);
39
+ }
51
40
  }
52
41
  }
53
42
  exports.UploadEndpoint = UploadEndpoint;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBsb2FkRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJVcGxvYWRFbmRwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBdUM7QUFDdkMscUNBQW9EO0FBRXBEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsbUJBQVE7SUFDeEM7Ozs7O09BS0c7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUIsRUFBbUIsU0FBa0I7UUFDMUYsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUQyQyxjQUFTLEdBQVQsU0FBUyxDQUFTO0lBRTlGLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDRyxVQUFVLENBQUMsSUFBaUIsRUFBRSxNQUFvQjs7WUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRTlELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsaUJBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUYsQ0FBQztRQUNMLENBQUM7S0FBQTtDQUNKO0FBaENELHdDQWdDQyJ9
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBsb2FkRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJVcGxvYWRFbmRwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBdUM7QUFDdkMscUNBQW9EO0FBRXBEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsbUJBQVE7SUFDeEM7Ozs7O09BS0c7SUFDSCxZQUFZLFFBQWtCLEVBQUUsV0FBeUIsRUFBbUIsU0FBa0I7UUFDMUYsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUQyQyxjQUFTLEdBQVQsU0FBUyxDQUFTO0lBRTlGLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQWlCLEVBQUUsTUFBb0I7UUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDaEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRSxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGlCQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFoQ0Qsd0NBZ0NDIn0=
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Waits for a specific amount of time.
3
+ * @param ms The time to wait in milliseconds.
4
+ * @param signal Used to cancel the wait.
5
+ * @returns `true` if the time has elapsed; `false` if the wait was cancelled via the `signal`.
6
+ */
7
+ export declare function delay(ms: number, signal?: AbortSignal): Promise<boolean>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.delay = delay;
4
+ /**
5
+ * Waits for a specific amount of time.
6
+ * @param ms The time to wait in milliseconds.
7
+ * @param signal Used to cancel the wait.
8
+ * @returns `true` if the time has elapsed; `false` if the wait was cancelled via the `signal`.
9
+ */
10
+ function delay(ms, signal) {
11
+ return new Promise(resolve => {
12
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
13
+ resolve(false);
14
+ return;
15
+ }
16
+ const onAbort = () => {
17
+ clearTimeout(timeout);
18
+ resolve(false);
19
+ };
20
+ const timeout = setTimeout(() => {
21
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
22
+ resolve(true);
23
+ }, ms);
24
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort, { once: true });
25
+ });
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLHNCQW1CQztBQXpCRDs7Ozs7R0FLRztBQUNILFNBQWdCLEtBQUssQ0FBQyxFQUFVLEVBQUUsTUFBb0I7SUFDbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNqQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMifQ==