@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/browser.js
CHANGED
|
@@ -9,7 +9,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
9
9
|
// ../../build/client/esm/client.js
|
|
10
10
|
import { lastValueFrom as lastValueFrom2, Observable as Observable2 } from "rxjs";
|
|
11
11
|
import { isReadableStreamLike } from "rxjs/internal/util/isReadableStreamLike";
|
|
12
|
-
import { DocumentFactory,
|
|
12
|
+
import { DocumentFactory, isBlob, OpraURL as OpraURL2 } from "@opra/common";
|
|
13
13
|
|
|
14
14
|
// ../../build/client/esm/client-error.js
|
|
15
15
|
var ClientError = class extends Error {
|
|
@@ -29,11 +29,15 @@ var ClientError = class extends Error {
|
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
// ../../build/client/esm/collection-node.js
|
|
33
|
+
import { toArrayDef } from "putil-varhelpers";
|
|
34
|
+
|
|
32
35
|
// ../../build/client/esm/constants.js
|
|
33
36
|
var JSON_CONTENT_TYPE_PATTERN = /^application\/([\w-]+\+)?\bjson\b/i;
|
|
34
37
|
var TEXT_CONTENT_TYPE_PATTERN = /^text\/.*$/i;
|
|
35
38
|
var FORMDATA_CONTENT_TYPE_PATTERN = /^multipart\/\bform-data\b/i;
|
|
36
|
-
var
|
|
39
|
+
var kRequest = Symbol.for("kRequest");
|
|
40
|
+
var kContext = Symbol.for("kContext");
|
|
37
41
|
|
|
38
42
|
// ../../build/client/esm/http-request-observable.js
|
|
39
43
|
import { lastValueFrom, Observable } from "rxjs";
|
|
@@ -72,24 +76,22 @@ var HttpRequest = class _HttpRequest {
|
|
|
72
76
|
this.referrerPolicy = init?.referrerPolicy || "";
|
|
73
77
|
this.signal = init?.signal || new AbortController().signal;
|
|
74
78
|
this.body = init?.body;
|
|
75
|
-
this.
|
|
76
|
-
if (init?.params)
|
|
77
|
-
|
|
79
|
+
this.parsedUrl = new OpraURL(init?.url);
|
|
80
|
+
if (init?.params) {
|
|
81
|
+
const params = new URLSearchParams(init.params);
|
|
82
|
+
params.forEach((v, k) => this.params.set(k, v));
|
|
83
|
+
}
|
|
78
84
|
}
|
|
79
85
|
/** Returns the URL of request as a string. */
|
|
80
86
|
get url() {
|
|
81
|
-
return this.
|
|
87
|
+
return this.parsedUrl;
|
|
82
88
|
}
|
|
83
89
|
set url(value) {
|
|
84
|
-
this.
|
|
90
|
+
this.parsedUrl = value;
|
|
85
91
|
}
|
|
86
92
|
/** Returns the searchParams of the URL as OpraURLSearchParams */
|
|
87
93
|
get params() {
|
|
88
|
-
return this.
|
|
89
|
-
}
|
|
90
|
-
/** Returns the path part of URL as OpraURLPath */
|
|
91
|
-
get path() {
|
|
92
|
-
return this.urlInstance.path;
|
|
94
|
+
return this.parsedUrl.searchParams;
|
|
93
95
|
}
|
|
94
96
|
clone(...update) {
|
|
95
97
|
const out = new _HttpRequest();
|
|
@@ -149,7 +151,6 @@ var HttpEventType;
|
|
|
149
151
|
})(HttpEventType || (HttpEventType = {}));
|
|
150
152
|
|
|
151
153
|
// ../../build/client/esm/http-request-observable.js
|
|
152
|
-
var kRequest = Symbol("kRequest");
|
|
153
154
|
var HttpRequestObservable = class extends Observable {
|
|
154
155
|
static {
|
|
155
156
|
__name(this, "HttpRequestObservable");
|
|
@@ -158,7 +159,7 @@ var HttpRequestObservable = class extends Observable {
|
|
|
158
159
|
super((subscriber) => {
|
|
159
160
|
context.send(options?.observe || HttpObserveType.Body, this[kRequest]).subscribe(subscriber);
|
|
160
161
|
});
|
|
161
|
-
this[
|
|
162
|
+
this[kContext] = context;
|
|
162
163
|
this[kRequest] = new HttpRequest(options?.http);
|
|
163
164
|
this.contentId = uid(6);
|
|
164
165
|
}
|
|
@@ -175,15 +176,13 @@ var HttpRequestObservable = class extends Observable {
|
|
|
175
176
|
return this;
|
|
176
177
|
}
|
|
177
178
|
async fetch(observe) {
|
|
178
|
-
return lastValueFrom(this[
|
|
179
|
+
return lastValueFrom(this[kContext].send(observe || HttpObserveType.Body, this[kRequest]));
|
|
179
180
|
}
|
|
180
181
|
with(cb) {
|
|
181
182
|
cb(this);
|
|
182
183
|
return this;
|
|
183
184
|
}
|
|
184
185
|
};
|
|
185
|
-
HttpRequestObservable.kContext = kHttpClientContext;
|
|
186
|
-
HttpRequestObservable.kRequest = kRequest;
|
|
187
186
|
|
|
188
187
|
// ../../build/client/esm/collection-node.js
|
|
189
188
|
var HttpCollectionNode = class {
|
|
@@ -191,105 +190,118 @@ var HttpCollectionNode = class {
|
|
|
191
190
|
__name(this, "HttpCollectionNode");
|
|
192
191
|
}
|
|
193
192
|
constructor(context) {
|
|
194
|
-
this[
|
|
193
|
+
this[kContext] = context;
|
|
195
194
|
}
|
|
196
195
|
create(data, options) {
|
|
197
|
-
const context = this[
|
|
196
|
+
const context = this[kContext];
|
|
197
|
+
context.operation = "create";
|
|
198
198
|
const requestHost = new HttpRequestObservable(context, options);
|
|
199
|
-
const request = requestHost[
|
|
199
|
+
const request = requestHost[kRequest];
|
|
200
200
|
request.method = "POST";
|
|
201
|
-
request.url
|
|
201
|
+
request.url.resolve(context.resourceName);
|
|
202
202
|
request.body = data;
|
|
203
203
|
if (options?.include)
|
|
204
|
-
request.params.set("$include", options.include);
|
|
204
|
+
request.params.set("$include", toArrayDef(options.include, []).join(","));
|
|
205
205
|
if (options?.pick)
|
|
206
|
-
request.params.set("$pick", options.pick);
|
|
206
|
+
request.params.set("$pick", toArrayDef(options.pick, []).join(","));
|
|
207
207
|
if (options?.omit)
|
|
208
|
-
request.params.set("$omit", options.omit);
|
|
208
|
+
request.params.set("$omit", toArrayDef(options.omit, []).join(","));
|
|
209
209
|
return requestHost;
|
|
210
210
|
}
|
|
211
211
|
delete(id, options) {
|
|
212
|
-
|
|
212
|
+
if (id == null)
|
|
213
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
214
|
+
const context = this[kContext];
|
|
215
|
+
context.operation = "delete";
|
|
213
216
|
const requestHost = new HttpRequestObservable(context, options);
|
|
214
|
-
const request = requestHost[
|
|
217
|
+
const request = requestHost[kRequest];
|
|
215
218
|
request.method = "DELETE";
|
|
216
|
-
request.
|
|
219
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
217
220
|
return requestHost;
|
|
218
221
|
}
|
|
219
222
|
deleteMany(options) {
|
|
220
|
-
const context = this[
|
|
223
|
+
const context = this[kContext];
|
|
224
|
+
context.operation = "deleteMany";
|
|
221
225
|
const requestHost = new HttpRequestObservable(context, options);
|
|
222
|
-
const request = requestHost[
|
|
226
|
+
const request = requestHost[kRequest];
|
|
223
227
|
request.method = "DELETE";
|
|
224
|
-
request.url
|
|
228
|
+
request.url.join(context.resourceName);
|
|
225
229
|
if (options?.filter)
|
|
226
|
-
request.params.set("$filter", options.filter);
|
|
230
|
+
request.params.set("$filter", String(options.filter));
|
|
227
231
|
return requestHost;
|
|
228
232
|
}
|
|
229
233
|
get(id, options) {
|
|
230
|
-
|
|
234
|
+
if (id == null)
|
|
235
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
236
|
+
const context = this[kContext];
|
|
237
|
+
context.operation = "get";
|
|
231
238
|
const requestHost = new HttpRequestObservable(context, options);
|
|
232
|
-
const request = requestHost[
|
|
239
|
+
const request = requestHost[kRequest];
|
|
233
240
|
request.method = "GET";
|
|
234
|
-
request.
|
|
241
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
235
242
|
if (options?.include)
|
|
236
|
-
request.params.set("$include", options.include);
|
|
243
|
+
request.params.set("$include", toArrayDef(options.include, []).join(","));
|
|
237
244
|
if (options?.pick)
|
|
238
|
-
request.params.set("$pick", options.pick);
|
|
245
|
+
request.params.set("$pick", toArrayDef(options.pick, []).join(","));
|
|
239
246
|
if (options?.omit)
|
|
240
|
-
request.params.set("$omit", options.omit);
|
|
247
|
+
request.params.set("$omit", toArrayDef(options.omit, []).join(","));
|
|
241
248
|
return requestHost;
|
|
242
249
|
}
|
|
243
250
|
findMany(options) {
|
|
244
|
-
const context = this[
|
|
251
|
+
const context = this[kContext];
|
|
252
|
+
context.operation = "findMany";
|
|
245
253
|
const requestHost = new HttpRequestObservable(context, options);
|
|
246
|
-
const request = requestHost[
|
|
254
|
+
const request = requestHost[kRequest];
|
|
247
255
|
request.method = "GET";
|
|
248
|
-
request.url
|
|
256
|
+
request.url.join(context.resourceName);
|
|
249
257
|
if (options?.include)
|
|
250
|
-
request.params.set("$include", options.include);
|
|
258
|
+
request.params.set("$include", toArrayDef(options.include, []).join(","));
|
|
251
259
|
if (options?.pick)
|
|
252
|
-
request.params.set("$pick", options.pick);
|
|
260
|
+
request.params.set("$pick", toArrayDef(options.pick, []).join(","));
|
|
253
261
|
if (options?.omit)
|
|
254
|
-
request.params.set("$omit", options.omit);
|
|
262
|
+
request.params.set("$omit", toArrayDef(options.omit, []).join(","));
|
|
255
263
|
if (options?.sort)
|
|
256
|
-
request.params.set("$sort", options.sort);
|
|
264
|
+
request.params.set("$sort", toArrayDef(options.sort, []).join(","));
|
|
257
265
|
if (options?.filter)
|
|
258
|
-
request.params.set("$filter", options.filter);
|
|
266
|
+
request.params.set("$filter", String(options.filter));
|
|
259
267
|
if (options?.limit != null)
|
|
260
|
-
request.params.set("$limit", options.limit);
|
|
268
|
+
request.params.set("$limit", String(options.limit));
|
|
261
269
|
if (options?.skip != null)
|
|
262
|
-
request.params.set("$skip", options.skip);
|
|
270
|
+
request.params.set("$skip", String(options.skip));
|
|
263
271
|
if (options?.count != null)
|
|
264
|
-
request.params.set("$count", options.count);
|
|
272
|
+
request.params.set("$count", String(options.count));
|
|
265
273
|
if (options?.distinct != null)
|
|
266
|
-
request.params.set("$distinct", options.distinct);
|
|
274
|
+
request.params.set("$distinct", String(options.distinct));
|
|
267
275
|
return requestHost;
|
|
268
276
|
}
|
|
269
277
|
update(id, data, options) {
|
|
270
|
-
|
|
278
|
+
if (id == null)
|
|
279
|
+
throw new TypeError(`'id' argument must have a value`);
|
|
280
|
+
const context = this[kContext];
|
|
281
|
+
context.operation = "update";
|
|
271
282
|
const requestHost = new HttpRequestObservable(context, options);
|
|
272
|
-
const request = requestHost[
|
|
283
|
+
const request = requestHost[kRequest];
|
|
273
284
|
request.method = "PATCH";
|
|
274
|
-
request.
|
|
285
|
+
request.url.join({ resource: context.resourceName, key: id });
|
|
275
286
|
request.body = data;
|
|
276
287
|
if (options?.include)
|
|
277
|
-
request.params.set("$include", options.include);
|
|
288
|
+
request.params.set("$include", String(options.include));
|
|
278
289
|
if (options?.pick)
|
|
279
|
-
request.params.set("$pick", options.pick);
|
|
290
|
+
request.params.set("$pick", String(options.pick));
|
|
280
291
|
if (options?.omit)
|
|
281
|
-
request.params.set("$omit", options.omit);
|
|
292
|
+
request.params.set("$omit", String(options.omit));
|
|
282
293
|
return requestHost;
|
|
283
294
|
}
|
|
284
295
|
updateMany(data, options) {
|
|
285
|
-
const context = this[
|
|
296
|
+
const context = this[kContext];
|
|
297
|
+
context.operation = "updateMany";
|
|
286
298
|
const requestHost = new HttpRequestObservable(context, options);
|
|
287
|
-
const request = requestHost[
|
|
299
|
+
const request = requestHost[kRequest];
|
|
288
300
|
request.method = "PATCH";
|
|
289
|
-
request.url
|
|
301
|
+
request.url.join(context.resourceName);
|
|
290
302
|
request.body = data;
|
|
291
303
|
if (options?.filter)
|
|
292
|
-
request.params.set("$filter", options.filter);
|
|
304
|
+
request.params.set("$filter", String(options.filter));
|
|
293
305
|
return requestHost;
|
|
294
306
|
}
|
|
295
307
|
};
|
|
@@ -316,63 +328,68 @@ var HttpResponse = class _HttpResponse {
|
|
|
316
328
|
};
|
|
317
329
|
|
|
318
330
|
// ../../build/client/esm/singleton-node.js
|
|
331
|
+
import { toArrayDef as toArrayDef2 } from "putil-varhelpers";
|
|
319
332
|
var HttpSingletonNode = class {
|
|
320
333
|
static {
|
|
321
334
|
__name(this, "HttpSingletonNode");
|
|
322
335
|
}
|
|
323
336
|
constructor(context) {
|
|
324
|
-
this[
|
|
337
|
+
this[kContext] = context;
|
|
325
338
|
}
|
|
326
339
|
create(data, options) {
|
|
327
|
-
const context = this[
|
|
340
|
+
const context = this[kContext];
|
|
341
|
+
context.operation = "create";
|
|
328
342
|
const requestHost = new HttpRequestObservable(context, options);
|
|
329
|
-
const request = requestHost[
|
|
343
|
+
const request = requestHost[kRequest];
|
|
330
344
|
request.method = "POST";
|
|
331
|
-
request.url
|
|
345
|
+
request.url.join(context.resourceName);
|
|
332
346
|
request.body = data;
|
|
333
347
|
if (options?.include)
|
|
334
|
-
request.params.set("$include", options.include);
|
|
348
|
+
request.params.set("$include", toArrayDef2(options.include, []).join(","));
|
|
335
349
|
if (options?.pick)
|
|
336
|
-
request.params.set("$pick", options.pick);
|
|
350
|
+
request.params.set("$pick", toArrayDef2(options.pick, []).join(","));
|
|
337
351
|
if (options?.omit)
|
|
338
|
-
request.params.set("$omit", options.omit);
|
|
352
|
+
request.params.set("$omit", toArrayDef2(options.omit, []).join(","));
|
|
339
353
|
return requestHost;
|
|
340
354
|
}
|
|
341
355
|
delete(options) {
|
|
342
|
-
const context = this[
|
|
356
|
+
const context = this[kContext];
|
|
357
|
+
context.operation = "delete";
|
|
343
358
|
const requestHost = new HttpRequestObservable(context, options);
|
|
344
|
-
const request = requestHost[
|
|
359
|
+
const request = requestHost[kRequest];
|
|
345
360
|
request.method = "DELETE";
|
|
346
|
-
request.
|
|
361
|
+
request.url.join({ resource: context.resourceName });
|
|
347
362
|
return requestHost;
|
|
348
363
|
}
|
|
349
364
|
get(options) {
|
|
350
|
-
const context = this[
|
|
365
|
+
const context = this[kContext];
|
|
366
|
+
context.operation = "get";
|
|
351
367
|
const requestHost = new HttpRequestObservable(context, options);
|
|
352
|
-
const request = requestHost[
|
|
368
|
+
const request = requestHost[kRequest];
|
|
353
369
|
request.method = "GET";
|
|
354
|
-
request.
|
|
370
|
+
request.url.join({ resource: context.resourceName });
|
|
355
371
|
if (options?.include)
|
|
356
|
-
request.params.set("$include", options.include);
|
|
372
|
+
request.params.set("$include", toArrayDef2(options.include, []).join(","));
|
|
357
373
|
if (options?.pick)
|
|
358
|
-
request.params.set("$pick", options.pick);
|
|
374
|
+
request.params.set("$pick", toArrayDef2(options.pick, []).join(","));
|
|
359
375
|
if (options?.omit)
|
|
360
|
-
request.params.set("$omit", options.omit);
|
|
376
|
+
request.params.set("$omit", toArrayDef2(options.omit, []).join(","));
|
|
361
377
|
return requestHost;
|
|
362
378
|
}
|
|
363
379
|
update(data, options) {
|
|
364
|
-
const context = this[
|
|
380
|
+
const context = this[kContext];
|
|
381
|
+
context.operation = "update";
|
|
365
382
|
const requestHost = new HttpRequestObservable(context, options);
|
|
366
|
-
const request = requestHost[
|
|
383
|
+
const request = requestHost[kRequest];
|
|
367
384
|
request.method = "PATCH";
|
|
368
|
-
request.
|
|
385
|
+
request.url.join({ resource: context.resourceName });
|
|
369
386
|
request.body = data;
|
|
370
387
|
if (options?.include)
|
|
371
|
-
request.params.set("$include", options.include);
|
|
388
|
+
request.params.set("$include", toArrayDef2(options.include, []).join(","));
|
|
372
389
|
if (options?.pick)
|
|
373
|
-
request.params.set("$pick", options.pick);
|
|
390
|
+
request.params.set("$pick", toArrayDef2(options.pick, []).join(","));
|
|
374
391
|
if (options?.omit)
|
|
375
|
-
request.params.set("$omit", options.omit);
|
|
392
|
+
request.params.set("$omit", toArrayDef2(options.omit, []).join(","));
|
|
376
393
|
return requestHost;
|
|
377
394
|
}
|
|
378
395
|
};
|
|
@@ -396,7 +413,7 @@ var OpraHttpClient = class {
|
|
|
396
413
|
this.defaults = {
|
|
397
414
|
...options?.defaults,
|
|
398
415
|
headers: options?.defaults?.headers instanceof Headers ? options?.defaults?.headers : new Headers(options?.defaults?.headers),
|
|
399
|
-
params: options?.defaults?.params instanceof
|
|
416
|
+
params: options?.defaults?.params instanceof URLSearchParams ? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
|
|
400
417
|
};
|
|
401
418
|
}
|
|
402
419
|
get serviceUrl() {
|
|
@@ -409,7 +426,7 @@ var OpraHttpClient = class {
|
|
|
409
426
|
if (promise) {
|
|
410
427
|
return promise;
|
|
411
428
|
}
|
|
412
|
-
this[kAssets].metadataPromise = promise = lastValueFrom2(this._sendRequest(HttpObserveType.Body, new HttpRequest({
|
|
429
|
+
this[kAssets].metadataPromise = promise = lastValueFrom2(this._sendRequest("Singleton", "get", HttpObserveType.Body, new HttpRequest({
|
|
413
430
|
method: "GET",
|
|
414
431
|
url: "$metadata",
|
|
415
432
|
headers: new Headers({ "accept": "application/json" })
|
|
@@ -419,7 +436,7 @@ var OpraHttpClient = class {
|
|
|
419
436
|
this[kAssets].api = api;
|
|
420
437
|
return api;
|
|
421
438
|
}).catch((e) => {
|
|
422
|
-
e.message = "Unable to fetch metadata from " + this.serviceUrl + ". " + e.message;
|
|
439
|
+
e.message = "Unable to fetch metadata from service url (" + this.serviceUrl + "). " + e.message;
|
|
423
440
|
throw e;
|
|
424
441
|
}).finally(() => delete this[kAssets].metadataPromise);
|
|
425
442
|
}
|
|
@@ -432,8 +449,10 @@ var OpraHttpClient = class {
|
|
|
432
449
|
resourceName = resourceName.name;
|
|
433
450
|
const ctx = {
|
|
434
451
|
client: this,
|
|
452
|
+
resourceKind: "Collection",
|
|
453
|
+
operation: "",
|
|
435
454
|
resourceName,
|
|
436
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
455
|
+
send: (observe, request) => this._sendRequest("Collection", ctx.operation, observe, request, ctx),
|
|
437
456
|
// requestInterceptors: [
|
|
438
457
|
// // Validate resource exists and is a collection resource
|
|
439
458
|
// async () => {
|
|
@@ -450,8 +469,10 @@ var OpraHttpClient = class {
|
|
|
450
469
|
resourceName = resourceName.name;
|
|
451
470
|
const ctx = {
|
|
452
471
|
client: this,
|
|
472
|
+
resourceKind: "Singleton",
|
|
473
|
+
operation: "",
|
|
453
474
|
resourceName,
|
|
454
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
475
|
+
send: (observe, request) => this._sendRequest("Singleton", ctx.operation, observe, request, ctx),
|
|
455
476
|
// requestInterceptors: [
|
|
456
477
|
// // Validate resource exists and is a singleton resource
|
|
457
478
|
// async () => {
|
|
@@ -463,11 +484,11 @@ var OpraHttpClient = class {
|
|
|
463
484
|
};
|
|
464
485
|
return new HttpSingletonNode(ctx);
|
|
465
486
|
}
|
|
466
|
-
_sendRequest(observe, request, ctx) {
|
|
487
|
+
_sendRequest(resourceKind, operation, observe, request, ctx) {
|
|
467
488
|
return new Observable2((subscriber) => {
|
|
468
489
|
(async () => {
|
|
469
490
|
request.inset(this.defaults);
|
|
470
|
-
const url =
|
|
491
|
+
const url = new OpraURL2(request.url, this.serviceUrl);
|
|
471
492
|
let body;
|
|
472
493
|
if (request.body) {
|
|
473
494
|
let contentType;
|
|
@@ -515,8 +536,8 @@ var OpraHttpClient = class {
|
|
|
515
536
|
request,
|
|
516
537
|
event: HttpEventType.Sent
|
|
517
538
|
});
|
|
518
|
-
const response = await this._fetch(url, request);
|
|
519
|
-
await this._handleResponse(observe, subscriber, request, response);
|
|
539
|
+
const response = await this._fetch(url.toString(), request);
|
|
540
|
+
await this._handleResponse(resourceKind, operation, observe, subscriber, request, response, ctx);
|
|
520
541
|
})().catch((error) => subscriber.error(error));
|
|
521
542
|
});
|
|
522
543
|
}
|
|
@@ -526,7 +547,7 @@ var OpraHttpClient = class {
|
|
|
526
547
|
_createResponse(init) {
|
|
527
548
|
return new HttpResponse(init);
|
|
528
549
|
}
|
|
529
|
-
async _handleResponse(observe, subscriber, request, fetchResponse, ctx) {
|
|
550
|
+
async _handleResponse(resourceKind, operation, observe, subscriber, request, fetchResponse, ctx) {
|
|
530
551
|
const headers = fetchResponse.headers;
|
|
531
552
|
if (observe === HttpObserveType.Events) {
|
|
532
553
|
const response2 = this._createResponse({
|
|
@@ -544,11 +565,13 @@ var OpraHttpClient = class {
|
|
|
544
565
|
});
|
|
545
566
|
}
|
|
546
567
|
let body;
|
|
568
|
+
let totalCount;
|
|
547
569
|
if (fetchResponse.body) {
|
|
548
570
|
if (JSON_CONTENT_TYPE_PATTERN.test(headers.get("Content-Type") || "")) {
|
|
549
571
|
body = await fetchResponse.json();
|
|
550
572
|
if (typeof body === "string")
|
|
551
573
|
body = JSON.parse(body);
|
|
574
|
+
totalCount = body.totalCount;
|
|
552
575
|
} else if (TEXT_CONTENT_TYPE_PATTERN.test(headers.get("Content-Type") || ""))
|
|
553
576
|
body = await fetchResponse.text();
|
|
554
577
|
else if (FORMDATA_CONTENT_TYPE_PATTERN.test(headers.get("Content-Type") || ""))
|
|
@@ -575,8 +598,8 @@ var OpraHttpClient = class {
|
|
|
575
598
|
statusText: fetchResponse.statusText,
|
|
576
599
|
body
|
|
577
600
|
};
|
|
578
|
-
if (
|
|
579
|
-
responseInit.totalCount =
|
|
601
|
+
if (totalCount != null)
|
|
602
|
+
responseInit.totalCount = totalCount;
|
|
580
603
|
const response = this._createResponse(responseInit);
|
|
581
604
|
if (ctx) {
|
|
582
605
|
const responseInterceptors = [
|
|
@@ -588,7 +611,10 @@ var OpraHttpClient = class {
|
|
|
588
611
|
}
|
|
589
612
|
}
|
|
590
613
|
if (observe === HttpObserveType.Body) {
|
|
591
|
-
|
|
614
|
+
if ((resourceKind === "Collection" || resourceKind === "Singleton") && (operation === "create" || operation === "get" || operation === "findMany" || operation === "update"))
|
|
615
|
+
subscriber.next(body.data);
|
|
616
|
+
else
|
|
617
|
+
subscriber.next(body);
|
|
592
618
|
} else {
|
|
593
619
|
if (observe === HttpObserveType.Events)
|
|
594
620
|
subscriber.next({
|
package/cjs/client.js
CHANGED
|
@@ -27,8 +27,8 @@ class OpraHttpClient {
|
|
|
27
27
|
...options?.defaults,
|
|
28
28
|
headers: options?.defaults?.headers instanceof Headers
|
|
29
29
|
? options?.defaults?.headers : new Headers(options?.defaults?.headers),
|
|
30
|
-
params: options?.defaults?.params instanceof
|
|
31
|
-
? options?.defaults?.params : new
|
|
30
|
+
params: options?.defaults?.params instanceof URLSearchParams
|
|
31
|
+
? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
get serviceUrl() {
|
|
@@ -41,7 +41,7 @@ class OpraHttpClient {
|
|
|
41
41
|
if (promise) {
|
|
42
42
|
return promise;
|
|
43
43
|
}
|
|
44
|
-
this[kAssets].metadataPromise = promise = (0, rxjs_1.lastValueFrom)(this._sendRequest(types_js_1.HttpObserveType.Body, new http_request_js_1.HttpRequest({
|
|
44
|
+
this[kAssets].metadataPromise = promise = (0, rxjs_1.lastValueFrom)(this._sendRequest('Singleton', 'get', types_js_1.HttpObserveType.Body, new http_request_js_1.HttpRequest({
|
|
45
45
|
method: 'GET',
|
|
46
46
|
url: '$metadata',
|
|
47
47
|
headers: new Headers({ 'accept': 'application/json' })
|
|
@@ -53,7 +53,7 @@ class OpraHttpClient {
|
|
|
53
53
|
return api;
|
|
54
54
|
})
|
|
55
55
|
.catch((e) => {
|
|
56
|
-
e.message = 'Unable to fetch metadata from ' + this.serviceUrl + '. ' + e.message;
|
|
56
|
+
e.message = 'Unable to fetch metadata from service url (' + this.serviceUrl + '). ' + e.message;
|
|
57
57
|
throw e;
|
|
58
58
|
})
|
|
59
59
|
.finally(() => delete this[kAssets].metadataPromise);
|
|
@@ -68,8 +68,10 @@ class OpraHttpClient {
|
|
|
68
68
|
resourceName = resourceName.name;
|
|
69
69
|
const ctx = {
|
|
70
70
|
client: this,
|
|
71
|
+
resourceKind: 'Collection',
|
|
72
|
+
operation: '',
|
|
71
73
|
resourceName,
|
|
72
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
74
|
+
send: (observe, request) => this._sendRequest('Collection', ctx.operation, observe, request, ctx),
|
|
73
75
|
// requestInterceptors: [
|
|
74
76
|
// // Validate resource exists and is a collection resource
|
|
75
77
|
// async () => {
|
|
@@ -87,8 +89,10 @@ class OpraHttpClient {
|
|
|
87
89
|
resourceName = resourceName.name;
|
|
88
90
|
const ctx = {
|
|
89
91
|
client: this,
|
|
92
|
+
resourceKind: 'Singleton',
|
|
93
|
+
operation: '',
|
|
90
94
|
resourceName,
|
|
91
|
-
send: (observe, request) => this._sendRequest(observe, request, ctx),
|
|
95
|
+
send: (observe, request) => this._sendRequest('Singleton', ctx.operation, observe, request, ctx),
|
|
92
96
|
// requestInterceptors: [
|
|
93
97
|
// // Validate resource exists and is a singleton resource
|
|
94
98
|
// async () => {
|
|
@@ -100,11 +104,11 @@ class OpraHttpClient {
|
|
|
100
104
|
};
|
|
101
105
|
return new singleton_node_js_1.HttpSingletonNode(ctx);
|
|
102
106
|
}
|
|
103
|
-
_sendRequest(observe, request, ctx) {
|
|
107
|
+
_sendRequest(resourceKind, operation, observe, request, ctx) {
|
|
104
108
|
return new rxjs_1.Observable(subscriber => {
|
|
105
109
|
(async () => {
|
|
106
110
|
request.inset(this.defaults);
|
|
107
|
-
const url =
|
|
111
|
+
const url = new common_1.OpraURL(request.url, this.serviceUrl);
|
|
108
112
|
let body;
|
|
109
113
|
if (request.body) {
|
|
110
114
|
let contentType;
|
|
@@ -156,8 +160,8 @@ class OpraHttpClient {
|
|
|
156
160
|
request,
|
|
157
161
|
event: types_js_1.HttpEventType.Sent,
|
|
158
162
|
});
|
|
159
|
-
const response = await this._fetch(url, request);
|
|
160
|
-
await this._handleResponse(observe, subscriber, request, response);
|
|
163
|
+
const response = await this._fetch(url.toString(), request);
|
|
164
|
+
await this._handleResponse(resourceKind, operation, observe, subscriber, request, response, ctx);
|
|
161
165
|
})().catch(error => subscriber.error(error));
|
|
162
166
|
});
|
|
163
167
|
}
|
|
@@ -167,7 +171,7 @@ class OpraHttpClient {
|
|
|
167
171
|
_createResponse(init) {
|
|
168
172
|
return new http_response_js_1.HttpResponse(init);
|
|
169
173
|
}
|
|
170
|
-
async _handleResponse(observe, subscriber, request, fetchResponse, ctx) {
|
|
174
|
+
async _handleResponse(resourceKind, operation, observe, subscriber, request, fetchResponse, ctx) {
|
|
171
175
|
const headers = fetchResponse.headers;
|
|
172
176
|
if (observe === types_js_1.HttpObserveType.Events) {
|
|
173
177
|
const response = this._createResponse({
|
|
@@ -185,11 +189,13 @@ class OpraHttpClient {
|
|
|
185
189
|
});
|
|
186
190
|
}
|
|
187
191
|
let body;
|
|
192
|
+
let totalCount;
|
|
188
193
|
if (fetchResponse.body) {
|
|
189
194
|
if (constants_js_1.JSON_CONTENT_TYPE_PATTERN.test(headers.get('Content-Type') || '')) {
|
|
190
195
|
body = await fetchResponse.json();
|
|
191
196
|
if (typeof body === 'string')
|
|
192
197
|
body = JSON.parse(body);
|
|
198
|
+
totalCount = body.totalCount;
|
|
193
199
|
}
|
|
194
200
|
else if (constants_js_1.TEXT_CONTENT_TYPE_PATTERN.test(headers.get('Content-Type') || ''))
|
|
195
201
|
body = await fetchResponse.text();
|
|
@@ -217,8 +223,8 @@ class OpraHttpClient {
|
|
|
217
223
|
statusText: fetchResponse.statusText,
|
|
218
224
|
body
|
|
219
225
|
};
|
|
220
|
-
if (
|
|
221
|
-
responseInit.totalCount =
|
|
226
|
+
if (totalCount != null)
|
|
227
|
+
responseInit.totalCount = totalCount;
|
|
222
228
|
const response = this._createResponse(responseInit);
|
|
223
229
|
if (ctx) {
|
|
224
230
|
const responseInterceptors = [
|
|
@@ -230,7 +236,11 @@ class OpraHttpClient {
|
|
|
230
236
|
}
|
|
231
237
|
}
|
|
232
238
|
if (observe === types_js_1.HttpObserveType.Body) {
|
|
233
|
-
|
|
239
|
+
if ((resourceKind === 'Collection' || resourceKind === 'Singleton') &&
|
|
240
|
+
(operation === 'create' || operation === 'get' || operation === 'findMany' || operation === 'update'))
|
|
241
|
+
subscriber.next(body.data);
|
|
242
|
+
else
|
|
243
|
+
subscriber.next(body);
|
|
234
244
|
}
|
|
235
245
|
else {
|
|
236
246
|
if (observe === types_js_1.HttpObserveType.Events)
|