@techextensor/tab-sdk 0.0.4 → 0.0.7

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.
Files changed (45) hide show
  1. package/esm2022/lib/app/analytics.service.mjs +51 -0
  2. package/esm2022/lib/app/app.service.mjs +145 -0
  3. package/esm2022/lib/app/file.service.mjs +41 -0
  4. package/esm2022/lib/app/release.service.mjs +38 -0
  5. package/esm2022/lib/app/report.service.mjs +48 -0
  6. package/esm2022/lib/app/translator.service.mjs +77 -0
  7. package/esm2022/lib/crud/crud.service.mjs +161 -0
  8. package/esm2022/lib/enum/store.enum.mjs +6 -0
  9. package/esm2022/lib/enum/ui.enum.mjs +13 -0
  10. package/esm2022/lib/http/http.service.mjs +58 -0
  11. package/esm2022/lib/interface/http.interface.mjs +2 -0
  12. package/esm2022/lib/interface/ui.interface.mjs +2 -0
  13. package/esm2022/lib/store/store.service.mjs +719 -0
  14. package/esm2022/lib/tab-sdk.service.mjs +53 -5
  15. package/esm2022/lib/ui/form.service.mjs +79 -0
  16. package/esm2022/lib/ui/ui.service.mjs +215 -22
  17. package/esm2022/lib/util/util.service.mjs +53 -0
  18. package/esm2022/lib/workflow/transition.service.mjs +40 -0
  19. package/esm2022/public-api.mjs +8 -4
  20. package/fesm2022/techextensor-tab-sdk.mjs +1745 -54
  21. package/fesm2022/techextensor-tab-sdk.mjs.map +1 -1
  22. package/lib/app/analytics.service.d.ts +28 -0
  23. package/lib/app/app.service.d.ts +81 -0
  24. package/lib/app/file.service.d.ts +22 -0
  25. package/lib/app/release.service.d.ts +23 -0
  26. package/lib/app/report.service.d.ts +28 -0
  27. package/lib/app/translator.service.d.ts +49 -0
  28. package/lib/crud/crud.service.d.ts +88 -0
  29. package/lib/enum/store.enum.d.ts +4 -0
  30. package/lib/enum/ui.enum.d.ts +10 -0
  31. package/lib/http/http.service.d.ts +35 -0
  32. package/lib/interface/http.interface.d.ts +8 -0
  33. package/lib/interface/ui.interface.d.ts +24 -0
  34. package/lib/store/store.service.d.ts +406 -0
  35. package/lib/tab-sdk.service.d.ts +23 -1
  36. package/lib/ui/form.service.d.ts +47 -0
  37. package/lib/ui/ui.service.d.ts +101 -10
  38. package/lib/util/util.service.d.ts +14 -0
  39. package/lib/workflow/transition.service.d.ts +21 -0
  40. package/package.json +2 -2
  41. package/public-api.d.ts +4 -0
  42. package/esm2022/lib/enums/ui.enum.mjs +0 -16
  43. package/esm2022/lib/interfaces/ui.interface.mjs +0 -2
  44. package/lib/enums/ui.enum.d.ts +0 -13
  45. package/lib/interfaces/ui.interface.d.ts +0 -56
