@acorex/connectivity 20.7.21 → 20.8.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/fesm2022/{acorex-connectivity-api-execute.command-Di850KiF.mjs → acorex-connectivity-api-execute.command-D2Q0ahw4.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-api-execute.command-Di850KiF.mjs.map → acorex-connectivity-api-execute.command-D2Q0ahw4.mjs.map} +1 -1
- package/fesm2022/acorex-connectivity-api.mjs +37 -37
- package/fesm2022/acorex-connectivity-api.mjs.map +1 -1
- package/fesm2022/{acorex-connectivity-mock-assign-to-manager.command-T6-ao4e9.mjs → acorex-connectivity-mock-assign-to-manager.command-CzzTHBVX.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-assign-to-manager.command-T6-ao4e9.mjs.map → acorex-connectivity-mock-assign-to-manager.command-CzzTHBVX.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs → acorex-connectivity-mock-category-with-items.query-DWW7t6nc.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs.map → acorex-connectivity-mock-category-with-items.query-DWW7t6nc.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs → acorex-connectivity-mock-check-permission.command-DFcxfjxp.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs.map → acorex-connectivity-mock-check-permission.command-DFcxfjxp.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs → acorex-connectivity-mock-complete-signature-process.command-BG_rxbUl.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs.map → acorex-connectivity-mock-complete-signature-process.command-BG_rxbUl.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs → acorex-connectivity-mock-distribution-record.command-BopU0LyU.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs.map → acorex-connectivity-mock-distribution-record.command-BopU0LyU.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs → acorex-connectivity-mock-get-application-versions-chart-data.query-uwDUrbFJ.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs.map → acorex-connectivity-mock-get-application-versions-chart-data.query-uwDUrbFJ.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs → acorex-connectivity-mock-get-application-versions-timeline.query-BHjQYTyZ.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs.map → acorex-connectivity-mock-get-application-versions-timeline.query-BHjQYTyZ.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs → acorex-connectivity-mock-get-employee-list.query-Ch-Vh5GE.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs.map → acorex-connectivity-mock-get-employee-list.query-Ch-Vh5GE.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs → acorex-connectivity-mock-get-location-list.query-Xbc6d8kb.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs.map → acorex-connectivity-mock-get-location-list.query-Xbc6d8kb.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs → acorex-connectivity-mock-get-product-chart-data.query-m8_ME45B.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs.map → acorex-connectivity-mock-get-product-chart-data.query-m8_ME45B.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs → acorex-connectivity-mock-get-product-list.query-DzkssYRw.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs.map → acorex-connectivity-mock-get-product-list.query-DzkssYRw.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs → acorex-connectivity-mock-get-product-pdf-data.query-wMD65pwR.mjs} +5 -5
- package/fesm2022/{acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs.map → acorex-connectivity-mock-get-product-pdf-data.query-wMD65pwR.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs → acorex-connectivity-mock-get-subscriptions-chart-data.query-DBOT_0IN.mjs} +5 -5
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs.map → acorex-connectivity-mock-get-subscriptions-chart-data.query-DBOT_0IN.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs → acorex-connectivity-mock-get-subscriptions-timeline.query-DBEEbeiS.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs.map → acorex-connectivity-mock-get-subscriptions-timeline.query-DBEEbeiS.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs → acorex-connectivity-mock-get-tenant-application-access.query-BM9toJ45.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs.map → acorex-connectivity-mock-get-tenant-application-access.query-BM9toJ45.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs → acorex-connectivity-mock-get-tenant-registration-chart-data.query-CACCBXn-.mjs} +5 -5
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs.map → acorex-connectivity-mock-get-tenant-registration-chart-data.query-CACCBXn-.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs → acorex-connectivity-mock-get-tenant-registration-timeline.query-CfDjhtaC.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs.map → acorex-connectivity-mock-get-tenant-registration-timeline.query-CfDjhtaC.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs → acorex-connectivity-mock-get-tenant-user-distribution.query-CZXvavUh.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs.map → acorex-connectivity-mock-get-tenant-user-distribution.query-CZXvavUh.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs → acorex-connectivity-mock-notify-signers.command-BV-b8NBg.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs.map → acorex-connectivity-mock-notify-signers.command-BV-b8NBg.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs → acorex-connectivity-mock-request-signature.command-DZyVnhAp.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs.map → acorex-connectivity-mock-request-signature.command-DZyVnhAp.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-sample.command-CyrjdvEA.mjs → acorex-connectivity-mock-sample.command-CXz1poTn.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-sample.command-CyrjdvEA.mjs.map → acorex-connectivity-mock-sample.command-CXz1poTn.mjs.map} +1 -1
- package/fesm2022/{acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs → acorex-connectivity-mock-validate-all-signatures.command-leYngRtS.mjs} +4 -4
- package/fesm2022/{acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs.map → acorex-connectivity-mock-validate-all-signatures.command-leYngRtS.mjs.map} +1 -1
- package/fesm2022/acorex-connectivity-mock.mjs +907 -17742
- package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
- package/fesm2022/acorex-connectivity-utils.mjs +7 -7
- package/fesm2022/acorex-connectivity-utils.mjs.map +1 -1
- package/mock/index.d.ts +7 -8
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-registration-chart-data.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { GetTenantRegistrationTimelineQuery } from './get-tenant-registration-timeline.query';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantRegistrationChartDataQuery {\n constructor() {\n this.tenantRegistrationTimelineQuery = inject(GetTenantRegistrationTimelineQuery);\n }\n async fetch(input) {\n // Get all tenant registration timeline data (no pagination for charts)\n const timelineResult = await this.tenantRegistrationTimelineQuery.fetch({\n skip: 0,\n take: 10000,\n filters: input.filters,\n logic: input.logic,\n });\n // Group by month\n const monthGroups = new Map();\n for (const item of timelineResult.items) {\n const monthKey = `${item.year}-${String(item.monthNumber).padStart(2, '0')}`;\n if (!monthGroups.has(monthKey)) {\n monthGroups.set(monthKey, {\n month: item.month,\n year: item.year,\n quarter: item.quarter,\n tenantCount: 0,\n });\n }\n const group = monthGroups.get(monthKey);\n group.tenantCount++;\n }\n // Convert to array and sort by date\n const results = Array.from(monthGroups.values()).sort((a, b) => {\n if (a.year !== b.year)\n return a.year - b.year;\n const monthA = new Date(`${a.month} 1, ${a.year}`).getMonth();\n const monthB = new Date(`${b.month} 1, ${b.year}`).getMonth();\n return monthA - monthB;\n });\n return {\n items: results,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tY2hhcnQtZGF0YS5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi90ZW5hbnQtbWFuYWdlbWVudC9yZXBvcnRzL2dldC10ZW5hbnQtcmVnaXN0cmF0aW9uLWNoYXJ0LWRhdGEucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBd0I5RixZQUFZO0FBS1osTUFBTSxPQUFPLG1DQUFtQztJQUhoRDtRQU1tQixvQ0FBK0IsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztLQTBDL0Y7SUF4Q0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFxRDtRQUMvRCx1RUFBdUU7UUFDdkUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDO1lBQ3RFLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUVILGlCQUFpQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNkMsQ0FBQztRQUV6RSxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFFN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsV0FBVyxFQUFFLENBQUM7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUQsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQztJQUNKLENBQUM7K0dBNUNVLG1DQUFtQzttSEFBbkMsbUNBQW1DLGNBRmxDLE1BQU07OzRGQUVQLG1DQUFtQztrQkFIL0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCB9IGZyb20gJy4vZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnknO1xuaW1wb3J0IHsgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeSB9IGZyb20gJy4vZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnknO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeUlucHV0IHtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHQge1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBudW1iZXI7XG4gIHF1YXJ0ZXI6IHN0cmluZztcbiAgdGVuYW50Q291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeVJlc3VsdCB7XG4gIGl0ZW1zOiBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHRbXTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5SW5wdXQsIEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IHRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnkgPSBpbmplY3QoR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeSk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gR2V0IGFsbCB0ZW5hbnQgcmVnaXN0cmF0aW9uIHRpbWVsaW5lIGRhdGEgKG5vIHBhZ2luYXRpb24gZm9yIGNoYXJ0cylcbiAgICBjb25zdCB0aW1lbGluZVJlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeS5mZXRjaCh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgICBmaWx0ZXJzOiBpbnB1dC5maWx0ZXJzLFxuICAgICAgbG9naWM6IGlucHV0LmxvZ2ljLFxuICAgIH0pO1xuXG4gICAgLy8gR3JvdXAgYnkgbW9udGhcbiAgICBjb25zdCBtb250aEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHQ+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGltZWxpbmVSZXN1bHQuaXRlbXMpIHtcbiAgICAgIGNvbnN0IG1vbnRoS2V5ID0gYCR7aXRlbS55ZWFyfS0ke1N0cmluZyhpdGVtLm1vbnRoTnVtYmVyKS5wYWRTdGFydCgyLCAnMCcpfWA7XG5cbiAgICAgIGlmICghbW9udGhHcm91cHMuaGFzKG1vbnRoS2V5KSkge1xuICAgICAgICBtb250aEdyb3Vwcy5zZXQobW9udGhLZXksIHtcbiAgICAgICAgICBtb250aDogaXRlbS5tb250aCxcbiAgICAgICAgICB5ZWFyOiBpdGVtLnllYXIsXG4gICAgICAgICAgcXVhcnRlcjogaXRlbS5xdWFydGVyLFxuICAgICAgICAgIHRlbmFudENvdW50OiAwLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ3JvdXAgPSBtb250aEdyb3Vwcy5nZXQobW9udGhLZXkpITtcbiAgICAgIGdyb3VwLnRlbmFudENvdW50Kys7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0byBhcnJheSBhbmQgc29ydCBieSBkYXRlXG4gICAgY29uc3QgcmVzdWx0cyA9IEFycmF5LmZyb20obW9udGhHcm91cHMudmFsdWVzKCkpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnllYXIgIT09IGIueWVhcikgcmV0dXJuIGEueWVhciAtIGIueWVhcjtcbiAgICAgIGNvbnN0IG1vbnRoQSA9IG5ldyBEYXRlKGAke2EubW9udGh9IDEsICR7YS55ZWFyfWApLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBtb250aEIgPSBuZXcgRGF0ZShgJHtiLm1vbnRofSAxLCAke2IueWVhcn1gKS5nZXRNb250aCgpO1xuICAgICAgcmV0dXJuIG1vbnRoQSAtIG1vbnRoQjtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogcmVzdWx0cyxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-get-tenant-registration-chart-data.query-CACCBXn-.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-registration-chart-data.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { GetTenantRegistrationTimelineQuery } from './get-tenant-registration-timeline.query';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantRegistrationChartDataQuery {\n constructor() {\n this.tenantRegistrationTimelineQuery = inject(GetTenantRegistrationTimelineQuery);\n }\n async fetch(input) {\n // Get all tenant registration timeline data (no pagination for charts)\n const timelineResult = await this.tenantRegistrationTimelineQuery.fetch({\n skip: 0,\n take: 10000,\n filters: input.filters,\n logic: input.logic,\n });\n // Group by month\n const monthGroups = new Map();\n for (const item of timelineResult.items) {\n const monthKey = `${item.year}-${String(item.monthNumber).padStart(2, '0')}`;\n if (!monthGroups.has(monthKey)) {\n monthGroups.set(monthKey, {\n month: item.month,\n year: item.year,\n quarter: item.quarter,\n tenantCount: 0,\n });\n }\n const group = monthGroups.get(monthKey);\n group.tenantCount++;\n }\n // Convert to array and sort by date\n const results = Array.from(monthGroups.values()).sort((a, b) => {\n if (a.year !== b.year)\n return a.year - b.year;\n const monthA = new Date(`${a.month} 1, ${a.year}`).getMonth();\n const monthB = new Date(`${b.month} 1, ${b.year}`).getMonth();\n return monthA - monthB;\n });\n return {\n items: results,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationChartDataQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tY2hhcnQtZGF0YS5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi90ZW5hbnQtbWFuYWdlbWVudC9yZXBvcnRzL2dldC10ZW5hbnQtcmVnaXN0cmF0aW9uLWNoYXJ0LWRhdGEucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBd0I5RixZQUFZO0FBS1osTUFBTSxPQUFPLG1DQUFtQztJQUhoRDtRQU1tQixvQ0FBK0IsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztLQTBDL0Y7SUF4Q0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFxRDtRQUMvRCx1RUFBdUU7UUFDdkUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDO1lBQ3RFLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUVILGlCQUFpQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNkMsQ0FBQztRQUV6RSxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFFN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsV0FBVyxFQUFFLENBQUM7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUQsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQztJQUNKLENBQUM7K0dBNUNVLG1DQUFtQzttSEFBbkMsbUNBQW1DLGNBRmxDLE1BQU07OzRGQUVQLG1DQUFtQztrQkFIL0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCB9IGZyb20gJy4vZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnknO1xuaW1wb3J0IHsgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeSB9IGZyb20gJy4vZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnknO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeUlucHV0IHtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHQge1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBudW1iZXI7XG4gIHF1YXJ0ZXI6IHN0cmluZztcbiAgdGVuYW50Q291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeVJlc3VsdCB7XG4gIGl0ZW1zOiBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHRbXTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5SW5wdXQsIEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IHRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnkgPSBpbmplY3QoR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeSk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFRlbmFudFJlZ2lzdHJhdGlvbkNoYXJ0RGF0YVF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gR2V0IGFsbCB0ZW5hbnQgcmVnaXN0cmF0aW9uIHRpbWVsaW5lIGRhdGEgKG5vIHBhZ2luYXRpb24gZm9yIGNoYXJ0cylcbiAgICBjb25zdCB0aW1lbGluZVJlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeS5mZXRjaCh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgICBmaWx0ZXJzOiBpbnB1dC5maWx0ZXJzLFxuICAgICAgbG9naWM6IGlucHV0LmxvZ2ljLFxuICAgIH0pO1xuXG4gICAgLy8gR3JvdXAgYnkgbW9udGhcbiAgICBjb25zdCBtb250aEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBUZW5hbnRSZWdpc3RyYXRpb25DaGFydERhdGFSZXN1bHQ+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGltZWxpbmVSZXN1bHQuaXRlbXMpIHtcbiAgICAgIGNvbnN0IG1vbnRoS2V5ID0gYCR7aXRlbS55ZWFyfS0ke1N0cmluZyhpdGVtLm1vbnRoTnVtYmVyKS5wYWRTdGFydCgyLCAnMCcpfWA7XG5cbiAgICAgIGlmICghbW9udGhHcm91cHMuaGFzKG1vbnRoS2V5KSkge1xuICAgICAgICBtb250aEdyb3Vwcy5zZXQobW9udGhLZXksIHtcbiAgICAgICAgICBtb250aDogaXRlbS5tb250aCxcbiAgICAgICAgICB5ZWFyOiBpdGVtLnllYXIsXG4gICAgICAgICAgcXVhcnRlcjogaXRlbS5xdWFydGVyLFxuICAgICAgICAgIHRlbmFudENvdW50OiAwLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ3JvdXAgPSBtb250aEdyb3Vwcy5nZXQobW9udGhLZXkpITtcbiAgICAgIGdyb3VwLnRlbmFudENvdW50Kys7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0byBhcnJheSBhbmQgc29ydCBieSBkYXRlXG4gICAgY29uc3QgcmVzdWx0cyA9IEFycmF5LmZyb20obW9udGhHcm91cHMudmFsdWVzKCkpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnllYXIgIT09IGIueWVhcikgcmV0dXJuIGEueWVhciAtIGIueWVhcjtcbiAgICAgIGNvbnN0IG1vbnRoQSA9IG5ldyBEYXRlKGAke2EubW9udGh9IDEsICR7YS55ZWFyfWApLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBtb250aEIgPSBuZXcgRGF0ZShgJHtiLm1vbnRofSAxLCAke2IueWVhcn1gKS5nZXRNb250aCgpO1xuICAgICAgcmV0dXJuIG1vbnRoQSAtIG1vbnRoQjtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogcmVzdWx0cyxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -280,10 +280,10 @@ class GetTenantRegistrationTimelineQuery {
|
|
|
280
280
|
return regDate >= startDate && regDate <= endDate;
|
|
281
281
|
});
|
|
282
282
|
}
|
|
283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
284
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantRegistrationTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
284
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantRegistrationTimelineQuery, providedIn: 'root' }); }
|
|
285
285
|
}
|
|
286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantRegistrationTimelineQuery, decorators: [{
|
|
287
287
|
type: Injectable,
|
|
288
288
|
args: [{
|
|
289
289
|
providedIn: 'root',
|
|
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
291
291
|
}] });
|
|
292
292
|
|
|
293
293
|
export { GetTenantRegistrationTimelineQuery };
|
|
294
|
-
//# sourceMappingURL=acorex-connectivity-mock-get-tenant-registration-timeline.query-
|
|
294
|
+
//# sourceMappingURL=acorex-connectivity-mock-get-tenant-registration-timeline.query-CfDjhtaC.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-registration-timeline.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport { RootConfig as SubscriptionRootConfig } from '@acorex/modules/subscription-management';\nimport { RootConfig as ApplicationRootConfig } from '@acorex/modules/application-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantRegistrationTimelineQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n this.tenantUserService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenantUser.name}`)\n .data();\n this.subscriptionService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscription.name}`)\n .data();\n this.planItemService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscriptionPlanItem.name}`)\n .data();\n this.applicationService = this.entityService\n .withEntity(`${ApplicationRootConfig.module.name}.${ApplicationRootConfig.entities.application.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractTenantFilters(input.filters);\n const filterLogic = input.filters?.logic || input.logic || 'and';\n // Separate custom filters from entity filters\n const entityFilters = [];\n let dateRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'dateRange') {\n dateRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all tenants\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n filter: entityFilters.length > 0\n ? {\n logic: filterLogic,\n filters: entityFilters,\n }\n : undefined,\n });\n let tenants = tenantsResult.items.filter((t) => t.registrationDate);\n // Apply date range filter if provided\n if (dateRangeFilter) {\n tenants = this.applyDateRangeFilter(tenants, dateRangeFilter);\n }\n // Get all tenant users for counting\n const tenantUsersResult = await this.tenantUserService.query({\n skip: 0,\n take: 10000,\n });\n const tenantUsers = tenantUsersResult.items;\n // Get all subscriptions for counting\n const subscriptionsResult = await this.subscriptionService.query({\n skip: 0,\n take: 10000,\n });\n const subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');\n // Get all plan items and applications for application counting\n const planItemsResult = await this.planItemService.query({\n skip: 0,\n take: 10000,\n });\n const planItems = planItemsResult.items;\n const applicationsResult = await this.applicationService.query({\n skip: 0,\n take: 10000,\n });\n const applications = applicationsResult.items;\n // Get application counts for tenants\n const applicationCounts = await this.getApplicationCountsForTenants(tenants.map((t) => t.id), subscriptions, planItems, applications);\n // Build results\n const results = [];\n for (const tenant of tenants) {\n if (!tenant.registrationDate)\n continue;\n const registrationDate = new Date(tenant.registrationDate);\n // Extract time period info\n const year = registrationDate.getFullYear();\n const month = registrationDate.getMonth() + 1;\n const monthName = registrationDate.toLocaleString('en-US', { month: 'long' });\n const quarter = Math.ceil(month / 3);\n const quarterName = `Q${quarter}`;\n // Count users for this tenant\n const userCount = tenantUsers.filter((tu) => tu.tenantId === tenant.id).length;\n // Count subscriptions for this tenant\n const subscriptionCount = subscriptions.filter((s) => s.subscriberId === tenant.id).length;\n // Get application count\n const applicationCount = applicationCounts.get(tenant.id) || 0;\n results.push({\n tenantId: tenant.id,\n tenantName: tenant.title,\n registrationDate: registrationDate,\n registrationDateStr: registrationDate.toISOString(),\n status: tenant.statusId || 'Unknown',\n country: tenant.country?.title,\n userCount: userCount,\n applicationCount: applicationCount,\n subscriptionCount: subscriptionCount,\n month: monthName,\n monthNumber: month,\n quarter: quarterName,\n year: year,\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n results.sort((a, b) => {\n for (const sortField of input.sort) {\n const field = sortField.field;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n if (aValue === undefined && bValue === undefined)\n continue;\n if (aValue === undefined)\n return 1 * dir;\n if (bValue === undefined)\n return -1 * dir;\n // Handle date comparison\n if (field === 'registrationDate') {\n const aDate = a.registrationDate.getTime();\n const bDate = b.registrationDate.getTime();\n if (aDate < bDate)\n return -1 * dir;\n if (aDate > bDate)\n return 1 * dir;\n continue;\n }\n if (aValue < bValue)\n return -1 * dir;\n if (aValue > bValue)\n return 1 * dir;\n }\n return 0;\n });\n }\n else {\n // Default sort by registration date descending (newest first)\n results.sort((a, b) => {\n return b.registrationDate.getTime() - a.registrationDate.getTime();\n });\n }\n // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = results.length;\n const items = results.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Helper Methods ----\n /**\n * Get application counts for tenants\n */\n async getApplicationCountsForTenants(tenantIds, subscriptions, planItems, applications) {\n const counts = new Map();\n for (const tenantId of tenantIds) {\n const tenantSubscriptions = subscriptions.filter((s) => s.subscriberId === tenantId);\n // Get unique applications through subscriptions → plans → plan items → editions → applications\n const applicationSet = new Set();\n for (const subscription of tenantSubscriptions) {\n if (!subscription.planId)\n continue;\n // Get plan items for this plan\n const planPlanItems = planItems.filter((pi) => pi.planId === subscription.planId);\n for (const planItem of planPlanItems) {\n if (!planItem.editionId)\n continue;\n // Find applications that have this edition\n for (const application of applications) {\n if (application.editionIds && application.editionIds.includes(planItem.editionId)) {\n applicationSet.add(application.id);\n }\n }\n }\n }\n counts.set(tenantId, applicationSet.size);\n }\n return counts;\n }\n //#endregion\n //#region ---- Filter Extraction ----\n /**\n * Extract tenant-specific filters from AXPFilterClause format\n * Maps report parameter paths to tenant entity field names\n */\n extractTenantFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n // Handle tenant-specific field mappings\n if (field === 'tenantId') {\n // Tenant ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'id',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'id',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'statusId') {\n // Status filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'statusId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'dateRange') {\n // Date range filter - custom logic handled in query\n filters.push({\n field: 'dateRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n return filters;\n }\n //#endregion\n //#region ---- Custom Filter Handlers ----\n /**\n * Apply date range filter to tenants\n */\n applyDateRangeFilter(tenants, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return tenants;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return tenants.filter((tenant) => {\n if (!tenant.registrationDate)\n return false;\n const regDate = new Date(tenant.registrationDate);\n return regDate >= startDate && regDate <= endDate;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvdGVuYW50LW1hbmFnZW1lbnQvcmVwb3J0cy9nZXQtdGVuYW50LXJlZ2lzdHJhdGlvbi10aW1lbGluZS5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU1sRSxPQUFPLEVBQUUsVUFBVSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsSUFBSSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLElBQUkscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFxQzdGLFlBQVk7QUFLWixNQUFNLE9BQU8sa0NBQWtDO0lBSC9DO1FBTW1CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTthQUN2QyxVQUFVLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDdEYsSUFBSSxFQUFnRCxDQUFDO1FBQ2hELHNCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhO2FBQzNDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMxRixJQUFJLEVBQW9ELENBQUM7UUFDcEQs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LFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLE9BQU8sSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBOVRVLGtDQUFrQzttSEFBbEMsa0NBQWtDLGNBRmpDLE1BQU07OzRGQUVQLGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVN1YnNjcmlwdGlvbk1hbmFnZW1lbnRTdWJzY3JpcHRpb25QbGFuSXRlbUVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBSb290Q29uZmlnIGFzIFRlbmFudFJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyBhcyBTdWJzY3JpcHRpb25Sb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFJvb3RDb25maWcgYXMgQXBwbGljYXRpb25Sb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5SW5wdXQge1xuICBza2lwPzogbnVtYmVyO1xuICB0YWtlPzogbnVtYmVyO1xuICBzb3J0PzogQXJyYXk8eyBmaWVsZDogc3RyaW5nOyBkaXI6ICdhc2MnIHwgJ2Rlc2MnIH0+O1xuICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0b3I6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgdmFsdWU6IGFueTtcbiAgfT47XG4gIGxvZ2ljPzogJ2FuZCcgfCAnb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUmVzdWx0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICByZWdpc3RyYXRpb25EYXRlOiBEYXRlO1xuICByZWdpc3RyYXRpb25EYXRlU3RyOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBjb3VudHJ5Pzogc3RyaW5nO1xuICB1c2VyQ291bnQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25Db3VudDogbnVtYmVyO1xuICBzdWJzY3JpcHRpb25Db3VudDogbnVtYmVyO1xuICBtb250aDogc3RyaW5nO1xuICBtb250aE51bWJlcjogbnVtYmVyO1xuICBxdWFydGVyOiBzdHJpbmc7XG4gIHllYXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUmVzdWx0W107XG4gIHRvdGFsOiBudW1iZXI7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCwgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVJlc3VsdD5cbntcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHRlbmFudFNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtUZW5hbnRSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1RlbmFudFJvb3RDb25maWcuZW50aXRpZXMudGVuYW50Lm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRFbnRpdHlNb2RlbD4oKTtcbiAgcHJpdmF0ZSB0ZW5hbnRVc2VyU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1RlbmFudFJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7VGVuYW50Um9vdENvbmZpZy5lbnRpdGllcy50ZW5hbnRVc2VyLm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWw+KCk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb24ubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHBsYW5JdGVtU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb25QbGFuSXRlbS5uYW1lfWApXG4gICAgLmRhdGE8c3RyaW5nLCBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uUGxhbkl0ZW1FbnRpdHlNb2RlbD4oKTtcbiAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtBcHBsaWNhdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7QXBwbGljYXRpb25Sb290Q29uZmlnLmVudGl0aWVzLmFwcGxpY2F0aW9uLm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWw+KCk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCB8IGFueSk6IFByb21pc2U8R2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVJlc3VsdD4ge1xuICAgIC8vIEV4dHJhY3QgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0VGVuYW50RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcbiAgICBjb25zdCBmaWx0ZXJMb2dpYyA9IChpbnB1dC5maWx0ZXJzIGFzIGFueSk/LmxvZ2ljIHx8IGlucHV0LmxvZ2ljIHx8ICdhbmQnO1xuXG4gICAgLy8gU2VwYXJhdGUgY3VzdG9tIGZpbHRlcnMgZnJvbSBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGVudGl0eUZpbHRlcnM6IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG4gICAgbGV0IGRhdGVSYW5nZUZpbHRlcjogYW55O1xuXG4gICAgaWYgKGV4dHJhY3RlZEZpbHRlcnMgJiYgZXh0cmFjdGVkRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBleHRyYWN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgIGlmIChmaWx0ZXIuZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgICAgZGF0ZVJhbmdlRmlsdGVyID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudGl0eUZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IGFsbCB0ZW5hbnRzXG4gICAgY29uc3QgdGVuYW50c1Jlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgICBmaWx0ZXI6XG4gICAgICAgIGVudGl0eUZpbHRlcnMubGVuZ3RoID4gMFxuICAgICAgICAgID8gKHtcbiAgICAgICAgICAgIGxvZ2ljOiBmaWx0ZXJMb2dpYyxcbiAgICAgICAgICAgIGZpbHRlcnM6IGVudGl0eUZpbHRlcnMsXG4gICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBsZXQgdGVuYW50cyA9IHRlbmFudHNSZXN1bHQuaXRlbXMuZmlsdGVyKCh0KSA9PiB0LnJlZ2lzdHJhdGlvbkRhdGUpO1xuXG4gICAgLy8gQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAoZGF0ZVJhbmdlRmlsdGVyKSB7XG4gICAgICB0ZW5hbnRzID0gdGhpcy5hcHBseURhdGVSYW5nZUZpbHRlcih0ZW5hbnRzLCBkYXRlUmFuZ2VGaWx0ZXIpO1xuICAgIH1cblxuICAgIC8vIEdldCBhbGwgdGVuYW50IHVzZXJzIGZvciBjb3VudGluZ1xuICAgIGNvbnN0IHRlbmFudFVzZXJzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRVc2VyU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50VXNlcnMgPSB0ZW5hbnRVc2Vyc1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEdldCBhbGwgc3Vic2NyaXB0aW9ucyBmb3IgY291bnRpbmdcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zUmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICB9KTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9uc1Jlc3VsdC5pdGVtcy5maWx0ZXIoKHMpID0+IHMuc3Vic2NyaWJlclR5cGUgPT09ICdUZW5hbnQnKTtcblxuICAgIC8vIEdldCBhbGwgcGxhbiBpdGVtcyBhbmQgYXBwbGljYXRpb25zIGZvciBhcHBsaWNhdGlvbiBjb3VudGluZ1xuICAgIGNvbnN0IHBsYW5JdGVtc1Jlc3VsdCA9IGF3YWl0IHRoaXMucGxhbkl0ZW1TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICB9KTtcbiAgICBjb25zdCBwbGFuSXRlbXMgPSBwbGFuSXRlbXNSZXN1bHQuaXRlbXM7XG5cbiAgICBjb25zdCBhcHBsaWNhdGlvbnNSZXN1bHQgPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgYXBwbGljYXRpb25zID0gYXBwbGljYXRpb25zUmVzdWx0Lml0ZW1zO1xuXG4gICAgLy8gR2V0IGFwcGxpY2F0aW9uIGNvdW50cyBmb3IgdGVuYW50c1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uQ291bnRzID0gYXdhaXQgdGhpcy5nZXRBcHBsaWNhdGlvbkNvdW50c0ZvclRlbmFudHMoXG4gICAgICB0ZW5hbnRzLm1hcCgodCkgPT4gdC5pZCksXG4gICAgICBzdWJzY3JpcHRpb25zLFxuICAgICAgcGxhbkl0ZW1zLFxuICAgICAgYXBwbGljYXRpb25zXG4gICAgKTtcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHNcbiAgICBjb25zdCByZXN1bHRzOiBUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRlbmFudCBvZiB0ZW5hbnRzKSB7XG4gICAgICBpZiAoIXRlbmFudC5yZWdpc3RyYXRpb25EYXRlKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uRGF0ZSA9IG5ldyBEYXRlKHRlbmFudC5yZWdpc3RyYXRpb25EYXRlKTtcblxuICAgICAgLy8gRXh0cmFjdCB0aW1lIHBlcmlvZCBpbmZvXG4gICAgICBjb25zdCB5ZWFyID0gcmVnaXN0cmF0aW9uRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSByZWdpc3RyYXRpb25EYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgY29uc3QgbW9udGhOYW1lID0gcmVnaXN0cmF0aW9uRGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgICBjb25zdCBxdWFydGVyID0gTWF0aC5jZWlsKG1vbnRoIC8gMyk7XG4gICAgICBjb25zdCBxdWFydGVyTmFtZSA9IGBRJHtxdWFydGVyfWA7XG5cbiAgICAgIC8vIENvdW50IHVzZXJzIGZvciB0aGlzIHRlbmFudFxuICAgICAgY29uc3QgdXNlckNvdW50ID0gdGVuYW50VXNlcnMuZmlsdGVyKCh0dSkgPT4gdHUudGVuYW50SWQgPT09IHRlbmFudC5pZCkubGVuZ3RoO1xuXG4gICAgICAvLyBDb3VudCBzdWJzY3JpcHRpb25zIGZvciB0aGlzIHRlbmFudFxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uQ291bnQgPSBzdWJzY3JpcHRpb25zLmZpbHRlcigocykgPT4gcy5zdWJzY3JpYmVySWQgPT09IHRlbmFudC5pZCkubGVuZ3RoO1xuXG4gICAgICAvLyBHZXQgYXBwbGljYXRpb24gY291bnRcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uQ291bnQgPSBhcHBsaWNhdGlvbkNvdW50cy5nZXQodGVuYW50LmlkKSB8fCAwO1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICB0ZW5hbnROYW1lOiB0ZW5hbnQudGl0bGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGU6IHJlZ2lzdHJhdGlvbkRhdGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGVTdHI6IHJlZ2lzdHJhdGlvbkRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgc3RhdHVzOiB0ZW5hbnQuc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICBjb3VudHJ5OiB0ZW5hbnQuY291bnRyeT8udGl0bGUsXG4gICAgICAgIHVzZXJDb3VudDogdXNlckNvdW50LFxuICAgICAgICBhcHBsaWNhdGlvbkNvdW50OiBhcHBsaWNhdGlvbkNvdW50LFxuICAgICAgICBzdWJzY3JpcHRpb25Db3VudDogc3Vic2NyaXB0aW9uQ291bnQsXG4gICAgICAgIG1vbnRoOiBtb250aE5hbWUsXG4gICAgICAgIG1vbnRoTnVtYmVyOiBtb250aCxcbiAgICAgICAgcXVhcnRlcjogcXVhcnRlck5hbWUsXG4gICAgICAgIHllYXI6IHllYXIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBzb3J0aW5nIGlmIHByb3ZpZGVkXG4gICAgaWYgKGlucHV0LnNvcnQgJiYgaW5wdXQuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBzb3J0RmllbGQgb2YgaW5wdXQuc29ydCEpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHNvcnRGaWVsZC5maWVsZCBhcyBrZXlvZiBUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIC8vIEhhbmRsZSBkYXRlIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoZmllbGQgPT09ICdyZWdpc3RyYXRpb25EYXRlJykge1xuICAgICAgICAgICAgY29uc3QgYURhdGUgPSBhLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgY29uc3QgYkRhdGUgPSBiLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYgKGFEYXRlIDwgYkRhdGUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICAgIGlmIChhRGF0ZSA+IGJEYXRlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgcmVnaXN0cmF0aW9uIGRhdGUgZGVzY2VuZGluZyAobmV3ZXN0IGZpcnN0KVxuICAgICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBiLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpIC0gYS5yZWdpc3RyYXRpb25EYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgICBjb25zdCBza2lwID0gaW5wdXQuc2tpcCB8fCAwO1xuICAgIGNvbnN0IHRha2UgPSBpbnB1dC50YWtlIHx8IDEwO1xuICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSByZXN1bHRzLnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtcyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBHZXQgYXBwbGljYXRpb24gY291bnRzIGZvciB0ZW5hbnRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEFwcGxpY2F0aW9uQ291bnRzRm9yVGVuYW50cyhcbiAgICB0ZW5hbnRJZHM6IHN0cmluZ1tdLFxuICAgIHN1YnNjcmlwdGlvbnM6IEFYTVN1YnNjcmlwdGlvbk1hbmFnZW1lbnRTdWJzY3JpcHRpb25FbnRpdHlNb2RlbFtdLFxuICAgIHBsYW5JdGVtczogQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvblBsYW5JdGVtRW50aXR5TW9kZWxbXSxcbiAgICBhcHBsaWNhdGlvbnM6IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWxbXVxuICApOiBQcm9taXNlPE1hcDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICBjb25zdCBjb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgZm9yIChjb25zdCB0ZW5hbnRJZCBvZiB0ZW5hbnRJZHMpIHtcbiAgICAgIGNvbnN0IHRlbmFudFN1YnNjcmlwdGlvbnMgPSBzdWJzY3JpcHRpb25zLmZpbHRlcigocykgPT4gcy5zdWJzY3JpYmVySWQgPT09IHRlbmFudElkKTtcblxuICAgICAgLy8gR2V0IHVuaXF1ZSBhcHBsaWNhdGlvbnMgdGhyb3VnaCBzdWJzY3JpcHRpb25zIOKGkiBwbGFucyDihpIgcGxhbiBpdGVtcyDihpIgZWRpdGlvbnMg4oaSIGFwcGxpY2F0aW9uc1xuICAgICAgY29uc3QgYXBwbGljYXRpb25TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGVuYW50U3Vic2NyaXB0aW9ucykge1xuICAgICAgICBpZiAoIXN1YnNjcmlwdGlvbi5wbGFuSWQpIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIEdldCBwbGFuIGl0ZW1zIGZvciB0aGlzIHBsYW5cbiAgICAgICAgY29uc3QgcGxhblBsYW5JdGVtcyA9IHBsYW5JdGVtcy5maWx0ZXIoKHBpKSA9PiBwaS5wbGFuSWQgPT09IHN1YnNjcmlwdGlvbi5wbGFuSWQpO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGxhbkl0ZW0gb2YgcGxhblBsYW5JdGVtcykge1xuICAgICAgICAgIGlmICghcGxhbkl0ZW0uZWRpdGlvbklkKSBjb250aW51ZTtcblxuICAgICAgICAgIC8vIEZpbmQgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSB0aGlzIGVkaXRpb25cbiAgICAgICAgICBmb3IgKGNvbnN0IGFwcGxpY2F0aW9uIG9mIGFwcGxpY2F0aW9ucykge1xuICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uLmVkaXRpb25JZHMgJiYgYXBwbGljYXRpb24uZWRpdGlvbklkcy5pbmNsdWRlcyhwbGFuSXRlbS5lZGl0aW9uSWQpKSB7XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2V0LmFkZChhcHBsaWNhdGlvbi5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvdW50cy5zZXQodGVuYW50SWQsIGFwcGxpY2F0aW9uU2V0LnNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudHM7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRlbmFudC1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgKiBNYXBzIHJlcG9ydCBwYXJhbWV0ZXIgcGF0aHMgdG8gdGVuYW50IGVudGl0eSBmaWVsZCBuYW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0VGVuYW50RmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSB7XG4gICAgY29uc3QgZmlsdGVyczogR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgIGlmICghcGFyYW1zQW55Py5maWx0ZXJzIHx8ICFBcnJheS5pc0FycmF5KHBhcmFtc0FueS5maWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yIHx8IHsgdHlwZTogJ2VxdWFsJyB9O1xuXG4gICAgICAvLyBIYW5kbGUgdGVuYW50LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICBpZiAoZmllbGQgPT09ICd0ZW5hbnRJZCcpIHtcbiAgICAgICAgLy8gVGVuYW50IElEIGZpbHRlciAtIGNhbiBiZSBhcnJheSBvZiBJRHMgb3Igc2luZ2xlIElEXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gdGVuYW50c1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICB0ZW5hbnRzOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHRlbmFudHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHRlbmFudHMuZmlsdGVyKCh0ZW5hbnQpID0+IHtcbiAgICAgIGlmICghdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZ0RhdGUgPSBuZXcgRGF0ZSh0ZW5hbnQucmVnaXN0cmF0aW9uRGF0ZSk7XG4gICAgICByZXR1cm4gcmVnRGF0ZSA+PSBzdGFydERhdGUgJiYgcmVnRGF0ZSA8PSBlbmREYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":["TenantRootConfig","SubscriptionRootConfig","ApplicationRootConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-get-tenant-registration-timeline.query-CfDjhtaC.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-registration-timeline.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport { RootConfig as SubscriptionRootConfig } from '@acorex/modules/subscription-management';\nimport { RootConfig as ApplicationRootConfig } from '@acorex/modules/application-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantRegistrationTimelineQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n this.tenantUserService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenantUser.name}`)\n .data();\n this.subscriptionService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscription.name}`)\n .data();\n this.planItemService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscriptionPlanItem.name}`)\n .data();\n this.applicationService = this.entityService\n .withEntity(`${ApplicationRootConfig.module.name}.${ApplicationRootConfig.entities.application.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractTenantFilters(input.filters);\n const filterLogic = input.filters?.logic || input.logic || 'and';\n // Separate custom filters from entity filters\n const entityFilters = [];\n let dateRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'dateRange') {\n dateRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all tenants\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n filter: entityFilters.length > 0\n ? {\n logic: filterLogic,\n filters: entityFilters,\n }\n : undefined,\n });\n let tenants = tenantsResult.items.filter((t) => t.registrationDate);\n // Apply date range filter if provided\n if (dateRangeFilter) {\n tenants = this.applyDateRangeFilter(tenants, dateRangeFilter);\n }\n // Get all tenant users for counting\n const tenantUsersResult = await this.tenantUserService.query({\n skip: 0,\n take: 10000,\n });\n const tenantUsers = tenantUsersResult.items;\n // Get all subscriptions for counting\n const subscriptionsResult = await this.subscriptionService.query({\n skip: 0,\n take: 10000,\n });\n const subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');\n // Get all plan items and applications for application counting\n const planItemsResult = await this.planItemService.query({\n skip: 0,\n take: 10000,\n });\n const planItems = planItemsResult.items;\n const applicationsResult = await this.applicationService.query({\n skip: 0,\n take: 10000,\n });\n const applications = applicationsResult.items;\n // Get application counts for tenants\n const applicationCounts = await this.getApplicationCountsForTenants(tenants.map((t) => t.id), subscriptions, planItems, applications);\n // Build results\n const results = [];\n for (const tenant of tenants) {\n if (!tenant.registrationDate)\n continue;\n const registrationDate = new Date(tenant.registrationDate);\n // Extract time period info\n const year = registrationDate.getFullYear();\n const month = registrationDate.getMonth() + 1;\n const monthName = registrationDate.toLocaleString('en-US', { month: 'long' });\n const quarter = Math.ceil(month / 3);\n const quarterName = `Q${quarter}`;\n // Count users for this tenant\n const userCount = tenantUsers.filter((tu) => tu.tenantId === tenant.id).length;\n // Count subscriptions for this tenant\n const subscriptionCount = subscriptions.filter((s) => s.subscriberId === tenant.id).length;\n // Get application count\n const applicationCount = applicationCounts.get(tenant.id) || 0;\n results.push({\n tenantId: tenant.id,\n tenantName: tenant.title,\n registrationDate: registrationDate,\n registrationDateStr: registrationDate.toISOString(),\n status: tenant.statusId || 'Unknown',\n country: tenant.country?.title,\n userCount: userCount,\n applicationCount: applicationCount,\n subscriptionCount: subscriptionCount,\n month: monthName,\n monthNumber: month,\n quarter: quarterName,\n year: year,\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n results.sort((a, b) => {\n for (const sortField of input.sort) {\n const field = sortField.field;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n if (aValue === undefined && bValue === undefined)\n continue;\n if (aValue === undefined)\n return 1 * dir;\n if (bValue === undefined)\n return -1 * dir;\n // Handle date comparison\n if (field === 'registrationDate') {\n const aDate = a.registrationDate.getTime();\n const bDate = b.registrationDate.getTime();\n if (aDate < bDate)\n return -1 * dir;\n if (aDate > bDate)\n return 1 * dir;\n continue;\n }\n if (aValue < bValue)\n return -1 * dir;\n if (aValue > bValue)\n return 1 * dir;\n }\n return 0;\n });\n }\n else {\n // Default sort by registration date descending (newest first)\n results.sort((a, b) => {\n return b.registrationDate.getTime() - a.registrationDate.getTime();\n });\n }\n // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = results.length;\n const items = results.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Helper Methods ----\n /**\n * Get application counts for tenants\n */\n async getApplicationCountsForTenants(tenantIds, subscriptions, planItems, applications) {\n const counts = new Map();\n for (const tenantId of tenantIds) {\n const tenantSubscriptions = subscriptions.filter((s) => s.subscriberId === tenantId);\n // Get unique applications through subscriptions → plans → plan items → editions → applications\n const applicationSet = new Set();\n for (const subscription of tenantSubscriptions) {\n if (!subscription.planId)\n continue;\n // Get plan items for this plan\n const planPlanItems = planItems.filter((pi) => pi.planId === subscription.planId);\n for (const planItem of planPlanItems) {\n if (!planItem.editionId)\n continue;\n // Find applications that have this edition\n for (const application of applications) {\n if (application.editionIds && application.editionIds.includes(planItem.editionId)) {\n applicationSet.add(application.id);\n }\n }\n }\n }\n counts.set(tenantId, applicationSet.size);\n }\n return counts;\n }\n //#endregion\n //#region ---- Filter Extraction ----\n /**\n * Extract tenant-specific filters from AXPFilterClause format\n * Maps report parameter paths to tenant entity field names\n */\n extractTenantFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n // Handle tenant-specific field mappings\n if (field === 'tenantId') {\n // Tenant ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'id',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'id',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'statusId') {\n // Status filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'statusId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'dateRange') {\n // Date range filter - custom logic handled in query\n filters.push({\n field: 'dateRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n return filters;\n }\n //#endregion\n //#region ---- Custom Filter Handlers ----\n /**\n * Apply date range filter to tenants\n */\n applyDateRangeFilter(tenants, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return tenants;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return tenants.filter((tenant) => {\n if (!tenant.registrationDate)\n return false;\n const regDate = new Date(tenant.registrationDate);\n return regDate >= startDate && regDate <= endDate;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantRegistrationTimelineQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC1yZWdpc3RyYXRpb24tdGltZWxpbmUucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvdGVuYW50LW1hbmFnZW1lbnQvcmVwb3J0cy9nZXQtdGVuYW50LXJlZ2lzdHJhdGlvbi10aW1lbGluZS5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU1sRSxPQUFPLEVBQUUsVUFBVSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsSUFBSSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLElBQUkscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFxQzdGLFlBQVk7QUFLWixNQUFNLE9BQU8sa0NBQWtDO0lBSC9DO1FBTW1CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTthQUN2QyxVQUFVLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDdEYsSUFBSSxFQUFnRCxDQUFDO1FBQ2hELHNCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhO2FBQzNDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMxRixJQUFJLEVBQW9ELENBQUM7UUFDcEQs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LFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLE9BQU8sSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBOVRVLGtDQUFrQzttSEFBbEMsa0NBQWtDLGNBRmpDLE1BQU07OzRGQUVQLGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVN1YnNjcmlwdGlvbk1hbmFnZW1lbnRTdWJzY3JpcHRpb25QbGFuSXRlbUVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBSb290Q29uZmlnIGFzIFRlbmFudFJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyBhcyBTdWJzY3JpcHRpb25Sb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3N1YnNjcmlwdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFJvb3RDb25maWcgYXMgQXBwbGljYXRpb25Sb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5SW5wdXQge1xuICBza2lwPzogbnVtYmVyO1xuICB0YWtlPzogbnVtYmVyO1xuICBzb3J0PzogQXJyYXk8eyBmaWVsZDogc3RyaW5nOyBkaXI6ICdhc2MnIHwgJ2Rlc2MnIH0+O1xuICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0b3I6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgdmFsdWU6IGFueTtcbiAgfT47XG4gIGxvZ2ljPzogJ2FuZCcgfCAnb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUmVzdWx0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICByZWdpc3RyYXRpb25EYXRlOiBEYXRlO1xuICByZWdpc3RyYXRpb25EYXRlU3RyOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBjb3VudHJ5Pzogc3RyaW5nO1xuICB1c2VyQ291bnQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25Db3VudDogbnVtYmVyO1xuICBzdWJzY3JpcHRpb25Db3VudDogbnVtYmVyO1xuICBtb250aDogc3RyaW5nO1xuICBtb250aE51bWJlcjogbnVtYmVyO1xuICBxdWFydGVyOiBzdHJpbmc7XG4gIHllYXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUmVzdWx0W107XG4gIHRvdGFsOiBudW1iZXI7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCwgR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVJlc3VsdD5cbntcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHRlbmFudFNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtUZW5hbnRSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1RlbmFudFJvb3RDb25maWcuZW50aXRpZXMudGVuYW50Lm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRFbnRpdHlNb2RlbD4oKTtcbiAgcHJpdmF0ZSB0ZW5hbnRVc2VyU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1RlbmFudFJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7VGVuYW50Um9vdENvbmZpZy5lbnRpdGllcy50ZW5hbnRVc2VyLm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWw+KCk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb24ubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHBsYW5JdGVtU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb25QbGFuSXRlbS5uYW1lfWApXG4gICAgLmRhdGE8c3RyaW5nLCBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uUGxhbkl0ZW1FbnRpdHlNb2RlbD4oKTtcbiAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtBcHBsaWNhdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7QXBwbGljYXRpb25Sb290Q29uZmlnLmVudGl0aWVzLmFwcGxpY2F0aW9uLm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWw+KCk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dCB8IGFueSk6IFByb21pc2U8R2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeVJlc3VsdD4ge1xuICAgIC8vIEV4dHJhY3QgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0VGVuYW50RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcbiAgICBjb25zdCBmaWx0ZXJMb2dpYyA9IChpbnB1dC5maWx0ZXJzIGFzIGFueSk/LmxvZ2ljIHx8IGlucHV0LmxvZ2ljIHx8ICdhbmQnO1xuXG4gICAgLy8gU2VwYXJhdGUgY3VzdG9tIGZpbHRlcnMgZnJvbSBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGVudGl0eUZpbHRlcnM6IEdldFRlbmFudFJlZ2lzdHJhdGlvblRpbWVsaW5lUXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG4gICAgbGV0IGRhdGVSYW5nZUZpbHRlcjogYW55O1xuXG4gICAgaWYgKGV4dHJhY3RlZEZpbHRlcnMgJiYgZXh0cmFjdGVkRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBleHRyYWN0ZWRGaWx0ZXJzKSB7XG4gICAgICAgIGlmIChmaWx0ZXIuZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgICAgZGF0ZVJhbmdlRmlsdGVyID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudGl0eUZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IGFsbCB0ZW5hbnRzXG4gICAgY29uc3QgdGVuYW50c1Jlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgICBmaWx0ZXI6XG4gICAgICAgIGVudGl0eUZpbHRlcnMubGVuZ3RoID4gMFxuICAgICAgICAgID8gKHtcbiAgICAgICAgICAgIGxvZ2ljOiBmaWx0ZXJMb2dpYyxcbiAgICAgICAgICAgIGZpbHRlcnM6IGVudGl0eUZpbHRlcnMsXG4gICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBsZXQgdGVuYW50cyA9IHRlbmFudHNSZXN1bHQuaXRlbXMuZmlsdGVyKCh0KSA9PiB0LnJlZ2lzdHJhdGlvbkRhdGUpO1xuXG4gICAgLy8gQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAoZGF0ZVJhbmdlRmlsdGVyKSB7XG4gICAgICB0ZW5hbnRzID0gdGhpcy5hcHBseURhdGVSYW5nZUZpbHRlcih0ZW5hbnRzLCBkYXRlUmFuZ2VGaWx0ZXIpO1xuICAgIH1cblxuICAgIC8vIEdldCBhbGwgdGVuYW50IHVzZXJzIGZvciBjb3VudGluZ1xuICAgIGNvbnN0IHRlbmFudFVzZXJzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRVc2VyU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50VXNlcnMgPSB0ZW5hbnRVc2Vyc1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEdldCBhbGwgc3Vic2NyaXB0aW9ucyBmb3IgY291bnRpbmdcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zUmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICB9KTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9uc1Jlc3VsdC5pdGVtcy5maWx0ZXIoKHMpID0+IHMuc3Vic2NyaWJlclR5cGUgPT09ICdUZW5hbnQnKTtcblxuICAgIC8vIEdldCBhbGwgcGxhbiBpdGVtcyBhbmQgYXBwbGljYXRpb25zIGZvciBhcHBsaWNhdGlvbiBjb3VudGluZ1xuICAgIGNvbnN0IHBsYW5JdGVtc1Jlc3VsdCA9IGF3YWl0IHRoaXMucGxhbkl0ZW1TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICB9KTtcbiAgICBjb25zdCBwbGFuSXRlbXMgPSBwbGFuSXRlbXNSZXN1bHQuaXRlbXM7XG5cbiAgICBjb25zdCBhcHBsaWNhdGlvbnNSZXN1bHQgPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgYXBwbGljYXRpb25zID0gYXBwbGljYXRpb25zUmVzdWx0Lml0ZW1zO1xuXG4gICAgLy8gR2V0IGFwcGxpY2F0aW9uIGNvdW50cyBmb3IgdGVuYW50c1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uQ291bnRzID0gYXdhaXQgdGhpcy5nZXRBcHBsaWNhdGlvbkNvdW50c0ZvclRlbmFudHMoXG4gICAgICB0ZW5hbnRzLm1hcCgodCkgPT4gdC5pZCksXG4gICAgICBzdWJzY3JpcHRpb25zLFxuICAgICAgcGxhbkl0ZW1zLFxuICAgICAgYXBwbGljYXRpb25zXG4gICAgKTtcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHNcbiAgICBjb25zdCByZXN1bHRzOiBUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRlbmFudCBvZiB0ZW5hbnRzKSB7XG4gICAgICBpZiAoIXRlbmFudC5yZWdpc3RyYXRpb25EYXRlKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uRGF0ZSA9IG5ldyBEYXRlKHRlbmFudC5yZWdpc3RyYXRpb25EYXRlKTtcblxuICAgICAgLy8gRXh0cmFjdCB0aW1lIHBlcmlvZCBpbmZvXG4gICAgICBjb25zdCB5ZWFyID0gcmVnaXN0cmF0aW9uRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSByZWdpc3RyYXRpb25EYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgY29uc3QgbW9udGhOYW1lID0gcmVnaXN0cmF0aW9uRGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgICBjb25zdCBxdWFydGVyID0gTWF0aC5jZWlsKG1vbnRoIC8gMyk7XG4gICAgICBjb25zdCBxdWFydGVyTmFtZSA9IGBRJHtxdWFydGVyfWA7XG5cbiAgICAgIC8vIENvdW50IHVzZXJzIGZvciB0aGlzIHRlbmFudFxuICAgICAgY29uc3QgdXNlckNvdW50ID0gdGVuYW50VXNlcnMuZmlsdGVyKCh0dSkgPT4gdHUudGVuYW50SWQgPT09IHRlbmFudC5pZCkubGVuZ3RoO1xuXG4gICAgICAvLyBDb3VudCBzdWJzY3JpcHRpb25zIGZvciB0aGlzIHRlbmFudFxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uQ291bnQgPSBzdWJzY3JpcHRpb25zLmZpbHRlcigocykgPT4gcy5zdWJzY3JpYmVySWQgPT09IHRlbmFudC5pZCkubGVuZ3RoO1xuXG4gICAgICAvLyBHZXQgYXBwbGljYXRpb24gY291bnRcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uQ291bnQgPSBhcHBsaWNhdGlvbkNvdW50cy5nZXQodGVuYW50LmlkKSB8fCAwO1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICB0ZW5hbnROYW1lOiB0ZW5hbnQudGl0bGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGU6IHJlZ2lzdHJhdGlvbkRhdGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGVTdHI6IHJlZ2lzdHJhdGlvbkRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgc3RhdHVzOiB0ZW5hbnQuc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICBjb3VudHJ5OiB0ZW5hbnQuY291bnRyeT8udGl0bGUsXG4gICAgICAgIHVzZXJDb3VudDogdXNlckNvdW50LFxuICAgICAgICBhcHBsaWNhdGlvbkNvdW50OiBhcHBsaWNhdGlvbkNvdW50LFxuICAgICAgICBzdWJzY3JpcHRpb25Db3VudDogc3Vic2NyaXB0aW9uQ291bnQsXG4gICAgICAgIG1vbnRoOiBtb250aE5hbWUsXG4gICAgICAgIG1vbnRoTnVtYmVyOiBtb250aCxcbiAgICAgICAgcXVhcnRlcjogcXVhcnRlck5hbWUsXG4gICAgICAgIHllYXI6IHllYXIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBzb3J0aW5nIGlmIHByb3ZpZGVkXG4gICAgaWYgKGlucHV0LnNvcnQgJiYgaW5wdXQuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBzb3J0RmllbGQgb2YgaW5wdXQuc29ydCEpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHNvcnRGaWVsZC5maWVsZCBhcyBrZXlvZiBUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIC8vIEhhbmRsZSBkYXRlIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoZmllbGQgPT09ICdyZWdpc3RyYXRpb25EYXRlJykge1xuICAgICAgICAgICAgY29uc3QgYURhdGUgPSBhLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgY29uc3QgYkRhdGUgPSBiLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYgKGFEYXRlIDwgYkRhdGUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICAgIGlmIChhRGF0ZSA+IGJEYXRlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgcmVnaXN0cmF0aW9uIGRhdGUgZGVzY2VuZGluZyAobmV3ZXN0IGZpcnN0KVxuICAgICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBiLnJlZ2lzdHJhdGlvbkRhdGUuZ2V0VGltZSgpIC0gYS5yZWdpc3RyYXRpb25EYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgICBjb25zdCBza2lwID0gaW5wdXQuc2tpcCB8fCAwO1xuICAgIGNvbnN0IHRha2UgPSBpbnB1dC50YWtlIHx8IDEwO1xuICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSByZXN1bHRzLnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtcyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBHZXQgYXBwbGljYXRpb24gY291bnRzIGZvciB0ZW5hbnRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEFwcGxpY2F0aW9uQ291bnRzRm9yVGVuYW50cyhcbiAgICB0ZW5hbnRJZHM6IHN0cmluZ1tdLFxuICAgIHN1YnNjcmlwdGlvbnM6IEFYTVN1YnNjcmlwdGlvbk1hbmFnZW1lbnRTdWJzY3JpcHRpb25FbnRpdHlNb2RlbFtdLFxuICAgIHBsYW5JdGVtczogQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvblBsYW5JdGVtRW50aXR5TW9kZWxbXSxcbiAgICBhcHBsaWNhdGlvbnM6IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudEFwcGxpY2F0aW9uRW50aXR5TW9kZWxbXVxuICApOiBQcm9taXNlPE1hcDxzdHJpbmcsIG51bWJlcj4+IHtcbiAgICBjb25zdCBjb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgZm9yIChjb25zdCB0ZW5hbnRJZCBvZiB0ZW5hbnRJZHMpIHtcbiAgICAgIGNvbnN0IHRlbmFudFN1YnNjcmlwdGlvbnMgPSBzdWJzY3JpcHRpb25zLmZpbHRlcigocykgPT4gcy5zdWJzY3JpYmVySWQgPT09IHRlbmFudElkKTtcblxuICAgICAgLy8gR2V0IHVuaXF1ZSBhcHBsaWNhdGlvbnMgdGhyb3VnaCBzdWJzY3JpcHRpb25zIOKGkiBwbGFucyDihpIgcGxhbiBpdGVtcyDihpIgZWRpdGlvbnMg4oaSIGFwcGxpY2F0aW9uc1xuICAgICAgY29uc3QgYXBwbGljYXRpb25TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGVuYW50U3Vic2NyaXB0aW9ucykge1xuICAgICAgICBpZiAoIXN1YnNjcmlwdGlvbi5wbGFuSWQpIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIEdldCBwbGFuIGl0ZW1zIGZvciB0aGlzIHBsYW5cbiAgICAgICAgY29uc3QgcGxhblBsYW5JdGVtcyA9IHBsYW5JdGVtcy5maWx0ZXIoKHBpKSA9PiBwaS5wbGFuSWQgPT09IHN1YnNjcmlwdGlvbi5wbGFuSWQpO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGxhbkl0ZW0gb2YgcGxhblBsYW5JdGVtcykge1xuICAgICAgICAgIGlmICghcGxhbkl0ZW0uZWRpdGlvbklkKSBjb250aW51ZTtcblxuICAgICAgICAgIC8vIEZpbmQgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSB0aGlzIGVkaXRpb25cbiAgICAgICAgICBmb3IgKGNvbnN0IGFwcGxpY2F0aW9uIG9mIGFwcGxpY2F0aW9ucykge1xuICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uLmVkaXRpb25JZHMgJiYgYXBwbGljYXRpb24uZWRpdGlvbklkcy5pbmNsdWRlcyhwbGFuSXRlbS5lZGl0aW9uSWQpKSB7XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2V0LmFkZChhcHBsaWNhdGlvbi5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvdW50cy5zZXQodGVuYW50SWQsIGFwcGxpY2F0aW9uU2V0LnNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudHM7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRlbmFudC1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgKiBNYXBzIHJlcG9ydCBwYXJhbWV0ZXIgcGF0aHMgdG8gdGVuYW50IGVudGl0eSBmaWVsZCBuYW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0VGVuYW50RmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRUZW5hbnRSZWdpc3RyYXRpb25UaW1lbGluZVF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSB7XG4gICAgY29uc3QgZmlsdGVyczogR2V0VGVuYW50UmVnaXN0cmF0aW9uVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgIGlmICghcGFyYW1zQW55Py5maWx0ZXJzIHx8ICFBcnJheS5pc0FycmF5KHBhcmFtc0FueS5maWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yIHx8IHsgdHlwZTogJ2VxdWFsJyB9O1xuXG4gICAgICAvLyBIYW5kbGUgdGVuYW50LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICBpZiAoZmllbGQgPT09ICd0ZW5hbnRJZCcpIHtcbiAgICAgICAgLy8gVGVuYW50IElEIGZpbHRlciAtIGNhbiBiZSBhcnJheSBvZiBJRHMgb3Igc2luZ2xlIElEXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gdGVuYW50c1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICB0ZW5hbnRzOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHRlbmFudHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHRlbmFudHMuZmlsdGVyKCh0ZW5hbnQpID0+IHtcbiAgICAgIGlmICghdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZ0RhdGUgPSBuZXcgRGF0ZSh0ZW5hbnQucmVnaXN0cmF0aW9uRGF0ZSk7XG4gICAgICByZXR1cm4gcmVnRGF0ZSA+PSBzdGFydERhdGUgJiYgcmVnRGF0ZSA8PSBlbmREYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":["TenantRootConfig","SubscriptionRootConfig","ApplicationRootConfig"],"mappings":";;;;;;;AAMA;AACO,MAAM,kCAAkC,CAAC;AAChD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,aAAa,UAAU,CAAC,CAAC,EAAEA,UAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,UAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClG,aAAa,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,aAAa,UAAU,CAAC,CAAC,EAAEA,UAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,UAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtG,aAAa,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACxC,aAAa,UAAU,CAAC,CAAC,EAAEC,YAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACpH,aAAa,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,aAAa,UAAU,CAAC,CAAC,EAAEA,YAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAsB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC5H,aAAa,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACvC,aAAa,UAAU,CAAC,CAAC,EAAEC,YAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjH,aAAa,IAAI,EAAE;AACnB,IAAI;AACJ,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE;AACvB;AACA,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;AACzE,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK;AACxE;AACA,QAAQ,MAAM,aAAa,GAAG,EAAE;AAChC,QAAQ,IAAI,eAAe;AAC3B,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAY,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AACnD,gBAAgB,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAClD,oBAAoB,eAAe,GAAG,MAAM,CAAC,KAAK;AAClD,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7D,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,KAAK;AACvB,YAAY,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG;AAC3C,kBAAkB;AAClB,oBAAoB,KAAK,EAAE,WAAW;AACtC,oBAAoB,OAAO,EAAE,aAAa;AAC1C;AACA,kBAAkB,SAAS;AAC3B,SAAS,CAAC;AACV,QAAQ,IAAI,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAC3E;AACA,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC;AACzE,QAAQ;AACR;AACA,QAAQ,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACrE,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK;AACnD;AACA,QAAQ,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACzE,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC;AACpG;AACA,QAAQ,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACjE,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK;AAC/C,QAAQ,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACvE,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK;AACrD;AACA,QAAQ,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC;AAC7I;AACA,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB;AACxC,gBAAgB;AAChB,YAAY,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACtE;AACA,YAAY,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE;AACvD,YAAY,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC;AACzD,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACzF,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAChD,YAAY,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C;AACA,YAAY,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM;AAC1F;AACA,YAAY,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM;AACtG;AACA,YAAY,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAC1E,YAAY,OAAO,CAAC,IAAI,CAAC;AACzB,gBAAgB,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnC,gBAAgB,UAAU,EAAE,MAAM,CAAC,KAAK;AACxC,gBAAgB,gBAAgB,EAAE,gBAAgB;AAClD,gBAAgB,mBAAmB,EAAE,gBAAgB,CAAC,WAAW,EAAE;AACnE,gBAAgB,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;AACpD,gBAAgB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK;AAC9C,gBAAgB,SAAS,EAAE,SAAS;AACpC,gBAAgB,gBAAgB,EAAE,gBAAgB;AAClD,gBAAgB,iBAAiB,EAAE,iBAAiB;AACpD,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,WAAW,EAAE,KAAK;AAClC,gBAAgB,OAAO,EAAE,WAAW;AACpC,gBAAgB,IAAI,EAAE,IAAI;AAC1B,aAAa,CAAC;AACd,QAAQ;AACR;AACA,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACnC,gBAAgB,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;AACpD,oBAAoB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;AACjD,oBAAoB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3C,oBAAoB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3C,oBAAoB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,oBAAoB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;AACpE,wBAAwB;AACxB,oBAAoB,IAAI,MAAM,KAAK,SAAS;AAC5C,wBAAwB,OAAO,CAAC,GAAG,GAAG;AACtC,oBAAoB,IAAI,MAAM,KAAK,SAAS;AAC5C,wBAAwB,OAAO,CAAC,CAAC,GAAG,GAAG;AACvC;AACA,oBAAoB,IAAI,KAAK,KAAK,kBAAkB,EAAE;AACtD,wBAAwB,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAClE,wBAAwB,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAClE,wBAAwB,IAAI,KAAK,GAAG,KAAK;AACzC,4BAA4B,OAAO,CAAC,CAAC,GAAG,GAAG;AAC3C,wBAAwB,IAAI,KAAK,GAAG,KAAK;AACzC,4BAA4B,OAAO,CAAC,GAAG,GAAG;AAC1C,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,IAAI,MAAM,GAAG,MAAM;AACvC,wBAAwB,OAAO,CAAC,CAAC,GAAG,GAAG;AACvC,oBAAoB,IAAI,MAAM,GAAG,MAAM;AACvC,wBAAwB,OAAO,CAAC,GAAG,GAAG;AACtC,gBAAgB;AAChB,gBAAgB,OAAO,CAAC;AACxB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,aAAa;AACb;AACA,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACnC,gBAAgB,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAClF,YAAY,CAAC,CAAC;AACd,QAAQ;AACR;AACA,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;AACrC,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;AACpC,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AACtD,QAAQ,OAAO;AACf,YAAY,KAAK;AACjB,YAAY,KAAK;AACjB,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,8BAA8B,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE;AAC5F,QAAQ,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAChC,QAAQ,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAC1C,YAAY,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC;AAChG;AACA,YAAY,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE;AAC5C,YAAY,KAAK,MAAM,YAAY,IAAI,mBAAmB,EAAE;AAC5D,gBAAgB,IAAI,CAAC,YAAY,CAAC,MAAM;AACxC,oBAAoB;AACpB;AACA,gBAAgB,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC;AACjG,gBAAgB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;AACtD,oBAAoB,IAAI,CAAC,QAAQ,CAAC,SAAS;AAC3C,wBAAwB;AACxB;AACA,oBAAoB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AAC5D,wBAAwB,IAAI,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3G,4BAA4B,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AAC9D,wBAAwB;AACxB,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;AACrD,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,UAAU,EAAE;AACrC,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACtE,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE;AAChD,YAAY,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE;AACzF,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AACtC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AACtC,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AACjE;AACA,YAAY,IAAI,KAAK,KAAK,UAAU,EAAE;AACtC;AACA,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9D,oBAAoB,OAAO,CAAC,IAAI,CAAC;AACjC,wBAAwB,KAAK,EAAE,IAAI;AACnC,wBAAwB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAChD,wBAAwB,KAAK,EAAE,KAAK;AACpC,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,qBAAqB,IAAI,KAAK,EAAE;AAChC,oBAAoB,OAAO,CAAC,IAAI,CAAC;AACjC,wBAAwB,KAAK,EAAE,IAAI;AACnC,wBAAwB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACnD,wBAAwB,KAAK,EAAE,KAAK;AACpC,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,KAAK,KAAK,UAAU,EAAE;AAC3C;AACA,gBAAgB,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE;AAC9C,oBAAoB,OAAO,CAAC,IAAI,CAAC;AACjC,wBAAwB,KAAK,EAAE,UAAU;AACzC,wBAAwB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACnD,wBAAwB,KAAK,EAAE,KAAK;AACpC,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,KAAK,KAAK,WAAW,EAAE;AAC5C;AACA,gBAAgB,OAAO,CAAC,IAAI,CAAC;AAC7B,oBAAoB,KAAK,EAAE,WAAW;AACtC,oBAAoB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/C,oBAAoB,KAAK,EAAE,KAAK;AAChC,iBAAiB,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,OAAO,CAAC,IAAI,CAAC;AAC7B,oBAAoB,KAAK,EAAE,KAAK;AAChC,oBAAoB,QAAQ,EAAE,QAAQ;AACtC,oBAAoB,KAAK,EAAE,KAAK;AAChC,iBAAiB,CAAC;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE;AAC7C,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAC9D,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnD,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACzC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK;AAC1C,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB;AACxC,gBAAgB,OAAO,KAAK;AAC5B,YAAY,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC7D,YAAY,OAAO,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO;AAC7D,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7K;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;"}
|
|
@@ -198,10 +198,10 @@ class GetTenantUserDistributionQuery {
|
|
|
198
198
|
return regDate >= startDate && regDate <= endDate;
|
|
199
199
|
});
|
|
200
200
|
}
|
|
201
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
202
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
201
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantUserDistributionQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
202
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantUserDistributionQuery, providedIn: 'root' }); }
|
|
203
203
|
}
|
|
204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: GetTenantUserDistributionQuery, decorators: [{
|
|
205
205
|
type: Injectable,
|
|
206
206
|
args: [{
|
|
207
207
|
providedIn: 'root',
|
|
@@ -209,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
209
209
|
}] });
|
|
210
210
|
|
|
211
211
|
export { GetTenantUserDistributionQuery };
|
|
212
|
-
//# sourceMappingURL=acorex-connectivity-mock-get-tenant-user-distribution.query-
|
|
212
|
+
//# sourceMappingURL=acorex-connectivity-mock-get-tenant-user-distribution.query-CZXvavUh.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-user-distribution.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPSystemStatusType } from '@acorex/platform/common';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantUserDistributionQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n this.tenantUserService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenantUser.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractTenantFilters(input.filters);\n const filterLogic = input.filters?.logic || input.logic || 'and';\n // Separate custom filters from entity filters\n const entityFilters = [];\n let dateRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'dateRange') {\n dateRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all tenants\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n filter: entityFilters.length > 0\n ? {\n logic: filterLogic,\n filters: entityFilters,\n }\n : undefined,\n });\n let tenants = tenantsResult.items;\n // Apply date range filter if provided\n if (dateRangeFilter) {\n tenants = this.applyDateRangeFilter(tenants, dateRangeFilter);\n }\n // Get all tenant users\n const tenantUsersResult = await this.tenantUserService.query({\n skip: 0,\n take: 10000,\n });\n const tenantUsers = tenantUsersResult.items;\n // Build results for each tenant\n const results = [];\n for (const tenant of tenants) {\n // Get tenant's users\n const tenantUsersList = tenantUsers.filter((tu) => tu.tenantId === tenant.id);\n // Count active and inactive users\n const activeUsers = tenantUsersList.filter((tu) => tu.statusId === AXPSystemStatusType.Active);\n const inactiveUsers = tenantUsersList.filter((tu) => tu.statusId !== AXPSystemStatusType.Active);\n // Calculate utilization percentage\n const maxUsers = tenant.maxUsers;\n const utilizationPercent = maxUsers && maxUsers > 0 ? Math.round((tenantUsersList.length / maxUsers) * 100) : 0;\n results.push({\n tenantId: tenant.id,\n tenantName: tenant.title,\n tenantStatus: tenant.statusId || 'Unknown',\n totalUsersCount: tenantUsersList.length,\n activeUsersCount: activeUsers.length,\n inactiveUsersCount: inactiveUsers.length,\n maxUsers: maxUsers,\n utilizationPercent: utilizationPercent,\n registrationDate: tenant.registrationDate,\n registrationDateStr: tenant.registrationDate?.toISOString(),\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n results.sort((a, b) => {\n for (const sortField of input.sort) {\n const field = sortField.field;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n if (aValue === undefined && bValue === undefined)\n continue;\n if (aValue === undefined)\n return 1 * dir;\n if (bValue === undefined)\n return -1 * dir;\n if (aValue < bValue)\n return -1 * dir;\n if (aValue > bValue)\n return 1 * dir;\n }\n return 0;\n });\n }\n else {\n // Default sort by tenant name\n results.sort((a, b) => a.tenantName.localeCompare(b.tenantName));\n }\n // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = results.length;\n const items = results.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract tenant-specific filters from AXPFilterClause format\n * Maps report parameter paths to tenant entity field names\n */\n extractTenantFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n // Handle tenant-specific field mappings\n if (field === 'tenantId') {\n // Tenant ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'id',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'id',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'statusId') {\n // Status filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'statusId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'dateRange') {\n // Date range filter - custom logic handled in query\n filters.push({\n field: 'dateRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n return filters;\n }\n //#endregion\n //#region ---- Custom Filter Handlers ----\n /**\n * Apply date range filter to tenants\n */\n applyDateRangeFilter(tenants, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return tenants;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return tenants.filter((tenant) => {\n if (!tenant.registrationDate)\n return false;\n const regDate = new Date(tenant.registrationDate);\n return regDate >= startDate && regDate <= endDate;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantUserDistributionQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantUserDistributionQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetTenantUserDistributionQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC11c2VyLWRpc3RyaWJ1dGlvbi5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi90ZW5hbnQtbWFuYWdlbWVudC9yZXBvcnRzL2dldC10ZW5hbnQtdXNlci1kaXN0cmlidXRpb24ucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWtDbkYsWUFBWTtBQUtaLE1BQU0sT0FBTyw4QkFBOEI7SUFIM0M7UUFNbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxhQUFhO2FBQ3ZDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN0RixJQUFJLEVBQWdELENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDM0MsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzFGLElBQUksRUFBb0QsQ0FBQztLQW9ON0Q7SUFsTkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFnRDtRQUMxRCw4Q0FBOEM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJ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LENBQUMsTUFBTSxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLE9BQU8sSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMU5VLDhCQUE4QjttSEFBOUIsOEJBQThCLGNBRjdCLE1BQU07OzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhQU3lzdGVtU3RhdHVzVHlwZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IFJvb3RDb25maWcgYXMgVGVuYW50Um9vdENvbmZpZyB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy90ZW5hbnQtbWFuYWdlbWVudCc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlcnkgSW5wdXQvT3V0cHV0IFR5cGVzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0IHtcbiAgc2tpcD86IG51bWJlcjtcbiAgdGFrZT86IG51bWJlcjtcbiAgc29ydD86IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9PjtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUmVzdWx0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICB0ZW5hbnRTdGF0dXM6IHN0cmluZztcbiAgdG90YWxVc2Vyc0NvdW50OiBudW1iZXI7XG4gIGFjdGl2ZVVzZXJzQ291bnQ6IG51bWJlcjtcbiAgaW5hY3RpdmVVc2Vyc0NvdW50OiBudW1iZXI7XG4gIG1heFVzZXJzPzogbnVtYmVyO1xuICB1dGlsaXphdGlvblBlcmNlbnQ6IG51bWJlcjtcbiAgcmVnaXN0cmF0aW9uRGF0ZT86IERhdGU7XG4gIHJlZ2lzdHJhdGlvbkRhdGVTdHI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IFRlbmFudFVzZXJEaXN0cmlidXRpb25SZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUXVlcnlcbiAgaW1wbGVtZW50cyBBWFBRdWVyeTxHZXRUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUXVlcnlJbnB1dCwgR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgdGVuYW50U2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1RlbmFudFJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7VGVuYW50Um9vdENvbmZpZy5lbnRpdGllcy50ZW5hbnQubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHRlbmFudFVzZXJTZXJ2aWNlID0gdGhpcy5lbnRpdHlTZXJ2aWNlXG4gICAgLndpdGhFbnRpdHkoYCR7VGVuYW50Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtUZW5hbnRSb290Q29uZmlnLmVudGl0aWVzLnRlbmFudFVzZXIubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudFVzZXJFbnRpdHlNb2RlbD4oKTtcblxuICBhc3luYyBmZXRjaChpbnB1dDogR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeVJlc3VsdD4ge1xuICAgIC8vIEV4dHJhY3QgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0VGVuYW50RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcbiAgICBjb25zdCBmaWx0ZXJMb2dpYyA9IChpbnB1dC5maWx0ZXJzIGFzIGFueSk/LmxvZ2ljIHx8IGlucHV0LmxvZ2ljIHx8ICdhbmQnO1xuXG4gICAgLy8gU2VwYXJhdGUgY3VzdG9tIGZpbHRlcnMgZnJvbSBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGVudGl0eUZpbHRlcnM6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBsZXQgZGF0ZVJhbmdlRmlsdGVyOiBhbnk7XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ2RhdGVSYW5nZScpIHtcbiAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXIgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50aXR5RmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHRlbmFudHNcbiAgICBjb25zdCB0ZW5hbnRzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICAgIGZpbHRlcjpcbiAgICAgICAgZW50aXR5RmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgbG9naWM6IGZpbHRlckxvZ2ljLFxuICAgICAgICAgICAgZmlsdGVyczogZW50aXR5RmlsdGVycyxcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGxldCB0ZW5hbnRzID0gdGVuYW50c1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEFwcGx5IGRhdGUgcmFuZ2UgZmlsdGVyIGlmIHByb3ZpZGVkXG4gICAgaWYgKGRhdGVSYW5nZUZpbHRlcikge1xuICAgICAgdGVuYW50cyA9IHRoaXMuYXBwbHlEYXRlUmFuZ2VGaWx0ZXIodGVuYW50cywgZGF0ZVJhbmdlRmlsdGVyKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHRlbmFudCB1c2Vyc1xuICAgIGNvbnN0IHRlbmFudFVzZXJzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRVc2VyU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50VXNlcnMgPSB0ZW5hbnRVc2Vyc1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHMgZm9yIGVhY2ggdGVuYW50XG4gICAgY29uc3QgcmVzdWx0czogVGVuYW50VXNlckRpc3RyaWJ1dGlvblJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRlbmFudCBvZiB0ZW5hbnRzKSB7XG4gICAgICAvLyBHZXQgdGVuYW50J3MgdXNlcnNcbiAgICAgIGNvbnN0IHRlbmFudFVzZXJzTGlzdCA9IHRlbmFudFVzZXJzLmZpbHRlcigodHUpID0+IHR1LnRlbmFudElkID09PSB0ZW5hbnQuaWQpO1xuXG4gICAgICAvLyBDb3VudCBhY3RpdmUgYW5kIGluYWN0aXZlIHVzZXJzXG4gICAgICBjb25zdCBhY3RpdmVVc2VycyA9IHRlbmFudFVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh0dSkgPT4gdHUuc3RhdHVzSWQgPT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlXG4gICAgICApO1xuICAgICAgY29uc3QgaW5hY3RpdmVVc2VycyA9IHRlbmFudFVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh0dSkgPT4gdHUuc3RhdHVzSWQgIT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlXG4gICAgICApO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdXRpbGl6YXRpb24gcGVyY2VudGFnZVxuICAgICAgY29uc3QgbWF4VXNlcnMgPSB0ZW5hbnQubWF4VXNlcnM7XG4gICAgICBjb25zdCB1dGlsaXphdGlvblBlcmNlbnQgPVxuICAgICAgICBtYXhVc2VycyAmJiBtYXhVc2VycyA+IDAgPyBNYXRoLnJvdW5kKCh0ZW5hbnRVc2Vyc0xpc3QubGVuZ3RoIC8gbWF4VXNlcnMpICogMTAwKSA6IDA7XG5cbiAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICAgIHRlbmFudE5hbWU6IHRlbmFudC50aXRsZSxcbiAgICAgICAgdGVuYW50U3RhdHVzOiB0ZW5hbnQuc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICB0b3RhbFVzZXJzQ291bnQ6IHRlbmFudFVzZXJzTGlzdC5sZW5ndGgsXG4gICAgICAgIGFjdGl2ZVVzZXJzQ291bnQ6IGFjdGl2ZVVzZXJzLmxlbmd0aCxcbiAgICAgICAgaW5hY3RpdmVVc2Vyc0NvdW50OiBpbmFjdGl2ZVVzZXJzLmxlbmd0aCxcbiAgICAgICAgbWF4VXNlcnM6IG1heFVzZXJzLFxuICAgICAgICB1dGlsaXphdGlvblBlcmNlbnQ6IHV0aWxpemF0aW9uUGVyY2VudCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRGF0ZTogdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGVTdHI6IHRlbmFudC5yZWdpc3RyYXRpb25EYXRlPy50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgc29ydGluZyBpZiBwcm92aWRlZFxuICAgIGlmIChpbnB1dC5zb3J0ICYmIGlucHV0LnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgc29ydEZpZWxkIG9mIGlucHV0LnNvcnQhKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBzb3J0RmllbGQuZmllbGQgYXMga2V5b2YgVGVuYW50VXNlckRpc3RyaWJ1dGlvblJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgdGVuYW50IG5hbWVcbiAgICAgIHJlc3VsdHMuc29ydCgoYSwgYikgPT4gYS50ZW5hbnROYW1lLmxvY2FsZUNvbXBhcmUoYi50ZW5hbnROYW1lKSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgcGFnaW5hdGlvblxuICAgIGNvbnN0IHNraXAgPSBpbnB1dC5za2lwIHx8IDA7XG4gICAgY29uc3QgdGFrZSA9IGlucHV0LnRha2UgfHwgMTA7XG4gICAgY29uc3QgdG90YWwgPSByZXN1bHRzLmxlbmd0aDtcbiAgICBjb25zdCBpdGVtcyA9IHJlc3VsdHMuc2xpY2Uoc2tpcCwgc2tpcCArIHRha2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zLFxuICAgICAgdG90YWwsXG4gICAgfTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIEV4dHJhY3Rpb24gICAtLS0tXG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGVuYW50LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAqIE1hcHMgcmVwb3J0IHBhcmFtZXRlciBwYXRocyB0byB0ZW5hbnQgZW50aXR5IGZpZWxkIG5hbWVzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RUZW5hbnRGaWx0ZXJzKHBhcmFtZXRlcnM6IGFueSk6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgIGlmICghcGFyYW1zQW55Py5maWx0ZXJzIHx8ICFBcnJheS5pc0FycmF5KHBhcmFtc0FueS5maWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yIHx8IHsgdHlwZTogJ2VxdWFsJyB9O1xuXG4gICAgICAvLyBIYW5kbGUgdGVuYW50LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICBpZiAoZmllbGQgPT09ICd0ZW5hbnRJZCcpIHtcbiAgICAgICAgLy8gVGVuYW50IElEIGZpbHRlciAtIGNhbiBiZSBhcnJheSBvZiBJRHMgb3Igc2luZ2xlIElEXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gdGVuYW50c1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICB0ZW5hbnRzOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHRlbmFudHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHRlbmFudHMuZmlsdGVyKCh0ZW5hbnQpID0+IHtcbiAgICAgIGlmICghdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZ0RhdGUgPSBuZXcgRGF0ZSh0ZW5hbnQucmVnaXN0cmF0aW9uRGF0ZSk7XG4gICAgICByZXR1cm4gcmVnRGF0ZSA+PSBzdGFydERhdGUgJiYgcmVnRGF0ZSA8PSBlbmREYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":["TenantRootConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-get-tenant-user-distribution.query-CZXvavUh.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-tenant-user-distribution.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPSystemStatusType } from '@acorex/platform/common';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetTenantUserDistributionQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n this.tenantUserService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenantUser.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractTenantFilters(input.filters);\n const filterLogic = input.filters?.logic || input.logic || 'and';\n // Separate custom filters from entity filters\n const entityFilters = [];\n let dateRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'dateRange') {\n dateRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all tenants\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n filter: entityFilters.length > 0\n ? {\n logic: filterLogic,\n filters: entityFilters,\n }\n : undefined,\n });\n let tenants = tenantsResult.items;\n // Apply date range filter if provided\n if (dateRangeFilter) {\n tenants = this.applyDateRangeFilter(tenants, dateRangeFilter);\n }\n // Get all tenant users\n const tenantUsersResult = await this.tenantUserService.query({\n skip: 0,\n take: 10000,\n });\n const tenantUsers = tenantUsersResult.items;\n // Build results for each tenant\n const results = [];\n for (const tenant of tenants) {\n // Get tenant's users\n const tenantUsersList = tenantUsers.filter((tu) => tu.tenantId === tenant.id);\n // Count active and inactive users\n const activeUsers = tenantUsersList.filter((tu) => tu.statusId === AXPSystemStatusType.Active);\n const inactiveUsers = tenantUsersList.filter((tu) => tu.statusId !== AXPSystemStatusType.Active);\n // Calculate utilization percentage\n const maxUsers = tenant.maxUsers;\n const utilizationPercent = maxUsers && maxUsers > 0 ? Math.round((tenantUsersList.length / maxUsers) * 100) : 0;\n results.push({\n tenantId: tenant.id,\n tenantName: tenant.title,\n tenantStatus: tenant.statusId || 'Unknown',\n totalUsersCount: tenantUsersList.length,\n activeUsersCount: activeUsers.length,\n inactiveUsersCount: inactiveUsers.length,\n maxUsers: maxUsers,\n utilizationPercent: utilizationPercent,\n registrationDate: tenant.registrationDate,\n registrationDateStr: tenant.registrationDate?.toISOString(),\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n results.sort((a, b) => {\n for (const sortField of input.sort) {\n const field = sortField.field;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n if (aValue === undefined && bValue === undefined)\n continue;\n if (aValue === undefined)\n return 1 * dir;\n if (bValue === undefined)\n return -1 * dir;\n if (aValue < bValue)\n return -1 * dir;\n if (aValue > bValue)\n return 1 * dir;\n }\n return 0;\n });\n }\n else {\n // Default sort by tenant name\n results.sort((a, b) => a.tenantName.localeCompare(b.tenantName));\n }\n // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = results.length;\n const items = results.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract tenant-specific filters from AXPFilterClause format\n * Maps report parameter paths to tenant entity field names\n */\n extractTenantFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n // Handle tenant-specific field mappings\n if (field === 'tenantId') {\n // Tenant ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'id',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'id',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'statusId') {\n // Status filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'statusId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'dateRange') {\n // Date range filter - custom logic handled in query\n filters.push({\n field: 'dateRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n return filters;\n }\n //#endregion\n //#region ---- Custom Filter Handlers ----\n /**\n * Apply date range filter to tenants\n */\n applyDateRangeFilter(tenants, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return tenants;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return tenants.filter((tenant) => {\n if (!tenant.registrationDate)\n return false;\n const regDate = new Date(tenant.registrationDate);\n return regDate >= startDate && regDate <= endDate;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantUserDistributionQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantUserDistributionQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: GetTenantUserDistributionQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRlbmFudC11c2VyLWRpc3RyaWJ1dGlvbi5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi90ZW5hbnQtbWFuYWdlbWVudC9yZXBvcnRzL2dldC10ZW5hbnQtdXNlci1kaXN0cmlidXRpb24ucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWtDbkYsWUFBWTtBQUtaLE1BQU0sT0FBTyw4QkFBOEI7SUFIM0M7UUFNbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxhQUFhO2FBQ3ZDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN0RixJQUFJLEVBQWdELENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDM0MsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzFGLElBQUksRUFBb0QsQ0FBQztLQW9ON0Q7SUFsTkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFnRDtRQUMxRCw4Q0FBOEM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJ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LENBQUMsTUFBTSxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxPQUFPLE9BQU8sSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMU5VLDhCQUE4QjttSEFBOUIsOEJBQThCLGNBRjdCLE1BQU07OzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRVc2VyRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvdGVuYW50LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhQU3lzdGVtU3RhdHVzVHlwZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IFJvb3RDb25maWcgYXMgVGVuYW50Um9vdENvbmZpZyB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy90ZW5hbnQtbWFuYWdlbWVudCc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlcnkgSW5wdXQvT3V0cHV0IFR5cGVzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0IHtcbiAgc2tpcD86IG51bWJlcjtcbiAgdGFrZT86IG51bWJlcjtcbiAgc29ydD86IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9PjtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUmVzdWx0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICB0ZW5hbnRTdGF0dXM6IHN0cmluZztcbiAgdG90YWxVc2Vyc0NvdW50OiBudW1iZXI7XG4gIGFjdGl2ZVVzZXJzQ291bnQ6IG51bWJlcjtcbiAgaW5hY3RpdmVVc2Vyc0NvdW50OiBudW1iZXI7XG4gIG1heFVzZXJzPzogbnVtYmVyO1xuICB1dGlsaXphdGlvblBlcmNlbnQ6IG51bWJlcjtcbiAgcmVnaXN0cmF0aW9uRGF0ZT86IERhdGU7XG4gIHJlZ2lzdHJhdGlvbkRhdGVTdHI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IFRlbmFudFVzZXJEaXN0cmlidXRpb25SZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUXVlcnlcbiAgaW1wbGVtZW50cyBBWFBRdWVyeTxHZXRUZW5hbnRVc2VyRGlzdHJpYnV0aW9uUXVlcnlJbnB1dCwgR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgdGVuYW50U2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1RlbmFudFJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7VGVuYW50Um9vdENvbmZpZy5lbnRpdGllcy50ZW5hbnQubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHRlbmFudFVzZXJTZXJ2aWNlID0gdGhpcy5lbnRpdHlTZXJ2aWNlXG4gICAgLndpdGhFbnRpdHkoYCR7VGVuYW50Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtUZW5hbnRSb290Q29uZmlnLmVudGl0aWVzLnRlbmFudFVzZXIubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudFVzZXJFbnRpdHlNb2RlbD4oKTtcblxuICBhc3luYyBmZXRjaChpbnB1dDogR2V0VGVuYW50VXNlckRpc3RyaWJ1dGlvblF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeVJlc3VsdD4ge1xuICAgIC8vIEV4dHJhY3QgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0VGVuYW50RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcbiAgICBjb25zdCBmaWx0ZXJMb2dpYyA9IChpbnB1dC5maWx0ZXJzIGFzIGFueSk/LmxvZ2ljIHx8IGlucHV0LmxvZ2ljIHx8ICdhbmQnO1xuXG4gICAgLy8gU2VwYXJhdGUgY3VzdG9tIGZpbHRlcnMgZnJvbSBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGVudGl0eUZpbHRlcnM6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBsZXQgZGF0ZVJhbmdlRmlsdGVyOiBhbnk7XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ2RhdGVSYW5nZScpIHtcbiAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXIgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50aXR5RmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHRlbmFudHNcbiAgICBjb25zdCB0ZW5hbnRzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICAgIGZpbHRlcjpcbiAgICAgICAgZW50aXR5RmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgbG9naWM6IGZpbHRlckxvZ2ljLFxuICAgICAgICAgICAgZmlsdGVyczogZW50aXR5RmlsdGVycyxcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGxldCB0ZW5hbnRzID0gdGVuYW50c1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEFwcGx5IGRhdGUgcmFuZ2UgZmlsdGVyIGlmIHByb3ZpZGVkXG4gICAgaWYgKGRhdGVSYW5nZUZpbHRlcikge1xuICAgICAgdGVuYW50cyA9IHRoaXMuYXBwbHlEYXRlUmFuZ2VGaWx0ZXIodGVuYW50cywgZGF0ZVJhbmdlRmlsdGVyKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHRlbmFudCB1c2Vyc1xuICAgIGNvbnN0IHRlbmFudFVzZXJzUmVzdWx0ID0gYXdhaXQgdGhpcy50ZW5hbnRVc2VyU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50VXNlcnMgPSB0ZW5hbnRVc2Vyc1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHMgZm9yIGVhY2ggdGVuYW50XG4gICAgY29uc3QgcmVzdWx0czogVGVuYW50VXNlckRpc3RyaWJ1dGlvblJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRlbmFudCBvZiB0ZW5hbnRzKSB7XG4gICAgICAvLyBHZXQgdGVuYW50J3MgdXNlcnNcbiAgICAgIGNvbnN0IHRlbmFudFVzZXJzTGlzdCA9IHRlbmFudFVzZXJzLmZpbHRlcigodHUpID0+IHR1LnRlbmFudElkID09PSB0ZW5hbnQuaWQpO1xuXG4gICAgICAvLyBDb3VudCBhY3RpdmUgYW5kIGluYWN0aXZlIHVzZXJzXG4gICAgICBjb25zdCBhY3RpdmVVc2VycyA9IHRlbmFudFVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh0dSkgPT4gdHUuc3RhdHVzSWQgPT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlXG4gICAgICApO1xuICAgICAgY29uc3QgaW5hY3RpdmVVc2VycyA9IHRlbmFudFVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh0dSkgPT4gdHUuc3RhdHVzSWQgIT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlXG4gICAgICApO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdXRpbGl6YXRpb24gcGVyY2VudGFnZVxuICAgICAgY29uc3QgbWF4VXNlcnMgPSB0ZW5hbnQubWF4VXNlcnM7XG4gICAgICBjb25zdCB1dGlsaXphdGlvblBlcmNlbnQgPVxuICAgICAgICBtYXhVc2VycyAmJiBtYXhVc2VycyA+IDAgPyBNYXRoLnJvdW5kKCh0ZW5hbnRVc2Vyc0xpc3QubGVuZ3RoIC8gbWF4VXNlcnMpICogMTAwKSA6IDA7XG5cbiAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICAgIHRlbmFudE5hbWU6IHRlbmFudC50aXRsZSxcbiAgICAgICAgdGVuYW50U3RhdHVzOiB0ZW5hbnQuc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICB0b3RhbFVzZXJzQ291bnQ6IHRlbmFudFVzZXJzTGlzdC5sZW5ndGgsXG4gICAgICAgIGFjdGl2ZVVzZXJzQ291bnQ6IGFjdGl2ZVVzZXJzLmxlbmd0aCxcbiAgICAgICAgaW5hY3RpdmVVc2Vyc0NvdW50OiBpbmFjdGl2ZVVzZXJzLmxlbmd0aCxcbiAgICAgICAgbWF4VXNlcnM6IG1heFVzZXJzLFxuICAgICAgICB1dGlsaXphdGlvblBlcmNlbnQ6IHV0aWxpemF0aW9uUGVyY2VudCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRGF0ZTogdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkRhdGVTdHI6IHRlbmFudC5yZWdpc3RyYXRpb25EYXRlPy50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgc29ydGluZyBpZiBwcm92aWRlZFxuICAgIGlmIChpbnB1dC5zb3J0ICYmIGlucHV0LnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgc29ydEZpZWxkIG9mIGlucHV0LnNvcnQhKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBzb3J0RmllbGQuZmllbGQgYXMga2V5b2YgVGVuYW50VXNlckRpc3RyaWJ1dGlvblJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgdGVuYW50IG5hbWVcbiAgICAgIHJlc3VsdHMuc29ydCgoYSwgYikgPT4gYS50ZW5hbnROYW1lLmxvY2FsZUNvbXBhcmUoYi50ZW5hbnROYW1lKSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgcGFnaW5hdGlvblxuICAgIGNvbnN0IHNraXAgPSBpbnB1dC5za2lwIHx8IDA7XG4gICAgY29uc3QgdGFrZSA9IGlucHV0LnRha2UgfHwgMTA7XG4gICAgY29uc3QgdG90YWwgPSByZXN1bHRzLmxlbmd0aDtcbiAgICBjb25zdCBpdGVtcyA9IHJlc3VsdHMuc2xpY2Uoc2tpcCwgc2tpcCArIHRha2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zLFxuICAgICAgdG90YWwsXG4gICAgfTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIEV4dHJhY3Rpb24gICAtLS0tXG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGVuYW50LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAqIE1hcHMgcmVwb3J0IHBhcmFtZXRlciBwYXRocyB0byB0ZW5hbnQgZW50aXR5IGZpZWxkIG5hbWVzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RUZW5hbnRGaWx0ZXJzKHBhcmFtZXRlcnM6IGFueSk6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldFRlbmFudFVzZXJEaXN0cmlidXRpb25RdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgIGlmICghcGFyYW1zQW55Py5maWx0ZXJzIHx8ICFBcnJheS5pc0FycmF5KHBhcmFtc0FueS5maWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yIHx8IHsgdHlwZTogJ2VxdWFsJyB9O1xuXG4gICAgICAvLyBIYW5kbGUgdGVuYW50LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICBpZiAoZmllbGQgPT09ICd0ZW5hbnRJZCcpIHtcbiAgICAgICAgLy8gVGVuYW50IElEIGZpbHRlciAtIGNhbiBiZSBhcnJheSBvZiBJRHMgb3Igc2luZ2xlIElEXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gdGVuYW50c1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICB0ZW5hbnRzOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1UZW5hbnRNYW5hZ2VtZW50VGVuYW50RW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHRlbmFudHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHRlbmFudHMuZmlsdGVyKCh0ZW5hbnQpID0+IHtcbiAgICAgIGlmICghdGVuYW50LnJlZ2lzdHJhdGlvbkRhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZ0RhdGUgPSBuZXcgRGF0ZSh0ZW5hbnQucmVnaXN0cmF0aW9uRGF0ZSk7XG4gICAgICByZXR1cm4gcmVnRGF0ZSA+PSBzdGFydERhdGUgJiYgcmVnRGF0ZSA8PSBlbmREYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":["TenantRootConfig"],"mappings":"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"}
|
|
@@ -55,10 +55,10 @@ class AXCNotifySignersCommand {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
59
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXCNotifySignersCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXCNotifySignersCommand, providedIn: 'root' }); }
|
|
60
60
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXCNotifySignersCommand, decorators: [{
|
|
62
62
|
type: Injectable,
|
|
63
63
|
args: [{
|
|
64
64
|
providedIn: 'root',
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
66
66
|
}] });
|
|
67
67
|
|
|
68
68
|
export { AXCNotifySignersCommand };
|
|
69
|
-
//# sourceMappingURL=acorex-connectivity-mock-notify-signers.command-
|
|
69
|
+
//# sourceMappingURL=acorex-connectivity-mock-notify-signers.command-BV-b8NBg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs","sources":["../tmp-esm2022/mock/lib/workflow-management/commands/notify-signers.command.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Notify Signers Command (Backend - Mock)\n *\n * Sends notifications to signers about the signature request.\n * This command runs on the backend and handles notification delivery.\n */\nexport class AXCNotifySignersCommand {\n //#region ---- AXPCommand Implementation ----\n async execute(input) {\n try {\n console.log(`[AXCNotifySignersCommand] Notifying ${input.signers.length} signers for request: ${input.signatureRequestId}`);\n // Validate inputs\n if (!input.signatureRequestId || !input.signers || input.signers.length === 0) {\n throw new Error('Invalid input: signatureRequestId and at least one signer are required');\n }\n // In a real implementation, this would:\n // 1. Send email notifications to each signer\n // 2. Send in-app notifications\n // 3. Create notification records\n // 4. Track notification delivery status\n // Mock: simulate notification sending\n const notifiedCount = input.signers.length;\n console.log(`[AXCNotifySignersCommand] Successfully notified ${notifiedCount} signers`);\n return {\n success: true,\n data: {\n output: {\n notifiedCount,\n },\n outcomes: {\n Done: true,\n },\n },\n };\n }\n catch (error) {\n console.error(`[AXCNotifySignersCommand] Failed to notify signers:`, error);\n return {\n success: false,\n message: {\n text: error.message || 'Failed to notify signers',\n },\n data: {\n output: {\n notifiedCount: 0,\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXCNotifySignersCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXCNotifySignersCommand, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXCNotifySignersCommand, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LXNpZ25lcnMuY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi93b3JrZmxvdy1tYW5hZ2VtZW50L2NvbW1hbmRzL25vdGlmeS1zaWduZXJzLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFnQjNDLFlBQVk7QUFFWjs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsaURBQWlEO0lBRWpELEtBQUssQ0FBQyxPQUFPLENBQ1gsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLHlCQUF5QixLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBRTVILGtCQUFrQjtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCx3Q0FBd0M7WUFDeEMsNkNBQTZDO1lBQzdDLCtCQUErQjtZQUMvQixpQ0FBaUM7WUFDakMsd0NBQXdDO1lBRXhDLHNDQUFzQztZQUN0QyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUUzQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1EQUFtRCxhQUFhLFVBQVUsQ0FBQyxDQUFDO1lBRXhGLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixhQUFhO3FCQUNkO29CQUNELFFBQVEsRUFBRTt3QkFDUixJQUFJLEVBQUUsSUFBSTtxQkFDWDtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTVFLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLDBCQUEwQjtpQkFDbEQ7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixhQUFhLEVBQUUsQ0FBQztxQkFDakI7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQXZEVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZ5U2lnbmVyc0NvbW1hbmRJbnB1dCB7XG4gIHNpZ25hdHVyZVJlcXVlc3RJZDogc3RyaW5nO1xuICBzaWduZXJzOiBzdHJpbmdbXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZnlTaWduZXJzQ29tbWFuZE91dHB1dCB7XG4gIG5vdGlmaWVkQ291bnQ6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogTm90aWZ5IFNpZ25lcnMgQ29tbWFuZCAoQmFja2VuZCAtIE1vY2spXG4gKiBcbiAqIFNlbmRzIG5vdGlmaWNhdGlvbnMgdG8gc2lnbmVycyBhYm91dCB0aGUgc2lnbmF0dXJlIHJlcXVlc3QuXG4gKiBUaGlzIGNvbW1hbmQgcnVucyBvbiB0aGUgYmFja2VuZCBhbmQgaGFuZGxlcyBub3RpZmljYXRpb24gZGVsaXZlcnkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWENOb3RpZnlTaWduZXJzQ29tbWFuZFxuICBpbXBsZW1lbnRzIEFYUENvbW1hbmQ8Tm90aWZ5U2lnbmVyc0NvbW1hbmRJbnB1dCwgeyBvdXRwdXQ6IE5vdGlmeVNpZ25lcnNDb21tYW5kT3V0cHV0OyBvdXRjb21lczogUmVjb3JkPHN0cmluZywgYW55PiB9PiB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgQVhQQ29tbWFuZCBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBOb3RpZnlTaWduZXJzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0PHsgb3V0cHV0OiBOb3RpZnlTaWduZXJzQ29tbWFuZE91dHB1dDsgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gfT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYFtBWENOb3RpZnlTaWduZXJzQ29tbWFuZF0gTm90aWZ5aW5nICR7aW5wdXQuc2lnbmVycy5sZW5ndGh9IHNpZ25lcnMgZm9yIHJlcXVlc3Q6ICR7aW5wdXQuc2lnbmF0dXJlUmVxdWVzdElkfWApO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBpbnB1dHNcbiAgICAgIGlmICghaW5wdXQuc2lnbmF0dXJlUmVxdWVzdElkIHx8ICFpbnB1dC5zaWduZXJzIHx8IGlucHV0LnNpZ25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dDogc2lnbmF0dXJlUmVxdWVzdElkIGFuZCBhdCBsZWFzdCBvbmUgc2lnbmVyIGFyZSByZXF1aXJlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQ6XG4gICAgICAvLyAxLiBTZW5kIGVtYWlsIG5vdGlmaWNhdGlvbnMgdG8gZWFjaCBzaWduZXJcbiAgICAgIC8vIDIuIFNlbmQgaW4tYXBwIG5vdGlmaWNhdGlvbnNcbiAgICAgIC8vIDMuIENyZWF0ZSBub3RpZmljYXRpb24gcmVjb3Jkc1xuICAgICAgLy8gNC4gVHJhY2sgbm90aWZpY2F0aW9uIGRlbGl2ZXJ5IHN0YXR1c1xuXG4gICAgICAvLyBNb2NrOiBzaW11bGF0ZSBub3RpZmljYXRpb24gc2VuZGluZ1xuICAgICAgY29uc3Qgbm90aWZpZWRDb3VudCA9IGlucHV0LnNpZ25lcnMubGVuZ3RoO1xuXG4gICAgICBjb25zb2xlLmxvZyhgW0FYQ05vdGlmeVNpZ25lcnNDb21tYW5kXSBTdWNjZXNzZnVsbHkgbm90aWZpZWQgJHtub3RpZmllZENvdW50fSBzaWduZXJzYCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIG5vdGlmaWVkQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgRG9uZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbQVhDTm90aWZ5U2lnbmVyc0NvbW1hbmRdIEZhaWxlZCB0byBub3RpZnkgc2lnbmVyczpgLCBlcnJvcik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIG5vdGlmeSBzaWduZXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgbm90aWZpZWRDb3VudDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":[],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,CAAC;AACrC;AACA,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACvI;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3F,gBAAgB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC;AACzG,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;AACtD,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,gDAAgD,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnG,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,aAAa;AACrC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,IAAI,EAAE,IAAI;AAClC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,mDAAmD,CAAC,EAAE,KAAK,CAAC;AACvF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,0BAA0B;AACrE,iBAAiB;AACjB,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,aAAa,EAAE,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,MAAM,EAAE,IAAI;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-notify-signers.command-BV-b8NBg.mjs","sources":["../tmp-esm2022/mock/lib/workflow-management/commands/notify-signers.command.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Notify Signers Command (Backend - Mock)\n *\n * Sends notifications to signers about the signature request.\n * This command runs on the backend and handles notification delivery.\n */\nexport class AXCNotifySignersCommand {\n //#region ---- AXPCommand Implementation ----\n async execute(input) {\n try {\n console.log(`[AXCNotifySignersCommand] Notifying ${input.signers.length} signers for request: ${input.signatureRequestId}`);\n // Validate inputs\n if (!input.signatureRequestId || !input.signers || input.signers.length === 0) {\n throw new Error('Invalid input: signatureRequestId and at least one signer are required');\n }\n // In a real implementation, this would:\n // 1. Send email notifications to each signer\n // 2. Send in-app notifications\n // 3. Create notification records\n // 4. Track notification delivery status\n // Mock: simulate notification sending\n const notifiedCount = input.signers.length;\n console.log(`[AXCNotifySignersCommand] Successfully notified ${notifiedCount} signers`);\n return {\n success: true,\n data: {\n output: {\n notifiedCount,\n },\n outcomes: {\n Done: true,\n },\n },\n };\n }\n catch (error) {\n console.error(`[AXCNotifySignersCommand] Failed to notify signers:`, error);\n return {\n success: false,\n message: {\n text: error.message || 'Failed to notify signers',\n },\n data: {\n output: {\n notifiedCount: 0,\n },\n outcomes: {\n Failed: true,\n },\n },\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXCNotifySignersCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXCNotifySignersCommand, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXCNotifySignersCommand, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LXNpZ25lcnMuY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi93b3JrZmxvdy1tYW5hZ2VtZW50L2NvbW1hbmRzL25vdGlmeS1zaWduZXJzLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFnQjNDLFlBQVk7QUFFWjs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsaURBQWlEO0lBRWpELEtBQUssQ0FBQyxPQUFPLENBQ1gsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLHlCQUF5QixLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBRTVILGtCQUFrQjtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCx3Q0FBd0M7WUFDeEMsNkNBQTZDO1lBQzdDLCtCQUErQjtZQUMvQixpQ0FBaUM7WUFDakMsd0NBQXdDO1lBRXhDLHNDQUFzQztZQUN0QyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUUzQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1EQUFtRCxhQUFhLFVBQVUsQ0FBQyxDQUFDO1lBRXhGLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixhQUFhO3FCQUNkO29CQUNELFFBQVEsRUFBRTt3QkFDUixJQUFJLEVBQUUsSUFBSTtxQkFDWDtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTVFLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLDBCQUEwQjtpQkFDbEQ7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixhQUFhLEVBQUUsQ0FBQztxQkFDakI7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQXZEVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZ5U2lnbmVyc0NvbW1hbmRJbnB1dCB7XG4gIHNpZ25hdHVyZVJlcXVlc3RJZDogc3RyaW5nO1xuICBzaWduZXJzOiBzdHJpbmdbXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZnlTaWduZXJzQ29tbWFuZE91dHB1dCB7XG4gIG5vdGlmaWVkQ291bnQ6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogTm90aWZ5IFNpZ25lcnMgQ29tbWFuZCAoQmFja2VuZCAtIE1vY2spXG4gKiBcbiAqIFNlbmRzIG5vdGlmaWNhdGlvbnMgdG8gc2lnbmVycyBhYm91dCB0aGUgc2lnbmF0dXJlIHJlcXVlc3QuXG4gKiBUaGlzIGNvbW1hbmQgcnVucyBvbiB0aGUgYmFja2VuZCBhbmQgaGFuZGxlcyBub3RpZmljYXRpb24gZGVsaXZlcnkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWENOb3RpZnlTaWduZXJzQ29tbWFuZFxuICBpbXBsZW1lbnRzIEFYUENvbW1hbmQ8Tm90aWZ5U2lnbmVyc0NvbW1hbmRJbnB1dCwgeyBvdXRwdXQ6IE5vdGlmeVNpZ25lcnNDb21tYW5kT3V0cHV0OyBvdXRjb21lczogUmVjb3JkPHN0cmluZywgYW55PiB9PiB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgQVhQQ29tbWFuZCBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBOb3RpZnlTaWduZXJzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0PHsgb3V0cHV0OiBOb3RpZnlTaWduZXJzQ29tbWFuZE91dHB1dDsgb3V0Y29tZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gfT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYFtBWENOb3RpZnlTaWduZXJzQ29tbWFuZF0gTm90aWZ5aW5nICR7aW5wdXQuc2lnbmVycy5sZW5ndGh9IHNpZ25lcnMgZm9yIHJlcXVlc3Q6ICR7aW5wdXQuc2lnbmF0dXJlUmVxdWVzdElkfWApO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBpbnB1dHNcbiAgICAgIGlmICghaW5wdXQuc2lnbmF0dXJlUmVxdWVzdElkIHx8ICFpbnB1dC5zaWduZXJzIHx8IGlucHV0LnNpZ25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dDogc2lnbmF0dXJlUmVxdWVzdElkIGFuZCBhdCBsZWFzdCBvbmUgc2lnbmVyIGFyZSByZXF1aXJlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQ6XG4gICAgICAvLyAxLiBTZW5kIGVtYWlsIG5vdGlmaWNhdGlvbnMgdG8gZWFjaCBzaWduZXJcbiAgICAgIC8vIDIuIFNlbmQgaW4tYXBwIG5vdGlmaWNhdGlvbnNcbiAgICAgIC8vIDMuIENyZWF0ZSBub3RpZmljYXRpb24gcmVjb3Jkc1xuICAgICAgLy8gNC4gVHJhY2sgbm90aWZpY2F0aW9uIGRlbGl2ZXJ5IHN0YXR1c1xuXG4gICAgICAvLyBNb2NrOiBzaW11bGF0ZSBub3RpZmljYXRpb24gc2VuZGluZ1xuICAgICAgY29uc3Qgbm90aWZpZWRDb3VudCA9IGlucHV0LnNpZ25lcnMubGVuZ3RoO1xuXG4gICAgICBjb25zb2xlLmxvZyhgW0FYQ05vdGlmeVNpZ25lcnNDb21tYW5kXSBTdWNjZXNzZnVsbHkgbm90aWZpZWQgJHtub3RpZmllZENvdW50fSBzaWduZXJzYCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIG5vdGlmaWVkQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRjb21lczoge1xuICAgICAgICAgICAgRG9uZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbQVhDTm90aWZ5U2lnbmVyc0NvbW1hbmRdIEZhaWxlZCB0byBub3RpZnkgc2lnbmVyczpgLCBlcnJvcik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIG5vdGlmeSBzaWduZXJzJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgbm90aWZpZWRDb3VudDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgICAgICBGYWlsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":[],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,CAAC;AACrC;AACA,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACvI;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3F,gBAAgB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC;AACzG,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;AACtD,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,gDAAgD,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnG,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,aAAa;AACrC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,IAAI,EAAE,IAAI;AAClC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,mDAAmD,CAAC,EAAE,KAAK,CAAC;AACvF,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,0BAA0B;AACrE,iBAAiB;AACjB,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,aAAa,EAAE,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,MAAM,EAAE,IAAI;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;"}
|