@opra/client 1.0.0-alpha.21 → 1.0.0-alpha.23
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/index.cjs +617 -0
- package/browser/index.min.cjs +8 -0
- package/browser/index.min.mjs +8 -0
- package/browser/index.mjs +576 -0
- package/package.json +45 -40
- package/browser.js +0 -8
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
/****************************************
|
|
2
|
+
* All rights reserved Panates® 2022-2024
|
|
3
|
+
* http://www.panates.com
|
|
4
|
+
*****************************************/
|
|
5
|
+
|
|
6
|
+
var __create = Object.create;
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
var __export = (target, all) => {
|
|
14
|
+
for (var name in all)
|
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
+
};
|
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
+
for (let key of __getOwnPropNames(from))
|
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
+
}
|
|
23
|
+
return to;
|
|
24
|
+
};
|
|
25
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
26
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
27
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
28
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
29
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
30
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
31
|
+
mod
|
|
32
|
+
));
|
|
33
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
|
+
|
|
35
|
+
// ../../build/client/esm/index.js
|
|
36
|
+
var esm_exports = {};
|
|
37
|
+
__export(esm_exports, {
|
|
38
|
+
Backend: () => Backend,
|
|
39
|
+
ClientError: () => ClientError,
|
|
40
|
+
FetchBackend: () => FetchBackend,
|
|
41
|
+
HttpBackend: () => HttpBackend,
|
|
42
|
+
HttpClientBase: () => HttpClientBase,
|
|
43
|
+
HttpEventType: () => HttpEventType,
|
|
44
|
+
HttpObserveType: () => HttpObserveType,
|
|
45
|
+
HttpRequestObservable: () => HttpRequestObservable,
|
|
46
|
+
HttpResponse: () => HttpResponse,
|
|
47
|
+
OpraHttpClient: () => OpraHttpClient,
|
|
48
|
+
kBackend: () => kBackend,
|
|
49
|
+
kClient: () => kClient,
|
|
50
|
+
kContext: () => kContext,
|
|
51
|
+
urlPath: () => urlPath
|
|
52
|
+
});
|
|
53
|
+
module.exports = __toCommonJS(esm_exports);
|
|
54
|
+
|
|
55
|
+
// ../../build/client/esm/constants.js
|
|
56
|
+
var kClient = Symbol.for("kClient");
|
|
57
|
+
var kBackend = Symbol.for("kBackend");
|
|
58
|
+
var kContext = Symbol.for("kContext");
|
|
59
|
+
|
|
60
|
+
// ../../build/client/esm/core/backend.js
|
|
61
|
+
var _Backend = class _Backend {
|
|
62
|
+
constructor(options) {
|
|
63
|
+
this.document = options == null ? void 0 : options.document;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
__name(_Backend, "Backend");
|
|
67
|
+
var Backend = _Backend;
|
|
68
|
+
|
|
69
|
+
// ../../build/client/esm/core/client-error.js
|
|
70
|
+
var _ClientError = class _ClientError extends Error {
|
|
71
|
+
constructor(init, cause) {
|
|
72
|
+
super(init.message);
|
|
73
|
+
this.cause = cause;
|
|
74
|
+
this.issues = init.issues || [];
|
|
75
|
+
this.status = init.status;
|
|
76
|
+
if (cause) {
|
|
77
|
+
this.cause = cause;
|
|
78
|
+
if (cause.stack)
|
|
79
|
+
this.stack = cause.stack;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
__name(_ClientError, "ClientError");
|
|
84
|
+
var ClientError = _ClientError;
|
|
85
|
+
|
|
86
|
+
// ../../build/client/esm/http/enums/http-observable-type.enum.js
|
|
87
|
+
var HttpObserveType;
|
|
88
|
+
(function(HttpObserveType2) {
|
|
89
|
+
HttpObserveType2["ResponseHeader"] = "response-header";
|
|
90
|
+
HttpObserveType2["Response"] = "response";
|
|
91
|
+
HttpObserveType2["Body"] = "body";
|
|
92
|
+
HttpObserveType2["Events"] = "events";
|
|
93
|
+
})(HttpObserveType || (HttpObserveType = {}));
|
|
94
|
+
|
|
95
|
+
// ../../build/client/esm/http/fetch-backend.js
|
|
96
|
+
var import_type_is = __toESM(require("@browsery/type-is"), 1);
|
|
97
|
+
var import_common = require("@opra/common");
|
|
98
|
+
var import_rxjs = require("rxjs");
|
|
99
|
+
var import_isReadableStreamLike = require("rxjs/internal/util/isReadableStreamLike");
|
|
100
|
+
|
|
101
|
+
// ../../build/client/esm/http/http-backend.js
|
|
102
|
+
var _HttpBackend = class _HttpBackend extends Backend {
|
|
103
|
+
constructor(serviceUrl, options) {
|
|
104
|
+
super(options);
|
|
105
|
+
const u = new URL(serviceUrl);
|
|
106
|
+
this.serviceUrl = u.toString().split("?")[0].split("#")[0];
|
|
107
|
+
if (!this.serviceUrl.endsWith("/"))
|
|
108
|
+
this.serviceUrl += "/";
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
__name(_HttpBackend, "HttpBackend");
|
|
112
|
+
var HttpBackend = _HttpBackend;
|
|
113
|
+
|
|
114
|
+
// ../../build/client/esm/http/http-response.js
|
|
115
|
+
var _HttpResponse = class _HttpResponse {
|
|
116
|
+
constructor(init) {
|
|
117
|
+
this.hasBody = false;
|
|
118
|
+
this.headers = (init == null ? void 0 : init.headers) instanceof Headers ? init == null ? void 0 : init.headers : new Headers(init == null ? void 0 : init.headers);
|
|
119
|
+
this.status = (init == null ? void 0 : init.status) || 200;
|
|
120
|
+
this.statusText = (init == null ? void 0 : init.statusText) || "OK";
|
|
121
|
+
this.url = (init == null ? void 0 : init.url) || null;
|
|
122
|
+
this.ok = this.status >= 200 && this.status < 300;
|
|
123
|
+
this.body = init == null ? void 0 : init.body;
|
|
124
|
+
this.hasBody = (init == null ? void 0 : init.body) != null || !!(init == null ? void 0 : init.hasBody);
|
|
125
|
+
this.contentType = (this.headers.get("content-type") || "").split(";")[0];
|
|
126
|
+
}
|
|
127
|
+
clone(update) {
|
|
128
|
+
return new _HttpResponse({ ...this, ...update });
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
__name(_HttpResponse, "HttpResponse");
|
|
132
|
+
var HttpResponse = _HttpResponse;
|
|
133
|
+
|
|
134
|
+
// ../../build/client/esm/http/interfaces/http-event.js
|
|
135
|
+
var HttpEventType;
|
|
136
|
+
(function(HttpEventType2) {
|
|
137
|
+
HttpEventType2["Sent"] = "Sent";
|
|
138
|
+
HttpEventType2["UploadProgress"] = "UploadProgress";
|
|
139
|
+
HttpEventType2["ResponseHeader"] = "ResponseHeader";
|
|
140
|
+
HttpEventType2["DownloadProgress"] = "DownloadProgress";
|
|
141
|
+
HttpEventType2["Response"] = "Response";
|
|
142
|
+
HttpEventType2["User"] = "User";
|
|
143
|
+
})(HttpEventType || (HttpEventType = {}));
|
|
144
|
+
|
|
145
|
+
// ../../build/client/esm/http/fetch-backend.js
|
|
146
|
+
var _FetchBackend = class _FetchBackend extends HttpBackend {
|
|
147
|
+
constructor(serviceUrl, options) {
|
|
148
|
+
var _a, _b, _c, _d, _e, _f;
|
|
149
|
+
super(serviceUrl, options);
|
|
150
|
+
this.interceptors = Array.from(/* @__PURE__ */ new Set([...(options == null ? void 0 : options.interceptors) || []]));
|
|
151
|
+
this.defaults = {
|
|
152
|
+
...options == null ? void 0 : options.defaults,
|
|
153
|
+
headers: ((_a = options == null ? void 0 : options.defaults) == null ? void 0 : _a.headers) instanceof Headers ? (_b = options == null ? void 0 : options.defaults) == null ? void 0 : _b.headers : new Headers((_c = options == null ? void 0 : options.defaults) == null ? void 0 : _c.headers),
|
|
154
|
+
params: ((_d = options == null ? void 0 : options.defaults) == null ? void 0 : _d.params) instanceof URLSearchParams ? (_e = options == null ? void 0 : options.defaults) == null ? void 0 : _e.params : new URLSearchParams((_f = options == null ? void 0 : options.defaults) == null ? void 0 : _f.params)
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
handle(init) {
|
|
158
|
+
return new import_rxjs.Observable((subscriber) => {
|
|
159
|
+
(async () => {
|
|
160
|
+
let request = this.prepareRequest(init);
|
|
161
|
+
if (request.body && init.reportProgress) {
|
|
162
|
+
const stream = request.body;
|
|
163
|
+
const contentLength = request.headers.get("content-length") || "0";
|
|
164
|
+
const total = parseInt(contentLength, 10) || 0;
|
|
165
|
+
let loaded = 0;
|
|
166
|
+
const progressTrackingStream = new TransformStream({
|
|
167
|
+
transform(chunk, controller) {
|
|
168
|
+
controller.enqueue(chunk);
|
|
169
|
+
loaded += chunk.byteLength;
|
|
170
|
+
subscriber.next({
|
|
171
|
+
type: HttpEventType.UploadProgress,
|
|
172
|
+
request,
|
|
173
|
+
total,
|
|
174
|
+
loaded
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
request = new Request(request.url, {
|
|
179
|
+
cache: request.cache,
|
|
180
|
+
credentials: request.credentials,
|
|
181
|
+
headers: request.headers,
|
|
182
|
+
integrity: request.integrity,
|
|
183
|
+
keepalive: request.keepalive,
|
|
184
|
+
method: request.method,
|
|
185
|
+
mode: request.mode,
|
|
186
|
+
redirect: request.redirect,
|
|
187
|
+
referrer: request.referrer,
|
|
188
|
+
referrerPolicy: request.referrerPolicy,
|
|
189
|
+
signal: request.signal,
|
|
190
|
+
body: stream.pipeThrough(progressTrackingStream),
|
|
191
|
+
window: init.window,
|
|
192
|
+
...{
|
|
193
|
+
// undici library requires
|
|
194
|
+
duplex: "half"
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const fetchPromise = this.send(request);
|
|
199
|
+
subscriber.next({
|
|
200
|
+
request,
|
|
201
|
+
type: HttpEventType.Sent
|
|
202
|
+
});
|
|
203
|
+
const fetchResponse = await fetchPromise;
|
|
204
|
+
const headersResponse = this.createResponse({
|
|
205
|
+
url: fetchResponse.url,
|
|
206
|
+
headers: fetchResponse.headers,
|
|
207
|
+
status: fetchResponse.status,
|
|
208
|
+
statusText: fetchResponse.statusText,
|
|
209
|
+
hasBody: !!fetchResponse.body
|
|
210
|
+
});
|
|
211
|
+
subscriber.next({
|
|
212
|
+
request,
|
|
213
|
+
type: HttpEventType.ResponseHeader,
|
|
214
|
+
response: headersResponse
|
|
215
|
+
});
|
|
216
|
+
let body;
|
|
217
|
+
if (fetchResponse.body) {
|
|
218
|
+
if (init.reportProgress) {
|
|
219
|
+
const fetchBody = fetchResponse.body;
|
|
220
|
+
const contentLength = fetchResponse.headers.get("content-length") || "0";
|
|
221
|
+
const total = parseInt(contentLength, 10) || 0;
|
|
222
|
+
let loaded = 0;
|
|
223
|
+
const res = new Response(new ReadableStream({
|
|
224
|
+
async start(controller) {
|
|
225
|
+
const reader = fetchBody.getReader();
|
|
226
|
+
for (; ; ) {
|
|
227
|
+
const { done, value } = await reader.read();
|
|
228
|
+
if (done)
|
|
229
|
+
break;
|
|
230
|
+
loaded += value.byteLength;
|
|
231
|
+
controller.enqueue(value);
|
|
232
|
+
subscriber.next({
|
|
233
|
+
type: HttpEventType.DownloadProgress,
|
|
234
|
+
request,
|
|
235
|
+
total,
|
|
236
|
+
loaded
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
controller.close();
|
|
240
|
+
}
|
|
241
|
+
}));
|
|
242
|
+
body = await this.parseBody(res);
|
|
243
|
+
} else {
|
|
244
|
+
body = await this.parseBody(fetchResponse);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const response = this.createResponse({
|
|
248
|
+
url: fetchResponse.url,
|
|
249
|
+
headers: fetchResponse.headers,
|
|
250
|
+
status: fetchResponse.status,
|
|
251
|
+
statusText: fetchResponse.statusText,
|
|
252
|
+
body
|
|
253
|
+
});
|
|
254
|
+
subscriber.next({
|
|
255
|
+
request,
|
|
256
|
+
type: HttpEventType.Response,
|
|
257
|
+
response
|
|
258
|
+
});
|
|
259
|
+
subscriber.complete();
|
|
260
|
+
})().catch((error) => subscriber.error(error));
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
send(request) {
|
|
264
|
+
return fetch(request);
|
|
265
|
+
}
|
|
266
|
+
prepareRequest(init) {
|
|
267
|
+
const headers = init.headers || new Headers();
|
|
268
|
+
const requestInit = {
|
|
269
|
+
...init,
|
|
270
|
+
headers
|
|
271
|
+
};
|
|
272
|
+
this.defaults.headers.forEach((val, key) => {
|
|
273
|
+
if (!headers.has(key))
|
|
274
|
+
headers.set(key, val);
|
|
275
|
+
});
|
|
276
|
+
const url = new URL(requestInit.url, this.serviceUrl);
|
|
277
|
+
if (this.defaults.params.size) {
|
|
278
|
+
this.defaults.params.forEach((val, key) => {
|
|
279
|
+
if (!url.searchParams.has(key))
|
|
280
|
+
url.searchParams.set(key, val);
|
|
281
|
+
});
|
|
282
|
+
requestInit.url = url.toString();
|
|
283
|
+
}
|
|
284
|
+
const body = requestInit.body;
|
|
285
|
+
if (body) {
|
|
286
|
+
let contentType = "";
|
|
287
|
+
if (typeof body === "string" || typeof body === "number" || typeof body === "boolean") {
|
|
288
|
+
contentType = 'text/plain; charset="UTF-8"';
|
|
289
|
+
requestInit.body = new Blob([String(body)], { type: contentType });
|
|
290
|
+
headers.set("Content-Length", String(requestInit.body.size));
|
|
291
|
+
delete requestInit.duplex;
|
|
292
|
+
} else if ((0, import_isReadableStreamLike.isReadableStreamLike)(body)) {
|
|
293
|
+
contentType = "application/octet-stream";
|
|
294
|
+
requestInit.duplex = "half";
|
|
295
|
+
} else if (Buffer.isBuffer(body)) {
|
|
296
|
+
contentType = "application/octet-stream";
|
|
297
|
+
headers.set("Content-Length", String(body.length));
|
|
298
|
+
delete requestInit.duplex;
|
|
299
|
+
} else if ((0, import_common.isBlob)(body)) {
|
|
300
|
+
contentType = body.type || "application/octet-stream";
|
|
301
|
+
headers.set("Content-Length", String(body.size));
|
|
302
|
+
delete requestInit.duplex;
|
|
303
|
+
} else if ((0, import_common.isFormData)(body)) {
|
|
304
|
+
delete requestInit.duplex;
|
|
305
|
+
} else {
|
|
306
|
+
contentType = 'application/json;charset="UTF-8"';
|
|
307
|
+
requestInit.body = new Blob([JSON.stringify(body)], { type: contentType });
|
|
308
|
+
headers.set("Content-Length", String(requestInit.body.size));
|
|
309
|
+
delete requestInit.duplex;
|
|
310
|
+
}
|
|
311
|
+
if (contentType && !headers.has("Content-Type"))
|
|
312
|
+
headers.set("Content-Type", contentType);
|
|
313
|
+
}
|
|
314
|
+
return new Request(url.toString(), requestInit);
|
|
315
|
+
}
|
|
316
|
+
createResponse(init) {
|
|
317
|
+
return new HttpResponse(init);
|
|
318
|
+
}
|
|
319
|
+
async parseBody(fetchResponse) {
|
|
320
|
+
let body;
|
|
321
|
+
const contentType = fetchResponse.headers.get("Content-Type") || "";
|
|
322
|
+
if (import_type_is.default.is(contentType, ["json", "application/*+json"])) {
|
|
323
|
+
body = await fetchResponse.json();
|
|
324
|
+
if (typeof body === "string")
|
|
325
|
+
body = JSON.parse(body);
|
|
326
|
+
} else if (import_type_is.default.is(contentType, ["text"]))
|
|
327
|
+
body = await fetchResponse.text();
|
|
328
|
+
else if (import_type_is.default.is(contentType, ["multipart"]))
|
|
329
|
+
body = await fetchResponse.formData();
|
|
330
|
+
else {
|
|
331
|
+
const buf = await fetchResponse.arrayBuffer();
|
|
332
|
+
if (buf.byteLength)
|
|
333
|
+
body = buf;
|
|
334
|
+
}
|
|
335
|
+
return body;
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
__name(_FetchBackend, "FetchBackend");
|
|
339
|
+
var FetchBackend = _FetchBackend;
|
|
340
|
+
|
|
341
|
+
// ../../build/client/esm/http/http-client-base.js
|
|
342
|
+
var import_common3 = require("@opra/common");
|
|
343
|
+
|
|
344
|
+
// ../../build/client/esm/http/http-request-observable.js
|
|
345
|
+
var import_type_is2 = __toESM(require("@browsery/type-is"), 1);
|
|
346
|
+
var import_common2 = require("@opra/common");
|
|
347
|
+
var import_rxjs2 = require("rxjs");
|
|
348
|
+
|
|
349
|
+
// ../../build/client/esm/http/http-interceptor-handler.js
|
|
350
|
+
var _HttpInterceptorHandler = class _HttpInterceptorHandler {
|
|
351
|
+
constructor(interceptors, finalHandler) {
|
|
352
|
+
this.chain = interceptors.reduceRight((chainTailFn, interceptor) => (initialRequest, handler) => interceptor.intercept(initialRequest, {
|
|
353
|
+
handle: /* @__PURE__ */ __name((downstreamRequest) => chainTailFn(downstreamRequest, handler), "handle")
|
|
354
|
+
}), chainEnd);
|
|
355
|
+
this.finalHandler = finalHandler;
|
|
356
|
+
}
|
|
357
|
+
handle(initialRequest) {
|
|
358
|
+
return this.chain(initialRequest, (req) => this.finalHandler.handle(req));
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
__name(_HttpInterceptorHandler, "HttpInterceptorHandler");
|
|
362
|
+
var HttpInterceptorHandler = _HttpInterceptorHandler;
|
|
363
|
+
function chainEnd(req, handler) {
|
|
364
|
+
return handler(req);
|
|
365
|
+
}
|
|
366
|
+
__name(chainEnd, "chainEnd");
|
|
367
|
+
|
|
368
|
+
// ../../build/client/esm/http/http-request-observable.js
|
|
369
|
+
var _HttpRequestObservable = class _HttpRequestObservable extends import_rxjs2.Observable {
|
|
370
|
+
constructor(backend, init) {
|
|
371
|
+
super((subscriber) => {
|
|
372
|
+
const observe = this[kContext].observe;
|
|
373
|
+
new HttpInterceptorHandler(backend.interceptors || [], this[kBackend]).handle(this[kContext]).subscribe({
|
|
374
|
+
next(event) {
|
|
375
|
+
if (observe === HttpObserveType.Events) {
|
|
376
|
+
subscriber.next(event);
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
if (observe === HttpObserveType.ResponseHeader && event.type === HttpEventType.ResponseHeader) {
|
|
380
|
+
subscriber.next(event.response);
|
|
381
|
+
subscriber.complete();
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
if (event.type === HttpEventType.Response) {
|
|
385
|
+
const { response } = event;
|
|
386
|
+
if (observe === HttpObserveType.Response) {
|
|
387
|
+
subscriber.next(response);
|
|
388
|
+
subscriber.complete();
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const isOpraResponse = import_type_is2.default.is(event.response.contentType || "", [import_common2.MimeTypes.opra_response_json]);
|
|
392
|
+
if (response.status >= 400 && response.status < 600) {
|
|
393
|
+
subscriber.error(new ClientError({
|
|
394
|
+
message: response.status + " " + response.statusText,
|
|
395
|
+
status: response.status,
|
|
396
|
+
issues: isOpraResponse ? response.body.errors : void 0
|
|
397
|
+
}));
|
|
398
|
+
subscriber.complete();
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
subscriber.next(event.response.body);
|
|
402
|
+
subscriber.complete();
|
|
403
|
+
}
|
|
404
|
+
},
|
|
405
|
+
error(error) {
|
|
406
|
+
subscriber.error(error);
|
|
407
|
+
},
|
|
408
|
+
complete() {
|
|
409
|
+
subscriber.complete();
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
Object.defineProperty(this, kBackend, {
|
|
414
|
+
enumerable: false,
|
|
415
|
+
value: backend
|
|
416
|
+
});
|
|
417
|
+
Object.defineProperty(this, kContext, {
|
|
418
|
+
enumerable: false,
|
|
419
|
+
value: {
|
|
420
|
+
...init,
|
|
421
|
+
observe: HttpObserveType.Body,
|
|
422
|
+
headers: new Headers(init == null ? void 0 : init.headers)
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
clone() {
|
|
427
|
+
return new _HttpRequestObservable(this[kBackend], this[kContext]);
|
|
428
|
+
}
|
|
429
|
+
options(options) {
|
|
430
|
+
Object.assign(this[kContext], options);
|
|
431
|
+
return this;
|
|
432
|
+
}
|
|
433
|
+
header(arg0, value) {
|
|
434
|
+
const target = this[kContext].headers;
|
|
435
|
+
if (typeof arg0 === "object") {
|
|
436
|
+
const h = arg0 instanceof Headers ? arg0 : new Headers(arg0);
|
|
437
|
+
h.forEach((v, k) => {
|
|
438
|
+
if (k.toLowerCase() === "set-cookie") {
|
|
439
|
+
target.append(k, v);
|
|
440
|
+
} else
|
|
441
|
+
target.set(k, v);
|
|
442
|
+
});
|
|
443
|
+
return this;
|
|
444
|
+
}
|
|
445
|
+
if (value == null || value === "")
|
|
446
|
+
target.delete(arg0);
|
|
447
|
+
else
|
|
448
|
+
target.append(arg0, String(value));
|
|
449
|
+
return this;
|
|
450
|
+
}
|
|
451
|
+
param(arg0, value) {
|
|
452
|
+
if (value && typeof value === "object") {
|
|
453
|
+
value = JSON.stringify(value);
|
|
454
|
+
}
|
|
455
|
+
const target = this[kContext].url.searchParams;
|
|
456
|
+
if (typeof arg0 === "object") {
|
|
457
|
+
if (typeof arg0.forEach === "function") {
|
|
458
|
+
arg0.forEach((v, k) => target.set(String(k), String(v)));
|
|
459
|
+
} else {
|
|
460
|
+
Object.entries(arg0).forEach((entry) => target.set(String(entry[0]), String(entry[1])));
|
|
461
|
+
}
|
|
462
|
+
return this;
|
|
463
|
+
}
|
|
464
|
+
if (value == null)
|
|
465
|
+
target.delete(arg0);
|
|
466
|
+
else
|
|
467
|
+
target.set(arg0, String(value));
|
|
468
|
+
return this;
|
|
469
|
+
}
|
|
470
|
+
observe(observe) {
|
|
471
|
+
if (observe === this[kContext].observe)
|
|
472
|
+
return this;
|
|
473
|
+
const cloned = this.clone();
|
|
474
|
+
cloned[kContext].observe = observe || HttpObserveType.Body;
|
|
475
|
+
return cloned;
|
|
476
|
+
}
|
|
477
|
+
getBody() {
|
|
478
|
+
return (0, import_rxjs2.lastValueFrom)(this.observe(HttpObserveType.Body));
|
|
479
|
+
}
|
|
480
|
+
getResponse() {
|
|
481
|
+
return (0, import_rxjs2.lastValueFrom)(this.observe(HttpObserveType.Response));
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
__name(_HttpRequestObservable, "HttpRequestObservable");
|
|
485
|
+
var HttpRequestObservable = _HttpRequestObservable;
|
|
486
|
+
|
|
487
|
+
// ../../build/client/esm/http/http-client-base.js
|
|
488
|
+
var SPLIT_BACKSLASH_PATTERN = /^(\/*)(.+)/;
|
|
489
|
+
var _HttpClientBase = class _HttpClientBase {
|
|
490
|
+
constructor(backend) {
|
|
491
|
+
Object.defineProperty(this, kBackend, {
|
|
492
|
+
enumerable: false,
|
|
493
|
+
value: backend
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
get serviceUrl() {
|
|
497
|
+
return this[kBackend].serviceUrl;
|
|
498
|
+
}
|
|
499
|
+
async fetchDocument(options) {
|
|
500
|
+
const documentMap = {};
|
|
501
|
+
const getDocument = /* @__PURE__ */ __name(async (documentId) => {
|
|
502
|
+
const req = this.request("$schema", {
|
|
503
|
+
headers: new Headers({ accept: "application/json" })
|
|
504
|
+
});
|
|
505
|
+
if (documentId)
|
|
506
|
+
req.param("id", documentId);
|
|
507
|
+
const body2 = await req.getBody().catch((e) => {
|
|
508
|
+
e.message = "Error fetching api schema from url (" + this.serviceUrl + ").\n" + e.message;
|
|
509
|
+
throw e;
|
|
510
|
+
});
|
|
511
|
+
if (body2.references) {
|
|
512
|
+
const oldReferences = body2.references;
|
|
513
|
+
body2.references = {};
|
|
514
|
+
for (const [ns, obj] of Object.entries(oldReferences)) {
|
|
515
|
+
if (documentMap[obj.id] === null)
|
|
516
|
+
throw new Error("Circular reference detected");
|
|
517
|
+
documentMap[obj.id] = null;
|
|
518
|
+
const x = await getDocument(obj.id);
|
|
519
|
+
body2.references[ns] = documentMap[obj.id] = x;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
return body2;
|
|
523
|
+
}, "getDocument");
|
|
524
|
+
const body = await getDocument(options == null ? void 0 : options.documentId);
|
|
525
|
+
return await import_common3.ApiDocumentFactory.createDocument(body).catch((e) => {
|
|
526
|
+
e.message = "Error loading api document.\n" + e.message;
|
|
527
|
+
throw e;
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
request(path, options) {
|
|
531
|
+
var _a;
|
|
532
|
+
path = ((_a = SPLIT_BACKSLASH_PATTERN.exec(path)) == null ? void 0 : _a[2]) || "";
|
|
533
|
+
const observable = new HttpRequestObservable(this[kBackend], {
|
|
534
|
+
...options,
|
|
535
|
+
method: (options == null ? void 0 : options.method) || "GET",
|
|
536
|
+
url: new URL(path, this.serviceUrl)
|
|
537
|
+
});
|
|
538
|
+
if (options == null ? void 0 : options.params)
|
|
539
|
+
observable.param(options.params);
|
|
540
|
+
return observable;
|
|
541
|
+
}
|
|
542
|
+
delete(path, options) {
|
|
543
|
+
return this.request(path, {
|
|
544
|
+
...options,
|
|
545
|
+
method: "DELETE"
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
get(path, options) {
|
|
549
|
+
return this.request(path, {
|
|
550
|
+
...options,
|
|
551
|
+
method: "GET"
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
patch(path, requestBody, options) {
|
|
555
|
+
return this.request(path, {
|
|
556
|
+
...options,
|
|
557
|
+
method: "PATCH",
|
|
558
|
+
body: requestBody
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
post(path, requestBody, options) {
|
|
562
|
+
return this.request(path, {
|
|
563
|
+
...options,
|
|
564
|
+
method: "POST",
|
|
565
|
+
body: requestBody
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
put(path, requestBody, options) {
|
|
569
|
+
return this.request(path, {
|
|
570
|
+
...options,
|
|
571
|
+
method: "PUT",
|
|
572
|
+
body: requestBody
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
};
|
|
576
|
+
__name(_HttpClientBase, "HttpClientBase");
|
|
577
|
+
var HttpClientBase = _HttpClientBase;
|
|
578
|
+
|
|
579
|
+
// ../../build/client/esm/http/http-client.js
|
|
580
|
+
var _OpraHttpClient = class _OpraHttpClient extends HttpClientBase {
|
|
581
|
+
constructor(serviceUrl, options) {
|
|
582
|
+
super(new FetchBackend(serviceUrl, options));
|
|
583
|
+
}
|
|
584
|
+
get defaults() {
|
|
585
|
+
return this[kBackend].defaults;
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
__name(_OpraHttpClient, "OpraHttpClient");
|
|
589
|
+
var OpraHttpClient = _OpraHttpClient;
|
|
590
|
+
|
|
591
|
+
// ../../build/client/esm/http/http-utils.js
|
|
592
|
+
function urlPath(strings, ...values) {
|
|
593
|
+
let str = "";
|
|
594
|
+
let i;
|
|
595
|
+
for (i = 0; i < strings.length; i++) {
|
|
596
|
+
str += strings[0] + encodeURIComponent(values[i]);
|
|
597
|
+
}
|
|
598
|
+
return str;
|
|
599
|
+
}
|
|
600
|
+
__name(urlPath, "urlPath");
|
|
601
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
602
|
+
0 && (module.exports = {
|
|
603
|
+
Backend,
|
|
604
|
+
ClientError,
|
|
605
|
+
FetchBackend,
|
|
606
|
+
HttpBackend,
|
|
607
|
+
HttpClientBase,
|
|
608
|
+
HttpEventType,
|
|
609
|
+
HttpObserveType,
|
|
610
|
+
HttpRequestObservable,
|
|
611
|
+
HttpResponse,
|
|
612
|
+
OpraHttpClient,
|
|
613
|
+
kBackend,
|
|
614
|
+
kClient,
|
|
615
|
+
kContext,
|
|
616
|
+
urlPath
|
|
617
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/****************************************
|
|
2
|
+
* All rights reserved Panates® 2022-2024
|
|
3
|
+
* http://www.panates.com
|
|
4
|
+
*****************************************/
|
|
5
|
+
|
|
6
|
+
var _=Object.create;var w=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var d=(n,e)=>w(n,"name",{value:e,configurable:!0});var ae=(n,e)=>{for(var t in e)w(n,t,{get:e[t],enumerable:!0})},K=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of te(e))!se.call(n,a)&&a!==t&&w(n,a,{get:()=>e[a],enumerable:!(r=ee(e,a))||r.enumerable});return n};var M=(n,e,t)=>(t=n!=null?_(re(n)):{},K(e||!n||!n.__esModule?w(t,"default",{value:n,enumerable:!0}):t,n)),oe=n=>K(w({},"__esModule",{value:!0}),n);var he={};ae(he,{Backend:()=>S,ClientError:()=>b,FetchBackend:()=>P,HttpBackend:()=>R,HttpClientBase:()=>k,HttpEventType:()=>f,HttpObserveType:()=>u,HttpRequestObservable:()=>U,HttpResponse:()=>T,OpraHttpClient:()=>N,kBackend:()=>h,kClient:()=>V,kContext:()=>l,urlPath:()=>ce});module.exports=oe(he);var V=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var O=class O{constructor(e){this.document=e==null?void 0:e.document}};d(O,"Backend");var S=O;var H=class H extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};d(H,"ClientError");var b=H;var u;(function(n){n.ResponseHeader="response-header",n.Response="response",n.Body="body",n.Events="events"})(u||(u={}));var j=M(require("@browsery/type-is"),1),E=require("@opra/common"),W=require("rxjs"),$=require("rxjs/internal/util/isReadableStreamLike");var A=class A extends S{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};d(A,"HttpBackend");var R=A;var L=class L{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new L({...this,...e})}};d(L,"HttpResponse");var T=L;var f;(function(n){n.Sent="Sent",n.UploadProgress="UploadProgress",n.ResponseHeader="ResponseHeader",n.DownloadProgress="DownloadProgress",n.Response="Response",n.User="User"})(f||(f={}));var I=class I extends R{constructor(e,t){var r,a,s,o,c,m;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(a=t==null?void 0:t.defaults)==null?void 0:a.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((o=t==null?void 0:t.defaults)==null?void 0:o.params)instanceof URLSearchParams?(c=t==null?void 0:t.defaults)==null?void 0:c.params:new URLSearchParams((m=t==null?void 0:t.defaults)==null?void 0:m.params)}}handle(e){return new W.Observable(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new TransformStream({transform(g,D){D.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(v),window:e.window,duplex:"half"})}let a=this.send(r);t.next({request:r,type:f.Sent});let s=await a,o=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:o});let c;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new Response(new ReadableStream({async start(g){let D=y.getReader();for(;;){let{done:Z,value:G}=await D.read();if(Z)break;x+=G.byteLength,g.enqueue(G),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));c=await this.parseBody(v)}else c=await this.parseBody(s);let m=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:c});t.next({request:r,type:f.Response,response:m}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,headers:t};this.defaults.headers.forEach((o,c)=>{t.has(c)||t.set(c,o)});let a=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((o,c)=>{a.searchParams.has(c)||a.searchParams.set(c,o)}),r.url=a.toString());let s=r.body;if(s){let o="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(o='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:o}),t.set("Content-Length",String(r.body.size)),delete r.duplex):(0,$.isReadableStreamLike)(s)?(o="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(o="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):(0,E.isBlob)(s)?(o=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):((0,E.isFormData)(s)||(o='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:o}),t.set("Content-Length",String(r.body.size))),delete r.duplex),o&&!t.has("Content-Type")&&t.set("Content-Type",o)}return new Request(a.toString(),r)}createResponse(e){return new T(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(j.default.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(j.default.is(r,["text"]))t=await e.text();else if(j.default.is(r,["multipart"]))t=await e.formData();else{let a=await e.arrayBuffer();a.byteLength&&(t=a)}return t}};d(I,"FetchBackend");var P=I;var Y=require("@opra/common");var Q=M(require("@browsery/type-is"),1),X=require("@opra/common"),B=require("rxjs");var z=class z{constructor(e,t){this.chain=e.reduceRight((r,a)=>(s,o)=>a.intercept(s,{handle:d(c=>r(c,o),"handle")}),ne),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};d(z,"HttpInterceptorHandler");var q=z;function ne(n,e){return e(n)}d(ne,"chainEnd");var C=class C extends B.Observable{constructor(e,t){super(r=>{let a=this[l].observe;new q(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(a===u.Events){r.next(s);return}if(a===u.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:o}=s;if(a===u.Response){r.next(o),r.complete();return}let c=Q.default.is(s.response.contentType||"",[X.MimeTypes.opra_response_json]);if(o.status>=400&&o.status<600){r.error(new b({message:o.status+" "+o.statusText,status:o.status,issues:c?o.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:u.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new C(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,o)=>{o.toLowerCase()==="set-cookie"?r.append(o,s):r.set(o,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((a,s)=>r.set(String(s),String(a))):Object.entries(e).forEach(a=>r.set(String(a[0]),String(a[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||u.Body,t}getBody(){return(0,B.lastValueFrom)(this.observe(u.Body))}getResponse(){return(0,B.lastValueFrom)(this.observe(u.Response))}};d(C,"HttpRequestObservable");var U=C;var de=/^(\/*)(.+)/,F=class F{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=d(async s=>{let o=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&o.param("id",s);let c=await o.getBody().catch(m=>{throw m.message="Error fetching api schema from url ("+this.serviceUrl+`).
|
|
7
|
+
`+m.message,m});if(c.references){let m=c.references;c.references={};for(let[y,p]of Object.entries(m)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);c.references[y]=t[p.id]=i}}return c},"getDocument"),a=await r(e==null?void 0:e.documentId);return await Y.ApiDocumentFactory.createDocument(a).catch(s=>{throw s.message=`Error loading api document.
|
|
8
|
+
`+s.message,s})}request(e,t){var a;e=((a=de.exec(e))==null?void 0:a[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};d(F,"HttpClientBase");var k=F;var J=class J extends k{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};d(J,"OpraHttpClient");var N=J;function ce(n,...e){let t="",r;for(r=0;r<n.length;r++)t+=n[0]+encodeURIComponent(e[r]);return t}d(ce,"urlPath");0&&(module.exports={Backend,ClientError,FetchBackend,HttpBackend,HttpClientBase,HttpEventType,HttpObserveType,HttpRequestObservable,HttpResponse,OpraHttpClient,kBackend,kClient,kContext,urlPath});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/****************************************
|
|
2
|
+
* All rights reserved Panates® 2022-2024
|
|
3
|
+
* http://www.panates.com
|
|
4
|
+
*****************************************/
|
|
5
|
+
|
|
6
|
+
var G=Object.defineProperty;var n=(c,e)=>G(c,"name",{value:e,configurable:!0});var K=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var q=class q{constructor(e){this.document=e==null?void 0:e.document}};n(q,"Backend");var w=q;var C=class C extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};n(C,"ClientError");var S=C;var m;(function(c){c.ResponseHeader="response-header",c.Response="response",c.Body="body",c.Events="events"})(m||(m={}));import D from"@browsery/type-is";import{isBlob as M,isFormData as V}from"@opra/common";import{Observable as W}from"rxjs";import{isReadableStreamLike as $}from"rxjs/internal/util/isReadableStreamLike";var v=class v extends w{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};n(v,"HttpBackend");var b=v;var T=class T{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new T({...this,...e})}};n(T,"HttpResponse");var R=T;var f;(function(c){c.Sent="Sent",c.UploadProgress="UploadProgress",c.ResponseHeader="ResponseHeader",c.DownloadProgress="DownloadProgress",c.Response="Response",c.User="User"})(f||(f={}));var O=class O extends b{constructor(e,t){var r,o,s,a,d,u;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(o=t==null?void 0:t.defaults)==null?void 0:o.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((a=t==null?void 0:t.defaults)==null?void 0:a.params)instanceof URLSearchParams?(d=t==null?void 0:t.defaults)==null?void 0:d.params:new URLSearchParams((u=t==null?void 0:t.defaults)==null?void 0:u.params)}}handle(e){return new W(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new TransformStream({transform(g,E){E.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(j),window:e.window,duplex:"half"})}let o=this.send(r);t.next({request:r,type:f.Sent});let s=await o,a=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:a});let d;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new Response(new ReadableStream({async start(g){let E=y.getReader();for(;;){let{done:J,value:z}=await E.read();if(J)break;x+=z.byteLength,g.enqueue(z),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));d=await this.parseBody(j)}else d=await this.parseBody(s);let u=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:d});t.next({request:r,type:f.Response,response:u}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,headers:t};this.defaults.headers.forEach((a,d)=>{t.has(d)||t.set(d,a)});let o=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((a,d)=>{o.searchParams.has(d)||o.searchParams.set(d,a)}),r.url=o.toString());let s=r.body;if(s){let a="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(a='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:a}),t.set("Content-Length",String(r.body.size)),delete r.duplex):$(s)?(a="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(a="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):M(s)?(a=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):(V(s)||(a='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:a}),t.set("Content-Length",String(r.body.size))),delete r.duplex),a&&!t.has("Content-Type")&&t.set("Content-Type",a)}return new Request(o.toString(),r)}createResponse(e){return new R(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(D.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(D.is(r,["text"]))t=await e.text();else if(D.is(r,["multipart"]))t=await e.formData();else{let o=await e.arrayBuffer();o.byteLength&&(t=o)}return t}};n(O,"FetchBackend");var P=O;import{ApiDocumentFactory as _}from"@opra/common";import X from"@browsery/type-is";import{MimeTypes as Y}from"@opra/common";import{lastValueFrom as F,Observable as Z}from"rxjs";var H=class H{constructor(e,t){this.chain=e.reduceRight((r,o)=>(s,a)=>o.intercept(s,{handle:n(d=>r(d,a),"handle")}),Q),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};n(H,"HttpInterceptorHandler");var B=H;function Q(c,e){return e(c)}n(Q,"chainEnd");var k=class k extends Z{constructor(e,t){super(r=>{let o=this[l].observe;new B(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(o===m.Events){r.next(s);return}if(o===m.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:a}=s;if(o===m.Response){r.next(a),r.complete();return}let d=X.is(s.response.contentType||"",[Y.opra_response_json]);if(a.status>=400&&a.status<600){r.error(new S({message:a.status+" "+a.statusText,status:a.status,issues:d?a.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:m.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new k(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,a)=>{a.toLowerCase()==="set-cookie"?r.append(a,s):r.set(a,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((o,s)=>r.set(String(s),String(o))):Object.entries(e).forEach(o=>r.set(String(o[0]),String(o[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||m.Body,t}getBody(){return F(this.observe(m.Body))}getResponse(){return F(this.observe(m.Response))}};n(k,"HttpRequestObservable");var U=k;var ee=/^(\/*)(.+)/,A=class A{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=n(async s=>{let a=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&a.param("id",s);let d=await a.getBody().catch(u=>{throw u.message="Error fetching api schema from url ("+this.serviceUrl+`).
|
|
7
|
+
`+u.message,u});if(d.references){let u=d.references;d.references={};for(let[y,p]of Object.entries(u)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);d.references[y]=t[p.id]=i}}return d},"getDocument"),o=await r(e==null?void 0:e.documentId);return await _.createDocument(o).catch(s=>{throw s.message=`Error loading api document.
|
|
8
|
+
`+s.message,s})}request(e,t){var o;e=((o=ee.exec(e))==null?void 0:o[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};n(A,"HttpClientBase");var L=A;var I=class I extends L{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};n(I,"OpraHttpClient");var N=I;function Me(c,...e){let t="",r;for(r=0;r<c.length;r++)t+=c[0]+encodeURIComponent(e[r]);return t}n(Me,"urlPath");export{w as Backend,S as ClientError,P as FetchBackend,b as HttpBackend,L as HttpClientBase,f as HttpEventType,m as HttpObserveType,U as HttpRequestObservable,R as HttpResponse,N as OpraHttpClient,h as kBackend,K as kClient,l as kContext,Me as urlPath};
|