@experteam-mx/ngx-services 20.0.0-beta.4 → 20.0.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.
- package/README.md +24 -24
- package/esm2022/experteam-mx-ngx-services.mjs +5 -0
- package/esm2022/lib/apis/api-billing-do.service.mjs +41 -0
- package/esm2022/lib/apis/api-billing-gt.service.mjs +61 -0
- package/esm2022/lib/apis/api-billing-mx.service.mjs +62 -0
- package/esm2022/lib/apis/api-billing-pa.service.mjs +105 -0
- package/esm2022/lib/apis/api-billing-sv.service.mjs +83 -0
- package/esm2022/lib/apis/api-cash-operations.service.mjs +93 -0
- package/esm2022/lib/apis/api-catalogs.service.mjs +626 -0
- package/esm2022/lib/apis/api-companies.service.mjs +1031 -0
- package/esm2022/lib/apis/api-composition.service.mjs +55 -0
- package/esm2022/lib/apis/api-customs.service.mjs +157 -0
- package/esm2022/lib/apis/api-discounts.service.mjs +243 -0
- package/esm2022/lib/apis/api-e-tools-auto-billing.service.mjs +75 -0
- package/esm2022/lib/apis/api-events.service.mjs +53 -0
- package/esm2022/lib/apis/api-external-pickups.service.mjs +74 -0
- package/esm2022/lib/apis/api-inventories.service.mjs +208 -0
- package/esm2022/lib/apis/api-invoices.service.mjs +398 -0
- package/esm2022/lib/apis/api-notifications.service.mjs +104 -0
- package/esm2022/lib/apis/api-open-items.service.mjs +62 -0
- package/esm2022/lib/apis/api-reports.service.mjs +172 -0
- package/esm2022/lib/apis/api-security.service.mjs +245 -0
- package/esm2022/lib/apis/api-services.service.mjs +93 -0
- package/esm2022/lib/apis/api-shipments.service.mjs +116 -0
- package/esm2022/lib/apis/api-supplies.service.mjs +133 -0
- package/esm2022/lib/apis/models/api-billing-do.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-do.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-mx.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-mx.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-pa.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-pa.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-sv.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing-sv.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-billing.models.mjs +2 -0
- package/esm2022/lib/apis/models/api-cash-operations.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-cash-operations.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-catalog.enum.mjs +9 -0
- package/esm2022/lib/apis/models/api-catalog.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-catalog.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-companies.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-companies.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-composition.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-composition.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-customs.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-customs.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-discounts.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-discounts.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-e-tools-auto-billing.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-e-tools-auto-billing.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-events.enum.mjs +7 -0
- package/esm2022/lib/apis/models/api-events.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-events.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-external-pickups.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-inventories.enum.mjs +22 -0
- package/esm2022/lib/apis/models/api-inventories.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-inventories.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-invoices.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-invoices.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-notifications.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-notifications.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-open-items.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-open-items.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-reports.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-reports.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-security.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-security.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-services.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-services.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-shipments.enums.mjs +8 -0
- package/esm2022/lib/apis/models/api-shipments.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-shipments.types.mjs +2 -0
- package/esm2022/lib/apis/models/api-supplies.interfaces.mjs +2 -0
- package/esm2022/lib/apis/models/api-supplies.types.mjs +2 -0
- package/esm2022/lib/apis/models/api.models.mjs +2 -0
- package/esm2022/lib/cypher/crypto.service.mjs +93 -0
- package/esm2022/lib/helpers/files.mjs +9 -0
- package/esm2022/lib/helpers/http.mjs +66 -0
- package/esm2022/lib/interceptors/api-headers.interceptor.mjs +24 -0
- package/esm2022/lib/interceptors/api-token.interceptor.mjs +28 -0
- package/esm2022/lib/interceptors/http-caching.interceptor.mjs +37 -0
- package/esm2022/lib/ngx-services.models.mjs +11 -0
- package/esm2022/lib/ngx-services.module.mjs +33 -0
- package/esm2022/lib/websockets/web-sockets.service.mjs +115 -0
- package/esm2022/public-api.mjs +90 -0
- package/fesm2022/experteam-mx-ngx-services.mjs +126 -5
- package/fesm2022/experteam-mx-ngx-services.mjs.map +1 -1
- package/index.d.ts +287 -4
- package/lib/apis/api-billing-do.service.d.ts +24 -0
- package/lib/apis/api-billing-gt.service.d.ts +38 -0
- package/lib/apis/api-billing-mx.service.d.ts +39 -0
- package/lib/apis/api-billing-pa.service.d.ts +68 -0
- package/lib/apis/api-billing-sv.service.d.ts +55 -0
- package/lib/apis/api-cash-operations.service.d.ts +62 -0
- package/lib/apis/api-catalogs.service.d.ts +458 -0
- package/lib/apis/api-companies.service.d.ts +714 -0
- package/lib/apis/api-composition.service.d.ts +35 -0
- package/lib/apis/api-customs.service.d.ts +110 -0
- package/lib/apis/api-discounts.service.d.ts +167 -0
- package/lib/apis/api-e-tools-auto-billing.service.d.ts +49 -0
- package/lib/apis/api-events.service.d.ts +33 -0
- package/lib/apis/api-external-pickups.service.d.ts +46 -0
- package/lib/apis/api-inventories.service.d.ts +145 -0
- package/lib/apis/api-invoices.service.d.ts +280 -0
- package/lib/apis/api-notifications.service.d.ts +70 -0
- package/lib/apis/api-open-items.service.d.ts +41 -0
- package/lib/apis/api-reports.service.d.ts +120 -0
- package/lib/apis/api-security.service.d.ts +162 -0
- package/lib/apis/api-services.service.d.ts +61 -0
- package/lib/apis/api-shipments.service.d.ts +77 -0
- package/lib/apis/api-supplies.service.d.ts +93 -0
- package/lib/apis/models/api-billing-do.interfaces.d.ts +6 -0
- package/lib/apis/models/api-billing-do.types.d.ts +5 -0
- package/lib/apis/models/api-billing-mx.interfaces.d.ts +21 -0
- package/lib/apis/models/api-billing-mx.types.d.ts +13 -0
- package/lib/apis/models/api-billing-pa.interfaces.d.ts +26 -0
- package/lib/apis/models/api-billing-pa.types.d.ts +16 -0
- package/lib/apis/models/api-billing-sv.interfaces.d.ts +22 -0
- package/lib/apis/models/api-billing-sv.types.d.ts +21 -0
- package/lib/apis/models/api-billing.models.d.ts +27 -0
- package/lib/apis/models/api-cash-operations.interfaces.d.ts +40 -0
- package/lib/apis/models/api-cash-operations.types.d.ts +30 -0
- package/lib/apis/models/api-catalog.enum.d.ts +7 -0
- package/lib/apis/models/api-catalog.interfaces.d.ts +219 -0
- package/lib/apis/models/api-catalog.types.d.ts +217 -0
- package/lib/apis/models/api-companies.interfaces.d.ts +341 -0
- package/lib/apis/models/api-companies.types.d.ts +457 -0
- package/lib/apis/models/api-composition.interfaces.d.ts +272 -0
- package/lib/apis/models/api-composition.types.d.ts +9 -0
- package/lib/apis/models/api-customs.interfaces.d.ts +125 -0
- package/lib/apis/models/api-customs.types.d.ts +90 -0
- package/lib/apis/models/api-discounts.interfaces.d.ts +78 -0
- package/lib/apis/models/api-discounts.types.d.ts +89 -0
- package/lib/apis/models/api-e-tools-auto-billing.interfaces.d.ts +45 -0
- package/lib/apis/models/api-e-tools-auto-billing.types.d.ts +30 -0
- package/lib/apis/models/api-events.enum.d.ts +5 -0
- package/lib/apis/models/api-events.interfaces.d.ts +21 -0
- package/lib/apis/models/api-events.types.d.ts +14 -0
- package/lib/apis/models/api-external-pickups.types.d.ts +31 -0
- package/lib/apis/models/api-inventories.enum.d.ts +18 -0
- package/lib/apis/models/api-inventories.interfaces.d.ts +40 -0
- package/lib/apis/models/api-inventories.types.d.ts +62 -0
- package/lib/apis/models/api-invoices.interfaces.d.ts +267 -0
- package/lib/apis/models/api-invoices.types.d.ts +195 -0
- package/lib/apis/models/api-notifications.interfaces.d.ts +36 -0
- package/lib/apis/models/api-notifications.types.d.ts +34 -0
- package/lib/apis/models/api-open-items.interfaces.d.ts +32 -0
- package/lib/apis/models/api-open-items.types.d.ts +58 -0
- package/lib/apis/models/api-reports.interfaces.d.ts +342 -0
- package/lib/apis/models/api-reports.types.d.ts +59 -0
- package/lib/apis/models/api-security.interfaces.d.ts +68 -0
- package/lib/apis/models/api-security.types.d.ts +72 -0
- package/lib/apis/models/api-services.interfaces.d.ts +43 -0
- package/lib/apis/models/api-services.types.d.ts +57 -0
- package/lib/apis/models/api-shipments.enums.d.ts +6 -0
- package/lib/apis/models/api-shipments.interfaces.d.ts +41 -0
- package/lib/apis/models/api-shipments.types.d.ts +121 -0
- package/lib/apis/models/api-supplies.interfaces.d.ts +40 -0
- package/lib/apis/models/api-supplies.types.d.ts +50 -0
- package/lib/apis/models/api.models.d.ts +36 -0
- package/lib/cypher/crypto.service.d.ts +15 -0
- package/lib/helpers/files.d.ts +2 -0
- package/lib/helpers/http.d.ts +38 -0
- package/lib/interceptors/api-headers.interceptor.d.ts +12 -0
- package/lib/interceptors/api-token.interceptor.d.ts +11 -0
- package/lib/interceptors/http-caching.interceptor.d.ts +12 -0
- package/lib/ngx-services.models.d.ts +62 -0
- package/lib/ngx-services.module.d.ts +16 -0
- package/lib/websockets/web-sockets.service.d.ts +49 -0
- package/package.json +1 -1
- package/public-api.d.ts +80 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
export class ApiOpenItemsService {
|
|
6
|
+
environments;
|
|
7
|
+
http;
|
|
8
|
+
constructor(environments, http) {
|
|
9
|
+
this.environments = environments;
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Retrieves the API URL for open-items from the environments' configuration.
|
|
14
|
+
*
|
|
15
|
+
* @return {string} The API URL for open-items.
|
|
16
|
+
*/
|
|
17
|
+
get url() {
|
|
18
|
+
return this.environments.apiOpenItemsUrl ?? '';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves a list of open-items based on the provided query parameters.
|
|
22
|
+
*
|
|
23
|
+
* @param {QueryParams} params - The parameters to use for querying open-items.
|
|
24
|
+
* @return {Observable<OpenItemsOut>} An observable that emits the open-item's data.
|
|
25
|
+
*/
|
|
26
|
+
getOpenItems(params) {
|
|
27
|
+
return this.http.get(`${this.url}/open-items`, { params })
|
|
28
|
+
.pipe(map(({ data }) => data));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Processes a payment for an open item.
|
|
32
|
+
*
|
|
33
|
+
* @param {PaymentOpenItemIn} body - The payment details for the open item.
|
|
34
|
+
* @return {Observable<PaymentOut>} An observable that emits the result of the payment processing.
|
|
35
|
+
*/
|
|
36
|
+
postPayment(body) {
|
|
37
|
+
return this.http.post(`${this.url}/payment`, body)
|
|
38
|
+
.pipe(map(({ data }) => data));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Processes a payment for other invoice.
|
|
42
|
+
*
|
|
43
|
+
* @param {OtherInvoiceIn} body - The payment details for the other invoice.
|
|
44
|
+
* @return {Observable<OtherInvoiceOut>} An observable that emits the result of the payment processing.
|
|
45
|
+
*/
|
|
46
|
+
postOtherInvoice(body) {
|
|
47
|
+
return this.http.post(`${this.url}/other-invoices`, body)
|
|
48
|
+
.pipe(map(({ data }) => data));
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiOpenItemsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiOpenItemsService, providedIn: 'root' });
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiOpenItemsService, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{
|
|
56
|
+
providedIn: 'root'
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
59
|
+
type: Inject,
|
|
60
|
+
args: ['env']
|
|
61
|
+
}] }, { type: i1.HttpClient }] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW9wZW4taXRlbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL2FwaS1vcGVuLWl0ZW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLbEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7O0FBTXRDLE1BQU0sT0FBTyxtQkFBbUI7SUFFTDtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3ZCLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUE7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFFLE1BQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJCLEdBQUcsSUFBSSxDQUFDLEdBQUcsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFFLElBQXVCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQzthQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxJQUFvQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGlCQUFpQixFQUFFLElBQUksQ0FBQzthQUNuRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQTlDVSxtQkFBbUIsa0JBRXBCLEtBQUs7NEdBRkosbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vbmd4LXNlcnZpY2VzLm1vZGVscydcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7IE9wZW5JdGVtc091dCwgT3RoZXJJbnZvaWNlT3V0LCBQYXltZW50T3V0IH0gZnJvbSAnLi9tb2RlbHMvYXBpLW9wZW4taXRlbXMudHlwZXMnXHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IE90aGVySW52b2ljZUluLCBQYXltZW50T3Blbkl0ZW1JbiB9IGZyb20gJy4vbW9kZWxzL2FwaS1vcGVuLWl0ZW1zLmludGVyZmFjZXMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlPcGVuSXRlbXNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgQVBJIFVSTCBmb3Igb3Blbi1pdGVtcyBmcm9tIHRoZSBlbnZpcm9ubWVudHMnIGNvbmZpZ3VyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBBUEkgVVJMIGZvciBvcGVuLWl0ZW1zLlxyXG4gICAqL1xyXG4gIGdldCB1cmwgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudHMuYXBpT3Blbkl0ZW1zVXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIG9wZW4taXRlbXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHF1ZXJ5aW5nIG9wZW4taXRlbXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPcGVuSXRlbXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIG9wZW4taXRlbSdzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0T3Blbkl0ZW1zIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxPcGVuSXRlbXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8T3Blbkl0ZW1zT3V0Pj4oYCR7dGhpcy51cmx9L29wZW4taXRlbXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2Nlc3NlcyBhIHBheW1lbnQgZm9yIGFuIG9wZW4gaXRlbS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UGF5bWVudE9wZW5JdGVtSW59IGJvZHkgLSBUaGUgcGF5bWVudCBkZXRhaWxzIGZvciB0aGUgb3BlbiBpdGVtLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGF5bWVudE91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzdWx0IG9mIHRoZSBwYXltZW50IHByb2Nlc3NpbmcuXHJcbiAgICovXHJcbiAgcG9zdFBheW1lbnQgKGJvZHk6IFBheW1lbnRPcGVuSXRlbUluKTogT2JzZXJ2YWJsZTxQYXltZW50T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxQYXltZW50T3V0Pj4oYCR7dGhpcy51cmx9L3BheW1lbnRgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2Nlc3NlcyBhIHBheW1lbnQgZm9yIG90aGVyIGludm9pY2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge090aGVySW52b2ljZUlufSBib2R5IC0gVGhlIHBheW1lbnQgZGV0YWlscyBmb3IgdGhlIG90aGVyIGludm9pY2UuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPdGhlckludm9pY2VPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgcGF5bWVudCBwcm9jZXNzaW5nLlxyXG4gICAqL1xyXG4gIHBvc3RPdGhlckludm9pY2UgKGJvZHk6IE90aGVySW52b2ljZUluKTogT2JzZXJ2YWJsZTxPdGhlckludm9pY2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPE90aGVySW52b2ljZU91dD4+KGAke3RoaXMudXJsfS9vdGhlci1pbnZvaWNlc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
export class ApiReportsService {
|
|
6
|
+
environments;
|
|
7
|
+
http;
|
|
8
|
+
constructor(environments, http) {
|
|
9
|
+
this.environments = environments;
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Retrieves the URL for the reports API from the environment configurations.
|
|
14
|
+
*
|
|
15
|
+
* @return {string} The URL of the reports API.
|
|
16
|
+
*/
|
|
17
|
+
get url() {
|
|
18
|
+
return this.environments.apiReportsUrl ?? '';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves the list of collection payments
|
|
22
|
+
*
|
|
23
|
+
* @param {QueryParams} params - The query parameters used to fetch the collection payments.
|
|
24
|
+
* @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.
|
|
25
|
+
*/
|
|
26
|
+
getCollectionPayments(params) {
|
|
27
|
+
return this.http.get(`${this.url}/collection-payment`, {
|
|
28
|
+
params
|
|
29
|
+
}).pipe(map(({ data }) => data));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fetches shipment reports based on the provided query parameters.
|
|
33
|
+
*
|
|
34
|
+
* @param {QueryParams} params - The query parameters used to filter or define the shipment reports.
|
|
35
|
+
* @return {Observable<ShipmentsReportOut>} An observable emitting the shipment report data.
|
|
36
|
+
*/
|
|
37
|
+
getShipmentsReport(params) {
|
|
38
|
+
return this.http.get(`${this.url}/shipments-report`, { params })
|
|
39
|
+
.pipe(map(({ data }) => data));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Retrieves the shipments landing report from the reports API.
|
|
43
|
+
*
|
|
44
|
+
* Sends a GET request to the `/shipments-landing-report` endpoint with the provided query parameters.
|
|
45
|
+
* The HTTP response is expected to be wrapped in an `ApiSuccess` envelope, from which the `data`
|
|
46
|
+
* payload is extracted and returned as the stream value.
|
|
47
|
+
*
|
|
48
|
+
* @param params - Query parameters used to filter or paginate the shipments landing report.
|
|
49
|
+
* @returns An observable that emits the parsed `ShipmentsLandingReportOut` data from the API response.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* - The underlying HTTP call uses `HttpClient.get` with `params` serialized as query string values.
|
|
53
|
+
* - The response is piped through `map` to unwrap `data` from `ApiSuccess<T>`.
|
|
54
|
+
* - Errors from the HTTP request are propagated through the observable stream.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* // Basic usage:
|
|
59
|
+
* service.getShipmentsLandingReport({ page: 1, perPage: 25 })
|
|
60
|
+
* .subscribe(report => {
|
|
61
|
+
* // handle ShipmentsLandingReportOut
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
getShipmentsLandingReport(params) {
|
|
66
|
+
return this.http.get(`${this.url}/shipments-landing-report`, { params })
|
|
67
|
+
.pipe(map(({ data }) => data));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Retrieves a report of external shipments based on the provided query parameters.
|
|
71
|
+
*
|
|
72
|
+
* @param {QueryParams} params - An object representing the query parameters for filtering the external shipments report.
|
|
73
|
+
* @return {Observable<ExternalShipmentsOut>} An observable that emits the external shipments report data.
|
|
74
|
+
*/
|
|
75
|
+
getExternalShipmentsReport(params) {
|
|
76
|
+
return this.http.get(`${this.url}/external-shipments-report`, { params })
|
|
77
|
+
.pipe(map(({ data }) => data));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Retrieves a report of promotion code discounts based on the provided query parameters.
|
|
81
|
+
*
|
|
82
|
+
* @param {QueryParams} params - An object representing the query parameters for filtering the promotion code discounts report.
|
|
83
|
+
* @return {Observable<PromotionCodeDiscountsOut>} An observable that emits the promotion code discounts report data.
|
|
84
|
+
*/
|
|
85
|
+
getPromotionCodeDiscounts(params) {
|
|
86
|
+
return this.http.get(`${this.url}/promotion-code-discounts`, {
|
|
87
|
+
params
|
|
88
|
+
}).pipe(map(({ data }) => data));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Retrieves the downloadable resource associated with the given transaction ID.
|
|
92
|
+
*
|
|
93
|
+
* @param {string} transactionId - The unique identifier of the transaction whose download is requested.
|
|
94
|
+
* @return {Observable<HttpResponse<ArrayBuffer>>} An observable that emits the HTTP response containing the resource in the form of an ArrayBuffer.
|
|
95
|
+
*/
|
|
96
|
+
getDownload(transactionId) {
|
|
97
|
+
return this.http.get(`${this.url}/download/${transactionId}`, {
|
|
98
|
+
observe: 'response',
|
|
99
|
+
responseType: 'arraybuffer'
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Retrieves file check information for the specified transaction ID.
|
|
104
|
+
*
|
|
105
|
+
* @param {string} transactionId - The ID of the transaction for which the file check information is to be retrieved.
|
|
106
|
+
* @return {Observable<FileCheckOut>} An observable that emits the file check information associated with the given transaction ID.
|
|
107
|
+
*/
|
|
108
|
+
getFileCheck(transactionId) {
|
|
109
|
+
return this.http.get(`${this.url}/file-check/${transactionId}`)
|
|
110
|
+
.pipe(map(({ data }) => data));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Deletes the file check associated with the provided transaction ID.
|
|
114
|
+
*
|
|
115
|
+
* @param {string} transactionId - The unique identifier of the transaction whose file check is to be deleted.
|
|
116
|
+
* @return {Observable<{}>} An observable emitting the response data after the deletion is processed.
|
|
117
|
+
*/
|
|
118
|
+
deleteFileCheck(transactionId) {
|
|
119
|
+
return this.http.delete(`${this.url}/file-check/${transactionId}`)
|
|
120
|
+
.pipe(map(({ data }) => data));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Retrieves partial withdrawals based on the provided query parameters.
|
|
124
|
+
*
|
|
125
|
+
* @param {QueryParams} params - The parameters used to filter the list of partial withdrawals.
|
|
126
|
+
* @returns {Observable<PartialWithdrawalsOut>} An observable that emits the filtered list of partial withdrawals.
|
|
127
|
+
*/
|
|
128
|
+
getPartialWithdrawals(params) {
|
|
129
|
+
return this.http.get(`${this.url}/partial-withdrawals`, {
|
|
130
|
+
params
|
|
131
|
+
})
|
|
132
|
+
.pipe(map(({ data }) => data));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Retrieves a list of invoices based on the provided query parameters.
|
|
136
|
+
*
|
|
137
|
+
* @param params - The query parameters used to filter the invoices.
|
|
138
|
+
* @returns An observable that emits the list of invoices.
|
|
139
|
+
*/
|
|
140
|
+
getInvoices(params) {
|
|
141
|
+
return this.http.get(`${this.url}/invoices`, { params })
|
|
142
|
+
.pipe(map(({ data }) => data));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Retrieves the sales book report based on the provided query parameters.
|
|
146
|
+
*
|
|
147
|
+
* @param params - The query parameters to filter or customize the report.
|
|
148
|
+
* @returns An Observable that emits the sales book report data.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* this.apiReportsService.getSalesBookReport({ page: 1, limit: 10 })
|
|
153
|
+
* .subscribe(report => console.log(report));
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
getSalesBookReport(params) {
|
|
157
|
+
return this.http.get(`${this.url}/sales-book-report`, { params })
|
|
158
|
+
.pipe(map(({ data }) => data));
|
|
159
|
+
}
|
|
160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
161
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, providedIn: 'root' });
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, decorators: [{
|
|
164
|
+
type: Injectable,
|
|
165
|
+
args: [{
|
|
166
|
+
providedIn: 'root'
|
|
167
|
+
}]
|
|
168
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
169
|
+
type: Inject,
|
|
170
|
+
args: ['env']
|
|
171
|
+
}] }, { type: i1.HttpClient }] });
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcG9ydHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL2FwaS1yZXBvcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7O0FBZXRDLE1BQU0sT0FBTyxpQkFBaUI7SUFFSDtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUE7SUFDOUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUUsTUFBbUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsRUFBRTtZQUN4RixNQUFNO1NBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFFLE1BQW1CO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUM3RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxF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QWtCLENBQUUsTUFBbUI7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzlGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7d0dBcEtVLGlCQUFpQixrQkFFbEIsS0FBSzs0R0FGSixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vbmd4LXNlcnZpY2VzLm1vZGVscydcclxuaW1wb3J0IHtcclxuICBDb2xsZWN0aW9uUGF5bWVudHNPdXQsIEV4dGVybmFsU2hpcG1lbnRzT3V0LFxyXG4gIEZpbGVDaGVja091dCwgSW52b2ljZXNPdXQsIFBhcnRpYWxXaXRoZHJhd2Fsc091dCxcclxuICBQcm9tb3Rpb25Db2RlRGlzY291bnRzT3V0LFxyXG4gIFNhbGVzQm9va1JlcG9ydE91dCxcclxuICBTaGlwbWVudHNMYW5kaW5nUmVwb3J0T3V0LFxyXG4gIFNoaXBtZW50c1JlcG9ydE91dFxyXG59IGZyb20gJy4vbW9kZWxzL2FwaS1yZXBvcnRzLnR5cGVzJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlSZXBvcnRzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBVUkwgZm9yIHRoZSByZXBvcnRzIEFQSSBmcm9tIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9ucy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVSTCBvZiB0aGUgcmVwb3J0cyBBUEkuXHJcbiAgICovXHJcbiAgZ2V0IHVybCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5hcGlSZXBvcnRzVXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgY29sbGVjdGlvbiBwYXltZW50c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmZXRjaCB0aGUgY29sbGVjdGlvbiBwYXltZW50cy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbGxlY3Rpb25QYXltZW50c091dFtdPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGFycmF5IG9mIGNvbGxlY3Rpb24gcGF5bWVudC5cclxuICAgKi9cclxuICBnZXRDb2xsZWN0aW9uUGF5bWVudHMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvbGxlY3Rpb25QYXltZW50c091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb2xsZWN0aW9uUGF5bWVudHNPdXQ+PihgJHt0aGlzLnVybH0vY29sbGVjdGlvbi1wYXltZW50YCwge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHNoaXBtZW50IHJlcG9ydHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBvciBkZWZpbmUgdGhlIHNoaXBtZW50IHJlcG9ydHMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTaGlwbWVudHNSZXBvcnRPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBzaGlwbWVudCByZXBvcnQgZGF0YS5cclxuICAgKi9cclxuICBnZXRTaGlwbWVudHNSZXBvcnQgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFNoaXBtZW50c1JlcG9ydE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxTaGlwbWVudHNSZXBvcnRPdXQ+PihgJHt0aGlzLnVybH0vc2hpcG1lbnRzLXJlcG9ydGAsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBzaGlwbWVudHMgbGFuZGluZyByZXBvcnQgZnJvbSB0aGUgcmVwb3J0cyBBUEkuXHJcbiAgICpcclxuICAgKiBTZW5kcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBgL3NoaXBtZW50cy1sYW5kaW5nLXJlcG9ydGAgZW5kcG9pbnQgd2l0aCB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKiBUaGUgSFRUUCByZXNwb25zZSBpcyBleHBlY3RlZCB0byBiZSB3cmFwcGVkIGluIGFuIGBBcGlTdWNjZXNzYCBlbnZlbG9wZSwgZnJvbSB3aGljaCB0aGUgYGRhdGFgXHJcbiAgICogcGF5bG9hZCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkIGFzIHRoZSBzdHJlYW0gdmFsdWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBvciBwYWdpbmF0ZSB0aGUgc2hpcG1lbnRzIGxhbmRpbmcgcmVwb3J0LlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcGFyc2VkIGBTaGlwbWVudHNMYW5kaW5nUmVwb3J0T3V0YCBkYXRhIGZyb20gdGhlIEFQSSByZXNwb25zZS5cclxuICAgKlxyXG4gICAqIEByZW1hcmtzXHJcbiAgICogLSBUaGUgdW5kZXJseWluZyBIVFRQIGNhbGwgdXNlcyBgSHR0cENsaWVudC5nZXRgIHdpdGggYHBhcmFtc2Agc2VyaWFsaXplZCBhcyBxdWVyeSBzdHJpbmcgdmFsdWVzLlxyXG4gICAqIC0gVGhlIHJlc3BvbnNlIGlzIHBpcGVkIHRocm91Z2ggYG1hcGAgdG8gdW53cmFwIGBkYXRhYCBmcm9tIGBBcGlTdWNjZXNzPFQ+YC5cclxuICAgKiAtIEVycm9ycyBmcm9tIHRoZSBIVFRQIHJlcXVlc3QgYXJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUgb2JzZXJ2YWJsZSBzdHJlYW0uXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYHRzXHJcbiAgICogLy8gQmFzaWMgdXNhZ2U6XHJcbiAgICogc2VydmljZS5nZXRTaGlwbWVudHNMYW5kaW5nUmVwb3J0KHsgcGFnZTogMSwgcGVyUGFnZTogMjUgfSlcclxuICAgKiAgIC5zdWJzY3JpYmUocmVwb3J0ID0+IHtcclxuICAgKiAgICAgLy8gaGFuZGxlIFNoaXBtZW50c0xhbmRpbmdSZXBvcnRPdXRcclxuICAgKiAgIH0pO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIGdldFNoaXBtZW50c0xhbmRpbmdSZXBvcnQgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFNoaXBtZW50c0xhbmRpbmdSZXBvcnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U2hpcG1lbnRzTGFuZGluZ1JlcG9ydE91dD4+KGAke3RoaXMudXJsfS9zaGlwbWVudHMtbGFuZGluZy1yZXBvcnRgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIHJlcG9ydCBvZiBleHRlcm5hbCBzaGlwbWVudHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciBmaWx0ZXJpbmcgdGhlIGV4dGVybmFsIHNoaXBtZW50cyByZXBvcnQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFeHRlcm5hbFNoaXBtZW50c091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZXh0ZXJuYWwgc2hpcG1lbnRzIHJlcG9ydCBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEV4dGVybmFsU2hpcG1lbnRzUmVwb3J0IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFeHRlcm5hbFNoaXBtZW50c091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxFeHRlcm5hbFNoaXBtZW50c091dD4+KGAke3RoaXMudXJsfS9leHRlcm5hbC1zaGlwbWVudHMtcmVwb3J0YCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSByZXBvcnQgb2YgcHJvbW90aW9uIGNvZGUgZGlzY291bnRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gQW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIHRoZSBwcm9tb3Rpb24gY29kZSBkaXNjb3VudHMgcmVwb3J0LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UHJvbW90aW9uQ29kZURpc2NvdW50c091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcHJvbW90aW9uIGNvZGUgZGlzY291bnRzIHJlcG9ydCBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFByb21vdGlvbkNvZGVEaXNjb3VudHMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFByb21vdGlvbkNvZGVEaXNjb3VudHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8UHJvbW90aW9uQ29kZURpc2NvdW50c091dD4+KGAke3RoaXMudXJsfS9wcm9tb3Rpb24tY29kZS1kaXNjb3VudHNgLCB7XHJcbiAgICAgIHBhcmFtc1xyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZG93bmxvYWRhYmxlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHJhbnNhY3Rpb25JZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgdHJhbnNhY3Rpb24gd2hvc2UgZG93bmxvYWQgaXMgcmVxdWVzdGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgSFRUUCByZXNwb25zZSBjb250YWluaW5nIHRoZSByZXNvdXJjZSBpbiB0aGUgZm9ybSBvZiBhbiBBcnJheUJ1ZmZlci5cclxuICAgKi9cclxuICBnZXREb3dubG9hZCAodHJhbnNhY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVybH0vZG93bmxvYWQvJHt0cmFuc2FjdGlvbklkfWAsIHtcclxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGZpbGUgY2hlY2sgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdHJhbnNhY3Rpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHJhbnNhY3Rpb25JZCAtIFRoZSBJRCBvZiB0aGUgdHJhbnNhY3Rpb24gZm9yIHdoaWNoIHRoZSBmaWxlIGNoZWNrIGluZm9ybWF0aW9uIGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEZpbGVDaGVja091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmlsZSBjaGVjayBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uIElELlxyXG4gICAqL1xyXG4gIGdldEZpbGVDaGVjayAodHJhbnNhY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlQ2hlY2tPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RmlsZUNoZWNrT3V0Pj4oYCR7dGhpcy51cmx9L2ZpbGUtY2hlY2svJHt0cmFuc2FjdGlvbklkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyB0aGUgZmlsZSBjaGVjayBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHRyYW5zYWN0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zYWN0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHRyYW5zYWN0aW9uIHdob3NlIGZpbGUgY2hlY2sgaXMgdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBhZnRlciB0aGUgZGVsZXRpb24gaXMgcHJvY2Vzc2VkLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUZpbGVDaGVjayAodHJhbnNhY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9maWxlLWNoZWNrLyR7dHJhbnNhY3Rpb25JZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBwYXJ0aWFsIHdpdGhkcmF3YWxzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIGxpc3Qgb2YgcGFydGlhbCB3aXRoZHJhd2Fscy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxQYXJ0aWFsV2l0aGRyYXdhbHNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGZpbHRlcmVkIGxpc3Qgb2YgcGFydGlhbCB3aXRoZHJhd2Fscy5cclxuICAgKi9cclxuICBnZXRQYXJ0aWFsV2l0aGRyYXdhbHMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFBhcnRpYWxXaXRoZHJhd2Fsc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxQYXJ0aWFsV2l0aGRyYXdhbHNPdXQ+PihgJHt0aGlzLnVybH0vcGFydGlhbC13aXRoZHJhd2Fsc2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgaW52b2ljZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIGludm9pY2VzLlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBpbnZvaWNlcy5cclxuICAgKi9cclxuICBnZXRJbnZvaWNlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8SW52b2ljZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8SW52b2ljZXNPdXQ+PihgJHt0aGlzLnVybH0vaW52b2ljZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgc2FsZXMgYm9vayByZXBvcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIG9yIGN1c3RvbWl6ZSB0aGUgcmVwb3J0LlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgc2FsZXMgYm9vayByZXBvcnQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIHRoaXMuYXBpUmVwb3J0c1NlcnZpY2UuZ2V0U2FsZXNCb29rUmVwb3J0KHsgcGFnZTogMSwgbGltaXQ6IDEwIH0pXHJcbiAgICogICAuc3Vic2NyaWJlKHJlcG9ydCA9PiBjb25zb2xlLmxvZyhyZXBvcnQpKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBnZXRTYWxlc0Jvb2tSZXBvcnQgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFNhbGVzQm9va1JlcG9ydE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxTYWxlc0Jvb2tSZXBvcnRPdXQ+PihgJHt0aGlzLnVybH0vc2FsZXMtYm9vay1yZXBvcnRgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { map, tap } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngx-cookie-service";
|
|
6
|
+
import * as i2 from "@angular/common/http";
|
|
7
|
+
export class ApiSecurityService {
|
|
8
|
+
environments;
|
|
9
|
+
cookie;
|
|
10
|
+
http;
|
|
11
|
+
constructor(environments, cookie, http) {
|
|
12
|
+
this.environments = environments;
|
|
13
|
+
this.cookie = cookie;
|
|
14
|
+
this.http = http;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Retrieves the API security URL from the environments configuration.
|
|
18
|
+
*
|
|
19
|
+
* @return {string} The API security URL.
|
|
20
|
+
*/
|
|
21
|
+
get url() {
|
|
22
|
+
return this.environments.apiSecurityUrl ?? '';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Handles the login authentication request by sending the login data to the authentication endpoint.
|
|
26
|
+
*
|
|
27
|
+
* @param {AuthLoginIn} body The payload containing login credentials.
|
|
28
|
+
* @return {Observable<AuthLoginOut>} An observable emitting the authentication response data.
|
|
29
|
+
*/
|
|
30
|
+
postAuthLogin(body) {
|
|
31
|
+
return this.http.post(`${this.url}/auth/login`, body)
|
|
32
|
+
.pipe(map(({ data }) => data), tap(({ access_token }) => this.cookie.set(this.environments.authCookie, access_token, { path: '/' })));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handles the user login process by sending user credentials to the authentication endpoint.
|
|
36
|
+
*
|
|
37
|
+
* @param {AuthUserLoginIn} body - The request payload containing user login details such as username and password.
|
|
38
|
+
* @return {Observable<AuthLoginOut>} An observable that emits the authenticated user's login data upon successful login.
|
|
39
|
+
*/
|
|
40
|
+
postAuthUserLogin(body) {
|
|
41
|
+
return this.http.post(`${this.url}/auth/user-login`, body)
|
|
42
|
+
.pipe(map(({ data }) => data));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Logs out the current user by making a POST request to the logout endpoint.
|
|
46
|
+
*
|
|
47
|
+
* This method deletes all cookies after a successful logout.
|
|
48
|
+
*
|
|
49
|
+
* @return {Observable<{}>} An observable that emits the server's response to the logout request.
|
|
50
|
+
*/
|
|
51
|
+
postAuthLogout() {
|
|
52
|
+
return this.http.post(`${this.url}/auth/logout`, null)
|
|
53
|
+
.pipe(map(({ data }) => data), tap(() => this.cookie.delete(this.environments.authCookie, '/')));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new session for a specified model.
|
|
57
|
+
*
|
|
58
|
+
* @param {Object} params - The parameters for creating the session.
|
|
59
|
+
* @param {string} params.modelType - The type of the model.
|
|
60
|
+
* @param {string} params.modelId - The ID of the model.
|
|
61
|
+
* @param {string} [params.token] - Optional authorization token.
|
|
62
|
+
*
|
|
63
|
+
* @return {Observable<SessionOut>} An observable containing the created session details.
|
|
64
|
+
*/
|
|
65
|
+
postSession({ modelType, modelId, token, }) {
|
|
66
|
+
let headers = new HttpHeaders({});
|
|
67
|
+
if (token) {
|
|
68
|
+
headers = headers.set('Authorization', `Bearer ${token}`);
|
|
69
|
+
}
|
|
70
|
+
return this.http.post(`${this.url}/sessions`, {
|
|
71
|
+
model_type: modelType,
|
|
72
|
+
model_id: modelId,
|
|
73
|
+
}, {
|
|
74
|
+
headers
|
|
75
|
+
}).pipe(map(({ data }) => data));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Fetches the authenticated user's information.
|
|
79
|
+
* Sends a GET request to the endpoint '/auth/me' to retrieve information
|
|
80
|
+
* about the currently authenticated user.
|
|
81
|
+
*
|
|
82
|
+
* @return {Observable<AuthMeOut>} An observable that emits the authenticated user's data.
|
|
83
|
+
*/
|
|
84
|
+
getAuthMe() {
|
|
85
|
+
return this.http.get(`${this.url}/auth/me`)
|
|
86
|
+
.pipe(map(({ data }) => data));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Fetches the authenticated user's details from the server.
|
|
90
|
+
*
|
|
91
|
+
* @param token The JWT token used for authorization.
|
|
92
|
+
* @return An Observable that emits the user's details encapsulated in a MeOut object.
|
|
93
|
+
*/
|
|
94
|
+
getOtherMe(token) {
|
|
95
|
+
return this.http.get(`${this.url}/auth/me`, {
|
|
96
|
+
headers: {
|
|
97
|
+
Authorization: `Bearer ${token}`
|
|
98
|
+
}
|
|
99
|
+
}).pipe(map(({ data }) => data));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Fetches a user by their unique ID.
|
|
103
|
+
*
|
|
104
|
+
* @param {number} id - The unique identifier of the user to be fetched.
|
|
105
|
+
* @return {Observable<GetUserOut>} An observable containing the user information.
|
|
106
|
+
*/
|
|
107
|
+
getUser(id) {
|
|
108
|
+
return this.http.get(`${this.url}/users/${id}`)
|
|
109
|
+
.pipe(map(({ data }) => data));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Fetches a list of users from the server based on the specified query parameters.
|
|
113
|
+
*
|
|
114
|
+
* @param {QueryParams} params - The query parameters to filter the list of users.
|
|
115
|
+
* @return {Observable<GetUsersOut>} An observable that emits the list of users retrieved from the server.
|
|
116
|
+
*/
|
|
117
|
+
getUsers(params) {
|
|
118
|
+
return this.http.get(`${this.url}/users`, { params })
|
|
119
|
+
.pipe(map(({ data }) => data));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Updates the information of a specified user on the server.
|
|
123
|
+
*
|
|
124
|
+
* @param {Object} params - The parameter object.
|
|
125
|
+
* @param {Object} params.user - The user object containing updated data.
|
|
126
|
+
* @param {string} params.user.id - The unique identifier of the user to be updated.
|
|
127
|
+
*
|
|
128
|
+
* @return {void} This method does not return a value.
|
|
129
|
+
*/
|
|
130
|
+
putUsers({ user }) {
|
|
131
|
+
return this.http.put(`${this.url}/users/${user.id}`, user)
|
|
132
|
+
.pipe(map(({ data }) => data));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Changes the language for the authenticated user.
|
|
136
|
+
*
|
|
137
|
+
* @param {Object} params - The input parameters for changing the language.
|
|
138
|
+
* @param {string} params.languageId - The ID of the new language to be set.
|
|
139
|
+
* @return {Observable<ApiSuccess<AuthMeOut>>} An observable that emits the result of the language change request.
|
|
140
|
+
*/
|
|
141
|
+
putChangeLanguage({ languageId }) {
|
|
142
|
+
return this.http.put(`${this.url}/auth/me`, {
|
|
143
|
+
language_id: languageId
|
|
144
|
+
}).pipe(map(({ data }) => data));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Retrieves a list of roles with their permissions.
|
|
148
|
+
*
|
|
149
|
+
* @param {QueryParams} params - The query parameters to filter the roles.
|
|
150
|
+
* @returns {Observable<RoleIn[]>} An observable that emits an array of role permissions.
|
|
151
|
+
*/
|
|
152
|
+
getRoles(params) {
|
|
153
|
+
return this.http.get(`${this.url}/roles`, { params })
|
|
154
|
+
.pipe(map(({ data }) => data));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Retrieves roles by the specified ID.
|
|
158
|
+
*
|
|
159
|
+
* @param id - The ID of the role to retrieve.
|
|
160
|
+
* @returns An Observable that emits the role data.
|
|
161
|
+
*/
|
|
162
|
+
getRole(id) {
|
|
163
|
+
return this.http.get(`${this.url}/roles/${id}`)
|
|
164
|
+
.pipe(map(({ data }) => data));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Creates a new role with the specified permissions.
|
|
168
|
+
*
|
|
169
|
+
* @param {RoleIn} body - The permissions and details for the new role.
|
|
170
|
+
* @returns {Observable<RoleOut>} An observable containing the created role's permissions.
|
|
171
|
+
*/
|
|
172
|
+
postRole(body) {
|
|
173
|
+
return this.http.post(`${this.url}/roles`, body)
|
|
174
|
+
.pipe(map(({ data }) => data));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Updates the permissions of a specific role.
|
|
178
|
+
*
|
|
179
|
+
* @param id - The unique identifier of the role to update.
|
|
180
|
+
* @param body - The new permissions to assign to the role.
|
|
181
|
+
* @returns An Observable that emits the updated module permissions.
|
|
182
|
+
*/
|
|
183
|
+
putRole(id, body) {
|
|
184
|
+
return this.http.put(`${this.url}/roles/${id}`, body)
|
|
185
|
+
.pipe(map(({ data }) => data));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Deletes the permissions associated with a specific role.
|
|
189
|
+
*
|
|
190
|
+
* @param {number} id - The unique identifier of the role whose permissions are to be deleted.
|
|
191
|
+
* @returns {Observable<{}>} An observable that emits the result of the delete operation.
|
|
192
|
+
*/
|
|
193
|
+
deleteRole(id) {
|
|
194
|
+
return this.http.delete(`${this.url}/roles/${id}`)
|
|
195
|
+
.pipe(map(({ data }) => data));
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Retrieves the role types from the API.
|
|
199
|
+
*
|
|
200
|
+
* @param {QueryParams} params - The query parameters to be sent with the request.
|
|
201
|
+
* @returns {Observable<RoleTypesOut>} An observable containing the role types output.
|
|
202
|
+
*/
|
|
203
|
+
getRoleTypes(params) {
|
|
204
|
+
return this.http.get(`${this.url}/role-types`, { params })
|
|
205
|
+
.pipe(map(({ data }) => data));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Retrieves a list of modules and permissions
|
|
209
|
+
*
|
|
210
|
+
* @param queryParams - The query parameters to filter the modules.
|
|
211
|
+
* @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.
|
|
212
|
+
*/
|
|
213
|
+
getModules(queryParams) {
|
|
214
|
+
return this.http.get(`${this.url}/modules`, {
|
|
215
|
+
params: queryParams
|
|
216
|
+
}).pipe(map(({ data }) => data));
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Retrieves a list of modules and permissions
|
|
220
|
+
*
|
|
221
|
+
* @param params.token - Custom token for authorization.
|
|
222
|
+
* @param params.queryParams - The query parameters to filter the modules.
|
|
223
|
+
* @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.
|
|
224
|
+
*/
|
|
225
|
+
getModulesByToken(params) {
|
|
226
|
+
return this.http.get(`${this.url}/modules`, {
|
|
227
|
+
params: params.queryParams,
|
|
228
|
+
headers: {
|
|
229
|
+
Authorization: `Bearer ${params.token}`
|
|
230
|
+
}
|
|
231
|
+
}).pipe(map(({ data }) => data));
|
|
232
|
+
}
|
|
233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiSecurityService, deps: [{ token: 'env' }, { token: i1.CookieService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
234
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiSecurityService, providedIn: 'root' });
|
|
235
|
+
}
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiSecurityService, decorators: [{
|
|
237
|
+
type: Injectable,
|
|
238
|
+
args: [{
|
|
239
|
+
providedIn: 'root'
|
|
240
|
+
}]
|
|
241
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
242
|
+
type: Inject,
|
|
243
|
+
args: ['env']
|
|
244
|
+
}] }, { type: i1.CookieService }, { type: i2.HttpClient }] });
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXNlY3VyaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0tbXgvbmd4LXNlcnZpY2VzL3NyYy9saWIvYXBpcy9hcGktc2VjdXJpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQW9CbEQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRTlELE9BQU8sRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7O0FBTTNDLE1BQU0sT0FBTyxrQkFBa0I7SUFFSjtJQUNmO0lBQ0E7SUFIVixZQUN5QixZQUF5QixFQUN4QyxNQUFxQixFQUNyQixJQUFnQjtRQUZELGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3hDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDO0lBRUo7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFBO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBRSxJQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLGFBQWEsRUFBRSxJQUFJLENBQUM7YUFDNUUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUN2QixHQUFHLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVB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SUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFFLFdBQXdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFO1lBQ2xFLE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUUsTUFHbEI7UUFDQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF5QixHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRTtZQUNsRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDMUIsT0FBTyxFQUFFO2dCQUNQLGFBQWEsRUFBRSxVQUFVLE1BQU0sQ0FBQyxLQUFLLEVBQUU7YUFDeEM7U0FDRixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQzt3R0FqUVUsa0JBQWtCLGtCQUVuQixLQUFLOzRHQUZKLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7XHJcbiAgQXV0aExvZ2luSW4sXHJcbiAgQXV0aExvZ2luT3V0LFxyXG4gIEF1dGhNZU91dCxcclxuICBBdXRoVXNlckxvZ2luSW4sXHJcbiAgQ2hhbmdlTGFuZ3VhZ2VJbixcclxuICBHZXRVc2VyT3V0LFxyXG4gIEdldFVzZXJzT3V0LFxyXG4gIE1vZHVsZXNPdXQsXHJcbiAgUHV0VXNlcnNJbixcclxuICBQdXRVc2Vyc091dCxcclxuICBSb2xlSW4sXHJcbiAgUm9sZU91dCxcclxuICBSb2xlc091dCxcclxuICBSb2xlVHlwZXNPdXQsXHJcbiAgU2Vzc2lvbkluLFxyXG4gIFNlc3Npb25PdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktc2VjdXJpdHkudHlwZXMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vbmd4LXNlcnZpY2VzLm1vZGVscydcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpU2VjdXJpdHlTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBBUEkgc2VjdXJpdHkgVVJMIGZyb20gdGhlIGVudmlyb25tZW50cyBjb25maWd1cmF0aW9uLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgQVBJIHNlY3VyaXR5IFVSTC5cclxuICAgKi9cclxuICBnZXQgdXJsICgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnRzLmFwaVNlY3VyaXR5VXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBsb2dpbiBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IGJ5IHNlbmRpbmcgdGhlIGxvZ2luIGRhdGEgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGVuZHBvaW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBdXRoTG9naW5Jbn0gYm9keSBUaGUgcGF5bG9hZCBjb250YWluaW5nIGxvZ2luIGNyZWRlbnRpYWxzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QXV0aExvZ2luT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgZGF0YS5cclxuICAgKi9cclxuICBwb3N0QXV0aExvZ2luIChib2R5OiBBdXRoTG9naW5Jbik6IE9ic2VydmFibGU8QXV0aExvZ2luT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxBdXRoTG9naW5PdXQ+PihgJHt0aGlzLnVybH0vYXV0aC9sb2dpbmAsIGJvZHkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxyXG4gICAgICAgIHRhcCgoeyBhY2Nlc3NfdG9rZW4gfSkgPT4gdGhpcy5jb29raWUuc2V0KHRoaXMuZW52aXJvbm1lbnRzLmF1dGhDb29raWUsIGFjY2Vzc190b2tlbiwgeyBwYXRoOiAnLycgfSkpXHJcbiAgICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHVzZXIgbG9naW4gcHJvY2VzcyBieSBzZW5kaW5nIHVzZXIgY3JlZGVudGlhbHMgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGVuZHBvaW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBdXRoVXNlckxvZ2luSW59IGJvZHkgLSBUaGUgcmVxdWVzdCBwYXlsb2FkIGNvbnRhaW5pbmcgdXNlciBsb2dpbiBkZXRhaWxzIHN1Y2ggYXMgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QXV0aExvZ2luT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIncyBsb2dpbiBkYXRhIHVwb24gc3VjY2Vzc2Z1bCBsb2dpbi5cclxuICAgKi9cclxuICBwb3N0QXV0aFVzZXJMb2dpbiAoYm9keTogQXV0aFVzZXJMb2dpbkluKTogT2JzZXJ2YWJsZTxBdXRoTG9naW5PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEF1dGhMb2dpbk91dD4+KGAke3RoaXMudXJsfS9hdXRoL3VzZXItbG9naW5gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ3Mgb3V0IHRoZSBjdXJyZW50IHVzZXIgYnkgbWFraW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBsb2dvdXQgZW5kcG9pbnQuXHJcbiAgICpcclxuICAgKiBUaGlzIG1ldGhvZCBkZWxldGVzIGFsbCBjb29raWVzIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dvdXQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBzZXJ2ZXIncyByZXNwb25zZSB0byB0aGUgbG9nb3V0IHJlcXVlc3QuXHJcbiAgICovXHJcbiAgcG9zdEF1dGhMb2dvdXQgKCk6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2F1dGgvbG9nb3V0YCwgbnVsbClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY29va2llLmRlbGV0ZSh0aGlzLmVudmlyb25tZW50cy5hdXRoQ29va2llLCAnLycpKVxyXG4gICAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IHNlc3Npb24gZm9yIGEgc3BlY2lmaWVkIG1vZGVsLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBjcmVhdGluZyB0aGUgc2Vzc2lvbi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLm1vZGVsVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLm1vZGVsSWQgLSBUaGUgSUQgb2YgdGhlIG1vZGVsLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnRva2VuXSAtIE9wdGlvbmFsIGF1dGhvcml6YXRpb24gdG9rZW4uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFNlc3Npb25PdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNyZWF0ZWQgc2Vzc2lvbiBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIHBvc3RTZXNzaW9uICh7XHJcbiAgICBtb2RlbFR5cGUsXHJcbiAgICBtb2RlbElkLFxyXG4gICAgdG9rZW4sXHJcbiAgfTogU2Vzc2lvbkluKTogT2JzZXJ2YWJsZTxTZXNzaW9uT3V0PiB7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7fSlcclxuXHJcbiAgICBpZiAodG9rZW4pIHsgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxTZXNzaW9uT3V0Pj4oXHJcbiAgICAgIGAke3RoaXMudXJsfS9zZXNzaW9uc2AsIHtcclxuICAgICAgICBtb2RlbF90eXBlOiBtb2RlbFR5cGUsXHJcbiAgICAgICAgbW9kZWxfaWQ6IG1vZGVsSWQsXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIncyBpbmZvcm1hdGlvbi5cclxuICAgKiBTZW5kcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBlbmRwb2ludCAnL2F1dGgvbWUnIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uXHJcbiAgICogYWJvdXQgdGhlIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkIHVzZXIuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEF1dGhNZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgZGF0YS5cclxuICAgKi9cclxuICBnZXRBdXRoTWUgKCk6IE9ic2VydmFibGU8QXV0aE1lT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEF1dGhNZU91dD4+KGAke3RoaXMudXJsfS9hdXRoL21lYClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIncyBkZXRhaWxzIGZyb20gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB0b2tlbiBUaGUgSldUIHRva2VuIHVzZWQgZm9yIGF1dGhvcml6YXRpb24uXHJcbiAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVzZXIncyBkZXRhaWxzIGVuY2Fwc3VsYXRlZCBpbiBhIE1lT3V0IG9iamVjdC5cclxuICAgKi9cclxuICBnZXRPdGhlck1lICh0b2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxBdXRoTWVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QXV0aE1lT3V0Pj4oYCR7dGhpcy51cmx9L2F1dGgvbWVgLCB7XHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICB9XHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIHVzZXIgYnkgdGhlaXIgdW5pcXVlIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSB1c2VyIHRvIGJlIGZldGNoZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRVc2VyT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1c2VyIGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIGdldFVzZXIgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEdldFVzZXJPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8R2V0VXNlck91dD4+KGAke3RoaXMudXJsfS91c2Vycy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgdXNlcnMgZnJvbSB0aGUgc2VydmVyIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgbGlzdCBvZiB1c2Vycy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldFVzZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsaXN0IG9mIHVzZXJzIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgZ2V0VXNlcnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEdldFVzZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEdldFVzZXJzT3V0Pj4oYCR7dGhpcy51cmx9L3VzZXJzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBpbmZvcm1hdGlvbiBvZiBhIHNwZWNpZmllZCB1c2VyIG9uIHRoZSBzZXJ2ZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlciBvYmplY3QuXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcy51c2VyIC0gVGhlIHVzZXIgb2JqZWN0IGNvbnRhaW5pbmcgdXBkYXRlZCBkYXRhLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMudXNlci5pZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgdXNlciB0byBiZSB1cGRhdGVkLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH0gVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuXHJcbiAgICovXHJcbiAgcHV0VXNlcnMgKHsgdXNlciB9OiBQdXRVc2Vyc0luKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFB1dFVzZXJzT3V0Pj4oYCR7dGhpcy51cmx9L3VzZXJzLyR7dXNlci5pZH1gLCB1c2VyKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIGxhbmd1YWdlIGZvciB0aGUgYXV0aGVudGljYXRlZCB1c2VyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBjaGFuZ2luZyB0aGUgbGFuZ3VhZ2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5sYW5ndWFnZUlkIC0gVGhlIElEIG9mIHRoZSBuZXcgbGFuZ3VhZ2UgdG8gYmUgc2V0LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QXBpU3VjY2VzczxBdXRoTWVPdXQ+Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXN1bHQgb2YgdGhlIGxhbmd1YWdlIGNoYW5nZSByZXF1ZXN0LlxyXG4gICAqL1xyXG4gIHB1dENoYW5nZUxhbmd1YWdlICh7XHJcbiAgICBsYW5ndWFnZUlkXHJcbiAgfTogQ2hhbmdlTGFuZ3VhZ2VJbik6IE9ic2VydmFibGU8QXV0aE1lT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEF1dGhNZU91dD4+KGAke3RoaXMudXJsfS9hdXRoL21lYCwge1xyXG4gICAgICBsYW5ndWFnZV9pZDogbGFuZ3VhZ2VJZFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygcm9sZXMgd2l0aCB0aGVpciBwZXJtaXNzaW9ucy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgcm9sZXMuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Um9sZUluW10+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gYXJyYXkgb2Ygcm9sZSBwZXJtaXNzaW9ucy5cclxuICAgKi9cclxuICBnZXRSb2xlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Um9sZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Um9sZXNPdXQ+PihgJHt0aGlzLnVybH0vcm9sZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyByb2xlcyBieSB0aGUgc3BlY2lmaWVkIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSByb2xlIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcm9sZSBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFJvbGUgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJvbGVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Um9sZU91dD4+KGAke3RoaXMudXJsfS9yb2xlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyByb2xlIHdpdGggdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9ucy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Um9sZUlufSBib2R5IC0gVGhlIHBlcm1pc3Npb25zIGFuZCBkZXRhaWxzIGZvciB0aGUgbmV3IHJvbGUuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Um9sZU91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY3JlYXRlZCByb2xlJ3MgcGVybWlzc2lvbnMuXHJcbiAgICovXHJcbiAgcG9zdFJvbGUgKGJvZHk6IFJvbGVJbik6IE9ic2VydmFibGU8Um9sZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8Um9sZU91dD4+KGAke3RoaXMudXJsfS9yb2xlc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgcGVybWlzc2lvbnMgb2YgYSBzcGVjaWZpYyByb2xlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByb2xlIHRvIHVwZGF0ZS5cclxuICAgKiBAcGFyYW0gYm9keSAtIFRoZSBuZXcgcGVybWlzc2lvbnMgdG8gYXNzaWduIHRvIHRoZSByb2xlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBtb2R1bGUgcGVybWlzc2lvbnMuXHJcbiAgICovXHJcbiAgcHV0Um9sZSAoaWQ6IG51bWJlciwgYm9keTogUm9sZUluKTogT2JzZXJ2YWJsZTxSb2xlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFJvbGVPdXQ+PihgJHt0aGlzLnVybH0vcm9sZXMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgdGhlIHBlcm1pc3Npb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHJvbGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJvbGUgd2hvc2UgcGVybWlzc2lvbnMgYXJlIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSb2xlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9yb2xlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSByb2xlIHR5cGVzIGZyb20gdGhlIEFQSS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxSb2xlVHlwZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHJvbGUgdHlwZXMgb3V0cHV0LlxyXG4gICAqL1xyXG4gIGdldFJvbGVUeXBlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Um9sZVR5cGVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFJvbGVUeXBlc091dD4+KGAke3RoaXMudXJsfS9yb2xlLXR5cGVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIG1vZHVsZXMgYW5kIHBlcm1pc3Npb25zXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlQYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIG1vZHVsZXMuXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxNb2R1bGVzT3V0W10+IC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGFycmF5IG9mIG1vZHVsZXMgYW5kIHBlcm1pc3Npb25zLlxyXG4gICAqL1xyXG4gIGdldE1vZHVsZXMgKHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TW9kdWxlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxNb2R1bGVzT3V0Pj4oYCR7dGhpcy51cmx9L21vZHVsZXNgLCB7XHJcbiAgICAgIHBhcmFtczogcXVlcnlQYXJhbXNcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIG1vZHVsZXMgYW5kIHBlcm1pc3Npb25zXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zLnRva2VuIC0gQ3VzdG9tIHRva2VuIGZvciBhdXRob3JpemF0aW9uLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMucXVlcnlQYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIG1vZHVsZXMuXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxNb2R1bGVzT3V0W10+IC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGFycmF5IG9mIG1vZHVsZXMgYW5kIHBlcm1pc3Npb25zLlxyXG4gICAqL1xyXG4gIGdldE1vZHVsZXNCeVRva2VuIChwYXJhbXM6IHtcclxuICAgIHRva2VuOiBzdHJpbmcsXHJcbiAgICBxdWVyeVBhcmFtczogUXVlcnlQYXJhbXNcclxuICB9KTogT2JzZXJ2YWJsZTxNb2R1bGVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPE1vZHVsZXNPdXQ+PihgJHt0aGlzLnVybH0vbW9kdWxlc2AsIHtcclxuICAgICAgcGFyYW1zOiBwYXJhbXMucXVlcnlQYXJhbXMsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cGFyYW1zLnRva2VufWBcclxuICAgICAgfVxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcbn1cclxuIl19
|