@opra/angular 0.27.2 → 0.28.1

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.
@@ -0,0 +1,40 @@
1
+ import { Observable } from 'rxjs';
2
+ import { StrictOmit } from 'ts-gems';
3
+ import { HttpContext, HttpParams } from '@angular/common/http';
4
+ import * as Angular from '@angular/common/http';
5
+ import { HttpBackend, HttpEvent, HttpResponse } from '@opra/client';
6
+ /**
7
+ *
8
+ * @class AngularBackend
9
+ */
10
+ export declare class AngularBackend extends HttpBackend {
11
+ readonly httpClient: Angular.HttpClient;
12
+ defaults: AngularBackend.RequestDefaults;
13
+ constructor(httpClient: Angular.HttpClient, serviceUrl: string, options?: AngularBackend.Options);
14
+ handle(init: AngularBackend.RequestInit): Observable<HttpEvent>;
15
+ protected send(request: Angular.HttpRequest<any>): Observable<Angular.HttpEvent<unknown>>;
16
+ protected prepareRequest(init: AngularBackend.RequestInit): AngularBackend.RequestInit;
17
+ protected createResponse(init: HttpResponse.Initiator): HttpResponse;
18
+ protected parseBody(fetchResponse: Response): Promise<any>;
19
+ }
20
+ /**
21
+ * @namespace AngularBackend
22
+ */
23
+ export declare namespace AngularBackend {
24
+ interface Options extends HttpBackend.Options {
25
+ defaults?: RequestDefaults;
26
+ }
27
+ interface RequestInit extends HttpBackend.RequestInit {
28
+ context?: HttpContext;
29
+ reportProgress?: boolean;
30
+ params?: HttpParams;
31
+ responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
32
+ withCredentials?: boolean;
33
+ }
34
+ interface RequestOptions extends Pick<RequestInit, 'context' | 'reportProgress' | 'withCredentials'> {
35
+ }
36
+ type RequestDefaults = StrictOmit<RequestOptions, 'context'> & {
37
+ headers: Headers;
38
+ params: URLSearchParams;
39
+ };
40
+ }
@@ -0,0 +1,12 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { HttpClientBase, kBackend } from '@opra/client';
3
+ import { AngularBackend } from './angular-backend';
4
+ /**
5
+ *
6
+ * @class OpraAngularClient
7
+ */
8
+ export declare class OpraAngularClient extends HttpClientBase<AngularBackend.RequestOptions> {
9
+ [kBackend]: AngularBackend;
10
+ constructor(httpClient: HttpClient, serviceUrl: string, options?: AngularBackend.Options);
11
+ get defaults(): AngularBackend.RequestDefaults;
12
+ }
@@ -0,0 +1,173 @@
1
+ import { Observable } from 'rxjs';
2
+ import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
3
+ import { HttpHeaders } from '@angular/common/http';
4
+ import * as Angular from '@angular/common/http';
5
+ import typeIs from '@browsery/type-is';
6
+ import { HttpBackend, HttpEventType, HttpResponse } from '@opra/client';
7
+ import { isBlob } from '@opra/common';
8
+ /**
9
+ *
10
+ * @class AngularBackend
11
+ */
12
+ export class AngularBackend extends HttpBackend {
13
+ httpClient;
14
+ defaults;
15
+ constructor(httpClient, serviceUrl, options) {
16
+ super(serviceUrl, options);
17
+ this.httpClient = httpClient;
18
+ this.defaults = {
19
+ ...options?.defaults,
20
+ headers: options?.defaults?.headers instanceof Headers
21
+ ? options?.defaults?.headers : new Headers(options?.defaults?.headers),
22
+ params: options?.defaults?.params instanceof URLSearchParams
23
+ ? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
24
+ };
25
+ }
26
+ handle(init) {
27
+ const requestInit = this.prepareRequest(init);
28
+ const request = new Angular.HttpRequest(requestInit.method, requestInit.url.toString(), {
29
+ ...requestInit,
30
+ headers: new HttpHeaders(requestInit.headers)
31
+ });
32
+ const _this = this;
33
+ return new Observable((subscriber) => {
34
+ // Send request
35
+ this.send(request).subscribe({
36
+ next(event) {
37
+ if (event.type === Angular.HttpEventType.Sent) {
38
+ // Emit 'Sent' event
39
+ subscriber.next({
40
+ type: HttpEventType.Sent,
41
+ request,
42
+ });
43
+ return;
44
+ }
45
+ if (event.type === Angular.HttpEventType.ResponseHeader) {
46
+ // Emit 'ResponseHeader' event
47
+ const headersResponse = _this.createResponse({
48
+ url: request.url,
49
+ headers: requestInit.headers,
50
+ status: event.status,
51
+ statusText: event.statusText,
52
+ hasBody: event.headers.has('Content-Type') || event.headers.has('Content-Length')
53
+ });
54
+ subscriber.next({
55
+ request,
56
+ type: HttpEventType.ResponseHeader,
57
+ response: headersResponse
58
+ });
59
+ return;
60
+ }
61
+ if (event.type === Angular.HttpEventType.DownloadProgress) {
62
+ // Emit 'DownloadProgress' event
63
+ subscriber.next({
64
+ request,
65
+ type: HttpEventType.DownloadProgress,
66
+ loaded: event.loaded,
67
+ total: event.total
68
+ });
69
+ }
70
+ if (event.type === Angular.HttpEventType.UploadProgress) {
71
+ // Emit 'UploadProgress' event
72
+ subscriber.next({
73
+ request,
74
+ type: HttpEventType.UploadProgress,
75
+ loaded: event.loaded,
76
+ total: event.total
77
+ });
78
+ }
79
+ if (event.type === Angular.HttpEventType.Response) {
80
+ const headers = new Headers();
81
+ event.headers.keys().forEach(k => headers.set(k, event.headers.get(k) || ''));
82
+ const response = _this.createResponse({
83
+ url: request.url,
84
+ headers,
85
+ status: event.status,
86
+ statusText: event.statusText,
87
+ hasBody: !!event.body,
88
+ body: event.body
89
+ });
90
+ // Emit 'Response' event
91
+ subscriber.next({
92
+ type: HttpEventType.Response,
93
+ request,
94
+ response
95
+ });
96
+ }
97
+ },
98
+ error(error) {
99
+ subscriber.error(error);
100
+ },
101
+ complete() {
102
+ subscriber.complete();
103
+ }
104
+ });
105
+ });
106
+ }
107
+ send(request) {
108
+ return this.httpClient.request(request);
109
+ }
110
+ prepareRequest(init) {
111
+ const headers = init.headers || new Headers();
112
+ const requestInit = {
113
+ ...init,
114
+ headers
115
+ };
116
+ if (requestInit.body) {
117
+ let body;
118
+ let contentType;
119
+ if (typeof requestInit.body === 'string' || typeof requestInit.body === 'number' || typeof requestInit.body === 'boolean') {
120
+ contentType = 'text/plain; charset=UTF-8"';
121
+ body = String(requestInit.body);
122
+ headers.delete('Content-Size');
123
+ }
124
+ else if (isReadableStreamLike(requestInit.body)) {
125
+ contentType = 'application/octet-stream';
126
+ body = requestInit.body;
127
+ }
128
+ else if (Buffer.isBuffer(requestInit.body)) {
129
+ contentType = 'application/octet-stream';
130
+ body = requestInit.body;
131
+ headers.set('Content-Size', String(requestInit.body.length));
132
+ ;
133
+ }
134
+ else if (isBlob(requestInit.body)) {
135
+ contentType = requestInit.body.type || 'application/octet-stream';
136
+ body = requestInit.body;
137
+ headers.set('Content-Size', String(requestInit.body.size));
138
+ }
139
+ else {
140
+ contentType = 'application/json';
141
+ body = JSON.stringify(requestInit.body);
142
+ headers.delete('Content-Size');
143
+ }
144
+ if (!headers.has('Content-Type') && contentType)
145
+ headers.set('Content-Type', contentType);
146
+ requestInit.body = body;
147
+ }
148
+ return requestInit;
149
+ }
150
+ createResponse(init) {
151
+ return new HttpResponse(init);
152
+ }
153
+ async parseBody(fetchResponse) {
154
+ let body;
155
+ const contentType = (fetchResponse.headers.get('Content-Type') || '');
156
+ if (typeIs.is(contentType, ['json', 'application/*+json'])) {
157
+ body = await fetchResponse.json();
158
+ if (typeof body === 'string')
159
+ body = JSON.parse(body);
160
+ }
161
+ else if (typeIs.is(contentType, ['text']))
162
+ body = await fetchResponse.text();
163
+ else if (typeIs.is(contentType, ['multipart']))
164
+ body = await fetchResponse.formData();
165
+ else {
166
+ const buf = await fetchResponse.arrayBuffer();
167
+ if (buf.byteLength)
168
+ body = buf;
169
+ }
170
+ return body;
171
+ }
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvYW5ndWxhci1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFL0UsT0FBTyxFQUFlLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxNQUFNLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUNMLFdBQVcsRUFFWCxhQUFhLEVBQ2IsWUFBWSxFQUliLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBSXhCO0lBRnJCLFFBQVEsQ0FBaUM7SUFFekMsWUFBcUIsVUFBOEIsRUFBRSxVQUFrQixFQUFFLE9BQWdDO1FBQ3ZHLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEUixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUVqRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsR0FBRyxPQUFPLEVBQUUsUUFBUTtZQUNwQixPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLFlBQVksT0FBTztnQkFDbEQsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUMxRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksZUFBZTtnQkFDeEQsQ0FBQyxDQUFDLE9BQU8sRUFBRSxR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Q0FBQztZQUM1QyxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxJQUFJLEdBQUcsQ0FBQyxVQUFVO2dCQUNoQixJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzUmVhZGFibGVTdHJlYW1MaWtlIH0gZnJvbSAncnhqcy9pbnRlcm5hbC91dGlsL2lzUmVhZGFibGVTdHJlYW1MaWtlJztcbmltcG9ydCB7IFN0cmljdE9taXQgfSBmcm9tICd0cy1nZW1zJztcbmltcG9ydCB7IEh0dHBDb250ZXh0LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCAqIGFzIEFuZ3VsYXIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHR5cGVJcyBmcm9tICdAYnJvd3NlcnkvdHlwZS1pcyc7XG5pbXBvcnQge1xuICBIdHRwQmFja2VuZCwgSHR0cERvd25sb2FkUHJvZ3Jlc3NFdmVudCxcbiAgSHR0cEV2ZW50LFxuICBIdHRwRXZlbnRUeXBlLFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZUV2ZW50LFxuICBIdHRwUmVzcG9uc2VIZWFkZXJFdmVudCxcbiAgSHR0cFNlbnRFdmVudCwgSHR0cFVwbG9hZFByb2dyZXNzRXZlbnRcbn0gZnJvbSAnQG9wcmEvY2xpZW50JztcbmltcG9ydCB7IGlzQmxvYiB9IGZyb20gJ0BvcHJhL2NvbW1vbic7XG5cbi8qKlxuICpcbiAqIEBjbGFzcyBBbmd1bGFyQmFja2VuZFxuICovXG5leHBvcnQgY2xhc3MgQW5ndWxhckJhY2tlbmQgZXh0ZW5kcyBIdHRwQmFja2VuZCB7XG5cbiAgZGVmYXVsdHM6IEFuZ3VsYXJCYWNrZW5kLlJlcXVlc3REZWZhdWx0cztcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBodHRwQ2xpZW50OiBBbmd1bGFyLkh0dHBDbGllbnQsIHNlcnZpY2VVcmw6IHN0cmluZywgb3B0aW9ucz86IEFuZ3VsYXJCYWNrZW5kLk9wdGlvbnMpIHtcbiAgICBzdXBlcihzZXJ2aWNlVXJsLCBvcHRpb25zKTtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgLi4ub3B0aW9ucz8uZGVmYXVsdHMsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zPy5kZWZhdWx0cz8uaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnNcbiAgICAgICAgICA/IG9wdGlvbnM/LmRlZmF1bHRzPy5oZWFkZXJzIDogbmV3IEhlYWRlcnMob3B0aW9ucz8uZGVmYXVsdHM/LmhlYWRlcnMpLFxuICAgICAgcGFyYW1zOiBvcHRpb25zPy5kZWZhdWx0cz8ucGFyYW1zIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zXG4gICAgICAgICAgPyBvcHRpb25zPy5kZWZhdWx0cz8ucGFyYW1zIDogbmV3IFVSTFNlYXJjaFBhcmFtcyhvcHRpb25zPy5kZWZhdWx0cz8ucGFyYW1zKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZShpbml0OiBBbmd1bGFyQmFja2VuZC5SZXF1ZXN0SW5pdCk6IE9ic2VydmFibGU8SHR0cEV2ZW50PiB7XG4gICAgY29uc3QgcmVxdWVzdEluaXQgPSB0aGlzLnByZXBhcmVSZXF1ZXN0KGluaXQpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgQW5ndWxhci5IdHRwUmVxdWVzdChyZXF1ZXN0SW5pdC5tZXRob2QsIHJlcXVlc3RJbml0LnVybC50b1N0cmluZygpLCB7XG4gICAgICAuLi5yZXF1ZXN0SW5pdCxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhyZXF1ZXN0SW5pdC5oZWFkZXJzKVxuICAgIH0pO1xuXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxIdHRwRXZlbnQ+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAvLyBTZW5kIHJlcXVlc3RcbiAgICAgIHRoaXMuc2VuZChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0KGV2ZW50KSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEFuZ3VsYXIuSHR0cEV2ZW50VHlwZS5TZW50KSB7XG4gICAgICAgICAgICAvLyBFbWl0ICdTZW50JyBldmVudFxuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogSHR0cEV2ZW50VHlwZS5TZW50LFxuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgfSBzYXRpc2ZpZXMgSHR0cFNlbnRFdmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEFuZ3VsYXIuSHR0cEV2ZW50VHlwZS5SZXNwb25zZUhlYWRlcikge1xuICAgICAgICAgICAgLy8gRW1pdCAnUmVzcG9uc2VIZWFkZXInIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzUmVzcG9uc2UgPSBfdGhpcy5jcmVhdGVSZXNwb25zZSh7XG4gICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RJbml0LmhlYWRlcnMsXG4gICAgICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxuICAgICAgICAgICAgICBzdGF0dXNUZXh0OiBldmVudC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICBoYXNCb2R5OiBldmVudC5oZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykgfHwgZXZlbnQuaGVhZGVycy5oYXMoJ0NvbnRlbnQtTGVuZ3RoJylcbiAgICAgICAgICAgIH0pIGFzIEh0dHBSZXNwb25zZTxuZXZlcj47XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICB0eXBlOiBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlSGVhZGVyLFxuICAgICAgICAgICAgICByZXNwb25zZTogaGVhZGVyc1Jlc3BvbnNlXG4gICAgICAgICAgICB9IHNhdGlzZmllcyBIdHRwUmVzcG9uc2VIZWFkZXJFdmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEFuZ3VsYXIuSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAvLyBFbWl0ICdEb3dubG9hZFByb2dyZXNzJyBldmVudFxuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgdHlwZTogSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzLFxuICAgICAgICAgICAgICBsb2FkZWQ6IGV2ZW50LmxvYWRlZCxcbiAgICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsXG4gICAgICAgICAgICB9IHNhdGlzZmllcyBIdHRwRG93bmxvYWRQcm9ncmVzc0V2ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gQW5ndWxhci5IdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAvLyBFbWl0ICdVcGxvYWRQcm9ncmVzcycgZXZlbnRcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh7XG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIHR5cGU6IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MsXG4gICAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxuICAgICAgICAgICAgICB0b3RhbDogZXZlbnQudG90YWxcbiAgICAgICAgICAgIH0gc2F0aXNmaWVzIEh0dHBVcGxvYWRQcm9ncmVzc0V2ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gQW5ndWxhci5IdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgICAgICAgICAgIGV2ZW50LmhlYWRlcnMua2V5cygpLmZvckVhY2goayA9PiBoZWFkZXJzLnNldChrLCBldmVudC5oZWFkZXJzLmdldChrKSB8fCAnJykpO1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBfdGhpcy5jcmVhdGVSZXNwb25zZSh7XG4gICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxuICAgICAgICAgICAgICBzdGF0dXNUZXh0OiBldmVudC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICBoYXNCb2R5OiAhIWV2ZW50LmJvZHksXG4gICAgICAgICAgICAgIGJvZHk6IGV2ZW50LmJvZHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gRW1pdCAnUmVzcG9uc2UnIGV2ZW50XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlLFxuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICByZXNwb25zZVxuICAgICAgICAgICAgfSBzYXRpc2ZpZXMgSHR0cFJlc3BvbnNlRXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IoZXJyb3IpIHtcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKClcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VuZChyZXF1ZXN0OiBBbmd1bGFyLkh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3QocmVxdWVzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlcGFyZVJlcXVlc3QoaW5pdDogQW5ndWxhckJhY2tlbmQuUmVxdWVzdEluaXQpOiBBbmd1bGFyQmFja2VuZC5SZXF1ZXN0SW5pdCB7XG4gICAgY29uc3QgaGVhZGVycyA9IGluaXQuaGVhZGVycyB8fCBuZXcgSGVhZGVycygpO1xuICAgIGNvbnN0IHJlcXVlc3RJbml0OiBBbmd1bGFyQmFja2VuZC5SZXF1ZXN0SW5pdCA9IHtcbiAgICAgIC4uLmluaXQsXG4gICAgICBoZWFkZXJzXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3RJbml0LmJvZHkpIHtcbiAgICAgIGxldCBib2R5OiBhbnk7XG4gICAgICBsZXQgY29udGVudFR5cGU6IHN0cmluZztcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEluaXQuYm9keSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHJlcXVlc3RJbml0LmJvZHkgPT09ICdudW1iZXInIHx8IHR5cGVvZiByZXF1ZXN0SW5pdC5ib2R5ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgY29udGVudFR5cGUgPSAndGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiJztcbiAgICAgICAgYm9keSA9IFN0cmluZyhyZXF1ZXN0SW5pdC5ib2R5KTtcbiAgICAgICAgaGVhZGVycy5kZWxldGUoJ0NvbnRlbnQtU2l6ZScpO1xuICAgICAgfSBlbHNlIGlmIChpc1JlYWRhYmxlU3RyZWFtTGlrZShyZXF1ZXN0SW5pdC5ib2R5KSkge1xuICAgICAgICBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICAgICAgICBib2R5ID0gcmVxdWVzdEluaXQuYm9keTtcbiAgICAgIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHJlcXVlc3RJbml0LmJvZHkpKSB7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gICAgICAgIGJvZHkgPSByZXF1ZXN0SW5pdC5ib2R5O1xuICAgICAgICBoZWFkZXJzLnNldCgnQ29udGVudC1TaXplJywgU3RyaW5nKHJlcXVlc3RJbml0LmJvZHkubGVuZ3RoKSk7XG4gICAgICAgIDtcbiAgICAgIH0gZWxzZSBpZiAoaXNCbG9iKHJlcXVlc3RJbml0LmJvZHkpKSB7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVxdWVzdEluaXQuYm9keS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICAgICAgICBib2R5ID0gcmVxdWVzdEluaXQuYm9keTtcbiAgICAgICAgaGVhZGVycy5zZXQoJ0NvbnRlbnQtU2l6ZScsIFN0cmluZyhyZXF1ZXN0SW5pdC5ib2R5LnNpemUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkocmVxdWVzdEluaXQuYm9keSk7XG4gICAgICAgIGhlYWRlcnMuZGVsZXRlKCdDb250ZW50LVNpemUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpICYmIGNvbnRlbnRUeXBlKVxuICAgICAgICBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuICAgICAgcmVxdWVzdEluaXQuYm9keSA9IGJvZHk7XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SW5pdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNwb25zZShpbml0OiBIdHRwUmVzcG9uc2UuSW5pdGlhdG9yKTogSHR0cFJlc3BvbnNlIHtcbiAgICByZXR1cm4gbmV3IEh0dHBSZXNwb25zZShpbml0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwYXJzZUJvZHkoZmV0Y2hSZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBib2R5OiBhbnk7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSAoZmV0Y2hSZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgfHwgJycpO1xuICAgIGlmICh0eXBlSXMuaXMoY29udGVudFR5cGUsIFsnanNvbicsICdhcHBsaWNhdGlvbi8qK2pzb24nXSkpIHtcbiAgICAgIGJvZHkgPSBhd2FpdCBmZXRjaFJlc3BvbnNlLmpzb24oKTtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpXG4gICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgIH0gZWxzZSBpZiAodHlwZUlzLmlzKGNvbnRlbnRUeXBlLCBbJ3RleHQnXSkpXG4gICAgICBib2R5ID0gYXdhaXQgZmV0Y2hSZXNwb25zZS50ZXh0KCk7XG4gICAgZWxzZSBpZiAodHlwZUlzLmlzKGNvbnRlbnRUeXBlLCBbJ211bHRpcGFydCddKSlcbiAgICAgIGJvZHkgPSBhd2FpdCBmZXRjaFJlc3BvbnNlLmZvcm1EYXRhKCk7XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBidWYgPSBhd2FpdCBmZXRjaFJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XG4gICAgICBpZiAoYnVmLmJ5dGVMZW5ndGgpXG4gICAgICAgIGJvZHkgPSBidWY7XG4gICAgfVxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbn1cblxuLyoqXG4gKiBAbmFtZXNwYWNlIEFuZ3VsYXJCYWNrZW5kXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgQW5ndWxhckJhY2tlbmQge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyBleHRlbmRzIEh0dHBCYWNrZW5kLk9wdGlvbnMge1xuICAgIGRlZmF1bHRzPzogUmVxdWVzdERlZmF1bHRzO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SW5pdCBleHRlbmRzIEh0dHBCYWNrZW5kLlJlcXVlc3RJbml0IHtcbiAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXM7XG4gICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyBleHRlbmRzIFBpY2s8UmVxdWVzdEluaXQsICdjb250ZXh0JyB8ICdyZXBvcnRQcm9ncmVzcycgfCAnd2l0aENyZWRlbnRpYWxzJz4ge1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVxdWVzdERlZmF1bHRzID0gU3RyaWN0T21pdDxSZXF1ZXN0T3B0aW9ucywgJ2NvbnRleHQnPiAmIHtcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zO1xuICB9O1xuXG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { HttpClientBase, kBackend } from '@opra/client';
2
+ import { AngularBackend } from './angular-backend';
3
+ /**
4
+ *
5
+ * @class OpraAngularClient
6
+ */
7
+ export class OpraAngularClient extends HttpClientBase {
8
+ [kBackend];
9
+ constructor(httpClient, serviceUrl, options) {
10
+ super(new AngularBackend(httpClient, serviceUrl, options));
11
+ }
12
+ get defaults() {
13
+ return this[kBackend].defaults;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy9hbmd1bGFyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGNBQTZDO0lBQ2xGLENBQUMsUUFBUSxDQUFDLENBQWlCO0lBRTNCLFlBQVksVUFBc0IsRUFBRSxVQUFrQixFQUFFLE9BQWdDO1FBQ3RGLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSHR0cENsaWVudEJhc2UsIGtCYWNrZW5kIH0gZnJvbSAnQG9wcmEvY2xpZW50JztcbmltcG9ydCB7IEFuZ3VsYXJCYWNrZW5kIH0gZnJvbSAnLi9hbmd1bGFyLWJhY2tlbmQnO1xuXG4vKipcbiAqXG4gKiBAY2xhc3MgT3ByYUFuZ3VsYXJDbGllbnRcbiAqL1xuZXhwb3J0IGNsYXNzIE9wcmFBbmd1bGFyQ2xpZW50IGV4dGVuZHMgSHR0cENsaWVudEJhc2U8QW5ndWxhckJhY2tlbmQuUmVxdWVzdE9wdGlvbnM+IHtcbiAgW2tCYWNrZW5kXTogQW5ndWxhckJhY2tlbmQ7XG5cbiAgY29uc3RydWN0b3IoaHR0cENsaWVudDogSHR0cENsaWVudCwgc2VydmljZVVybDogc3RyaW5nLCBvcHRpb25zPzogQW5ndWxhckJhY2tlbmQuT3B0aW9ucykge1xuICAgIHN1cGVyKG5ldyBBbmd1bGFyQmFja2VuZChodHRwQ2xpZW50LCBzZXJ2aWNlVXJsLCBvcHRpb25zKSk7XG4gIH1cblxuICBnZXQgZGVmYXVsdHMoKTogQW5ndWxhckJhY2tlbmQuUmVxdWVzdERlZmF1bHRzIHtcbiAgICByZXR1cm4gdGhpc1trQmFja2VuZF0uZGVmYXVsdHM7XG4gIH1cblxufVxuIl19
@@ -1,38 +1,41 @@
1
1
  /* eslint-disable import/extensions */
2
+ import { HttpClient } from '@angular/common/http';
2
3
  import { NgModule } from '@angular/core';
3
- import { OpraHttpClient } from '@opra/client';
4
+ import { OpraAngularClient } from './angular-client';
4
5
  import { OPRA_CLIENT_MODULE_OPTIONS } from './constants';
5
6
  import * as i0 from "@angular/core";
6
7
  export class OpraClientModule {
7
8
  static registerClient(options) {
8
- const CLIENT_TOKEN = options.token || OpraHttpClient;
9
- const client = new OpraHttpClient(options.serviceUrl, options);
9
+ const CLIENT_TOKEN = options.token || OpraAngularClient;
10
10
  return {
11
11
  ngModule: OpraClientModule,
12
12
  providers: [
13
13
  {
14
14
  provide: CLIENT_TOKEN,
15
- useValue: client
15
+ deps: [HttpClient],
16
+ useFactory: (httpClient) => new OpraAngularClient(httpClient, options.serviceUrl, options)
16
17
  }
17
18
  ]
18
19
  };
19
20
  }
20
21
  static registerService(serviceClass, options) {
21
22
  const SERVICE_TOKEN = options.token || serviceClass;
22
- const client = new OpraHttpClient(options.serviceUrl, options);
23
- const service = new serviceClass(client);
24
23
  return {
25
24
  ngModule: OpraClientModule,
26
25
  providers: [
27
26
  {
28
27
  provide: SERVICE_TOKEN,
29
- useValue: service
28
+ deps: [HttpClient],
29
+ useFactory: (httpClient) => {
30
+ const opraAngularClient = new OpraAngularClient(httpClient, options.serviceUrl, options);
31
+ return new serviceClass(opraAngularClient);
32
+ }
30
33
  }
31
34
  ]
32
35
  };
33
36
  }
34
37
  static registerClientAsync(options) {
35
- const CLIENT_TOKEN = options.token || OpraHttpClient;
38
+ const CLIENT_TOKEN = options.token || OpraAngularClient;
36
39
  const asyncProviders = this._createAsyncProviders(options);
37
40
  return {
38
41
  ngModule: OpraClientModule,
@@ -40,8 +43,8 @@ export class OpraClientModule {
40
43
  ...asyncProviders,
41
44
  {
42
45
  provide: CLIENT_TOKEN,
43
- deps: [OPRA_CLIENT_MODULE_OPTIONS],
44
- useFactory: (opts) => new OpraHttpClient(opts.serviceUrl, opts)
46
+ deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],
47
+ useFactory: (httpClient, opts) => new OpraAngularClient(httpClient, opts.serviceUrl, opts)
45
48
  }
46
49
  ]
47
50
  };
@@ -55,10 +58,10 @@ export class OpraClientModule {
55
58
  ...asyncProviders,
56
59
  {
57
60
  provide: SERVICE_TOKEN,
58
- deps: [OPRA_CLIENT_MODULE_OPTIONS],
59
- useFactory: (opts) => {
60
- const client = new OpraHttpClient(opts.serviceUrl, opts);
61
- return new serviceClass(client);
61
+ deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],
62
+ useFactory: (httpClient, opts) => {
63
+ const opraAngularClient = new OpraAngularClient(httpClient, opts.serviceUrl, opts);
64
+ return new serviceClass(opraAngularClient);
62
65
  }
63
66
  }
64
67
  ]
@@ -103,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
103
106
  type: NgModule,
104
107
  args: [{}]
105
108
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL2NsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBdUIsUUFBUSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBT3pELE1BQU0sT0FBTyxnQkFBZ0I7SUFFcEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFnQztRQUMzRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE9BQU87WUFDTCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQ3pCLFlBQXFCLEVBQ3JCLE9BQWdDO1FBRWxDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsT0FB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IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9leHRlbnNpb25zICovXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQmFzZSwgT3ByYUh0dHBDbGllbnQgfSBmcm9tICdAb3ByYS9jbGllbnQnO1xuaW1wb3J0IHsgT1BSQV9DTElFTlRfTU9EVUxFX09QVElPTlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBPcHJhQ2xpZW50TW9kdWxlQXN5bmNPcHRpb25zLFxuICBPcHJhQ2xpZW50TW9kdWxlT3B0aW9uc1xufSBmcm9tICcuL2ludGVyZmFjZXMvbW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIE9wcmFDbGllbnRNb2R1bGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXJDbGllbnQob3B0aW9uczogT3ByYUNsaWVudE1vZHVsZU9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE9wcmFDbGllbnRNb2R1bGU+IHtcbiAgICBjb25zdCBDTElFTlRfVE9LRU4gPSBvcHRpb25zLnRva2VuIHx8IE9wcmFIdHRwQ2xpZW50O1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBPcHJhSHR0cENsaWVudChvcHRpb25zLnNlcnZpY2VVcmwsIG9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogT3ByYUNsaWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQ0xJRU5UX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiBjbGllbnRcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyU2VydmljZTxUIGV4dGVuZHMgSHR0cFNlcnZpY2VCYXNlPihcbiAgICAgIHNlcnZpY2VDbGFzczogVHlwZTxUPixcbiAgICAgIG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVPcHRpb25zXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T3ByYUNsaWVudE1vZHVsZT4ge1xuICAgIGNvbnN0IFNFUlZJQ0VfVE9LRU4gPSBvcHRpb25zLnRva2VuIHx8IHNlcnZpY2VDbGFzcztcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgT3ByYUh0dHBDbGllbnQob3B0aW9ucy5zZXJ2aWNlVXJsLCBvcHRpb25zKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IHNlcnZpY2VDbGFzcyhjbGllbnQpO1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogT3ByYUNsaWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU0VSVklDRV9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogc2VydmljZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXJDbGllbnRBc3luYyhcbiAgICAgIG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVBc3luY09wdGlvbnNcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxPcHJhQ2xpZW50TW9kdWxlPiB7XG4gICAgY29uc3QgQ0xJRU5UX1RPS0VOID0gb3B0aW9ucy50b2tlbiB8fCBPcHJhSHR0cENsaWVudDtcbiAgICBjb25zdCBhc3luY1Byb3ZpZGVycyA9IHRoaXMuX2NyZWF0ZUFzeW5jUHJvdmlkZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogT3ByYUNsaWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi5hc3luY1Byb3ZpZGVycyxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IENMSUVOVF9UT0tFTixcbiAgICAgICAgICBkZXBzOiBbT1BSQV9DTElFTlRfTU9EVUxFX09QVElPTlNdLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChvcHRzOiBPcHJhQ2xpZW50TW9kdWxlT3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgbmV3IE9wcmFIdHRwQ2xpZW50KG9wdHMuc2VydmljZVVybCwgb3B0cylcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyU2VydmljZUFzeW5jPFQgZXh0ZW5kcyBIdHRwU2VydmljZUJhc2U+KFxuICAgICAgc2VydmljZUNsYXNzOiBUeXBlPFQ+LFxuICAgICAgb3B0aW9uczogT3ByYUNsaWVudE1vZHVsZUFzeW5jT3B0aW9uc1xuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE9wcmFDbGllbnRNb2R1bGU+IHtcbiAgICBjb25zdCBTRVJWSUNFX1RPS0VOID0gb3B0aW9ucy50b2tlbiB8fCBzZXJ2aWNlQ2xhc3M7XG4gICAgY29uc3QgYXN5bmNQcm92aWRlcnMgPSB0aGlzLl9jcmVhdGVBc3luY1Byb3ZpZGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9wcmFDbGllbnRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLi4uYXN5bmNQcm92aWRlcnMsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTRVJWSUNFX1RPS0VOLFxuICAgICAgICAgIGRlcHM6IFtPUFJBX0NMSUVOVF9NT0RVTEVfT1BUSU9OU10sXG4gICAgICAgICAgdXNlRmFjdG9yeTogKG9wdHM6IE9wcmFDbGllbnRNb2R1bGVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgT3ByYUh0dHBDbGllbnQob3B0cy5zZXJ2aWNlVXJsLCBvcHRzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBzZXJ2aWNlQ2xhc3MoY2xpZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NyZWF0ZUFzeW5jUHJvdmlkZXJzKG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVBc3luY09wdGlvbnMpOiBQcm92aWRlcltdIHtcbiAgICBpZiAob3B0aW9ucy51c2VFeGlzdGluZyB8fCBvcHRpb25zLnVzZUZhY3RvcnkpXG4gICAgICByZXR1cm4gW3RoaXMuX2NyZWF0ZUFzeW5jT3B0aW9uc1Byb3ZpZGVyKG9wdGlvbnMpXTtcblxuICAgIGlmIChvcHRpb25zLnVzZUNsYXNzKVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy5fY3JlYXRlQXN5bmNPcHRpb25zUHJvdmlkZXIob3B0aW9ucyksXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBvcHRpb25zLnVzZUNsYXNzLFxuICAgICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLnVzZUNsYXNzXG4gICAgICAgIH1cbiAgICAgIF07XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29uZmlndXJhdGlvbi4gTXVzdCBwcm92aWRlIHVzZUZhY3RvcnksIHVzZUNsYXNzIG9yIHVzZUV4aXN0aW5nJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfY3JlYXRlQXN5bmNPcHRpb25zUHJvdmlkZXIob3B0aW9uczogT3ByYUNsaWVudE1vZHVsZUFzeW5jT3B0aW9ucyk6IFByb3ZpZGVyIHtcbiAgICBpZiAob3B0aW9ucy51c2VGYWN0b3J5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBPUFJBX0NMSUVOVF9NT0RVTEVfT1BUSU9OUyxcbiAgICAgICAgdXNlRmFjdG9yeTogb3B0aW9ucy51c2VGYWN0b3J5LFxuICAgICAgICBkZXBzOiBvcHRpb25zLmRlcHMgfHwgW10sXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB1c2VDbGFzcyA9IG9wdGlvbnMudXNlQ2xhc3MgfHwgb3B0aW9ucy51c2VFeGlzdGluZztcbiAgICBpZiAodXNlQ2xhc3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IE9QUkFfQ0xJRU5UX01PRFVMRV9PUFRJT05TLFxuICAgICAgICB1c2VGYWN0b3J5OiAobykgPT4gbyxcbiAgICAgICAgZGVwczogW3VzZUNsYXNzXSxcbiAgICAgIH07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uLiBNdXN0IHByb3ZpZGUgdXNlRmFjdG9yeSwgdXNlQ2xhc3Mgb3IgdXNlRXhpc3RpbmcnKTtcbiAgfVxuXG5cbn1cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL2NsaWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQXVCLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU96RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRXBCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBZ0M7UUFDM0QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztRQUN4RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDbEIsVUFBVSxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQ25DLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO2lCQUNuRTthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUN6QixZQUFxQixFQUNyQixPQUFnQztRQUVsQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUNwRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDbEIsVUFBVSxFQUFFLENBQUMs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Q0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNqQixDQUFDO1NBQ0g7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7SUFDN0YsQ0FBQzt1R0EvR1UsZ0JBQWdCO3dHQUFoQixnQkFBZ0I7d0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L2V4dGVuc2lvbnMgKi9cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQmFzZSB9IGZyb20gJ0BvcHJhL2NsaWVudCc7XG5pbXBvcnQgeyBPcHJhQW5ndWxhckNsaWVudCB9IGZyb20gJy4vYW5ndWxhci1jbGllbnQnO1xuaW1wb3J0IHsgT1BSQV9DTElFTlRfTU9EVUxFX09QVElPTlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBPcHJhQ2xpZW50TW9kdWxlQXN5bmNPcHRpb25zLFxuICBPcHJhQ2xpZW50TW9kdWxlT3B0aW9uc1xufSBmcm9tICcuL2ludGVyZmFjZXMvbW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIE9wcmFDbGllbnRNb2R1bGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXJDbGllbnQob3B0aW9uczogT3ByYUNsaWVudE1vZHVsZU9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE9wcmFDbGllbnRNb2R1bGU+IHtcbiAgICBjb25zdCBDTElFTlRfVE9LRU4gPSBvcHRpb25zLnRva2VuIHx8IE9wcmFBbmd1bGFyQ2xpZW50O1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogT3ByYUNsaWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQ0xJRU5UX1RPS0VOLFxuICAgICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT5cbiAgICAgICAgICAgICAgbmV3IE9wcmFBbmd1bGFyQ2xpZW50KGh0dHBDbGllbnQsIG9wdGlvbnMuc2VydmljZVVybCwgb3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyU2VydmljZTxUIGV4dGVuZHMgSHR0cFNlcnZpY2VCYXNlPihcbiAgICAgIHNlcnZpY2VDbGFzczogVHlwZTxUPixcbiAgICAgIG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVPcHRpb25zXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T3ByYUNsaWVudE1vZHVsZT4ge1xuICAgIGNvbnN0IFNFUlZJQ0VfVE9LRU4gPSBvcHRpb25zLnRva2VuIHx8IHNlcnZpY2VDbGFzcztcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9wcmFDbGllbnRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNFUlZJQ0VfVE9LRU4sXG4gICAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHJhQW5ndWxhckNsaWVudCA9IG5ldyBPcHJhQW5ndWxhckNsaWVudChodHRwQ2xpZW50LCBvcHRpb25zLnNlcnZpY2VVcmwsIG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBzZXJ2aWNlQ2xhc3Mob3ByYUFuZ3VsYXJDbGllbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyQ2xpZW50QXN5bmMoXG4gICAgICBvcHRpb25zOiBPcHJhQ2xpZW50TW9kdWxlQXN5bmNPcHRpb25zXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T3ByYUNsaWVudE1vZHVsZT4ge1xuICAgIGNvbnN0IENMSUVOVF9UT0tFTiA9IG9wdGlvbnMudG9rZW4gfHwgT3ByYUFuZ3VsYXJDbGllbnQ7XG4gICAgY29uc3QgYXN5bmNQcm92aWRlcnMgPSB0aGlzLl9jcmVhdGVBc3luY1Byb3ZpZGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9wcmFDbGllbnRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLi4uYXN5bmNQcm92aWRlcnMsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBDTElFTlRfVE9LRU4sXG4gICAgICAgICAgZGVwczogW0h0dHBDbGllbnQsIE9QUkFfQ0xJRU5UX01PRFVMRV9PUFRJT05TXSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoaHR0cENsaWVudDogSHR0cENsaWVudCwgb3B0czogT3ByYUNsaWVudE1vZHVsZU9wdGlvbnMpID0+XG4gICAgICAgICAgICAgIG5ldyBPcHJhQW5ndWxhckNsaWVudChodHRwQ2xpZW50LCBvcHRzLnNlcnZpY2VVcmwsIG9wdHMpXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZWdpc3RlclNlcnZpY2VBc3luYzxUIGV4dGVuZHMgSHR0cFNlcnZpY2VCYXNlPihcbiAgICAgIHNlcnZpY2VDbGFzczogVHlwZTxUPixcbiAgICAgIG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVBc3luY09wdGlvbnNcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxPcHJhQ2xpZW50TW9kdWxlPiB7XG4gICAgY29uc3QgU0VSVklDRV9UT0tFTiA9IG9wdGlvbnMudG9rZW4gfHwgc2VydmljZUNsYXNzO1xuICAgIGNvbnN0IGFzeW5jUHJvdmlkZXJzID0gdGhpcy5fY3JlYXRlQXN5bmNQcm92aWRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBPcHJhQ2xpZW50TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC4uLmFzeW5jUHJvdmlkZXJzLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU0VSVklDRV9UT0tFTixcbiAgICAgICAgICBkZXBzOiBbSHR0cENsaWVudCwgT1BSQV9DTElFTlRfTU9EVUxFX09QVElPTlNdLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBvcHRzOiBPcHJhQ2xpZW50TW9kdWxlT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3ByYUFuZ3VsYXJDbGllbnQgPSBuZXcgT3ByYUFuZ3VsYXJDbGllbnQoaHR0cENsaWVudCwgb3B0cy5zZXJ2aWNlVXJsLCBvcHRzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgc2VydmljZUNsYXNzKG9wcmFBbmd1bGFyQ2xpZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NyZWF0ZUFzeW5jUHJvdmlkZXJzKG9wdGlvbnM6IE9wcmFDbGllbnRNb2R1bGVBc3luY09wdGlvbnMpOiBQcm92aWRlcltdIHtcbiAgICBpZiAob3B0aW9ucy51c2VFeGlzdGluZyB8fCBvcHRpb25zLnVzZUZhY3RvcnkpXG4gICAgICByZXR1cm4gW3RoaXMuX2NyZWF0ZUFzeW5jT3B0aW9uc1Byb3ZpZGVyKG9wdGlvbnMpXTtcblxuICAgIGlmIChvcHRpb25zLnVzZUNsYXNzKVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy5fY3JlYXRlQXN5bmNPcHRpb25zUHJvdmlkZXIob3B0aW9ucyksXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBvcHRpb25zLnVzZUNsYXNzLFxuICAgICAgICAgIHVzZUNsYXNzOiBvcHRpb25zLnVzZUNsYXNzXG4gICAgICAgIH1cbiAgICAgIF07XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29uZmlndXJhdGlvbi4gTXVzdCBwcm92aWRlIHVzZUZhY3RvcnksIHVzZUNsYXNzIG9yIHVzZUV4aXN0aW5nJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfY3JlYXRlQXN5bmNPcHRpb25zUHJvdmlkZXIob3B0aW9uczogT3ByYUNsaWVudE1vZHVsZUFzeW5jT3B0aW9ucyk6IFByb3ZpZGVyIHtcbiAgICBpZiAob3B0aW9ucy51c2VGYWN0b3J5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBPUFJBX0NMSUVOVF9NT0RVTEVfT1BUSU9OUyxcbiAgICAgICAgdXNlRmFjdG9yeTogb3B0aW9ucy51c2VGYWN0b3J5LFxuICAgICAgICBkZXBzOiBvcHRpb25zLmRlcHMgfHwgW10sXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB1c2VDbGFzcyA9IG9wdGlvbnMudXNlQ2xhc3MgfHwgb3B0aW9ucy51c2VFeGlzdGluZztcbiAgICBpZiAodXNlQ2xhc3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IE9QUkFfQ0xJRU5UX01PRFVMRV9PUFRJT05TLFxuICAgICAgICB1c2VGYWN0b3J5OiAobykgPT4gbyxcbiAgICAgICAgZGVwczogW3VzZUNsYXNzXSxcbiAgICAgIH07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWd1cmF0aW9uLiBNdXN0IHByb3ZpZGUgdXNlRmFjdG9yeSwgdXNlQ2xhc3Mgb3IgdXNlRXhpc3RpbmcnKTtcbiAgfVxuXG5cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvaW50ZXJmYWNlcy9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyaWN0T21pdCB9IGZyb20gJ3RzLWdlbXMnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHJhSHR0cENsaWVudCB9IGZyb20gJ0BvcHJhL2NsaWVudCc7XG5cbmV4cG9ydCB0eXBlIE9wcmFDbGllbnRNb2R1bGVPcHRpb25zID0gT3ByYUh0dHBDbGllbnQuT3B0aW9ucyAmIHtcbiAgc2VydmljZVVybDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZyB8IEluamVjdGlvblRva2VuPGFueT47XG59XG5cbnR5cGUgX09wcmFDbGllbnRNb2R1bGVPcHRpb25zID0gU3RyaWN0T21pdDxPcHJhQ2xpZW50TW9kdWxlT3B0aW9ucywgJ3Rva2VuJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ByYU1vZHVsZU9wdGlvbnNGYWN0b3J5IHtcbiAgY3JlYXRlT3B0aW9ucygpOiBQcm9taXNlPF9PcHJhQ2xpZW50TW9kdWxlT3B0aW9ucz4gfCBfT3ByYUNsaWVudE1vZHVsZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ByYUNsaWVudE1vZHVsZUFzeW5jT3B0aW9uc1xuICAgIGV4dGVuZHMgUGljazxOZ01vZHVsZSwgJ2ltcG9ydHMnIHwgJ3Byb3ZpZGVycyc+IHtcbiAgdG9rZW4/OiBzdHJpbmcgfCBJbmplY3Rpb25Ub2tlbjxhbnk+O1xuICB1c2VFeGlzdGluZz86IFR5cGU8T3ByYU1vZHVsZU9wdGlvbnNGYWN0b3J5PjtcbiAgdXNlQ2xhc3M/OiBUeXBlPGFueT47XG4gIHVzZUZhY3Rvcnk/OiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8X09wcmFDbGllbnRNb2R1bGVPcHRpb25zPiB8IF9PcHJhQ2xpZW50TW9kdWxlT3B0aW9ucztcbiAgZGVwcz86IGFueVtdO1xufVxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvaW50ZXJmYWNlcy9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyaWN0T21pdCB9IGZyb20gJ3RzLWdlbXMnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmd1bGFyQmFja2VuZCB9IGZyb20gJy4uL2FuZ3VsYXItYmFja2VuZC5qcyc7XG5cbmV4cG9ydCB0eXBlIE9wcmFDbGllbnRNb2R1bGVPcHRpb25zID0gQW5ndWxhckJhY2tlbmQuT3B0aW9ucyAmIHtcbiAgc2VydmljZVVybDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZyB8IEluamVjdGlvblRva2VuPGFueT47XG59XG5cbnR5cGUgX09wcmFDbGllbnRNb2R1bGVPcHRpb25zID0gU3RyaWN0T21pdDxPcHJhQ2xpZW50TW9kdWxlT3B0aW9ucywgJ3Rva2VuJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ByYU1vZHVsZU9wdGlvbnNGYWN0b3J5IHtcbiAgY3JlYXRlT3B0aW9ucygpOiBQcm9taXNlPF9PcHJhQ2xpZW50TW9kdWxlT3B0aW9ucz4gfCBfT3ByYUNsaWVudE1vZHVsZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ByYUNsaWVudE1vZHVsZUFzeW5jT3B0aW9uc1xuICAgIGV4dGVuZHMgUGljazxOZ01vZHVsZSwgJ2ltcG9ydHMnIHwgJ3Byb3ZpZGVycyc+IHtcbiAgdG9rZW4/OiBzdHJpbmcgfCBJbmplY3Rpb25Ub2tlbjxhbnk+O1xuICB1c2VFeGlzdGluZz86IFR5cGU8T3ByYU1vZHVsZU9wdGlvbnNGYWN0b3J5PjtcbiAgdXNlQ2xhc3M/OiBUeXBlPGFueT47XG4gIHVzZUZhY3Rvcnk/OiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8X09wcmFDbGllbnRNb2R1bGVPcHRpb25zPiB8IF9PcHJhQ2xpZW50TW9kdWxlT3B0aW9ucztcbiAgZGVwcz86IGFueVtdO1xufVxuXG4iXX0=
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable import/extensions */
2
- export * from './client.module';
3
2
  export * from './interfaces/module-options.interface';
3
+ export * from './angular-backend';
4
+ export * from './client.module';
4
5
  export * from './constants';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9leHRlbnNpb25zICovXG5leHBvcnQgKiBmcm9tICcuL2NsaWVudC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL21vZHVsZS1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L2V4dGVuc2lvbnMgKi9cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyLWJhY2tlbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGllbnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbiJdfQ==
@@ -1,40 +1,228 @@
1
+ import { Observable } from 'rxjs';
2
+ import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
3
+ import * as Angular from '@angular/common/http';
4
+ import { HttpHeaders, HttpClient } from '@angular/common/http';
5
+ import typeIs from '@browsery/type-is';
6
+ import { HttpBackend, HttpEventType, HttpResponse, HttpClientBase, kBackend } from '@opra/client';
7
+ import { isBlob } from '@opra/common';
1
8
  import * as i0 from '@angular/core';
2
9
  import { NgModule } from '@angular/core';
3
- import { OpraHttpClient } from '@opra/client';
10
+
11
+ /**
12
+ *
13
+ * @class AngularBackend
14
+ */
15
+ class AngularBackend extends HttpBackend {
16
+ httpClient;
17
+ defaults;
18
+ constructor(httpClient, serviceUrl, options) {
19
+ super(serviceUrl, options);
20
+ this.httpClient = httpClient;
21
+ this.defaults = {
22
+ ...options?.defaults,
23
+ headers: options?.defaults?.headers instanceof Headers
24
+ ? options?.defaults?.headers : new Headers(options?.defaults?.headers),
25
+ params: options?.defaults?.params instanceof URLSearchParams
26
+ ? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
27
+ };
28
+ }
29
+ handle(init) {
30
+ const requestInit = this.prepareRequest(init);
31
+ const request = new Angular.HttpRequest(requestInit.method, requestInit.url.toString(), {
32
+ ...requestInit,
33
+ headers: new HttpHeaders(requestInit.headers)
34
+ });
35
+ const _this = this;
36
+ return new Observable((subscriber) => {
37
+ // Send request
38
+ this.send(request).subscribe({
39
+ next(event) {
40
+ if (event.type === Angular.HttpEventType.Sent) {
41
+ // Emit 'Sent' event
42
+ subscriber.next({
43
+ type: HttpEventType.Sent,
44
+ request,
45
+ });
46
+ return;
47
+ }
48
+ if (event.type === Angular.HttpEventType.ResponseHeader) {
49
+ // Emit 'ResponseHeader' event
50
+ const headersResponse = _this.createResponse({
51
+ url: request.url,
52
+ headers: requestInit.headers,
53
+ status: event.status,
54
+ statusText: event.statusText,
55
+ hasBody: event.headers.has('Content-Type') || event.headers.has('Content-Length')
56
+ });
57
+ subscriber.next({
58
+ request,
59
+ type: HttpEventType.ResponseHeader,
60
+ response: headersResponse
61
+ });
62
+ return;
63
+ }
64
+ if (event.type === Angular.HttpEventType.DownloadProgress) {
65
+ // Emit 'DownloadProgress' event
66
+ subscriber.next({
67
+ request,
68
+ type: HttpEventType.DownloadProgress,
69
+ loaded: event.loaded,
70
+ total: event.total
71
+ });
72
+ }
73
+ if (event.type === Angular.HttpEventType.UploadProgress) {
74
+ // Emit 'UploadProgress' event
75
+ subscriber.next({
76
+ request,
77
+ type: HttpEventType.UploadProgress,
78
+ loaded: event.loaded,
79
+ total: event.total
80
+ });
81
+ }
82
+ if (event.type === Angular.HttpEventType.Response) {
83
+ const headers = new Headers();
84
+ event.headers.keys().forEach(k => headers.set(k, event.headers.get(k) || ''));
85
+ const response = _this.createResponse({
86
+ url: request.url,
87
+ headers,
88
+ status: event.status,
89
+ statusText: event.statusText,
90
+ hasBody: !!event.body,
91
+ body: event.body
92
+ });
93
+ // Emit 'Response' event
94
+ subscriber.next({
95
+ type: HttpEventType.Response,
96
+ request,
97
+ response
98
+ });
99
+ }
100
+ },
101
+ error(error) {
102
+ subscriber.error(error);
103
+ },
104
+ complete() {
105
+ subscriber.complete();
106
+ }
107
+ });
108
+ });
109
+ }
110
+ send(request) {
111
+ return this.httpClient.request(request);
112
+ }
113
+ prepareRequest(init) {
114
+ const headers = init.headers || new Headers();
115
+ const requestInit = {
116
+ ...init,
117
+ headers
118
+ };
119
+ if (requestInit.body) {
120
+ let body;
121
+ let contentType;
122
+ if (typeof requestInit.body === 'string' || typeof requestInit.body === 'number' || typeof requestInit.body === 'boolean') {
123
+ contentType = 'text/plain; charset=UTF-8"';
124
+ body = String(requestInit.body);
125
+ headers.delete('Content-Size');
126
+ }
127
+ else if (isReadableStreamLike(requestInit.body)) {
128
+ contentType = 'application/octet-stream';
129
+ body = requestInit.body;
130
+ }
131
+ else if (Buffer.isBuffer(requestInit.body)) {
132
+ contentType = 'application/octet-stream';
133
+ body = requestInit.body;
134
+ headers.set('Content-Size', String(requestInit.body.length));
135
+ ;
136
+ }
137
+ else if (isBlob(requestInit.body)) {
138
+ contentType = requestInit.body.type || 'application/octet-stream';
139
+ body = requestInit.body;
140
+ headers.set('Content-Size', String(requestInit.body.size));
141
+ }
142
+ else {
143
+ contentType = 'application/json';
144
+ body = JSON.stringify(requestInit.body);
145
+ headers.delete('Content-Size');
146
+ }
147
+ if (!headers.has('Content-Type') && contentType)
148
+ headers.set('Content-Type', contentType);
149
+ requestInit.body = body;
150
+ }
151
+ return requestInit;
152
+ }
153
+ createResponse(init) {
154
+ return new HttpResponse(init);
155
+ }
156
+ async parseBody(fetchResponse) {
157
+ let body;
158
+ const contentType = (fetchResponse.headers.get('Content-Type') || '');
159
+ if (typeIs.is(contentType, ['json', 'application/*+json'])) {
160
+ body = await fetchResponse.json();
161
+ if (typeof body === 'string')
162
+ body = JSON.parse(body);
163
+ }
164
+ else if (typeIs.is(contentType, ['text']))
165
+ body = await fetchResponse.text();
166
+ else if (typeIs.is(contentType, ['multipart']))
167
+ body = await fetchResponse.formData();
168
+ else {
169
+ const buf = await fetchResponse.arrayBuffer();
170
+ if (buf.byteLength)
171
+ body = buf;
172
+ }
173
+ return body;
174
+ }
175
+ }
176
+
177
+ /**
178
+ *
179
+ * @class OpraAngularClient
180
+ */
181
+ class OpraAngularClient extends HttpClientBase {
182
+ [kBackend];
183
+ constructor(httpClient, serviceUrl, options) {
184
+ super(new AngularBackend(httpClient, serviceUrl, options));
185
+ }
186
+ get defaults() {
187
+ return this[kBackend].defaults;
188
+ }
189
+ }
4
190
 
5
191
  const OPRA_CLIENT_MODULE_OPTIONS = 'OPRA_CLIENT_MODULE_OPTIONS';
6
192
 
7
193
  /* eslint-disable import/extensions */
8
194
  class OpraClientModule {
9
195
  static registerClient(options) {
10
- const CLIENT_TOKEN = options.token || OpraHttpClient;
11
- const client = new OpraHttpClient(options.serviceUrl, options);
196
+ const CLIENT_TOKEN = options.token || OpraAngularClient;
12
197
  return {
13
198
  ngModule: OpraClientModule,
14
199
  providers: [
15
200
  {
16
201
  provide: CLIENT_TOKEN,
17
- useValue: client
202
+ deps: [HttpClient],
203
+ useFactory: (httpClient) => new OpraAngularClient(httpClient, options.serviceUrl, options)
18
204
  }
19
205
  ]
20
206
  };
21
207
  }
22
208
  static registerService(serviceClass, options) {
23
209
  const SERVICE_TOKEN = options.token || serviceClass;
24
- const client = new OpraHttpClient(options.serviceUrl, options);
25
- const service = new serviceClass(client);
26
210
  return {
27
211
  ngModule: OpraClientModule,
28
212
  providers: [
29
213
  {
30
214
  provide: SERVICE_TOKEN,
31
- useValue: service
215
+ deps: [HttpClient],
216
+ useFactory: (httpClient) => {
217
+ const opraAngularClient = new OpraAngularClient(httpClient, options.serviceUrl, options);
218
+ return new serviceClass(opraAngularClient);
219
+ }
32
220
  }
33
221
  ]
34
222
  };
35
223
  }
36
224
  static registerClientAsync(options) {
37
- const CLIENT_TOKEN = options.token || OpraHttpClient;
225
+ const CLIENT_TOKEN = options.token || OpraAngularClient;
38
226
  const asyncProviders = this._createAsyncProviders(options);
39
227
  return {
40
228
  ngModule: OpraClientModule,
@@ -42,8 +230,8 @@ class OpraClientModule {
42
230
  ...asyncProviders,
43
231
  {
44
232
  provide: CLIENT_TOKEN,
45
- deps: [OPRA_CLIENT_MODULE_OPTIONS],
46
- useFactory: (opts) => new OpraHttpClient(opts.serviceUrl, opts)
233
+ deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],
234
+ useFactory: (httpClient, opts) => new OpraAngularClient(httpClient, opts.serviceUrl, opts)
47
235
  }
48
236
  ]
49
237
  };
@@ -57,10 +245,10 @@ class OpraClientModule {
57
245
  ...asyncProviders,
58
246
  {
59
247
  provide: SERVICE_TOKEN,
60
- deps: [OPRA_CLIENT_MODULE_OPTIONS],
61
- useFactory: (opts) => {
62
- const client = new OpraHttpClient(opts.serviceUrl, opts);
63
- return new serviceClass(client);
248
+ deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],
249
+ useFactory: (httpClient, opts) => {
250
+ const opraAngularClient = new OpraAngularClient(httpClient, opts.serviceUrl, opts);
251
+ return new serviceClass(opraAngularClient);
64
252
  }
65
253
  }
66
254
  ]
@@ -112,5 +300,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
112
300
  * Generated bundle index. Do not edit.
113
301
  */
114
302
 
115
- export { OPRA_CLIENT_MODULE_OPTIONS, OpraClientModule };
303
+ export { AngularBackend, OPRA_CLIENT_MODULE_OPTIONS, OpraClientModule };
116
304
  //# sourceMappingURL=opra-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"opra-angular.mjs","sources":["../../../packages/angular/src/constants.ts","../../../packages/angular/src/client.module.ts","../../../packages/angular/src/public_api.ts","../../../packages/angular/src/opra-angular.ts"],"sourcesContent":["export const OPRA_CLIENT_MODULE_OPTIONS = 'OPRA_CLIENT_MODULE_OPTIONS';\n","/* eslint-disable import/extensions */\nimport { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { HttpServiceBase, OpraHttpClient } from '@opra/client';\nimport { OPRA_CLIENT_MODULE_OPTIONS } from './constants';\nimport {\n OpraClientModuleAsyncOptions,\n OpraClientModuleOptions\n} from './interfaces/module-options.interface';\n\n@NgModule({})\nexport class OpraClientModule {\n\n public static registerClient(options: OpraClientModuleOptions): ModuleWithProviders<OpraClientModule> {\n const CLIENT_TOKEN = options.token || OpraHttpClient;\n const client = new OpraHttpClient(options.serviceUrl, options);\n return {\n ngModule: OpraClientModule,\n providers: [\n {\n provide: CLIENT_TOKEN,\n useValue: client\n }\n ]\n };\n }\n\n public static registerService<T extends HttpServiceBase>(\n serviceClass: Type<T>,\n options: OpraClientModuleOptions\n ): ModuleWithProviders<OpraClientModule> {\n const SERVICE_TOKEN = options.token || serviceClass;\n const client = new OpraHttpClient(options.serviceUrl, options);\n const service = new serviceClass(client);\n return {\n ngModule: OpraClientModule,\n providers: [\n {\n provide: SERVICE_TOKEN,\n useValue: service\n }\n ]\n };\n }\n\n public static registerClientAsync(\n options: OpraClientModuleAsyncOptions\n ): ModuleWithProviders<OpraClientModule> {\n const CLIENT_TOKEN = options.token || OpraHttpClient;\n const asyncProviders = this._createAsyncProviders(options);\n return {\n ngModule: OpraClientModule,\n providers: [\n ...asyncProviders,\n {\n provide: CLIENT_TOKEN,\n deps: [OPRA_CLIENT_MODULE_OPTIONS],\n useFactory: (opts: OpraClientModuleOptions) =>\n new OpraHttpClient(opts.serviceUrl, opts)\n }\n ]\n };\n }\n\n public static registerServiceAsync<T extends HttpServiceBase>(\n serviceClass: Type<T>,\n options: OpraClientModuleAsyncOptions\n ): ModuleWithProviders<OpraClientModule> {\n const SERVICE_TOKEN = options.token || serviceClass;\n const asyncProviders = this._createAsyncProviders(options);\n return {\n ngModule: OpraClientModule,\n providers: [\n ...asyncProviders,\n {\n provide: SERVICE_TOKEN,\n deps: [OPRA_CLIENT_MODULE_OPTIONS],\n useFactory: (opts: OpraClientModuleOptions) => {\n const client = new OpraHttpClient(opts.serviceUrl, opts)\n return new serviceClass(client);\n }\n }\n ]\n };\n }\n\n private static _createAsyncProviders(options: OpraClientModuleAsyncOptions): Provider[] {\n if (options.useExisting || options.useFactory)\n return [this._createAsyncOptionsProvider(options)];\n\n if (options.useClass)\n return [\n this._createAsyncOptionsProvider(options),\n {\n provide: options.useClass,\n useClass: options.useClass\n }\n ];\n\n throw new Error('Invalid configuration. Must provide useFactory, useClass or useExisting');\n }\n\n private static _createAsyncOptionsProvider(options: OpraClientModuleAsyncOptions): Provider {\n if (options.useFactory) {\n return {\n provide: OPRA_CLIENT_MODULE_OPTIONS,\n useFactory: options.useFactory,\n deps: options.deps || [],\n };\n }\n const useClass = options.useClass || options.useExisting;\n if (useClass) {\n return {\n provide: OPRA_CLIENT_MODULE_OPTIONS,\n useFactory: (o) => o,\n deps: [useClass],\n };\n }\n throw new Error('Invalid configuration. Must provide useFactory, useClass or useExisting');\n }\n\n\n}\n","/* eslint-disable import/extensions */\nexport * from './client.module';\nexport * from './interfaces/module-options.interface';\nexport * from './constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opra-angular.mjs","sources":["../../../packages/angular/src/angular-backend.ts","../../../packages/angular/src/angular-client.ts","../../../packages/angular/src/constants.ts","../../../packages/angular/src/client.module.ts","../../../packages/angular/src/public_api.ts","../../../packages/angular/src/opra-angular.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';\nimport { StrictOmit } from 'ts-gems';\nimport { HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\nimport * as Angular from '@angular/common/http';\nimport typeIs from '@browsery/type-is';\nimport {\n HttpBackend, HttpDownloadProgressEvent,\n HttpEvent,\n HttpEventType,\n HttpResponse,\n HttpResponseEvent,\n HttpResponseHeaderEvent,\n HttpSentEvent, HttpUploadProgressEvent\n} from '@opra/client';\nimport { isBlob } from '@opra/common';\n\n/**\n *\n * @class AngularBackend\n */\nexport class AngularBackend extends HttpBackend {\n\n defaults: AngularBackend.RequestDefaults;\n\n constructor(readonly httpClient: Angular.HttpClient, serviceUrl: string, options?: AngularBackend.Options) {\n super(serviceUrl, options);\n this.defaults = {\n ...options?.defaults,\n headers: options?.defaults?.headers instanceof Headers\n ? options?.defaults?.headers : new Headers(options?.defaults?.headers),\n params: options?.defaults?.params instanceof URLSearchParams\n ? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)\n }\n }\n\n handle(init: AngularBackend.RequestInit): Observable<HttpEvent> {\n const requestInit = this.prepareRequest(init);\n const request = new Angular.HttpRequest(requestInit.method, requestInit.url.toString(), {\n ...requestInit,\n headers: new HttpHeaders(requestInit.headers)\n });\n\n const _this = this;\n return new Observable<HttpEvent>((subscriber) => {\n // Send request\n this.send(request).subscribe({\n next(event) {\n if (event.type === Angular.HttpEventType.Sent) {\n // Emit 'Sent' event\n subscriber.next({\n type: HttpEventType.Sent,\n request,\n } satisfies HttpSentEvent);\n return;\n }\n\n if (event.type === Angular.HttpEventType.ResponseHeader) {\n // Emit 'ResponseHeader' event\n const headersResponse = _this.createResponse({\n url: request.url,\n headers: requestInit.headers,\n status: event.status,\n statusText: event.statusText,\n hasBody: event.headers.has('Content-Type') || event.headers.has('Content-Length')\n }) as HttpResponse<never>;\n subscriber.next({\n request,\n type: HttpEventType.ResponseHeader,\n response: headersResponse\n } satisfies HttpResponseHeaderEvent);\n return;\n }\n\n if (event.type === Angular.HttpEventType.DownloadProgress) {\n // Emit 'DownloadProgress' event\n subscriber.next({\n request,\n type: HttpEventType.DownloadProgress,\n loaded: event.loaded,\n total: event.total\n } satisfies HttpDownloadProgressEvent);\n }\n\n if (event.type === Angular.HttpEventType.UploadProgress) {\n // Emit 'UploadProgress' event\n subscriber.next({\n request,\n type: HttpEventType.UploadProgress,\n loaded: event.loaded,\n total: event.total\n } satisfies HttpUploadProgressEvent);\n }\n\n if (event.type === Angular.HttpEventType.Response) {\n const headers = new Headers();\n event.headers.keys().forEach(k => headers.set(k, event.headers.get(k) || ''));\n const response = _this.createResponse({\n url: request.url,\n headers,\n status: event.status,\n statusText: event.statusText,\n hasBody: !!event.body,\n body: event.body\n });\n // Emit 'Response' event\n subscriber.next({\n type: HttpEventType.Response,\n request,\n response\n } satisfies HttpResponseEvent);\n }\n },\n error(error) {\n subscriber.error(error)\n },\n complete() {\n subscriber.complete()\n }\n });\n });\n }\n\n protected send(request: Angular.HttpRequest<any>) {\n return this.httpClient.request(request);\n }\n\n protected prepareRequest(init: AngularBackend.RequestInit): AngularBackend.RequestInit {\n const headers = init.headers || new Headers();\n const requestInit: AngularBackend.RequestInit = {\n ...init,\n headers\n }\n\n if (requestInit.body) {\n let body: any;\n let contentType: string;\n if (typeof requestInit.body === 'string' || typeof requestInit.body === 'number' || typeof requestInit.body === 'boolean') {\n contentType = 'text/plain; charset=UTF-8\"';\n body = String(requestInit.body);\n headers.delete('Content-Size');\n } else if (isReadableStreamLike(requestInit.body)) {\n contentType = 'application/octet-stream';\n body = requestInit.body;\n } else if (Buffer.isBuffer(requestInit.body)) {\n contentType = 'application/octet-stream';\n body = requestInit.body;\n headers.set('Content-Size', String(requestInit.body.length));\n ;\n } else if (isBlob(requestInit.body)) {\n contentType = requestInit.body.type || 'application/octet-stream';\n body = requestInit.body;\n headers.set('Content-Size', String(requestInit.body.size));\n } else {\n contentType = 'application/json';\n body = JSON.stringify(requestInit.body);\n headers.delete('Content-Size');\n }\n if (!headers.has('Content-Type') && contentType)\n headers.set('Content-Type', contentType);\n requestInit.body = body;\n }\n return requestInit;\n }\n\n protected createResponse(init: HttpResponse.Initiator): HttpResponse {\n return new HttpResponse(init);\n }\n\n protected async parseBody(fetchResponse: Response): Promise<any> {\n let body: any;\n const contentType = (fetchResponse.headers.get('Content-Type') || '');\n if (typeIs.is(contentType, ['json', 'application/*+json'])) {\n body = await fetchResponse.json();\n if (typeof body === 'string')\n body = JSON.parse(body);\n } else if (typeIs.is(contentType, ['text']))\n body = await fetchResponse.text();\n else if (typeIs.is(contentType, ['multipart']))\n body = await fetchResponse.formData();\n else {\n const buf = await fetchResponse.arrayBuffer();\n if (buf.byteLength)\n body = buf;\n }\n return body;\n }\n\n}\n\n/**\n * @namespace AngularBackend\n */\nexport namespace AngularBackend {\n\n export interface Options extends HttpBackend.Options {\n defaults?: RequestDefaults;\n }\n\n export interface RequestInit extends HttpBackend.RequestInit {\n context?: HttpContext;\n reportProgress?: boolean;\n params?: HttpParams;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n }\n\n export interface RequestOptions extends Pick<RequestInit, 'context' | 'reportProgress' | 'withCredentials'> {\n }\n\n export type RequestDefaults = StrictOmit<RequestOptions, 'context'> & {\n headers: Headers;\n params: URLSearchParams;\n };\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { HttpClientBase, kBackend } from '@opra/client';\nimport { AngularBackend } from './angular-backend';\n\n/**\n *\n * @class OpraAngularClient\n */\nexport class OpraAngularClient extends HttpClientBase<AngularBackend.RequestOptions> {\n [kBackend]: AngularBackend;\n\n constructor(httpClient: HttpClient, serviceUrl: string, options?: AngularBackend.Options) {\n super(new AngularBackend(httpClient, serviceUrl, options));\n }\n\n get defaults(): AngularBackend.RequestDefaults {\n return this[kBackend].defaults;\n }\n\n}\n","export const OPRA_CLIENT_MODULE_OPTIONS = 'OPRA_CLIENT_MODULE_OPTIONS';\n","/* eslint-disable import/extensions */\nimport { HttpClient } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { HttpServiceBase } from '@opra/client';\nimport { OpraAngularClient } from './angular-client';\nimport { OPRA_CLIENT_MODULE_OPTIONS } from './constants';\nimport {\n OpraClientModuleAsyncOptions,\n OpraClientModuleOptions\n} from './interfaces/module-options.interface';\n\n@NgModule({})\nexport class OpraClientModule {\n\n public static registerClient(options: OpraClientModuleOptions): ModuleWithProviders<OpraClientModule> {\n const CLIENT_TOKEN = options.token || OpraAngularClient;\n return {\n ngModule: OpraClientModule,\n providers: [\n {\n provide: CLIENT_TOKEN,\n deps: [HttpClient],\n useFactory: (httpClient: HttpClient) =>\n new OpraAngularClient(httpClient, options.serviceUrl, options)\n }\n ]\n };\n }\n\n public static registerService<T extends HttpServiceBase>(\n serviceClass: Type<T>,\n options: OpraClientModuleOptions\n ): ModuleWithProviders<OpraClientModule> {\n const SERVICE_TOKEN = options.token || serviceClass;\n return {\n ngModule: OpraClientModule,\n providers: [\n {\n provide: SERVICE_TOKEN,\n deps: [HttpClient],\n useFactory: (httpClient: HttpClient) => {\n const opraAngularClient = new OpraAngularClient(httpClient, options.serviceUrl, options);\n return new serviceClass(opraAngularClient);\n }\n }\n ]\n };\n }\n\n public static registerClientAsync(\n options: OpraClientModuleAsyncOptions\n ): ModuleWithProviders<OpraClientModule> {\n const CLIENT_TOKEN = options.token || OpraAngularClient;\n const asyncProviders = this._createAsyncProviders(options);\n return {\n ngModule: OpraClientModule,\n providers: [\n ...asyncProviders,\n {\n provide: CLIENT_TOKEN,\n deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],\n useFactory: (httpClient: HttpClient, opts: OpraClientModuleOptions) =>\n new OpraAngularClient(httpClient, opts.serviceUrl, opts)\n }\n ]\n };\n }\n\n public static registerServiceAsync<T extends HttpServiceBase>(\n serviceClass: Type<T>,\n options: OpraClientModuleAsyncOptions\n ): ModuleWithProviders<OpraClientModule> {\n const SERVICE_TOKEN = options.token || serviceClass;\n const asyncProviders = this._createAsyncProviders(options);\n return {\n ngModule: OpraClientModule,\n providers: [\n ...asyncProviders,\n {\n provide: SERVICE_TOKEN,\n deps: [HttpClient, OPRA_CLIENT_MODULE_OPTIONS],\n useFactory: (httpClient: HttpClient, opts: OpraClientModuleOptions) => {\n const opraAngularClient = new OpraAngularClient(httpClient, opts.serviceUrl, opts);\n return new serviceClass(opraAngularClient);\n }\n }\n ]\n };\n }\n\n private static _createAsyncProviders(options: OpraClientModuleAsyncOptions): Provider[] {\n if (options.useExisting || options.useFactory)\n return [this._createAsyncOptionsProvider(options)];\n\n if (options.useClass)\n return [\n this._createAsyncOptionsProvider(options),\n {\n provide: options.useClass,\n useClass: options.useClass\n }\n ];\n\n throw new Error('Invalid configuration. Must provide useFactory, useClass or useExisting');\n }\n\n private static _createAsyncOptionsProvider(options: OpraClientModuleAsyncOptions): Provider {\n if (options.useFactory) {\n return {\n provide: OPRA_CLIENT_MODULE_OPTIONS,\n useFactory: options.useFactory,\n deps: options.deps || [],\n };\n }\n const useClass = options.useClass || options.useExisting;\n if (useClass) {\n return {\n provide: OPRA_CLIENT_MODULE_OPTIONS,\n useFactory: (o) => o,\n deps: [useClass],\n };\n }\n throw new Error('Invalid configuration. Must provide useFactory, useClass or useExisting');\n }\n\n\n}\n","/* eslint-disable import/extensions */\nexport * from './interfaces/module-options.interface';\nexport * from './angular-backend';\nexport * from './client.module';\nexport * from './constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;AAiBA;;;AAGG;AACG,MAAO,cAAe,SAAQ,WAAW,CAAA;AAIxB,IAAA,UAAA,CAAA;AAFrB,IAAA,QAAQ,CAAiC;AAEzC,IAAA,WAAA,CAAqB,UAA8B,EAAE,UAAkB,EAAE,OAAgC,EAAA;AACvG,QAAA,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QADR,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;QAEjD,IAAI,CAAC,QAAQ,GAAG;YACd,GAAG,OAAO,EAAE,QAAQ;AACpB,YAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,YAAY,OAAO;AAClD,kBAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC1E,YAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,eAAe;AACxD,kBAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;SACjF,CAAA;KACF;AAED,IAAA,MAAM,CAAC,IAAgC,EAAA;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;AACtF,YAAA,GAAG,WAAW;AACd,YAAA,OAAO,EAAE,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;AAC9C,SAAA,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,QAAA,OAAO,IAAI,UAAU,CAAY,CAAC,UAAU,KAAI;;AAE9C,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,KAAK,EAAA;oBACR,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;;wBAE7C,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,IAAI;4BACxB,OAAO;AACgB,yBAAA,CAAC,CAAC;wBAC3B,OAAO;AACR,qBAAA;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE;;AAEvD,wBAAA,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC;4BAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,WAAW,CAAC,OAAO;4BAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,4BAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAClF,yBAAA,CAAwB,CAAC;wBAC1B,UAAU,CAAC,IAAI,CAAC;4BACd,OAAO;4BACP,IAAI,EAAE,aAAa,CAAC,cAAc;AAClC,4BAAA,QAAQ,EAAE,eAAe;AACQ,yBAAA,CAAC,CAAC;wBACrC,OAAO;AACR,qBAAA;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,gBAAgB,EAAE;;wBAEzD,UAAU,CAAC,IAAI,CAAC;4BACd,OAAO;4BACP,IAAI,EAAE,aAAa,CAAC,gBAAgB;4BACpC,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,KAAK,CAAC,KAAK;AACiB,yBAAA,CAAC,CAAC;AACxC,qBAAA;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE;;wBAEvD,UAAU,CAAC,IAAI,CAAC;4BACd,OAAO;4BACP,IAAI,EAAE,aAAa,CAAC,cAAc;4BAClC,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,KAAK,CAAC,KAAK;AACe,yBAAA,CAAC,CAAC;AACtC,qBAAA;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE;AACjD,wBAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,wBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,wBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;4BACpC,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO;4BACP,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,4BAAA,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;4BACrB,IAAI,EAAE,KAAK,CAAC,IAAI;AACjB,yBAAA,CAAC,CAAC;;wBAEH,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,QAAQ;4BAC5B,OAAO;4BACP,QAAQ;AACmB,yBAAA,CAAC,CAAC;AAChC,qBAAA;iBACF;AACD,gBAAA,KAAK,CAAC,KAAK,EAAA;AACT,oBAAA,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;iBACxB;gBACD,QAAQ,GAAA;oBACN,UAAU,CAAC,QAAQ,EAAE,CAAA;iBACtB;AACF,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,IAAI,CAAC,OAAiC,EAAA;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACzC;AAES,IAAA,cAAc,CAAC,IAAgC,EAAA;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9C,QAAA,MAAM,WAAW,GAA+B;AAC9C,YAAA,GAAG,IAAI;YACP,OAAO;SACR,CAAA;QAED,IAAI,WAAW,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,IAAS,CAAC;AACd,YAAA,IAAI,WAAmB,CAAC;YACxB,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;gBACzH,WAAW,GAAG,4BAA4B,CAAC;AAC3C,gBAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,gBAAA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChC,aAAA;AAAM,iBAAA,IAAI,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBACjD,WAAW,GAAG,0BAA0B,CAAC;AACzC,gBAAA,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AACzB,aAAA;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBAC5C,WAAW,GAAG,0BAA0B,CAAC;AACzC,gBAAA,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7D,CAAC;AACF,aAAA;AAAM,iBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBACnC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC;AAClE,gBAAA,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA;gBACL,WAAW,GAAG,kBAAkB,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,gBAAA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChC,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,WAAW;AAC7C,gBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC3C,YAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;AAES,IAAA,cAAc,CAAC,IAA4B,EAAA;AACnD,QAAA,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/B;IAES,MAAM,SAAS,CAAC,aAAuB,EAAA;AAC/C,QAAA,IAAI,IAAS,CAAC;AACd,QAAA,MAAM,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,EAAE;AAC1D,YAAA,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,IAAI,KAAK,QAAQ;AAC1B,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;aAAM,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;aAC/B,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;AAC5C,YAAA,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;AACnC,aAAA;AACH,YAAA,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,GAAG,CAAC,UAAU;gBAChB,IAAI,GAAG,GAAG,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEF;;ACxLD;;;AAGG;AACG,MAAO,iBAAkB,SAAQ,cAA6C,CAAA;IAClF,CAAC,QAAQ,EAAkB;AAE3B,IAAA,WAAA,CAAY,UAAsB,EAAE,UAAkB,EAAE,OAAgC,EAAA;QACtF,KAAK,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;KAChC;AAEF;;ACnBM,MAAM,0BAA0B,GAAG;;ACA1C;MAYa,gBAAgB,CAAA;IAEpB,OAAO,cAAc,CAAC,OAAgC,EAAA;AAC3D,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;QACxD,OAAO;AACL,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,YAAY;oBACrB,IAAI,EAAE,CAAC,UAAU,CAAC;AAClB,oBAAA,UAAU,EAAE,CAAC,UAAsB,KAC/B,IAAI,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;AACnE,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AAEM,IAAA,OAAO,eAAe,CACzB,YAAqB,EACrB,OAAgC,EAAA;AAElC,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,CAAC,UAAU,CAAC;AAClB,oBAAA,UAAU,EAAE,CAAC,UAAsB,KAAI;AACrC,wBAAA,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzF,wBAAA,OAAO,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;qBAC5C;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAEM,OAAO,mBAAmB,CAC7B,OAAqC,EAAA;AAEvC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO;AACL,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,cAAc;AACjB,gBAAA;AACE,oBAAA,OAAO,EAAE,YAAY;AACrB,oBAAA,IAAI,EAAE,CAAC,UAAU,EAAE,0BAA0B,CAAC;AAC9C,oBAAA,UAAU,EAAE,CAAC,UAAsB,EAAE,IAA6B,KAC9D,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAC7D,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AAEM,IAAA,OAAO,oBAAoB,CAC9B,YAAqB,EACrB,OAAqC,EAAA;AAEvC,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO;AACL,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,cAAc;AACjB,gBAAA;AACE,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,IAAI,EAAE,CAAC,UAAU,EAAE,0BAA0B,CAAC;AAC9C,oBAAA,UAAU,EAAE,CAAC,UAAsB,EAAE,IAA6B,KAAI;AACpE,wBAAA,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACnF,wBAAA,OAAO,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;qBAC5C;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAEO,OAAO,qBAAqB,CAAC,OAAqC,EAAA;AACxE,QAAA,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU;YAC3C,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,QAAQ;YAClB,OAAO;AACL,gBAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;AACzC,gBAAA;oBACE,OAAO,EAAE,OAAO,CAAC,QAAQ;oBACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC3B,iBAAA;aACF,CAAC;AAEJ,QAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;KAC5F;IAEO,OAAO,2BAA2B,CAAC,OAAqC,EAAA;QAC9E,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO;AACL,gBAAA,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,OAAO,CAAC,UAAU;AAC9B,gBAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;aACzB,CAAC;AACH,SAAA;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;AACzD,QAAA,IAAI,QAAQ,EAAE;YACZ,OAAO;AACL,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpB,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB,CAAC;AACH,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;KAC5F;uGA/GU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAhB,gBAAgB,EAAA,CAAA,CAAA;wGAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,QAAQ;mBAAC,EAAE,CAAA;;;ACXZ;;ACAA;;AAEG;;;;"}
@@ -1,7 +1,7 @@
1
1
  import type { StrictOmit } from 'ts-gems';
2
2
  import { InjectionToken, NgModule, Type } from '@angular/core';
3
- import { OpraHttpClient } from '@opra/client';
4
- export type OpraClientModuleOptions = OpraHttpClient.Options & {
3
+ import { AngularBackend } from '../angular-backend.js';
4
+ export type OpraClientModuleOptions = AngularBackend.Options & {
5
5
  serviceUrl: string;
6
6
  token?: string | InjectionToken<any>;
7
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/angular",
3
- "version": "0.27.2",
3
+ "version": "0.28.1",
4
4
  "description": "Opra internationalization package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "peerDependencies": {
13
13
  "@angular/common": "15.x.x || 16.x.x",
14
14
  "@angular/core": "15.x.x || 16.x.x",
15
- "@opra/client": "^0.27.2",
15
+ "@opra/client": "^0.28.1",
16
16
  "ts-gems": "^2.4.0"
17
17
  },
18
18
  "engines": {
package/public_api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- export * from './client.module';
2
1
  export * from './interfaces/module-options.interface';
2
+ export * from './angular-backend';
3
+ export * from './client.module';
3
4
  export * from './constants';