@opra/client 0.22.0 → 0.23.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/browser.js +120 -94
- package/cjs/client.js +24 -14
- package/cjs/collection-node.js +56 -42
- package/cjs/constants.js +3 -2
- package/cjs/http-request-observable.js +8 -9
- package/cjs/http-request.js +8 -10
- package/cjs/singleton-node.js +27 -22
- package/esm/client.js +25 -15
- package/esm/collection-node.js +57 -43
- package/esm/constants.js +2 -1
- package/esm/http-request-observable.js +6 -7
- package/esm/http-request.js +8 -10
- package/esm/singleton-node.js +28 -23
- package/package.json +2 -2
- package/types/client.d.ts +4 -4
- package/types/collection-node.d.ts +2 -2
- package/types/constants.d.ts +2 -1
- package/types/http-request-observable.d.ts +3 -8
- package/types/http-request.d.ts +7 -8
- package/types/singleton-node.d.ts +2 -2
- package/types/types.d.ts +7 -4
package/cjs/collection-node.js
CHANGED
|
@@ -1,109 +1,123 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpCollectionNode = void 0;
|
|
4
|
+
const putil_varhelpers_1 = require("putil-varhelpers");
|
|
4
5
|
const constants_js_1 = require("./constants.js");
|
|
5
6
|
const http_request_observable_js_1 = require("./http-request-observable.js");
|
|
6
7
|
class HttpCollectionNode {
|
|
7
8
|
constructor(context) {
|
|
8
|
-
this[constants_js_1.
|
|
9
|
+
this[constants_js_1.kContext] = context;
|
|
9
10
|
}
|
|
10
11
|
create(data, options) {
|
|
11
|
-
const context = this[constants_js_1.
|
|
12
|
+
const context = this[constants_js_1.kContext];
|
|
13
|
+
context.operation = 'create';
|
|
12
14
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
13
|
-
const request = requestHost[
|
|
15
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
14
16
|
request.method = 'POST';
|
|
15
|
-
request.url
|
|
17
|
+
request.url.resolve(context.resourceName);
|
|
16
18
|
request.body = data;
|
|
17
19
|
if (options?.include)
|
|
18
|
-
request.params.set('$include', options.include);
|
|
20
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
19
21
|
if (options?.pick)
|
|
20
|
-
request.params.set('$pick', options.pick);
|
|
22
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
21
23
|
if (options?.omit)
|
|
22
|
-
request.params.set('$omit', options.omit);
|
|
24
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
23
25
|
return requestHost;
|
|
24
26
|
}
|
|
25
27
|
delete(id, options) {
|
|
26
|
-
|
|
28
|
+
if (id == null)
|
|
29
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
30
|
+
const context = this[constants_js_1.kContext];
|
|
31
|
+
context.operation = 'delete';
|
|
27
32
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
28
|
-
const request = requestHost[
|
|
33
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
29
34
|
request.method = 'DELETE';
|
|
30
|
-
request.
|
|
35
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
31
36
|
return requestHost;
|
|
32
37
|
}
|
|
33
38
|
deleteMany(options) {
|
|
34
|
-
const context = this[constants_js_1.
|
|
39
|
+
const context = this[constants_js_1.kContext];
|
|
40
|
+
context.operation = 'deleteMany';
|
|
35
41
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
36
|
-
const request = requestHost[
|
|
42
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
37
43
|
request.method = 'DELETE';
|
|
38
|
-
request.url
|
|
44
|
+
request.url.join(context.resourceName);
|
|
39
45
|
if (options?.filter)
|
|
40
|
-
request.params.set('$filter', options.filter);
|
|
46
|
+
request.params.set('$filter', String(options.filter));
|
|
41
47
|
return requestHost;
|
|
42
48
|
}
|
|
43
49
|
get(id, options) {
|
|
44
|
-
|
|
50
|
+
if (id == null)
|
|
51
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
52
|
+
const context = this[constants_js_1.kContext];
|
|
53
|
+
context.operation = 'get';
|
|
45
54
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
46
|
-
const request = requestHost[
|
|
55
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
47
56
|
request.method = 'GET';
|
|
48
|
-
request.
|
|
57
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
49
58
|
if (options?.include)
|
|
50
|
-
request.params.set('$include', options.include);
|
|
59
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
51
60
|
if (options?.pick)
|
|
52
|
-
request.params.set('$pick', options.pick);
|
|
61
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
53
62
|
if (options?.omit)
|
|
54
|
-
request.params.set('$omit', options.omit);
|
|
63
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
55
64
|
return requestHost;
|
|
56
65
|
}
|
|
57
66
|
findMany(options) {
|
|
58
|
-
const context = this[constants_js_1.
|
|
67
|
+
const context = this[constants_js_1.kContext];
|
|
68
|
+
context.operation = 'findMany';
|
|
59
69
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
60
|
-
const request = requestHost[
|
|
70
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
61
71
|
request.method = 'GET';
|
|
62
|
-
request.url
|
|
72
|
+
request.url.join(context.resourceName);
|
|
63
73
|
if (options?.include)
|
|
64
|
-
request.params.set('$include', options.include);
|
|
74
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
65
75
|
if (options?.pick)
|
|
66
|
-
request.params.set('$pick', options.pick);
|
|
76
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
67
77
|
if (options?.omit)
|
|
68
|
-
request.params.set('$omit', options.omit);
|
|
78
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
69
79
|
if (options?.sort)
|
|
70
|
-
request.params.set('$sort', options.sort);
|
|
80
|
+
request.params.set('$sort', (0, putil_varhelpers_1.toArrayDef)(options.sort, []).join(','));
|
|
71
81
|
if (options?.filter)
|
|
72
|
-
request.params.set('$filter', options.filter);
|
|
82
|
+
request.params.set('$filter', String(options.filter));
|
|
73
83
|
if (options?.limit != null)
|
|
74
|
-
request.params.set('$limit', options.limit);
|
|
84
|
+
request.params.set('$limit', String(options.limit));
|
|
75
85
|
if (options?.skip != null)
|
|
76
|
-
request.params.set('$skip', options.skip);
|
|
86
|
+
request.params.set('$skip', String(options.skip));
|
|
77
87
|
if (options?.count != null)
|
|
78
|
-
request.params.set('$count', options.count);
|
|
88
|
+
request.params.set('$count', String(options.count));
|
|
79
89
|
if (options?.distinct != null)
|
|
80
|
-
request.params.set('$distinct', options.distinct);
|
|
90
|
+
request.params.set('$distinct', String(options.distinct));
|
|
81
91
|
return requestHost;
|
|
82
92
|
}
|
|
83
93
|
update(id, data, options) {
|
|
84
|
-
|
|
94
|
+
if (id == null)
|
|
95
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
96
|
+
const context = this[constants_js_1.kContext];
|
|
97
|
+
context.operation = 'update';
|
|
85
98
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
86
|
-
const request = requestHost[
|
|
99
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
87
100
|
request.method = 'PATCH';
|
|
88
|
-
request.
|
|
101
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
89
102
|
request.body = data;
|
|
90
103
|
if (options?.include)
|
|
91
|
-
request.params.set('$include', options.include);
|
|
104
|
+
request.params.set('$include', String(options.include));
|
|
92
105
|
if (options?.pick)
|
|
93
|
-
request.params.set('$pick', options.pick);
|
|
106
|
+
request.params.set('$pick', String(options.pick));
|
|
94
107
|
if (options?.omit)
|
|
95
|
-
request.params.set('$omit', options.omit);
|
|
108
|
+
request.params.set('$omit', String(options.omit));
|
|
96
109
|
return requestHost;
|
|
97
110
|
}
|
|
98
111
|
updateMany(data, options) {
|
|
99
|
-
const context = this[constants_js_1.
|
|
112
|
+
const context = this[constants_js_1.kContext];
|
|
113
|
+
context.operation = 'updateMany';
|
|
100
114
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
101
|
-
const request = requestHost[
|
|
115
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
102
116
|
request.method = 'PATCH';
|
|
103
|
-
request.url
|
|
117
|
+
request.url.join(context.resourceName);
|
|
104
118
|
request.body = data;
|
|
105
119
|
if (options?.filter)
|
|
106
|
-
request.params.set('$filter', options.filter);
|
|
120
|
+
request.params.set('$filter', String(options.filter));
|
|
107
121
|
return requestHost;
|
|
108
122
|
}
|
|
109
123
|
}
|
package/cjs/constants.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.kContext = exports.kRequest = exports.FORMDATA_CONTENT_TYPE_PATTERN = exports.TEXT_CONTENT_TYPE_PATTERN = exports.JSON_CONTENT_TYPE_PATTERN = void 0;
|
|
4
4
|
exports.JSON_CONTENT_TYPE_PATTERN = /^application\/([\w-]+\+)?\bjson\b/i;
|
|
5
5
|
exports.TEXT_CONTENT_TYPE_PATTERN = /^text\/.*$/i;
|
|
6
6
|
exports.FORMDATA_CONTENT_TYPE_PATTERN = /^multipart\/\bform-data\b/i;
|
|
7
|
-
exports.
|
|
7
|
+
exports.kRequest = Symbol.for('kRequest');
|
|
8
|
+
exports.kContext = Symbol.for('kContext');
|
|
@@ -6,18 +6,18 @@ const common_1 = require("@opra/common");
|
|
|
6
6
|
const constants_js_1 = require("./constants.js");
|
|
7
7
|
const http_request_js_1 = require("./http-request.js");
|
|
8
8
|
const types_js_1 = require("./types.js");
|
|
9
|
-
const kRequest = Symbol('kRequest');
|
|
10
9
|
class HttpRequestObservable extends rxjs_1.Observable {
|
|
11
10
|
constructor(context, options) {
|
|
12
11
|
super((subscriber) => {
|
|
13
|
-
context.send(options?.observe || types_js_1.HttpObserveType.Body, this[kRequest])
|
|
12
|
+
context.send(options?.observe || types_js_1.HttpObserveType.Body, this[constants_js_1.kRequest])
|
|
13
|
+
.subscribe((subscriber));
|
|
14
14
|
});
|
|
15
|
-
this[constants_js_1.
|
|
16
|
-
this[kRequest] = new http_request_js_1.HttpRequest(options?.http);
|
|
15
|
+
this[constants_js_1.kContext] = context;
|
|
16
|
+
this[constants_js_1.kRequest] = new http_request_js_1.HttpRequest(options?.http);
|
|
17
17
|
this.contentId = (0, common_1.uid)(6);
|
|
18
18
|
}
|
|
19
19
|
header(name, value) {
|
|
20
|
-
const headers = this[kRequest].headers;
|
|
20
|
+
const headers = this[constants_js_1.kRequest].headers;
|
|
21
21
|
if (Array.isArray(value))
|
|
22
22
|
value.forEach(v => headers.append(name, String(v)));
|
|
23
23
|
else
|
|
@@ -25,11 +25,12 @@ class HttpRequestObservable extends rxjs_1.Observable {
|
|
|
25
25
|
return this;
|
|
26
26
|
}
|
|
27
27
|
param(name, value) {
|
|
28
|
-
this[kRequest].params.append(name, value);
|
|
28
|
+
this[constants_js_1.kRequest].params.append(name, value);
|
|
29
29
|
return this;
|
|
30
30
|
}
|
|
31
31
|
async fetch(observe) {
|
|
32
|
-
return (0, rxjs_1.lastValueFrom)(this[constants_js_1.
|
|
32
|
+
return (0, rxjs_1.lastValueFrom)(this[constants_js_1.kContext]
|
|
33
|
+
.send(observe || types_js_1.HttpObserveType.Body, this[constants_js_1.kRequest]));
|
|
33
34
|
}
|
|
34
35
|
with(cb) {
|
|
35
36
|
cb(this);
|
|
@@ -37,5 +38,3 @@ class HttpRequestObservable extends rxjs_1.Observable {
|
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
exports.HttpRequestObservable = HttpRequestObservable;
|
|
40
|
-
HttpRequestObservable.kContext = constants_js_1.kHttpClientContext;
|
|
41
|
-
HttpRequestObservable.kRequest = kRequest;
|
package/cjs/http-request.js
CHANGED
|
@@ -21,24 +21,22 @@ class HttpRequest {
|
|
|
21
21
|
this.referrerPolicy = init?.referrerPolicy || '';
|
|
22
22
|
this.signal = init?.signal || new AbortController().signal;
|
|
23
23
|
this.body = init?.body;
|
|
24
|
-
this.
|
|
25
|
-
if (init?.params)
|
|
26
|
-
|
|
24
|
+
this.parsedUrl = new common_1.OpraURL(init?.url);
|
|
25
|
+
if (init?.params) {
|
|
26
|
+
const params = new URLSearchParams(init.params);
|
|
27
|
+
params.forEach((v, k) => this.params.set(k, v));
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
30
|
/** Returns the URL of request as a string. */
|
|
29
31
|
get url() {
|
|
30
|
-
return this.
|
|
32
|
+
return this.parsedUrl;
|
|
31
33
|
}
|
|
32
34
|
set url(value) {
|
|
33
|
-
this.
|
|
35
|
+
this.parsedUrl = value;
|
|
34
36
|
}
|
|
35
37
|
/** Returns the searchParams of the URL as OpraURLSearchParams */
|
|
36
38
|
get params() {
|
|
37
|
-
return this.
|
|
38
|
-
}
|
|
39
|
-
/** Returns the path part of URL as OpraURLPath */
|
|
40
|
-
get path() {
|
|
41
|
-
return this.urlInstance.path;
|
|
39
|
+
return this.parsedUrl.searchParams;
|
|
42
40
|
}
|
|
43
41
|
clone(...update) {
|
|
44
42
|
const out = new HttpRequest();
|
package/cjs/singleton-node.js
CHANGED
|
@@ -1,62 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpSingletonNode = void 0;
|
|
4
|
+
const putil_varhelpers_1 = require("putil-varhelpers");
|
|
4
5
|
const constants_js_1 = require("./constants.js");
|
|
5
6
|
const http_request_observable_js_1 = require("./http-request-observable.js");
|
|
6
7
|
class HttpSingletonNode {
|
|
7
8
|
constructor(context) {
|
|
8
|
-
this[constants_js_1.
|
|
9
|
+
this[constants_js_1.kContext] = context;
|
|
9
10
|
}
|
|
10
11
|
create(data, options) {
|
|
11
|
-
const context = this[constants_js_1.
|
|
12
|
+
const context = this[constants_js_1.kContext];
|
|
13
|
+
context.operation = 'create';
|
|
12
14
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
13
|
-
const request = requestHost[
|
|
15
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
14
16
|
request.method = 'POST';
|
|
15
|
-
request.url
|
|
17
|
+
request.url.join(context.resourceName);
|
|
16
18
|
request.body = data;
|
|
17
19
|
if (options?.include)
|
|
18
|
-
request.params.set('$include', options.include);
|
|
20
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
19
21
|
if (options?.pick)
|
|
20
|
-
request.params.set('$pick', options.pick);
|
|
22
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
21
23
|
if (options?.omit)
|
|
22
|
-
request.params.set('$omit', options.omit);
|
|
24
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
23
25
|
return requestHost;
|
|
24
26
|
}
|
|
25
27
|
delete(options) {
|
|
26
|
-
const context = this[constants_js_1.
|
|
28
|
+
const context = this[constants_js_1.kContext];
|
|
29
|
+
context.operation = 'delete';
|
|
27
30
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
28
|
-
const request = requestHost[
|
|
31
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
29
32
|
request.method = 'DELETE';
|
|
30
|
-
request.
|
|
33
|
+
request.url.join({ resource: context.resourceName });
|
|
31
34
|
return requestHost;
|
|
32
35
|
}
|
|
33
36
|
get(options) {
|
|
34
|
-
const context = this[constants_js_1.
|
|
37
|
+
const context = this[constants_js_1.kContext];
|
|
38
|
+
context.operation = 'get';
|
|
35
39
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
36
|
-
const request = requestHost[
|
|
40
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
37
41
|
request.method = 'GET';
|
|
38
|
-
request.
|
|
42
|
+
request.url.join({ resource: context.resourceName });
|
|
39
43
|
if (options?.include)
|
|
40
|
-
request.params.set('$include', options.include);
|
|
44
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
41
45
|
if (options?.pick)
|
|
42
|
-
request.params.set('$pick', options.pick);
|
|
46
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
43
47
|
if (options?.omit)
|
|
44
|
-
request.params.set('$omit', options.omit);
|
|
48
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
45
49
|
return requestHost;
|
|
46
50
|
}
|
|
47
51
|
update(data, options) {
|
|
48
|
-
const context = this[constants_js_1.
|
|
52
|
+
const context = this[constants_js_1.kContext];
|
|
53
|
+
context.operation = 'update';
|
|
49
54
|
const requestHost = new http_request_observable_js_1.HttpRequestObservable(context, options);
|
|
50
|
-
const request = requestHost[
|
|
55
|
+
const request = requestHost[constants_js_1.kRequest];
|
|
51
56
|
request.method = 'PATCH';
|
|
52
|
-
request.
|
|
57
|
+
request.url.join({ resource: context.resourceName });
|
|
53
58
|
request.body = data;
|
|
54
59
|
if (options?.include)
|
|
55
|
-
request.params.set('$include', options.include);
|
|
60
|
+
request.params.set('$include', (0, putil_varhelpers_1.toArrayDef)(options.include, []).join(','));
|
|
56
61
|
if (options?.pick)
|
|
57
|
-
request.params.set('$pick', options.pick);
|
|
62
|
+
request.params.set('$pick', (0, putil_varhelpers_1.toArrayDef)(options.pick, []).join(','));
|
|
58
63
|
if (options?.omit)
|
|
59
|
-
request.params.set('$omit', options.omit);
|
|
64
|
+
request.params.set('$omit', (0, putil_varhelpers_1.toArrayDef)(options.omit, []).join(','));
|
|
60
65
|
return requestHost;
|
|
61
66
|
}
|
|
62
67
|
}
|
package/esm/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { lastValueFrom, Observable } from 'rxjs';
|
|
2
2
|
import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
|
|
3
|
-
import { DocumentFactory,
|
|
3
|
+
import { DocumentFactory, isBlob, OpraURL } from '@opra/common';
|
|
4
4
|
import { ClientError } from './client-error.js';
|
|
5
5
|
import { HttpCollectionNode } from './collection-node.js';
|
|
6
6
|
import { FORMDATA_CONTENT_TYPE_PATTERN, JSON_CONTENT_TYPE_PATTERN, TEXT_CONTENT_TYPE_PATTERN } from './constants.js';
|
|
@@ -24,8 +24,8 @@ export class OpraHttpClient {
|
|
|
24
24
|
...options?.defaults,
|
|
25
25
|
headers: options?.defaults?.headers instanceof Headers
|
|
26
26
|
? options?.defaults?.headers : new Headers(options?.defaults?.headers),
|
|
27
|
-
params: options?.defaults?.params instanceof
|
|
28
|
-
? options?.defaults?.params : new
|
|
27
|
+
params: options?.defaults?.params instanceof URLSearchParams
|
|
28
|
+
? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
get serviceUrl() {
|
|
@@ -38,7 +38,7 @@ export class OpraHttpClient {
|
|
|
38
38
|
if (promise) {
|
|
39
39
|
return promise;
|
|
40
40
|
}
|
|
41
|
-
this[kAssets].metadataPromise = promise = lastValueFrom(this._sendRequest(HttpObserveType.Body, new HttpRequest({
|
|
41
|
+
this[kAssets].metadataPromise = promise = lastValueFrom(this._sendRequest('Singleton', 'get', HttpObserveType.Body, new HttpRequest({
|
|
42
42
|
method: 'GET',
|
|
43
43
|
url: '$metadata',
|
|
44
44
|
headers: new Headers({ 'accept': 'application/json' })
|
|
@@ -50,7 +50,7 @@ export class OpraHttpClient {
|
|
|
50
50
|
return api;
|
|
51
51
|
})
|
|
52
52
|
.catch((e) => {
|
|
53
|
-
e.message = 'Unable to fetch metadata from ' + this.serviceUrl + '. ' + e.message;
|
|
53
|
+
e.message = 'Unable to fetch metadata from service url (' + this.serviceUrl + '). ' + e.message;
|
|
54
54
|
throw e;
|
|
55
55
|
})
|
|
56
56
|
.finally(() => delete this[kAssets].metadataPromise);
|
|
@@ -65,8 +65,10 @@ export class OpraHttpClient {
|
|
|
65
65
|
resourceName = resourceName.name;
|
|
66
66
|
const ctx = {
|
|
67
67
|
client: this,
|
|
68
|
+
resourceKind: 'Collection',
|
|
69
|
+
operation: '',
|
|
68
70
|
resourceName,
|
|
69
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
71
|
+
send: (observe, request) => this._sendRequest('Collection', ctx.operation, observe, request, ctx),
|
|
70
72
|
// requestInterceptors: [
|
|
71
73
|
// // Validate resource exists and is a collection resource
|
|
72
74
|
// async () => {
|
|
@@ -84,8 +86,10 @@ export class OpraHttpClient {
|
|
|
84
86
|
resourceName = resourceName.name;
|
|
85
87
|
const ctx = {
|
|
86
88
|
client: this,
|
|
89
|
+
resourceKind: 'Singleton',
|
|
90
|
+
operation: '',
|
|
87
91
|
resourceName,
|
|
88
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
92
|
+
send: (observe, request) => this._sendRequest('Singleton', ctx.operation, observe, request, ctx),
|
|
89
93
|
// requestInterceptors: [
|
|
90
94
|
// // Validate resource exists and is a singleton resource
|
|
91
95
|
// async () => {
|
|
@@ -97,11 +101,11 @@ export class OpraHttpClient {
|
|
|
97
101
|
};
|
|
98
102
|
return new HttpSingletonNode(ctx);
|
|
99
103
|
}
|
|
100
|
-
_sendRequest(observe, request, ctx) {
|
|
104
|
+
_sendRequest(resourceKind, operation, observe, request, ctx) {
|
|
101
105
|
return new Observable(subscriber => {
|
|
102
106
|
(async () => {
|
|
103
107
|
request.inset(this.defaults);
|
|
104
|
-
const url =
|
|
108
|
+
const url = new OpraURL(request.url, this.serviceUrl);
|
|
105
109
|
let body;
|
|
106
110
|
if (request.body) {
|
|
107
111
|
let contentType;
|
|
@@ -153,8 +157,8 @@ export class OpraHttpClient {
|
|
|
153
157
|
request,
|
|
154
158
|
event: HttpEventType.Sent,
|
|
155
159
|
});
|
|
156
|
-
const response = await this._fetch(url, request);
|
|
157
|
-
await this._handleResponse(observe, subscriber, request, response);
|
|
160
|
+
const response = await this._fetch(url.toString(), request);
|
|
161
|
+
await this._handleResponse(resourceKind, operation, observe, subscriber, request, response, ctx);
|
|
158
162
|
})().catch(error => subscriber.error(error));
|
|
159
163
|
});
|
|
160
164
|
}
|
|
@@ -164,7 +168,7 @@ export class OpraHttpClient {
|
|
|
164
168
|
_createResponse(init) {
|
|
165
169
|
return new HttpResponse(init);
|
|
166
170
|
}
|
|
167
|
-
async _handleResponse(observe, subscriber, request, fetchResponse, ctx) {
|
|
171
|
+
async _handleResponse(resourceKind, operation, observe, subscriber, request, fetchResponse, ctx) {
|
|
168
172
|
const headers = fetchResponse.headers;
|
|
169
173
|
if (observe === HttpObserveType.Events) {
|
|
170
174
|
const response = this._createResponse({
|
|
@@ -182,11 +186,13 @@ export class OpraHttpClient {
|
|
|
182
186
|
});
|
|
183
187
|
}
|
|
184
188
|
let body;
|
|
189
|
+
let totalCount;
|
|
185
190
|
if (fetchResponse.body) {
|
|
186
191
|
if (JSON_CONTENT_TYPE_PATTERN.test(headers.get('Content-Type') || '')) {
|
|
187
192
|
body = await fetchResponse.json();
|
|
188
193
|
if (typeof body === 'string')
|
|
189
194
|
body = JSON.parse(body);
|
|
195
|
+
totalCount = body.totalCount;
|
|
190
196
|
}
|
|
191
197
|
else if (TEXT_CONTENT_TYPE_PATTERN.test(headers.get('Content-Type') || ''))
|
|
192
198
|
body = await fetchResponse.text();
|
|
@@ -214,8 +220,8 @@ export class OpraHttpClient {
|
|
|
214
220
|
statusText: fetchResponse.statusText,
|
|
215
221
|
body
|
|
216
222
|
};
|
|
217
|
-
if (
|
|
218
|
-
responseInit.totalCount =
|
|
223
|
+
if (totalCount != null)
|
|
224
|
+
responseInit.totalCount = totalCount;
|
|
219
225
|
const response = this._createResponse(responseInit);
|
|
220
226
|
if (ctx) {
|
|
221
227
|
const responseInterceptors = [
|
|
@@ -227,7 +233,11 @@ export class OpraHttpClient {
|
|
|
227
233
|
}
|
|
228
234
|
}
|
|
229
235
|
if (observe === HttpObserveType.Body) {
|
|
230
|
-
|
|
236
|
+
if ((resourceKind === 'Collection' || resourceKind === 'Singleton') &&
|
|
237
|
+
(operation === 'create' || operation === 'get' || operation === 'findMany' || operation === 'update'))
|
|
238
|
+
subscriber.next(body.data);
|
|
239
|
+
else
|
|
240
|
+
subscriber.next(body);
|
|
231
241
|
}
|
|
232
242
|
else {
|
|
233
243
|
if (observe === HttpObserveType.Events)
|
package/esm/collection-node.js
CHANGED
|
@@ -1,106 +1,120 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toArrayDef } from 'putil-varhelpers';
|
|
2
|
+
import { kContext, kRequest } from './constants.js';
|
|
2
3
|
import { HttpRequestObservable } from './http-request-observable.js';
|
|
3
4
|
export class HttpCollectionNode {
|
|
4
5
|
constructor(context) {
|
|
5
|
-
this[
|
|
6
|
+
this[kContext] = context;
|
|
6
7
|
}
|
|
7
8
|
create(data, options) {
|
|
8
|
-
const context = this[
|
|
9
|
+
const context = this[kContext];
|
|
10
|
+
context.operation = 'create';
|
|
9
11
|
const requestHost = new HttpRequestObservable(context, options);
|
|
10
|
-
const request = requestHost[
|
|
12
|
+
const request = requestHost[kRequest];
|
|
11
13
|
request.method = 'POST';
|
|
12
|
-
request.url
|
|
14
|
+
request.url.resolve(context.resourceName);
|
|
13
15
|
request.body = data;
|
|
14
16
|
if (options?.include)
|
|
15
|
-
request.params.set('$include', options.include);
|
|
17
|
+
request.params.set('$include', toArrayDef(options.include, []).join(','));
|
|
16
18
|
if (options?.pick)
|
|
17
|
-
request.params.set('$pick', options.pick);
|
|
19
|
+
request.params.set('$pick', toArrayDef(options.pick, []).join(','));
|
|
18
20
|
if (options?.omit)
|
|
19
|
-
request.params.set('$omit', options.omit);
|
|
21
|
+
request.params.set('$omit', toArrayDef(options.omit, []).join(','));
|
|
20
22
|
return requestHost;
|
|
21
23
|
}
|
|
22
24
|
delete(id, options) {
|
|
23
|
-
|
|
25
|
+
if (id == null)
|
|
26
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
27
|
+
const context = this[kContext];
|
|
28
|
+
context.operation = 'delete';
|
|
24
29
|
const requestHost = new HttpRequestObservable(context, options);
|
|
25
|
-
const request = requestHost[
|
|
30
|
+
const request = requestHost[kRequest];
|
|
26
31
|
request.method = 'DELETE';
|
|
27
|
-
request.
|
|
32
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
28
33
|
return requestHost;
|
|
29
34
|
}
|
|
30
35
|
deleteMany(options) {
|
|
31
|
-
const context = this[
|
|
36
|
+
const context = this[kContext];
|
|
37
|
+
context.operation = 'deleteMany';
|
|
32
38
|
const requestHost = new HttpRequestObservable(context, options);
|
|
33
|
-
const request = requestHost[
|
|
39
|
+
const request = requestHost[kRequest];
|
|
34
40
|
request.method = 'DELETE';
|
|
35
|
-
request.url
|
|
41
|
+
request.url.join(context.resourceName);
|
|
36
42
|
if (options?.filter)
|
|
37
|
-
request.params.set('$filter', options.filter);
|
|
43
|
+
request.params.set('$filter', String(options.filter));
|
|
38
44
|
return requestHost;
|
|
39
45
|
}
|
|
40
46
|
get(id, options) {
|
|
41
|
-
|
|
47
|
+
if (id == null)
|
|
48
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
49
|
+
const context = this[kContext];
|
|
50
|
+
context.operation = 'get';
|
|
42
51
|
const requestHost = new HttpRequestObservable(context, options);
|
|
43
|
-
const request = requestHost[
|
|
52
|
+
const request = requestHost[kRequest];
|
|
44
53
|
request.method = 'GET';
|
|
45
|
-
request.
|
|
54
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
46
55
|
if (options?.include)
|
|
47
|
-
request.params.set('$include', options.include);
|
|
56
|
+
request.params.set('$include', toArrayDef(options.include, []).join(','));
|
|
48
57
|
if (options?.pick)
|
|
49
|
-
request.params.set('$pick', options.pick);
|
|
58
|
+
request.params.set('$pick', toArrayDef(options.pick, []).join(','));
|
|
50
59
|
if (options?.omit)
|
|
51
|
-
request.params.set('$omit', options.omit);
|
|
60
|
+
request.params.set('$omit', toArrayDef(options.omit, []).join(','));
|
|
52
61
|
return requestHost;
|
|
53
62
|
}
|
|
54
63
|
findMany(options) {
|
|
55
|
-
const context = this[
|
|
64
|
+
const context = this[kContext];
|
|
65
|
+
context.operation = 'findMany';
|
|
56
66
|
const requestHost = new HttpRequestObservable(context, options);
|
|
57
|
-
const request = requestHost[
|
|
67
|
+
const request = requestHost[kRequest];
|
|
58
68
|
request.method = 'GET';
|
|
59
|
-
request.url
|
|
69
|
+
request.url.join(context.resourceName);
|
|
60
70
|
if (options?.include)
|
|
61
|
-
request.params.set('$include', options.include);
|
|
71
|
+
request.params.set('$include', toArrayDef(options.include, []).join(','));
|
|
62
72
|
if (options?.pick)
|
|
63
|
-
request.params.set('$pick', options.pick);
|
|
73
|
+
request.params.set('$pick', toArrayDef(options.pick, []).join(','));
|
|
64
74
|
if (options?.omit)
|
|
65
|
-
request.params.set('$omit', options.omit);
|
|
75
|
+
request.params.set('$omit', toArrayDef(options.omit, []).join(','));
|
|
66
76
|
if (options?.sort)
|
|
67
|
-
request.params.set('$sort', options.sort);
|
|
77
|
+
request.params.set('$sort', toArrayDef(options.sort, []).join(','));
|
|
68
78
|
if (options?.filter)
|
|
69
|
-
request.params.set('$filter', options.filter);
|
|
79
|
+
request.params.set('$filter', String(options.filter));
|
|
70
80
|
if (options?.limit != null)
|
|
71
|
-
request.params.set('$limit', options.limit);
|
|
81
|
+
request.params.set('$limit', String(options.limit));
|
|
72
82
|
if (options?.skip != null)
|
|
73
|
-
request.params.set('$skip', options.skip);
|
|
83
|
+
request.params.set('$skip', String(options.skip));
|
|
74
84
|
if (options?.count != null)
|
|
75
|
-
request.params.set('$count', options.count);
|
|
85
|
+
request.params.set('$count', String(options.count));
|
|
76
86
|
if (options?.distinct != null)
|
|
77
|
-
request.params.set('$distinct', options.distinct);
|
|
87
|
+
request.params.set('$distinct', String(options.distinct));
|
|
78
88
|
return requestHost;
|
|
79
89
|
}
|
|
80
90
|
update(id, data, options) {
|
|
81
|
-
|
|
91
|
+
if (id == null)
|
|
92
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
93
|
+
const context = this[kContext];
|
|
94
|
+
context.operation = 'update';
|
|
82
95
|
const requestHost = new HttpRequestObservable(context, options);
|
|
83
|
-
const request = requestHost[
|
|
96
|
+
const request = requestHost[kRequest];
|
|
84
97
|
request.method = 'PATCH';
|
|
85
|
-
request.
|
|
98
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
86
99
|
request.body = data;
|
|
87
100
|
if (options?.include)
|
|
88
|
-
request.params.set('$include', options.include);
|
|
101
|
+
request.params.set('$include', String(options.include));
|
|
89
102
|
if (options?.pick)
|
|
90
|
-
request.params.set('$pick', options.pick);
|
|
103
|
+
request.params.set('$pick', String(options.pick));
|
|
91
104
|
if (options?.omit)
|
|
92
|
-
request.params.set('$omit', options.omit);
|
|
105
|
+
request.params.set('$omit', String(options.omit));
|
|
93
106
|
return requestHost;
|
|
94
107
|
}
|
|
95
108
|
updateMany(data, options) {
|
|
96
|
-
const context = this[
|
|
109
|
+
const context = this[kContext];
|
|
110
|
+
context.operation = 'updateMany';
|
|
97
111
|
const requestHost = new HttpRequestObservable(context, options);
|
|
98
|
-
const request = requestHost[
|
|
112
|
+
const request = requestHost[kRequest];
|
|
99
113
|
request.method = 'PATCH';
|
|
100
|
-
request.url
|
|
114
|
+
request.url.join(context.resourceName);
|
|
101
115
|
request.body = data;
|
|
102
116
|
if (options?.filter)
|
|
103
|
-
request.params.set('$filter', options.filter);
|
|
117
|
+
request.params.set('$filter', String(options.filter));
|
|
104
118
|
return requestHost;
|
|
105
119
|
}
|
|
106
120
|
}
|