@@ -0,0 +1,51 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { AppHelper } from '@techextensor/tab-core-utility';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class AnalyticsService {
6
+ _appHelper = inject(AppHelper);
7
+ /**
8
+ * Retrieves the summary of performance analytics based on the provided payload.
9
+ *
10
+ * @param payload The performance analytics payload.
11
+ * @returns A promise that resolves to a common API response containing the performance analytics summary.
12
+ */
13
+ async getSummaryOfPerformance(payload) {
14
+ const response = await firstValueFrom(this._appHelper.getSummaryOfPerformanceAnalytics(payload));
15
+ // Return the response from the server
16
+ return response;
17
+ }
18
+ /**
19
+ * Retrieves the detail of performance analytics based on the provided payload.
20
+ *
21
+ * @param payload The performance analytics payload.
22
+ * @returns A promise that resolves to a common API response containing the performance analytics detail.
23
+ */
24
+ async getDetailOfPerformance(payload) {
25
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
26
+ const response = await firstValueFrom(this._appHelper.getDetailOfPerformanceAnalytics(payload));
27
+ // Return the response from the server
28
+ return response;
29
+ }
30
+ /**
31
+ * Inserts the screen performance statistics based on the provided payload.
32
+ *
33
+ * @param payload The screen performance payload containing the statistics to be inserted.
34
+ * @returns A promise that resolves to a common API response containing the result of the insertion.
35
+ */
36
+ async insertScreenPerformance(payload) {
37
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
38
+ const response = await firstValueFrom(this._appHelper.insertScreenPerformanceStatistics(payload));
39
+ // Return the response from the server
40
+ return response;
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
43
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnalyticsService, providedIn: 'root' });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnalyticsService, decorators: [{
46
+ type: Injectable,
47
+ args: [{
48
+ providedIn: 'root'
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWItc2RrL3NyYy9saWIvYXBwL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQTRFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLGdCQUFnQjtJQUNqQixVQUFVLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQW9DO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO1FBQ0Ysc0NBQXNDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFvQztRQUM3RCw4RUFBOEU7UUFDOUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQzNELENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQWlDO1FBQzNELDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO3dHQTdDUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcEhlbHBlciwgQ29tbW9uQXBpUmVzcG9uc2UsIFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCwgU2NyZWVuUGVyZm9ybWFuY2VQYXlsb2FkIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfYXBwSGVscGVyOiBBcHBIZWxwZXIgPSBpbmplY3QoQXBwSGVscGVyKTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgc3VtbWFyeSBvZiBwZXJmb3JtYW5jZSBhbmFseXRpY3MgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBheWxvYWQuXG4gICAgICogXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBlcmZvcm1hbmNlIGFuYWx5dGljcyBwYXlsb2FkLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSBwZXJmb3JtYW5jZSBhbmFseXRpY3Mgc3VtbWFyeS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZShwYXlsb2FkOiBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIuZ2V0U3VtbWFyeU9mUGVyZm9ybWFuY2VBbmFseXRpY3MocGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgZGV0YWlsIG9mIHBlcmZvcm1hbmNlIGFuYWx5dGljcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGVyZm9ybWFuY2UgYW5hbHl0aWNzIHBheWxvYWQuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21tb24gQVBJIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIHBlcmZvcm1hbmNlIGFuYWx5dGljcyBkZXRhaWwuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0RGV0YWlsT2ZQZXJmb3JtYW5jZShwYXlsb2FkOiBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLmdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MocGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgdGhlIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBzY3JlZW4gcGVyZm9ybWFuY2UgcGF5bG9hZCBjb250YWluaW5nIHRoZSBzdGF0aXN0aWNzIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSByZXN1bHQgb2YgdGhlIGluc2VydGlvbi5cbiAgICAgKi9cbiAgICBhc3luYyBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZShwYXlsb2FkOiBTY3JlZW5QZXJmb3JtYW5jZVBheWxvYWQpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLmluc2VydFNjcmVlblBlcmZvcm1hbmNlU3RhdGlzdGljcyhwYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,145 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { AppHelper } from '@techextensor/tab-core-utility';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class AppService {
6
+ _appHelper = inject(AppHelper);
7
+ /**
8
+ * Rebuilds the current app.
9
+ *
10
+ * @returns A promise that resolves to a common API response.
11
+ */
12
+ async rebuild() {
13
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
14
+ const response = await firstValueFrom(this._appHelper.rebuildApp());
15
+ // Return the response from the server.
16
+ return response;
17
+ }
18
+ /**
19
+ * Retrieves the schema for the current app.
20
+ *
21
+ * @returns A promise that resolves to a common API response containing the schema.
22
+ */
23
+ async getSchema() {
24
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
25
+ const response = await firstValueFrom(this._appHelper.getSchema());
26
+ // Return the response from the server
27
+ return response;
28
+ }
29
+ /**
30
+ * Retrieves the current app's permission.
31
+ *
32
+ * @returns A promise that resolves to a common API response containing the permission information.
33
+ */
34
+ async getPermission() {
35
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
36
+ const response = await firstValueFrom(this._appHelper.getPermission());
37
+ // Return the response from the server
38
+ return response;
39
+ }
40
+ /**
41
+ * Registers app objects based on the provided payload.
42
+ *
43
+ * @param payload The register app objects payload.
44
+ * @returns A promise that resolves to a common API response.
45
+ */
46
+ async registerAppObject(payload) {
47
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
48
+ const response = await firstValueFrom(this._appHelper.registerAppObjects(payload));
49
+ // Return the response from the server
50
+ return response;
51
+ }
52
+ /**
53
+ * Clones a data source query (DSQ) based on the provided payload.
54
+ *
55
+ * @param payload The clone DSQ payload.
56
+ * @returns A promise that resolves to a common API response.
57
+ */
58
+ async cloneDsq(payload) {
59
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
60
+ const response = await firstValueFrom(this._appHelper.cloneDsq(payload));
61
+ // Return the response from the server
62
+ return response;
63
+ }
64
+ /**
65
+ * Retrieves data in JSON format based on the provided payload.
66
+ *
67
+ * @param payload The get data JSON by type payload.
68
+ * @returns A promise that resolves to a common API response containing the data in JSON format.
69
+ */
70
+ async getDataJsonByType(payload) {
71
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
72
+ const response = await firstValueFrom(this._appHelper.getDataJsonByType(payload));
73
+ // Return the response from the server
74
+ return response;
75
+ }
76
+ /**
77
+ * Synchronizes the current app's fields based on the provided payload.
78
+ *
79
+ * @param payload The sync app fields payload.
80
+ * @returns A promise that resolves to a common API response.
81
+ */
82
+ async syncAppFields(payload) {
83
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
84
+ const response = await firstValueFrom(this._appHelper.syncAppFields(payload));
85
+ // Return the response from the server
86
+ return response;
87
+ }
88
+ /**
89
+ * Sets the tab components based on the provided connection ID.
90
+ *
91
+ * @param connectionId The ID of the connection to set the components for.
92
+ * @returns A promise that resolves to a common API response.
93
+ */
94
+ async setTabComponents(connectionId) {
95
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
96
+ const response = await firstValueFrom(this._appHelper.setTabComponents(connectionId));
97
+ // Return the response from the server
98
+ return response;
99
+ }
100
+ /**
101
+ * Performs validation for the connection with the provided ID.
102
+ *
103
+ * @param connectionId The ID of the connection to validate.
104
+ * @returns A promise that resolves to a common API response containing the validation result.
105
+ */
106
+ async performValidation(connectionId) {
107
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
108
+ const response = await firstValueFrom(this._appHelper.performValidation(connectionId));
109
+ // Return the response from the server
110
+ return response;
111
+ }
112
+ /**
113
+ * Tests the connection with the provided connection ID.
114
+ *
115
+ * @param connectionId The ID of the connection to test.
116
+ * @returns A promise that resolves to a common API response containing the test result.
117
+ */
118
+ async testConnection(connectionId) {
119
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
120
+ const response = await firstValueFrom(this._appHelper.testConnection(connectionId));
121
+ // Return the response from the server
122
+ return response;
123
+ }
124
+ /**
125
+ * Refreshes the global search data based on the provided payload.
126
+ *
127
+ * @param payload The refresh global search data payload.
128
+ * @returns A promise that resolves to a common API response containing the refreshed global search data.
129
+ */
130
+ async refreshGlobalSearchData(payload) {
131
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
132
+ const response = await firstValueFrom(this._appHelper.refreshGlobalSearchData(payload));
133
+ // Return the response from the server
134
+ return response;
135
+ }
136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
137
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppService, providedIn: 'root' });
138
+ }
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppService, decorators: [{
140
+ type: Injectable,
141
+ args: [{
142
+ providedIn: 'root'
143
+ }]
144
+ }] });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWItc2RrL3NyYy9saWIvYXBwL2FwcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQWlKLE1BQU0sZ0NBQWdDLENBQUM7QUFDMU0sT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLFVBQVU7SUFDWCxVQUFVLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNULDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FDL0IsQ0FBQztRQUNGLHVDQUF1QztRQUN2QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBQ1gsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUM5QixDQUFDO1FBQ0Ysc0NBQXNDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGFBQWE7UUFDZiw4RUFBOEU7UUFDOUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQ2xDLENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWtDO1FBQ3RELDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FDOUMsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQ25DLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQ3BDLENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWlDO1FBQ3JELDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FDN0MsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTZCO1FBQzdDLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQ3pDLENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQW9CO1FBQ3ZDLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FDakQsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBb0I7UUFDeEMsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUNsRCxDQUFDO1FBQ0Ysc0NBQXNDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBb0I7UUFDckMsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FDL0MsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsdUJBQXVCLENBQUMsT0FBdUM7UUFDakUsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUNuRCxDQUFDO1FBQ0Ysc0NBQXNDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7d0dBbktRLFVBQVU7NEdBQVYsVUFBVSxjQUZQLE1BQU07OzRGQUVULFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBIZWxwZXIsIENsb25lRHNxUGF5bG9hZCwgQ29tbW9uQXBpUmVzcG9uc2UsIEdldERhdGFKc29uQnlUeXBlUGF5bG9hZCwgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkLCBSZWdpc3RlckFwcE9iamVjdHNQYXlsb2FkLCBTeW5jQXBwRmllbGRzUGF5bG9hZCB9IGZyb20gJ0B0ZWNoZXh0ZW5zb3IvdGFiLWNvcmUtdXRpbGl0eSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2FwcEhlbHBlcjogQXBwSGVscGVyID0gaW5qZWN0KEFwcEhlbHBlcik7XG5cbiAgICAvKipcbiAgICAgKiBSZWJ1aWxkcyB0aGUgY3VycmVudCBhcHAuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21tb24gQVBJIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIGFzeW5jIHJlYnVpbGQoKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBVc2UgdGhlIGZpcnN0VmFsdWVGcm9tIFJ4SnMgb3BlcmF0b3IgdG8gd2FpdCBmb3IgdGhlIG9ic2VydmFibGUgdG8gY29tcGxldGVcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX2FwcEhlbHBlci5yZWJ1aWxkQXBwKClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHNjaGVtYSBmb3IgdGhlIGN1cnJlbnQgYXBwLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSBzY2hlbWEuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0U2NoZW1hKCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIuZ2V0U2NoZW1hKClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBhcHAncyBwZXJtaXNzaW9uLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSBwZXJtaXNzaW9uIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGdldFBlcm1pc3Npb24oKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBVc2UgdGhlIGZpcnN0VmFsdWVGcm9tIFJ4SnMgb3BlcmF0b3IgdG8gd2FpdCBmb3IgdGhlIG9ic2VydmFibGUgdG8gY29tcGxldGVcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX2FwcEhlbHBlci5nZXRQZXJtaXNzaW9uKClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhcHAgb2JqZWN0cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcmVnaXN0ZXIgYXBwIG9iamVjdHMgcGF5bG9hZC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UuXG4gICAgICovXG4gICAgYXN5bmMgcmVnaXN0ZXJBcHBPYmplY3QocGF5bG9hZDogUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIucmVnaXN0ZXJBcHBPYmplY3RzKHBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSAoRFNRKSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgY2xvbmUgRFNRIHBheWxvYWQuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21tb24gQVBJIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIGFzeW5jIGNsb25lRHNxKHBheWxvYWQ6IENsb25lRHNxUGF5bG9hZCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIuY2xvbmVEc3EocGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBkYXRhIGluIEpTT04gZm9ybWF0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBnZXQgZGF0YSBKU09OIGJ5IHR5cGUgcGF5bG9hZC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgZGF0YSBpbiBKU09OIGZvcm1hdC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXREYXRhSnNvbkJ5VHlwZShwYXlsb2FkOiBHZXREYXRhSnNvbkJ5VHlwZVBheWxvYWQpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLmdldERhdGFKc29uQnlUeXBlKHBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTeW5jaHJvbml6ZXMgdGhlIGN1cnJlbnQgYXBwJ3MgZmllbGRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBzeW5jIGFwcCBmaWVsZHMgcGF5bG9hZC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UuXG4gICAgICovXG4gICAgYXN5bmMgc3luY0FwcEZpZWxkcyhwYXlsb2FkOiBTeW5jQXBwRmllbGRzUGF5bG9hZCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIuc3luY0FwcEZpZWxkcyhwYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGFiIGNvbXBvbmVudHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbm5lY3Rpb24gSUQuXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb24gdG8gc2V0IHRoZSBjb21wb25lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UuXG4gICAgICovXG4gICAgYXN5bmMgc2V0VGFiQ29tcG9uZW50cyhjb25uZWN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIuc2V0VGFiQ29tcG9uZW50cyhjb25uZWN0aW9uSWQpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB2YWxpZGF0aW9uIGZvciB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBJRC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvbiB0byB2YWxpZGF0ZS5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgdmFsaWRhdGlvbiByZXN1bHQuXG4gICAgICovXG4gICAgYXN5bmMgcGVyZm9ybVZhbGlkYXRpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLnBlcmZvcm1WYWxpZGF0aW9uKGNvbm5lY3Rpb25JZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGNvbm5lY3Rpb24gSUQuXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb24gdG8gdGVzdC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGNvbW1vbiBBUEkgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgdGVzdCByZXN1bHQuXG4gICAgICovXG4gICAgYXN5bmMgdGVzdENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLnRlc3RDb25uZWN0aW9uKGNvbm5lY3Rpb25JZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZnJlc2hlcyB0aGUgZ2xvYmFsIHNlYXJjaCBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSByZWZyZXNoIGdsb2JhbCBzZWFyY2ggZGF0YSBwYXlsb2FkLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSByZWZyZXNoZWQgZ2xvYmFsIHNlYXJjaCBkYXRhLlxuICAgICAqL1xuICAgIGFzeW5jIHJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhKHBheWxvYWQ6IFJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhUGF5bG9hZCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl9hcHBIZWxwZXIucmVmcmVzaEdsb2JhbFNlYXJjaERhdGEocGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,41 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { MediaUploadHelper } from '@techextensor/tab-core-utility';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class FileService {
6
+ _mediaUploadHelper = inject(MediaUploadHelper);
7
+ /**
8
+ * Uploads media files using the provided payload and optional headers.
9
+ *
10
+ * @param payload The payload containing the media files to upload.
11
+ * @param headers Optional headers to pass to the server.
12
+ * @returns A promise that resolves to a common API response.
13
+ */
14
+ async uploadMediaFiles(payload, headers) {
15
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
16
+ const response = await firstValueFrom(this._mediaUploadHelper.uploadMediaFiles(payload, headers));
17
+ // Return the response from the server
18
+ return response;
19
+ }
20
+ /**
21
+ * Removes a media file from the server using the provided media ID.
22
+ *
23
+ * @param mediaId The ID of the media file to remove.
24
+ * @returns A promise that resolves to a common API response.
25
+ */
26
+ async removeMediaFile(mediaId) {
27
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
28
+ const response = await firstValueFrom(this._mediaUploadHelper.removeMediaFile(mediaId));
29
+ // Return the response from the server
30
+ return response;
31
+ }
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
33
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileService, providedIn: 'root' });
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileService, decorators: [{
36
+ type: Injectable,
37
+ args: [{
38
+ providedIn: 'root'
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2FwcC9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFxQixpQkFBaUIsRUFBMkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt0QyxNQUFNLE9BQU8sV0FBVztJQUNaLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUxRTs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZ0MsRUFBRSxPQUFhO1FBQ2xFLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDakMsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUNuRCxDQUFDO1FBQ0Ysc0NBQXNDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7d0dBaENRLFdBQVc7NEdBQVgsV0FBVyxjQUZSLE1BQU07OzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgTWVkaWFVcGxvYWRIZWxwZXIsIFVwbG9hZE1lZGlhRmlsZXNQYXlsb2FkIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgX21lZGlhVXBsb2FkSGVscGVyOiBNZWRpYVVwbG9hZEhlbHBlciA9IGluamVjdChNZWRpYVVwbG9hZEhlbHBlcik7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIG1lZGlhIGZpbGVzIHVzaW5nIHRoZSBwcm92aWRlZCBwYXlsb2FkIGFuZCBvcHRpb25hbCBoZWFkZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgbWVkaWEgZmlsZXMgdG8gdXBsb2FkLlxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgdG8gcGFzcyB0byB0aGUgc2VydmVyLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZS5cbiAgICAgKi9cbiAgICBhc3luYyB1cGxvYWRNZWRpYUZpbGVzKHBheWxvYWQ6IFVwbG9hZE1lZGlhRmlsZXNQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBVc2UgdGhlIGZpcnN0VmFsdWVGcm9tIFJ4SnMgb3BlcmF0b3IgdG8gd2FpdCBmb3IgdGhlIG9ic2VydmFibGUgdG8gY29tcGxldGVcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX21lZGlhVXBsb2FkSGVscGVyLnVwbG9hZE1lZGlhRmlsZXMocGF5bG9hZCwgaGVhZGVycylcbiAgICAgICAgKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBtZWRpYSBmaWxlIGZyb20gdGhlIHNlcnZlciB1c2luZyB0aGUgcHJvdmlkZWQgbWVkaWEgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVkaWFJZCBUaGUgSUQgb2YgdGhlIG1lZGlhIGZpbGUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZS5cbiAgICAgKi9cbiAgICBhc3luYyByZW1vdmVNZWRpYUZpbGUobWVkaWFJZDogc3RyaW5nKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBVc2UgdGhlIGZpcnN0VmFsdWVGcm9tIFJ4SnMgb3BlcmF0b3IgdG8gd2FpdCBmb3IgdGhlIG9ic2VydmFibGUgdG8gY29tcGxldGVcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX21lZGlhVXBsb2FkSGVscGVyLnJlbW92ZU1lZGlhRmlsZShtZWRpYUlkKVxuICAgICAgICApO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,38 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { TabReleaseService } from '@techextensor/tab-core-utility';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class ReleaseService {
6
+ _tabReleaseService = inject(TabReleaseService);
7
+ /**
8
+ * Retrieves the data differences between the current app version and the latest
9
+ * released version of the app.
10
+ *
11
+ * @returns A promise that resolves to a common API response containing the data
12
+ * differences in JSON format.
13
+ */
14
+ async getTabDataDiff() {
15
+ const response = await firstValueFrom(this._tabReleaseService.getDataJsonDiff());
16
+ return response;
17
+ }
18
+ /**
19
+ * Retrieves the metadata differences between the current app version and the latest
20
+ * released version of the app.
21
+ *
22
+ * @returns A promise that resolves to a common API response containing the metadata
23
+ * differences in JSON format.
24
+ */
25
+ async getMetaDataDiff() {
26
+ const response = await firstValueFrom(this._tabReleaseService.getMetaDataJsonDiff());
27
+ return response;
28
+ }
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReleaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReleaseService, providedIn: 'root' });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReleaseService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2FwcC9yZWxlYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RDLE1BQU0sT0FBTyxjQUFjO0lBQ2Ysa0JBQWtCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFFOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxjQUFjO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQzVDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGVBQWU7UUFDakIsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUNoRCxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzt3R0E3QlEsY0FBYzs0R0FBZCxjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBUYWJSZWxlYXNlU2VydmljZSB9IGZyb20gJ0B0ZWNoZXh0ZW5zb3IvdGFiLWNvcmUtdXRpbGl0eSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlbGVhc2VTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF90YWJSZWxlYXNlU2VydmljZTogVGFiUmVsZWFzZVNlcnZpY2UgPSBpbmplY3QoVGFiUmVsZWFzZVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBkYXRhIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGN1cnJlbnQgYXBwIHZlcnNpb24gYW5kIHRoZSBsYXRlc3RcbiAgICAgKiByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBhcHAuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21tb24gQVBJIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIGRhdGFcbiAgICAgKiBkaWZmZXJlbmNlcyBpbiBKU09OIGZvcm1hdC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRUYWJEYXRhRGlmZigpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl90YWJSZWxlYXNlU2VydmljZS5nZXREYXRhSnNvbkRpZmYoKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBtZXRhZGF0YSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGFwcCB2ZXJzaW9uIGFuZCB0aGUgbGF0ZXN0XG4gICAgICogcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgYXBwLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSBtZXRhZGF0YVxuICAgICAqIGRpZmZlcmVuY2VzIGluIEpTT04gZm9ybWF0LlxuICAgICAqL1xuICAgIGFzeW5jIGdldE1ldGFEYXRhRGlmZigpOiBQcm9taXNlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl90YWJSZWxlYXNlU2VydmljZS5nZXRNZXRhRGF0YUpzb25EaWZmKClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,48 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { AppHelper } from '@techextensor/tab-core-utility';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class ReportService {
6
+ _appHelper = inject(AppHelper);
7
+ /**
8
+ * Exports a report based on the provided payload.
9
+ *
10
+ * @param payload The payload containing the parameters for the report.
11
+ * @returns A promise that resolves to a common API response containing the report.
12
+ */
13
+ async export(payload) {
14
+ const response = await firstValueFrom(this._appHelper.exportReport(payload));
15
+ return response;
16
+ }
17
+ /**
18
+ * Downloads a report based on the provided payload.
19
+ *
20
+ * @param payload The payload containing the parameters for the report.
21
+ * @returns A promise that resolves to a common API response containing the report.
22
+ */
23
+ async download(payload) {
24
+ const response = await firstValueFrom(this._appHelper.downloadReport(payload));
25
+ return response;
26
+ }
27
+ /**
28
+ * Sends a report based on the provided payload.
29
+ *
30
+ * @param payload The payload containing the parameters for the report.
31
+ * @returns A promise that resolves to a common API response containing the report.
32
+ */
33
+ async send(payload) {
34
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
35
+ const response = await firstValueFrom(this._appHelper.sendReport(payload));
36
+ // Return the response from the server
37
+ return response;
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportService, providedIn: 'root' });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportService, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root'
46
+ }]
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWItc2RrL3NyYy9saWIvYXBwL3JlcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQW9DLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLGFBQWE7SUFDZCxVQUFVLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQ3hDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQXNCO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDMUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBc0I7UUFDN0IsOEVBQThFO1FBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FDdEMsQ0FBQztRQUNGLHNDQUFzQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO3dHQTFDUSxhQUFhOzRHQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwSGVscGVyLCBDb21tb25BcGlSZXNwb25zZSwgUmVwb3J0UGF5bG9hZCB9IGZyb20gJ0B0ZWNoZXh0ZW5zb3IvdGFiLWNvcmUtdXRpbGl0eSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2FwcEhlbHBlcjogQXBwSGVscGVyID0gaW5qZWN0KEFwcEhlbHBlcik7XG5cbiAgICAvKipcbiAgICAgKiBFeHBvcnRzIGEgcmVwb3J0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXBvcnQuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21tb24gQVBJIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIHJlcG9ydC5cbiAgICAgKi9cbiAgICBhc3luYyBleHBvcnQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX2FwcEhlbHBlci5leHBvcnRSZXBvcnQocGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvd25sb2FkcyBhIHJlcG9ydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVwb3J0LlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSByZXBvcnQuXG4gICAgICovXG4gICAgYXN5bmMgZG93bmxvYWQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fYXBwSGVscGVyLmRvd25sb2FkUmVwb3J0KHBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIHJlcG9ydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVwb3J0LlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgY29tbW9uIEFQSSByZXNwb25zZSBjb250YWluaW5nIHRoZSByZXBvcnQuXG4gICAgICovXG4gICAgYXN5bmMgc2VuZChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBVc2UgdGhlIGZpcnN0VmFsdWVGcm9tIFJ4SnMgb3BlcmF0b3IgdG8gd2FpdCBmb3IgdGhlIG9ic2VydmFibGUgdG8gY29tcGxldGVcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuX2FwcEhlbHBlci5zZW5kUmVwb3J0KHBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59Il19
@@ -0,0 +1,77 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
3
+ import { TranslationService } from '@techextensor/tab-core-utility';
4
+ import * as i0 from "@angular/core";
5
+ export class TranslatorService {
6
+ _translationService = inject(TranslationService);
7
+ /**
8
+ * Gets the current active language
9
+ *
10
+ * @returns The current language code
11
+ */
12
+ getCurrentLanguage() {
13
+ return this._translationService.getCurrentLanguage();
14
+ }
15
+ /**
16
+ * Gets an observable of the current language changes
17
+ *
18
+ * @returns An observable of the current language code
19
+ */
20
+ getLanguageChanges() {
21
+ return this._translationService.currentLanguage$;
22
+ }
23
+ /**
24
+ * Changes the application language
25
+ *
26
+ * @param payload The translate payload containing language and languageCode
27
+ * @returns A promise that resolves when the language has been changed
28
+ */
29
+ async changeLanguage(payload) {
30
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
31
+ const response = await firstValueFrom(this._translationService.changeLanguage(payload));
32
+ // Return the response
33
+ return response;
34
+ }
35
+ /**
36
+ * Translates a key to the current language
37
+ *
38
+ * @param key The translation key
39
+ * @param params Optional parameters for interpolation
40
+ * @returns The translated string
41
+ */
42
+ translate(key, params) {
43
+ if (!key?.length)
44
+ return key;
45
+ return this._translationService.translate(key, params);
46
+ }
47
+ /**
48
+ * Gets a translation as an observable for async operations
49
+ *
50
+ * @param key The translation key
51
+ * @param params Optional parameters for interpolation
52
+ * @returns An observable of the translated string
53
+ */
54
+ async getTranslation(key, params) {
55
+ // Use the firstValueFrom RxJs operator to wait for the observable to complete
56
+ const translation = await firstValueFrom(this._translationService.getTranslation(key, params));
57
+ // Return the translated string
58
+ return translation;
59
+ }
60
+ /**
61
+ * Registers an external library integration for translations
62
+ *
63
+ * @param handler Function to handle the integration with language and translations
64
+ */
65
+ registerIntegration(handler) {
66
+ this._translationService.registerIntegration(handler);
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
69
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslatorService, providedIn: 'root' });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TranslatorService, decorators: [{
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root'
75
+ }]
76
+ }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2FwcC90cmFuc2xhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFHLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQW9CLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBS3RGLE1BQU0sT0FBTyxpQkFBaUI7SUFDVCxtQkFBbUIsR0FBdUIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFdEY7Ozs7T0FJRztJQUNILGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQXlCO1FBQzFDLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDbkQsQ0FBQztRQUNGLHNCQUFzQjtRQUN0QixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFZO1FBQy9CLElBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBVyxFQUFFLE1BQVk7UUFDMUMsOEVBQThFO1FBQzlFLE1BQU0sV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FDdkQsQ0FBQztRQUNGLCtCQUErQjtRQUMvQixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLE9BQWtEO1FBQ2xFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO3dHQXZFUSxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ICBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdHJhbnNsYXRlUGF5bG9hZCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGN1cnJlbnQgYWN0aXZlIGxhbmd1YWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgbGFuZ3VhZ2UgY29kZVxuICAgICAqL1xuICAgIGdldEN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBsYW5ndWFnZSBjaGFuZ2VzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBsYW5ndWFnZSBjb2RlXG4gICAgICovXG4gICAgZ2V0TGFuZ3VhZ2VDaGFuZ2VzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGlvblNlcnZpY2UuY3VycmVudExhbmd1YWdlJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBhcHBsaWNhdGlvbiBsYW5ndWFnZVxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSB0cmFuc2xhdGUgcGF5bG9hZCBjb250YWluaW5nIGxhbmd1YWdlIGFuZCBsYW5ndWFnZUNvZGVcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsYW5ndWFnZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlTGFuZ3VhZ2UocGF5bG9hZDogdHJhbnNsYXRlUGF5bG9hZCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIFVzZSB0aGUgZmlyc3RWYWx1ZUZyb20gUnhKcyBvcGVyYXRvciB0byB3YWl0IGZvciB0aGUgb2JzZXJ2YWJsZSB0byBjb21wbGV0ZVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRpb25TZXJ2aWNlLmNoYW5nZUxhbmd1YWdlKHBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2VcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zbGF0ZXMgYSBrZXkgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSB0cmFuc2xhdGlvbiBrZXlcbiAgICAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGludGVycG9sYXRpb25cbiAgICAgKiBAcmV0dXJucyBUaGUgdHJhbnNsYXRlZCBzdHJpbmdcbiAgICAgKi9cbiAgICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmKCFrZXk/Lmxlbmd0aCkgcmV0dXJuIGtleTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoa2V5LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSB0cmFuc2xhdGlvbiBhcyBhbiBvYnNlcnZhYmxlIGZvciBhc3luYyBvcGVyYXRpb25zXG4gICAgICogXG4gICAgICogQHBhcmFtIGtleSBUaGUgdHJhbnNsYXRpb24ga2V5XG4gICAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBpbnRlcnBvbGF0aW9uXG4gICAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgdHJhbnNsYXRlZCBzdHJpbmdcbiAgICAgKi9cbiAgICBhc3luYyBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBmaXJzdFZhbHVlRnJvbSBSeEpzIG9wZXJhdG9yIHRvIHdhaXQgZm9yIHRoZSBvYnNlcnZhYmxlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGlvblNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oa2V5LCBwYXJhbXMpXG4gICAgICAgICk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgdHJhbnNsYXRlZCBzdHJpbmdcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhbiBleHRlcm5hbCBsaWJyYXJ5IGludGVncmF0aW9uIGZvciB0cmFuc2xhdGlvbnNcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gaGFuZGxlciBGdW5jdGlvbiB0byBoYW5kbGUgdGhlIGludGVncmF0aW9uIHdpdGggbGFuZ3VhZ2UgYW5kIHRyYW5zbGF0aW9uc1xuICAgICAqL1xuICAgIHJlZ2lzdGVySW50ZWdyYXRpb24oaGFuZGxlcjogKGxhbmc6IHN0cmluZywgdHJhbnNsYXRpb25zOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRpb25TZXJ2aWNlLnJlZ2lzdGVySW50ZWdyYXRpb24oaGFuZGxlcik7XG4gICAgfVxufSJdfQ==