typedrest 0.4.0 → 0.5.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.
- package/README.md +2 -0
- package/endpoints/Endpoint.js +14 -27
- package/endpoints/Endpoint.ts +5 -5
- package/endpoints/EntryEndpoint.js +3 -14
- package/endpoints/generic/ETagEndpointBase.js +27 -42
- package/endpoints/generic/ElementEndpoint.js +39 -60
- package/endpoints/generic/GenericCollectionEndpoint.js +70 -44
- package/endpoints/generic/GenericCollectionEndpoint.test.ts +123 -0
- package/endpoints/generic/GenericCollectionEndpoint.ts +54 -1
- package/endpoints/generic/PartialResponse.js +33 -0
- package/endpoints/generic/PartialResponse.ts +28 -0
- package/endpoints/generic/index.js +2 -1
- package/endpoints/generic/index.ts +1 -0
- package/endpoints/index.js +3 -2
- package/endpoints/index.ts +1 -0
- package/endpoints/raw/BlobEndpoint.js +10 -27
- package/endpoints/raw/UploadEndpoint.js +11 -23
- package/endpoints/raw/UploadEndpoint.test.ts +1 -4
- package/endpoints/raw/UploadEndpoint.ts +1 -2
- package/endpoints/reactive/Delay.js +27 -0
- package/endpoints/reactive/Delay.ts +26 -0
- package/endpoints/reactive/GenericStreamingCollectionEndpoint.js +79 -0
- package/endpoints/reactive/GenericStreamingCollectionEndpoint.ts +73 -0
- package/endpoints/reactive/PollingEndpoint.js +67 -0
- package/endpoints/reactive/PollingEndpoint.test.ts +84 -0
- package/endpoints/reactive/PollingEndpoint.ts +66 -0
- package/endpoints/reactive/SseStreamingEndpoint.js +120 -0
- package/endpoints/reactive/SseStreamingEndpoint.test.ts +169 -0
- package/endpoints/reactive/SseStreamingEndpoint.ts +115 -0
- package/endpoints/reactive/StreamingCollectionEndpoint.js +23 -0
- package/endpoints/reactive/StreamingCollectionEndpoint.test.ts +110 -0
- package/endpoints/reactive/StreamingCollectionEndpoint.ts +20 -0
- package/endpoints/reactive/StreamingEndpoint.js +56 -0
- package/endpoints/reactive/StreamingEndpoint.test.ts +130 -0
- package/endpoints/reactive/StreamingEndpoint.ts +50 -0
- package/endpoints/reactive/index.js +22 -0
- package/endpoints/reactive/index.ts +5 -0
- package/endpoints/rpc/ActionEndpoint.js +3 -14
- package/endpoints/rpc/ConsumerEndpoint.js +5 -16
- package/endpoints/rpc/FunctionEndpoint.js +6 -17
- package/endpoints/rpc/ProducerEndpoint.js +4 -15
- package/endpoints/rpc/RpcEndpointBase.js +3 -14
- package/errors/DefaultErrorHandler.js +20 -22
- package/errors/DefaultErrorHandler.ts +12 -4
- package/errors/Errors.js +8 -2
- package/errors/Errors.ts +5 -0
- package/http/EntityStream.js +42 -0
- package/http/EntityStream.ts +40 -0
- package/http/HttpContentRange.js +39 -0
- package/http/HttpContentRange.ts +41 -0
- package/http/HttpHeader.js +6 -1
- package/http/HttpHeader.ts +6 -1
- package/http/HttpStatusCode.js +4 -1
- package/http/HttpStatusCode.ts +4 -1
- package/http/ResponseCache.js +4 -15
- package/http/RetryAfter.js +24 -0
- package/http/RetryAfter.ts +19 -0
- package/http/ServerSentEvents.js +140 -0
- package/http/ServerSentEvents.ts +145 -0
- package/http/index.js +5 -1
- package/http/index.ts +4 -0
- package/jest.config.js +1 -1
- package/links/AggregateLinkExtractor.js +7 -18
- package/links/HalLinkExtractor.js +9 -20
- package/links/HeaderLinkExtractor.js +5 -16
- package/links/HeaderLinkExtractor.ts +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -29,3 +29,5 @@ await smith.delete();
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Read a more detailed **[Introduction](https://typedrest.net/introduction/)** to TypedRest or jump right in with the **[setup guide](https://typedrest.net/setup/typescript/)**.
|
|
32
|
+
|
|
33
|
+
You can also take a look at our [Sample project](https://github.com/TypedRest/Sample-TypeScript).
|
package/endpoints/Endpoint.js
CHANGED
|
@@ -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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -37,16 +28,16 @@ class Endpoint {
|
|
|
37
28
|
if (referrer) {
|
|
38
29
|
this.uri = (typeof uri === "string") ? referrer.join(uri) : uri;
|
|
39
30
|
if (serializer)
|
|
40
|
-
throw new Error("serializer must not be specified if referrer is
|
|
31
|
+
throw new Error("serializer must not be specified if referrer is specified.");
|
|
41
32
|
this.serializer = referrer.serializer;
|
|
42
33
|
if (errorHandler)
|
|
43
|
-
throw new Error("errorHandler must not be specified if referrer is
|
|
34
|
+
throw new Error("errorHandler must not be specified if referrer is specified.");
|
|
44
35
|
this.errorHandler = referrer.errorHandler;
|
|
45
36
|
if (linkExtractor)
|
|
46
|
-
throw new Error("linkExtractor must not be specified if referrer is
|
|
37
|
+
throw new Error("linkExtractor must not be specified if referrer is specified.");
|
|
47
38
|
this.linkExtractor = referrer.linkExtractor;
|
|
48
39
|
if (httpClient)
|
|
49
|
-
throw new Error("httpClient must not be specified if referrer is
|
|
40
|
+
throw new Error("httpClient must not be specified if referrer is specified.");
|
|
50
41
|
this.httpClient = referrer.httpClient;
|
|
51
42
|
}
|
|
52
43
|
else {
|
|
@@ -77,7 +68,7 @@ class Endpoint {
|
|
|
77
68
|
*/
|
|
78
69
|
static ensureTrailingSlash(uri) {
|
|
79
70
|
let uriString = (typeof uri === "string") ? uri : uri.href;
|
|
80
|
-
if (uriString.
|
|
71
|
+
if (!uriString.endsWith("/"))
|
|
81
72
|
uriString += "/";
|
|
82
73
|
return new URL(uriString);
|
|
83
74
|
}
|
|
@@ -90,24 +81,20 @@ class Endpoint {
|
|
|
90
81
|
* @param body The body to send.
|
|
91
82
|
* @throws {@link errors!HttpError}
|
|
92
83
|
*/
|
|
93
|
-
send(method, signal, headers, body) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return response;
|
|
98
|
-
});
|
|
84
|
+
async send(method, signal, headers, body) {
|
|
85
|
+
const response = await this.httpClient.send(this.uri, method, signal, headers, body);
|
|
86
|
+
await this.handle(response);
|
|
87
|
+
return response;
|
|
99
88
|
}
|
|
100
89
|
/**
|
|
101
90
|
* Handles various cross-cutting concerns regarding a response message such as discovering links and handling errors.
|
|
102
91
|
* @param response The response to process.
|
|
103
92
|
* @throws {@link errors!HttpError}
|
|
104
93
|
*/
|
|
105
|
-
handle(response) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
yield this.errorHandler.handle(response);
|
|
110
|
-
});
|
|
94
|
+
async handle(response) {
|
|
95
|
+
this.links = await this.linkExtractor.getLinks(response);
|
|
96
|
+
this.handleCapabilities(response);
|
|
97
|
+
await this.errorHandler.handle(response);
|
|
111
98
|
}
|
|
112
99
|
/**
|
|
113
100
|
* Registers one or more default links for a specific relation type.
|
|
@@ -210,4 +197,4 @@ class Endpoint {
|
|
|
210
197
|
}
|
|
211
198
|
}
|
|
212
199
|
exports.Endpoint = Endpoint;
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJFbmRwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrQ0FBNkU7QUFFN0Usc0NBQXdEO0FBRXhELGdFQUFvQztBQUVwQyxNQUFhLFFBQVE7SUEwQmpCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDSSxRQUE4QixFQUM5QixHQUFpQixFQUNqQixVQUF1QixFQUN2QixZQUEyQixFQUMzQixhQUE2QixFQUM3QixVQUF1QjtRQThFM0Isb0ZBQW9GO1FBQzVFLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFM0IsNERBQTREO1FBQ3BELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN0Qyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQTJGekQsb0ZBQW9GO1FBQzVFLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQTlLdEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2hFLElBQUksVUFBVTtnQkFDVixNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3RDLElBQUksWUFBWTtnQkFDWixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzFDLElBQUksYUFBYTtnQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzVDLElB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
|
package/endpoints/Endpoint.ts
CHANGED
|
@@ -49,16 +49,16 @@ export class Endpoint {
|
|
|
49
49
|
if (referrer) {
|
|
50
50
|
this.uri = (typeof uri === "string") ? referrer.join(uri) : uri;
|
|
51
51
|
if (serializer)
|
|
52
|
-
throw new Error("serializer must not be specified if referrer is
|
|
52
|
+
throw new Error("serializer must not be specified if referrer is specified.");
|
|
53
53
|
this.serializer = referrer.serializer;
|
|
54
54
|
if (errorHandler)
|
|
55
|
-
throw new Error("errorHandler must not be specified if referrer is
|
|
55
|
+
throw new Error("errorHandler must not be specified if referrer is specified.");
|
|
56
56
|
this.errorHandler = referrer.errorHandler;
|
|
57
57
|
if (linkExtractor)
|
|
58
|
-
throw new Error("linkExtractor must not be specified if referrer is
|
|
58
|
+
throw new Error("linkExtractor must not be specified if referrer is specified.");
|
|
59
59
|
this.linkExtractor = referrer.linkExtractor;
|
|
60
60
|
if (httpClient)
|
|
61
|
-
throw new Error("httpClient must not be specified if referrer is
|
|
61
|
+
throw new Error("httpClient must not be specified if referrer is specified.");
|
|
62
62
|
this.httpClient = referrer.httpClient;
|
|
63
63
|
} else {
|
|
64
64
|
this.uri = (typeof uri === "string") ? new URL(uri) : uri;
|
|
@@ -92,7 +92,7 @@ export class Endpoint {
|
|
|
92
92
|
*/
|
|
93
93
|
protected static ensureTrailingSlash(uri: URL | string): URL {
|
|
94
94
|
let uriString = (typeof uri === "string") ? uri : uri.href;
|
|
95
|
-
if (uriString.
|
|
95
|
+
if (!uriString.endsWith("/"))
|
|
96
96
|
uriString += "/";
|
|
97
97
|
return new URL(uriString);
|
|
98
98
|
}
|
|
@@ -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.EntryEndpoint = void 0;
|
|
13
4
|
const Endpoint_1 = require("./Endpoint");
|
|
@@ -41,11 +32,9 @@ class EntryEndpoint extends Endpoint_1.Endpoint {
|
|
|
41
32
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
42
33
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
43
34
|
*/
|
|
44
|
-
readMeta(signal) {
|
|
45
|
-
|
|
46
|
-
yield this.send(http_1.HttpMethod.Get, signal);
|
|
47
|
-
});
|
|
35
|
+
async readMeta(signal) {
|
|
36
|
+
await this.send(http_1.HttpMethod.Get, signal);
|
|
48
37
|
}
|
|
49
38
|
}
|
|
50
39
|
exports.EntryEndpoint = EntryEndpoint;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50cnlFbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVudHJ5RW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXNDO0FBQ3RDLGtDQUE4RTtBQUM5RSxnREFBNEQ7QUFDNUQsc0NBQThEO0FBQzlELG9DQUF3RztBQUV4Rzs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLG1CQUFRO0lBQ3ZDOzs7Ozs7O09BT0c7SUFDSCxZQUNJLEdBQWlCLEVBQ2pCLFVBQXVCLEVBQ3ZCLFlBQTJCLEVBQzNCLGFBQTZCLEVBQzdCLFVBQXVCO1FBQ3ZCLEtBQUssQ0FBQyxTQUFTLEVBQ1gsbUJBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFDakMsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksSUFBSSw0QkFBYyxFQUFFLEVBQ2xDLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLElBQUksNEJBQW1CLEVBQUUsRUFDekMsYUFBYSxhQUFiLGFBQWEsY0FBYixhQUFhLEdBQUksSUFBSSw4QkFBc0IsQ0FBQyxJQUFJLDJCQUFtQixFQUFFLEVBQUUsSUFBSSx3QkFBZ0IsRUFBRSxDQUFDLEVBQzlGLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLElBQUksc0JBQWUsRUFBRSxDQUFDLENBQUM7UUFFekMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGlCQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBb0I7UUFDL0IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXRDRCxzQ0FzQ0MifQ==
|
|
@@ -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.ETagEndpointBase = void 0;
|
|
13
4
|
const Endpoint_1 = require("../Endpoint");
|
|
@@ -33,19 +24,17 @@ class ETagEndpointBase extends Endpoint_1.Endpoint {
|
|
|
33
24
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
34
25
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
35
26
|
*/
|
|
36
|
-
getContent(signal) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return this.responseCache.content;
|
|
48
|
-
});
|
|
27
|
+
async getContent(signal) {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
const headers = new Headers();
|
|
30
|
+
if ((_a = this.responseCache) === null || _a === void 0 ? void 0 : _a.eTag)
|
|
31
|
+
headers.append(http_1.HttpHeader.IfNoneMatch, this.responseCache.eTag);
|
|
32
|
+
const response = await this.httpClient.send(this.uri, http_1.HttpMethod.Get, signal, new Headers(headers));
|
|
33
|
+
if (response.status !== http_1.HttpStatusCode.NotModified || !((_b = this.responseCache) === null || _b === void 0 ? void 0 : _b.content)) {
|
|
34
|
+
await this.handle(response);
|
|
35
|
+
this.responseCache = await http_1.ResponseCache.from(response);
|
|
36
|
+
}
|
|
37
|
+
return this.responseCache.content;
|
|
49
38
|
}
|
|
50
39
|
/**
|
|
51
40
|
* Performs an {@link http!HttpMethod.Put} request on the {@link uri}. Sets {@link http!HttpHeader.IfMatch} if there is a cached {@link http!HttpHeader.ETag} to detect lost updates.
|
|
@@ -57,16 +46,14 @@ class ETagEndpointBase extends Endpoint_1.Endpoint {
|
|
|
57
46
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
58
47
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
59
48
|
*/
|
|
60
|
-
putContent(content, signal) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return this.send(http_1.HttpMethod.Put, signal, headers, this.serializer.serialize(content));
|
|
69
|
-
});
|
|
49
|
+
async putContent(content, signal) {
|
|
50
|
+
var _a;
|
|
51
|
+
const headers = new Headers();
|
|
52
|
+
headers.append(http_1.HttpHeader.ContentType, this.serializer.supportedMediaTypes[0]);
|
|
53
|
+
if ((_a = this.responseCache) === null || _a === void 0 ? void 0 : _a.eTag)
|
|
54
|
+
headers.append(http_1.HttpHeader.IfMatch, this.responseCache.eTag);
|
|
55
|
+
this.responseCache = undefined;
|
|
56
|
+
return this.send(http_1.HttpMethod.Put, signal, headers, this.serializer.serialize(content));
|
|
70
57
|
}
|
|
71
58
|
/**
|
|
72
59
|
* Performs an {@link http!HttpMethod.Delete} request on the {@link uri}. Sets {@link http!HttpHeader.IfMatch} if there is a cached {@link http!HttpHeader.ETag} to detect lost updates.
|
|
@@ -78,16 +65,14 @@ class ETagEndpointBase extends Endpoint_1.Endpoint {
|
|
|
78
65
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
79
66
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
80
67
|
*/
|
|
81
|
-
deleteContent(signal) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return this.send(http_1.HttpMethod.Delete, signal, headers);
|
|
89
|
-
});
|
|
68
|
+
async deleteContent(signal) {
|
|
69
|
+
var _a;
|
|
70
|
+
const headers = new Headers();
|
|
71
|
+
if ((_a = this.responseCache) === null || _a === void 0 ? void 0 : _a.eTag)
|
|
72
|
+
headers.append(http_1.HttpHeader.IfMatch, this.responseCache.eTag);
|
|
73
|
+
this.responseCache = undefined;
|
|
74
|
+
return this.send(http_1.HttpMethod.Delete, signal, headers);
|
|
90
75
|
}
|
|
91
76
|
}
|
|
92
77
|
exports.ETagEndpointBase = ETagEndpointBase;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRVRhZ0VuZHBvaW50QmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkVUYWdFbmRwb2ludEJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQXVDO0FBRXZDLHFDQUFtRjtBQUVuRjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsbUJBQVE7SUFDMUM7Ozs7T0FJRztJQUNILFlBQVksUUFBa0IsRUFBRSxXQUF5QjtRQUNyRCxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFPRDs7Ozs7Ozs7T0FRRztJQUNPLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBb0I7O1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUk7WUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGlCQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxxQkFBYyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxPQUFPLENBQUEsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sb0JBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBWSxFQUFFLE1BQW9COztRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlFLElBQUksTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxJQUFJO1lBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNPLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBb0I7O1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUk7WUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUF6RUQsNENBeUVDIn0=
|
|
@@ -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.ElementEndpoint = void 0;
|
|
13
4
|
const ETagEndpointBase_1 = require("./ETagEndpointBase");
|
|
@@ -42,10 +33,8 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
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
|
-
read(signal) {
|
|
46
|
-
return
|
|
47
|
-
return this.serializer.deserialize(yield this.getContent(signal));
|
|
48
|
-
});
|
|
36
|
+
async read(signal) {
|
|
37
|
+
return this.serializer.deserialize(await this.getContent(signal));
|
|
49
38
|
}
|
|
50
39
|
/**
|
|
51
40
|
* Determines whether the element currently exists.
|
|
@@ -54,16 +43,14 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
54
43
|
* @throws {@link errors!AuthorizationError}: {@link http!HttpStatusCode.Forbidden}
|
|
55
44
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
56
45
|
*/
|
|
57
|
-
exists(signal) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (response.status === http_1.HttpStatusCode.NotFound || response.status === http_1.HttpStatusCode.Gone)
|
|
63
|
-
return false;
|
|
64
|
-
yield this.errorHandler.handle(response);
|
|
46
|
+
async exists(signal) {
|
|
47
|
+
const response = await this.httpClient.send(this.uri, http_1.HttpMethod.Head, signal);
|
|
48
|
+
if (response.ok)
|
|
49
|
+
return true;
|
|
50
|
+
if (response.status === http_1.HttpStatusCode.NotFound || response.status === http_1.HttpStatusCode.Gone)
|
|
65
51
|
return false;
|
|
66
|
-
|
|
52
|
+
await this.errorHandler.handle(response);
|
|
53
|
+
return false;
|
|
67
54
|
}
|
|
68
55
|
/**
|
|
69
56
|
* Shows whether the server has indicated that {@link set} is currently allowed.
|
|
@@ -83,14 +70,12 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
83
70
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
84
71
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
85
72
|
*/
|
|
86
|
-
set(entity, signal) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
});
|
|
73
|
+
async set(entity, signal) {
|
|
74
|
+
const response = await this.putContent(entity, signal);
|
|
75
|
+
const text = await response.text();
|
|
76
|
+
if (text) {
|
|
77
|
+
return this.serializer.deserialize(text);
|
|
78
|
+
}
|
|
94
79
|
}
|
|
95
80
|
/**
|
|
96
81
|
* Shows whether the server has indicated that {@link merge} is currently allowed.
|
|
@@ -110,17 +95,15 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
110
95
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
111
96
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
112
97
|
*/
|
|
113
|
-
merge(entity, signal) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
});
|
|
98
|
+
async merge(entity, signal) {
|
|
99
|
+
this.responseCache = undefined;
|
|
100
|
+
const response = await this.send(http_1.HttpMethod.Patch, signal, {
|
|
101
|
+
[http_1.HttpHeader.ContentType]: this.serializer.supportedMediaTypes[0]
|
|
102
|
+
}, this.serializer.serialize(entity));
|
|
103
|
+
const text = await response.text();
|
|
104
|
+
if (text) {
|
|
105
|
+
return this.serializer.deserialize(text);
|
|
106
|
+
}
|
|
124
107
|
}
|
|
125
108
|
/**
|
|
126
109
|
* Reads the current state of the entity, applies a change to it and stores the result. Applies optimistic concurrency using automatic retries.
|
|
@@ -135,21 +118,19 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
135
118
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
136
119
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
137
120
|
*/
|
|
138
|
-
update(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
throw err;
|
|
150
|
-
}
|
|
121
|
+
async update(updateAction, maxRetries = 3, signal) {
|
|
122
|
+
let retryCounter = 0;
|
|
123
|
+
while (true) {
|
|
124
|
+
const entity = await this.read(signal);
|
|
125
|
+
updateAction(entity);
|
|
126
|
+
try {
|
|
127
|
+
return await this.set(entity, signal);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (retryCounter++ >= maxRetries || !(err instanceof errors_1.ConcurrencyError))
|
|
131
|
+
throw err;
|
|
151
132
|
}
|
|
152
|
-
}
|
|
133
|
+
}
|
|
153
134
|
}
|
|
154
135
|
/**
|
|
155
136
|
* Shows whether the server has indicated that {@link delete} is currently allowed.
|
|
@@ -166,11 +147,9 @@ class ElementEndpoint extends ETagEndpointBase_1.ETagEndpointBase {
|
|
|
166
147
|
* @throws {@link errors!NotFoundError}: {@link http!HttpStatusCode.NotFound} or {@link http!HttpStatusCode.Gone}
|
|
167
148
|
* @throws {@link errors!HttpError}: Other non-success status code
|
|
168
149
|
*/
|
|
169
|
-
delete(signal) {
|
|
170
|
-
|
|
171
|
-
yield this.deleteContent(signal);
|
|
172
|
-
});
|
|
150
|
+
async delete(signal) {
|
|
151
|
+
await this.deleteContent(signal);
|
|
173
152
|
}
|
|
174
153
|
}
|
|
175
154
|
exports.ElementEndpoint = ElementEndpoint;
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxlbWVudEVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRWxlbWVudEVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQUFzRDtBQUV0RCxxQ0FBb0U7QUFDcEUseUNBQWdEO0FBRWhEOzs7R0FHRztBQUNILE1BQWEsZUFBeUIsU0FBUSxtQ0FBZ0I7SUFDMUQ7Ozs7T0FJRztJQUNILFlBQVksUUFBa0IsRUFBRSxXQUF5QjtRQUNyRCxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWE7WUFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQVUsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBb0I7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGlCQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLElBQUksUUFBUSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUsscUJBQWMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxxQkFBYyxDQUFDLElBQUk7WUFBRSxPQUFPLEtB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
|