@acorex/connectivity 21.0.0-next.21 → 21.0.0-next.22
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-BDiF95NJ.mjs} +4 -4
- package/fesm2022/acorex-connectivity-api-execute.command-BDiF95NJ.mjs.map +1 -0
- 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-ybmtgGka.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.command-ybmtgGka.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs → acorex-connectivity-mock-category-with-items.query-DjrOyrEx.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-DjrOyrEx.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs → acorex-connectivity-mock-check-permission.command-B9P_A7yR.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-check-permission.command-B9P_A7yR.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs → acorex-connectivity-mock-complete-signature-process.command--78b8fGs.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-complete-signature-process.command--78b8fGs.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs → acorex-connectivity-mock-distribution-record.command-C19YvaLB.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-distribution-record.command-C19YvaLB.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs → acorex-connectivity-mock-get-application-versions-chart-data.query-B2pNXZHD.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-B2pNXZHD.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs → acorex-connectivity-mock-get-application-versions-timeline.query-BnSKvi3q.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-BnSKvi3q.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs → acorex-connectivity-mock-get-employee-list.query-CVRXAu0U.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-employee-list.query-CVRXAu0U.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs → acorex-connectivity-mock-get-location-list.query-0MUtoucG.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-location-list.query-0MUtoucG.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs → acorex-connectivity-mock-get-product-chart-data.query-BHHz0suL.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-BHHz0suL.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs → acorex-connectivity-mock-get-product-list.query-Ol6_8aCP.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-product-list.query-Ol6_8aCP.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs → acorex-connectivity-mock-get-product-pdf-data.query-B81WGJVx.mjs} +5 -5
- package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-B81WGJVx.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs → acorex-connectivity-mock-get-subscriptions-chart-data.query-8sYycUGP.mjs} +5 -5
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-8sYycUGP.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs → acorex-connectivity-mock-get-subscriptions-timeline.query-WMIMvKHn.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-WMIMvKHn.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs → acorex-connectivity-mock-get-tenant-application-access.query-BsX7mm_q.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-BsX7mm_q.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs → acorex-connectivity-mock-get-tenant-registration-chart-data.query-DWTqv-3n.mjs} +5 -5
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-DWTqv-3n.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs → acorex-connectivity-mock-get-tenant-registration-timeline.query-BpIGXUZv.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-BpIGXUZv.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs → acorex-connectivity-mock-get-tenant-user-distribution.query-fkkxRy4x.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-fkkxRy4x.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs → acorex-connectivity-mock-notify-signers.command-CSqEli2v.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-notify-signers.command-CSqEli2v.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs → acorex-connectivity-mock-request-signature.command-BVwpm6fx.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-request-signature.command-BVwpm6fx.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-sample.command-CyrjdvEA.mjs → acorex-connectivity-mock-sample.command-DQzN_79q.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-sample.command-DQzN_79q.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs → acorex-connectivity-mock-validate-all-signatures.command-Cknr42fE.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-Cknr42fE.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock.mjs +8830 -8958
- 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 +44 -10
- package/package.json +2 -2
- package/fesm2022/acorex-connectivity-api-execute.command-Di850KiF.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.command-T6-ao4e9.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-sample.command-CyrjdvEA.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs","sources":["../tmp-esm2022/mock/lib/report-management/samples/get-employee-list.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig as HumanCapitalRootConfig } from '@acorex/modules/human-capital-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetEmployeeListQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.employeeService = this.entityService\n .withEntity(`${HumanCapitalRootConfig.module.name}.${HumanCapitalRootConfig.entities.employee.name}`)\n .data();\n }\n async fetch(input) {\n // Extract employee-specific filters from AXPFilterClause format\n const extractedFilters = this.extractEmployeeFilters(input.filters);\n // Separate custom filters from entity filters\n const entityFilters = [];\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n entityFilters.push(filter);\n }\n }\n // Get all employees from storage with entity filters\n const allEmployeesResult = await this.employeeService.query({\n skip: 0,\n take: 10000, // Get all employees for aggregation\n filter: entityFilters.length > 0\n ? {\n logic: input.logic || 'and',\n filters: entityFilters,\n }\n : undefined,\n });\n const allEmployees = allEmployeesResult.items;\n // Group employees by department and team\n const departmentGroups = new Map();\n for (const employee of allEmployees) {\n // Get department from position (assuming position has departmentId)\n const departmentId = employee.position?.departmentId || employee.departmentId || 'unknown';\n const departmentTitle = employee.position?.department?.title || 'Unknown Department';\n // Get team from team memberships (assuming employee has teamId or teamMemberships)\n const teamId = employee.teamId || employee.teamMemberships?.[0]?.teamId || undefined;\n const teamTitle = employee.team?.title || employee.teamMemberships?.[0]?.team?.title || undefined;\n const teamKey = teamId || 'no-team';\n if (!departmentGroups.has(departmentId)) {\n departmentGroups.set(departmentId, new Map());\n }\n const teamMap = departmentGroups.get(departmentId);\n if (!teamMap.has(teamKey)) {\n teamMap.set(teamKey, []);\n }\n teamMap.get(teamKey).push(employee);\n }\n // Aggregate data by department and team\n const aggregatedResults = [];\n for (const [departmentId, teamMap] of departmentGroups.entries()) {\n const firstEmployee = Array.from(teamMap.values())[0]?.[0];\n const departmentTitle = firstEmployee?.position?.department?.title || 'Unknown Department';\n for (const [teamKey, employees] of teamMap.entries()) {\n const teamId = teamKey !== 'no-team' ? teamKey : undefined;\n const teamTitle = teamKey !== 'no-team' ? employees[0]?.team?.title || employees[0]?.teamMemberships?.[0]?.team?.title : undefined;\n // Calculate average experience (years since hire date)\n const now = new Date();\n const experiences = employees\n .map((emp) => {\n if (!emp.hireDate)\n return 0;\n const hireDate = new Date(emp.hireDate);\n const diffTime = Math.abs(now.getTime() - hireDate.getTime());\n return diffTime / (1000 * 60 * 60 * 24 * 365.25); // Convert to years\n })\n .filter((exp) => exp > 0);\n const averageExperience = experiences.length > 0 ? experiences.reduce((sum, exp) => sum + exp, 0) / experiences.length : 0;\n // Get unique employment types\n const employmentTypeSet = new Set();\n for (const employee of employees) {\n if (employee.employmentType?.title) {\n employmentTypeSet.add(employee.employmentType.title);\n }\n }\n const employmentTypes = Array.from(employmentTypeSet).join(', ') || 'N/A';\n aggregatedResults.push({\n departmentId,\n departmentTitle,\n teamId,\n teamTitle,\n employeeCount: employees.length,\n employmentTypes,\n averageExperience: Number(averageExperience.toFixed(2)),\n totalEmployees: employees.length,\n });\n }\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n aggregatedResults.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 // Handle undefined values\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 // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = aggregatedResults.length;\n const items = aggregatedResults.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract employee-specific filters from AXPFilterClause format\n * Maps report parameter paths to employee entity field names\n */\n extractEmployeeFilters(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 employee-specific field mappings\n if (field === 'department') {\n // Department filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'position.departmentId', // Assuming position has departmentId\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'position.departmentId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'team') {\n // Team filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'teamId', // Assuming employee has teamId or teamMemberships\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'teamId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'employmentType') {\n // Employment type filter - skip 'all' value\n if (value && value !== 'all') {\n filters.push({\n field: 'employmentTypeId',\n operator: { type: 'equal' },\n value: value,\n });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetEmployeeListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetEmployeeListQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetEmployeeListQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVtcGxveWVlLWxpc3QucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQvc2FtcGxlcy9nZXQtZW1wbG95ZWUtbGlzdC5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxJQUFJLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBaUNoRyxZQUFZO0FBS1osTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUltQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDekMsVUFBVSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BHLElBQUksRUFBd0QsQ0FBQztLQXFOakU7SUFuTkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFzQztRQUNoRCxnRUFBZ0U7UUFDaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBFLDhDQUE4QztRQUM5QyxNQUFNLGFBQWEsR0FBeUMsRUFBRSxDQUFDO1FBRS9ELElBQUksZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFN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O2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUXVlcnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWE1IdW1hbkNhcGl0YWxNYW5hZ2VtZW50RW1wbG95ZWVFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9odW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyBhcyBIdW1hbkNhcGl0YWxSb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2h1bWFuLWNhcGl0YWwtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBSb290Q29uZmlnIGFzIE9yZ2FuaXphdGlvblJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRFbXBsb3llZUxpc3RRdWVyeUlucHV0IHtcbiAgc2tpcD86IG51bWJlcjtcbiAgdGFrZT86IG51bWJlcjtcbiAgc29ydD86IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9PjtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbXBsb3llZUJ5RGVwYXJ0bWVudFJlc3VsdCB7XG4gIGRlcGFydG1lbnRJZDogc3RyaW5nO1xuICBkZXBhcnRtZW50VGl0bGU6IHN0cmluZztcbiAgdGVhbUlkPzogc3RyaW5nO1xuICB0ZWFtVGl0bGU/OiBzdHJpbmc7XG4gIGVtcGxveWVlQ291bnQ6IG51bWJlcjtcbiAgZW1wbG95bWVudFR5cGVzOiBzdHJpbmc7XG4gIGF2ZXJhZ2VFeHBlcmllbmNlOiBudW1iZXI7XG4gIHRvdGFsRW1wbG95ZWVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1wbG95ZWVMaXN0UXVlcnlSZXN1bHQge1xuICBpdGVtczogRW1wbG95ZWVCeURlcGFydG1lbnRSZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRFbXBsb3llZUxpc3RRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldEVtcGxveWVlTGlzdFF1ZXJ5SW5wdXQsIEdldEVtcGxveWVlTGlzdFF1ZXJ5UmVzdWx0PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlbXBsb3llZVNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtIdW1hbkNhcGl0YWxSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke0h1bWFuQ2FwaXRhbFJvb3RDb25maWcuZW50aXRpZXMuZW1wbG95ZWUubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNSHVtYW5DYXBpdGFsTWFuYWdlbWVudEVtcGxveWVlRW50aXR5TW9kZWw+KCk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldEVtcGxveWVlTGlzdFF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldEVtcGxveWVlTGlzdFF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gRXh0cmFjdCBlbXBsb3llZS1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgIGNvbnN0IGV4dHJhY3RlZEZpbHRlcnMgPSB0aGlzLmV4dHJhY3RFbXBsb3llZUZpbHRlcnMoaW5wdXQuZmlsdGVycyk7XG5cbiAgICAvLyBTZXBhcmF0ZSBjdXN0b20gZmlsdGVycyBmcm9tIGVudGl0eSBmaWx0ZXJzXG4gICAgY29uc3QgZW50aXR5RmlsdGVyczogR2V0RW1wbG95ZWVMaXN0UXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgZW50aXR5RmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IGFsbCBlbXBsb3llZXMgZnJvbSBzdG9yYWdlIHdpdGggZW50aXR5IGZpbHRlcnNcbiAgICBjb25zdCBhbGxFbXBsb3llZXNSZXN1bHQgPSBhd2FpdCB0aGlzLmVtcGxveWVlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsIC8vIEdldCBhbGwgZW1wbG95ZWVzIGZvciBhZ2dyZWdhdGlvblxuICAgICAgZmlsdGVyOlxuICAgICAgICBlbnRpdHlGaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgIGxvZ2ljOiBpbnB1dC5sb2dpYyB8fCAnYW5kJyxcbiAgICAgICAgICAgICAgZmlsdGVyczogZW50aXR5RmlsdGVycyxcbiAgICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWxsRW1wbG95ZWVzID0gYWxsRW1wbG95ZWVzUmVzdWx0Lml0ZW1zO1xuXG4gICAgLy8gR3JvdXAgZW1wbG95ZWVzIGJ5IGRlcGFydG1lbnQgYW5kIHRlYW1cbiAgICBjb25zdCBkZXBhcnRtZW50R3JvdXBzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEFYTUh1bWFuQ2FwaXRhbE1hbmFnZW1lbnRFbXBsb3llZUVudGl0eU1vZGVsW10+PigpO1xuXG4gICAgZm9yIChjb25zdCBlbXBsb3llZSBvZiBhbGxFbXBsb3llZXMpIHtcbiAgICAgIC8vIEdldCBkZXBhcnRtZW50IGZyb20gcG9zaXRpb24gKGFzc3VtaW5nIHBvc2l0aW9uIGhhcyBkZXBhcnRtZW50SWQpXG4gICAgICBjb25zdCBkZXBhcnRtZW50SWQgPSAoZW1wbG95ZWUgYXMgYW55KS5wb3NpdGlvbj8uZGVwYXJ0bWVudElkIHx8IChlbXBsb3llZSBhcyBhbnkpLmRlcGFydG1lbnRJZCB8fCAndW5rbm93bic7XG4gICAgICBjb25zdCBkZXBhcnRtZW50VGl0bGUgPSAoZW1wbG95ZWUgYXMgYW55KS5wb3NpdGlvbj8uZGVwYXJ0bWVudD8udGl0bGUgfHwgJ1Vua25vd24gRGVwYXJ0bWVudCc7XG5cbiAgICAgIC8vIEdldCB0ZWFtIGZyb20gdGVhbSBtZW1iZXJzaGlwcyAoYXNzdW1pbmcgZW1wbG95ZWUgaGFzIHRlYW1JZCBvciB0ZWFtTWVtYmVyc2hpcHMpXG4gICAgICBjb25zdCB0ZWFtSWQgPSAoZW1wbG95ZWUgYXMgYW55KS50ZWFtSWQgfHwgKGVtcGxveWVlIGFzIGFueSkudGVhbU1lbWJlcnNoaXBzPy5bMF0/LnRlYW1JZCB8fCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB0ZWFtVGl0bGUgPSAoZW1wbG95ZWUgYXMgYW55KS50ZWFtPy50aXRsZSB8fCAoZW1wbG95ZWUgYXMgYW55KS50ZWFtTWVtYmVyc2hpcHM/LlswXT8udGVhbT8udGl0bGUgfHwgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCB0ZWFtS2V5ID0gdGVhbUlkIHx8ICduby10ZWFtJztcblxuICAgICAgaWYgKCFkZXBhcnRtZW50R3JvdXBzLmhhcyhkZXBhcnRtZW50SWQpKSB7XG4gICAgICAgIGRlcGFydG1lbnRHcm91cHMuc2V0KGRlcGFydG1lbnRJZCwgbmV3IE1hcCgpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVhbU1hcCA9IGRlcGFydG1lbnRHcm91cHMuZ2V0KGRlcGFydG1lbnRJZCkhO1xuICAgICAgaWYgKCF0ZWFtTWFwLmhhcyh0ZWFtS2V5KSkge1xuICAgICAgICB0ZWFtTWFwLnNldCh0ZWFtS2V5LCBbXSk7XG4gICAgICB9XG5cbiAgICAgIHRlYW1NYXAuZ2V0KHRlYW1LZXkpIS5wdXNoKGVtcGxveWVlKTtcbiAgICB9XG5cbiAgICAvLyBBZ2dyZWdhdGUgZGF0YSBieSBkZXBhcnRtZW50IGFuZCB0ZWFtXG4gICAgY29uc3QgYWdncmVnYXRlZFJlc3VsdHM6IEVtcGxveWVlQnlEZXBhcnRtZW50UmVzdWx0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW2RlcGFydG1lbnRJZCwgdGVhbU1hcF0gb2YgZGVwYXJ0bWVudEdyb3Vwcy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0RW1wbG95ZWUgPSBBcnJheS5mcm9tKHRlYW1NYXAudmFsdWVzKCkpWzBdPy5bMF07XG4gICAgICBjb25zdCBkZXBhcnRtZW50VGl0bGUgPSAoZmlyc3RFbXBsb3llZSBhcyBhbnkpPy5wb3NpdGlvbj8uZGVwYXJ0bWVudD8udGl0bGUgfHwgJ1Vua25vd24gRGVwYXJ0bWVudCc7XG5cbiAgICAgIGZvciAoY29uc3QgW3RlYW1LZXksIGVtcGxveWVlc10gb2YgdGVhbU1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgY29uc3QgdGVhbUlkID0gdGVhbUtleSAhPT0gJ25vLXRlYW0nID8gdGVhbUtleSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdGVhbVRpdGxlID1cbiAgICAgICAgICB0ZWFtS2V5ICE9PSAnbm8tdGVhbScgPyAoZW1wbG95ZWVzWzBdIGFzIGFueSk/LnRlYW0/LnRpdGxlIHx8IChlbXBsb3llZXNbMF0gYXMgYW55KT8udGVhbU1lbWJlcnNoaXBzPy5bMF0/LnRlYW0/LnRpdGxlIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBhdmVyYWdlIGV4cGVyaWVuY2UgKHllYXJzIHNpbmNlIGhpcmUgZGF0ZSlcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZXhwZXJpZW5jZXMgPSBlbXBsb3llZXNcbiAgICAgICAgICAubWFwKChlbXApID0+IHtcbiAgICAgICAgICAgIGlmICghZW1wLmhpcmVEYXRlKSByZXR1cm4gMDtcbiAgICAgICAgICAgIGNvbnN0IGhpcmVEYXRlID0gbmV3IERhdGUoZW1wLmhpcmVEYXRlKTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZUaW1lID0gTWF0aC5hYnMobm93LmdldFRpbWUoKSAtIGhpcmVEYXRlLmdldFRpbWUoKSk7XG4gICAgICAgICAgICByZXR1cm4gZGlmZlRpbWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NS4yNSk7IC8vIENvbnZlcnQgdG8geWVhcnNcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKGV4cCkgPT4gZXhwID4gMCk7XG5cbiAgICAgICAgY29uc3QgYXZlcmFnZUV4cGVyaWVuY2UgPSBleHBlcmllbmNlcy5sZW5ndGggPiAwID8gZXhwZXJpZW5jZXMucmVkdWNlKChzdW0sIGV4cCkgPT4gc3VtICsgZXhwLCAwKSAvIGV4cGVyaWVuY2VzLmxlbmd0aCA6IDA7XG5cbiAgICAgICAgLy8gR2V0IHVuaXF1ZSBlbXBsb3ltZW50IHR5cGVzXG4gICAgICAgIGNvbnN0IGVtcGxveW1lbnRUeXBlU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGZvciAoY29uc3QgZW1wbG95ZWUgb2YgZW1wbG95ZWVzKSB7XG4gICAgICAgICAgaWYgKChlbXBsb3llZSBhcyBhbnkpLmVtcGxveW1lbnRUeXBlPy50aXRsZSkge1xuICAgICAgICAgICAgZW1wbG95bWVudFR5cGVTZXQuYWRkKChlbXBsb3llZSBhcyBhbnkpLmVtcGxveW1lbnRUeXBlLnRpdGxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW1wbG95bWVudFR5cGVzID0gQXJyYXkuZnJvbShlbXBsb3ltZW50VHlwZVNldCkuam9pbignLCAnKSB8fCAnTi9BJztcblxuICAgICAgICBhZ2dyZWdhdGVkUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICBkZXBhcnRtZW50SWQsXG4gICAgICAgICAgZGVwYXJ0bWVudFRpdGxlLFxuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICB0ZWFtVGl0bGUsXG4gICAgICAgICAgZW1wbG95ZWVDb3VudDogZW1wbG95ZWVzLmxlbmd0aCxcbiAgICAgICAgICBlbXBsb3ltZW50VHlwZXMsXG4gICAgICAgICAgYXZlcmFnZUV4cGVyaWVuY2U6IE51bWJlcihhdmVyYWdlRXhwZXJpZW5jZS50b0ZpeGVkKDIpKSxcbiAgICAgICAgICB0b3RhbEVtcGxveWVlczogZW1wbG95ZWVzLmxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgc29ydGluZyBpZiBwcm92aWRlZFxuICAgIGlmIChpbnB1dC5zb3J0ICYmIGlucHV0LnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgYWdncmVnYXRlZFJlc3VsdHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNvcnRGaWVsZCBvZiBpbnB1dC5zb3J0ISkge1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gc29ydEZpZWxkLmZpZWxkIGFzIGtleW9mIEVtcGxveWVlQnlEZXBhcnRtZW50UmVzdWx0O1xuICAgICAgICAgIGNvbnN0IGFWYWx1ZSA9IGFbZmllbGRdO1xuICAgICAgICAgIGNvbnN0IGJWYWx1ZSA9IGJbZmllbGRdO1xuICAgICAgICAgIGNvbnN0IGRpciA9IHNvcnRGaWVsZC5kaXIgPT09ICdhc2MnID8gMSA6IC0xO1xuXG4gICAgICAgICAgLy8gSGFuZGxlIHVuZGVmaW5lZCB2YWx1ZXNcbiAgICAgICAgICBpZiAoYVZhbHVlID09PSB1bmRlZmluZWQgJiYgYlZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDEgKiBkaXI7XG4gICAgICAgICAgaWYgKGJWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gLTEgKiBkaXI7XG5cbiAgICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSByZXR1cm4gLTEgKiBkaXI7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA+IGJWYWx1ZSkgcmV0dXJuIDEgKiBkaXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBwYWdpbmF0aW9uXG4gICAgY29uc3Qgc2tpcCA9IGlucHV0LnNraXAgfHwgMDtcbiAgICBjb25zdCB0YWtlID0gaW5wdXQudGFrZSB8fCAxMDtcbiAgICBjb25zdCB0b3RhbCA9IGFnZ3JlZ2F0ZWRSZXN1bHRzLmxlbmd0aDtcbiAgICBjb25zdCBpdGVtcyA9IGFnZ3JlZ2F0ZWRSZXN1bHRzLnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtcyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGVtcGxveWVlLXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAqIE1hcHMgcmVwb3J0IHBhcmFtZXRlciBwYXRocyB0byBlbXBsb3llZSBlbnRpdHkgZmllbGQgbmFtZXNcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdEVtcGxveWVlRmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRFbXBsb3llZUxpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldEVtcGxveWVlTGlzdFF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgIGNvbnN0IHBhcmFtc0FueSA9IHBhcmFtZXRlcnMgYXMgYW55O1xuXG4gICAgaWYgKCFwYXJhbXNBbnk/LmZpbHRlcnMgfHwgIUFycmF5LmlzQXJyYXkocGFyYW1zQW55LmZpbHRlcnMpKSB7XG4gICAgICByZXR1cm4gZmlsdGVycztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBwYXJhbXNBbnkuZmlsdGVycykge1xuICAgICAgaWYgKCFmaWx0ZXI/LmZpZWxkIHx8IGZpbHRlcj8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXI/LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZDtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXIub3BlcmF0b3IgfHwgeyB0eXBlOiAnZXF1YWwnIH07XG5cbiAgICAgIC8vIEhhbmRsZSBlbXBsb3llZS1zcGVjaWZpYyBmaWVsZCBtYXBwaW5nc1xuICAgICAgaWYgKGZpZWxkID09PSAnZGVwYXJ0bWVudCcpIHtcbiAgICAgICAgLy8gRGVwYXJ0bWVudCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3Bvc2l0aW9uLmRlcGFydG1lbnRJZCcsIC8vIEFzc3VtaW5nIHBvc2l0aW9uIGhhcyBkZXBhcnRtZW50SWRcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdpbicgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3Bvc2l0aW9uLmRlcGFydG1lbnRJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICd0ZWFtJykge1xuICAgICAgICAvLyBUZWFtIGZpbHRlciAtIGNhbiBiZSBhcnJheSBvZiBJRHMgb3Igc2luZ2xlIElEXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAndGVhbUlkJywgLy8gQXNzdW1pbmcgZW1wbG95ZWUgaGFzIHRlYW1JZCBvciB0ZWFtTWVtYmVyc2hpcHNcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdpbicgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3RlYW1JZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdlbXBsb3ltZW50VHlwZScpIHtcbiAgICAgICAgLy8gRW1wbG95bWVudCB0eXBlIGZpbHRlciAtIHNraXAgJ2FsbCcgdmFsdWVcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAnYWxsJykge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2VtcGxveW1lbnRUeXBlSWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19"],"names":["HumanCapitalRootConfig"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs","sources":["../tmp-esm2022/mock/lib/report-management/samples/get-location-list.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig as LocationRootConfig } from '@acorex/modules/location-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetLocationListQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.locationService = this.entityService\n .withEntity(`${LocationRootConfig.module.name}.${LocationRootConfig.entities.location.name}`)\n .data();\n }\n async fetch(input) {\n // Extract location-specific filters from AXPFilterClause format\n const extractedFilters = this.extractLocationFilters(input.filters);\n // Separate custom filters from entity filters\n const entityFilters = [];\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n entityFilters.push(filter);\n }\n }\n // Get all locations from storage with entity filters\n const allLocationsResult = await this.locationService.query({\n skip: 0,\n take: 10000, // Get all locations for aggregation\n filter: entityFilters.length > 0\n ? {\n logic: input.logic || 'and',\n filters: entityFilters,\n }\n : undefined,\n });\n const allLocations = allLocationsResult.items;\n // Group locations by country, province, and city\n const locationGroups = new Map();\n for (const location of allLocations) {\n // Get geographic information\n const countryId = location.countryId || 'unknown';\n const countryTitle = location.country?.title || 'Unknown Country';\n const provinceId = location.stateId || 'unknown';\n const provinceTitle = location.state?.title || 'Unknown Province';\n const cityId = location.cityId || 'unknown';\n const cityTitle = location.city?.title || 'Unknown City';\n // Create nested map structure: country -> province -> city -> locations[]\n if (!locationGroups.has(countryId)) {\n locationGroups.set(countryId, new Map());\n }\n const provinceMap = locationGroups.get(countryId);\n if (!provinceMap.has(provinceId)) {\n provinceMap.set(provinceId, new Map());\n }\n const cityMap = provinceMap.get(provinceId);\n if (!cityMap.has(cityId)) {\n cityMap.set(cityId, []);\n }\n cityMap.get(cityId).push(location);\n }\n // Aggregate data by country, province, and city\n const aggregatedResults = [];\n for (const [countryId, provinceMap] of locationGroups.entries()) {\n const firstLocation = Array.from(provinceMap.values())[0]?.values().next().value?.[0];\n const countryTitle = firstLocation?.country?.title || 'Unknown Country';\n for (const [provinceId, cityMap] of provinceMap.entries()) {\n const firstLocationInProvince = cityMap.values().next().value?.[0];\n const provinceTitle = firstLocationInProvince?.state?.title || 'Unknown Province';\n for (const [cityId, locations] of cityMap.entries()) {\n const cityTitle = locations[0]?.city?.title || 'Unknown City';\n aggregatedResults.push({\n countryId,\n countryTitle,\n provinceId,\n provinceTitle,\n cityId,\n cityTitle,\n locationCount: locations.length,\n totalLocations: locations.length,\n });\n }\n }\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n aggregatedResults.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 // Handle undefined values\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 // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = aggregatedResults.length;\n const items = aggregatedResults.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract location-specific filters from AXPFilterClause format\n * Maps report parameter paths to location entity field names\n */\n extractLocationFilters(parameters) {\n const filters = [];\n const paramsAny = parameters;\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n console.log('⚠️ [extractLocationFilters] No filters array found or not an array');\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 location-specific field mappings\n if (field === 'country') {\n // Country filter\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'countryId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'countryId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'province') {\n // Province/State filter\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'stateId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'stateId',\n operator: { type: 'equal' },\n value: value,\n });\n console.log('✅ [extractLocationFilters] Added province filter (equal):', value);\n }\n }\n else if (field === 'city') {\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'cityId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'cityId',\n operator: { type: 'equal' },\n value: value,\n });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetLocationListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetLocationListQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetLocationListQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxvY2F0aW9uLWxpc3QucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQvc2FtcGxlcy9nZXQtbG9jYXRpb24tbGlzdC5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxJQUFJLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBZ0N2RixZQUFZO0FBS1osTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUltQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDekMsVUFBVSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVGLElBQUksRUFBb0QsQ0FBQztLQThNN0Q7SUE1TUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFzQztRQUNoRCxnRUFBZ0U7UUFDaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLDhDQUE4QztRQUM5QyxNQUFNLGFBQWEsR0FBeUMsRUFBRSxDQUFDO1FBRS9ELElBQUksZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFN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SCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sdUJBQXVCO2dCQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNYLEtBQUssRUFBRSxLQUFLO29CQUNaLFFBQVEsRUFBRSxRQUFRO29CQUNsQixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBL01VLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNTG9jYXRpb25NYW5hZ2VtZW50TG9jYXRpb25FbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9sb2NhdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFJvb3RDb25maWcgYXMgTG9jYXRpb25Sb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2xvY2F0aW9uLW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXJ5IElucHV0L091dHB1dCBUeXBlcyAgIC0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRMb2NhdGlvbkxpc3RRdWVyeUlucHV0IHtcbiAgc2tpcD86IG51bWJlcjtcbiAgdGFrZT86IG51bWJlcjtcbiAgc29ydD86IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9PjtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkJ5Q2l0eVJlc3VsdCB7XG4gIGNvdW50cnlJZD86IHN0cmluZztcbiAgY291bnRyeVRpdGxlPzogc3RyaW5nO1xuICBwcm92aW5jZUlkPzogc3RyaW5nO1xuICBwcm92aW5jZVRpdGxlPzogc3RyaW5nO1xuICBjaXR5SWQ/OiBzdHJpbmc7XG4gIGNpdHlUaXRsZT86IHN0cmluZztcbiAgbG9jYXRpb25Db3VudDogbnVtYmVyO1xuICB0b3RhbExvY2F0aW9uczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldExvY2F0aW9uTGlzdFF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IExvY2F0aW9uQnlDaXR5UmVzdWx0W107XG4gIHRvdGFsOiBudW1iZXI7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0TG9jYXRpb25MaXN0UXVlcnkgaW1wbGVtZW50cyBBWFBRdWVyeTxHZXRMb2NhdGlvbkxpc3RRdWVyeUlucHV0LCBHZXRMb2NhdGlvbkxpc3RRdWVyeVJlc3VsdD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgbG9jYXRpb25TZXJ2aWNlID0gdGhpcy5lbnRpdHlTZXJ2aWNlXG4gICAgLndpdGhFbnRpdHkoYCR7TG9jYXRpb25Sb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke0xvY2F0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5sb2NhdGlvbi5uYW1lfWApXG4gICAgLmRhdGE8c3RyaW5nLCBBWE1Mb2NhdGlvbk1hbmFnZW1lbnRMb2NhdGlvbkVudGl0eU1vZGVsPigpO1xuXG4gIGFzeW5jIGZldGNoKGlucHV0OiBHZXRMb2NhdGlvbkxpc3RRdWVyeUlucHV0IHwgYW55KTogUHJvbWlzZTxHZXRMb2NhdGlvbkxpc3RRdWVyeVJlc3VsdD4ge1xuICAgIC8vIEV4dHJhY3QgbG9jYXRpb24tc3BlY2lmaWMgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0TG9jYXRpb25GaWx0ZXJzKGlucHV0LmZpbHRlcnMpO1xuICAgIC8vIFNlcGFyYXRlIGN1c3RvbSBmaWx0ZXJzIGZyb20gZW50aXR5IGZpbHRlcnNcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJzOiBHZXRMb2NhdGlvbkxpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcblxuICAgIGlmIChleHRyYWN0ZWRGaWx0ZXJzICYmIGV4dHJhY3RlZEZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZXh0cmFjdGVkRmlsdGVycykge1xuICAgICAgICBlbnRpdHlGaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gR2V0IGFsbCBsb2NhdGlvbnMgZnJvbSBzdG9yYWdlIHdpdGggZW50aXR5IGZpbHRlcnNcbiAgICBjb25zdCBhbGxMb2NhdGlvbnNSZXN1bHQgPSBhd2FpdCB0aGlzLmxvY2F0aW9uU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsIC8vIEdldCBhbGwgbG9jYXRpb25zIGZvciBhZ2dyZWdhdGlvblxuICAgICAgZmlsdGVyOlxuICAgICAgICBlbnRpdHlGaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICh7XG4gICAgICAgICAgICBsb2dpYzogaW5wdXQubG9naWMgfHwgJ2FuZCcsXG4gICAgICAgICAgICBmaWx0ZXJzOiBlbnRpdHlGaWx0ZXJzLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWxsTG9jYXRpb25zID0gYWxsTG9jYXRpb25zUmVzdWx0Lml0ZW1zO1xuXG4gICAgLy8gR3JvdXAgbG9jYXRpb25zIGJ5IGNvdW50cnksIHByb3ZpbmNlLCBhbmQgY2l0eVxuICAgIGNvbnN0IGxvY2F0aW9uR3JvdXBzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEFYTUxvY2F0aW9uTWFuYWdlbWVudExvY2F0aW9uRW50aXR5TW9kZWxbXT4+PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBhbGxMb2NhdGlvbnMpIHtcbiAgICAgIC8vIEdldCBnZW9ncmFwaGljIGluZm9ybWF0aW9uXG4gICAgICBjb25zdCBjb3VudHJ5SWQgPSAobG9jYXRpb24gYXMgYW55KS5jb3VudHJ5SWQgfHwgJ3Vua25vd24nO1xuICAgICAgY29uc3QgY291bnRyeVRpdGxlID0gKGxvY2F0aW9uIGFzIGFueSkuY291bnRyeT8udGl0bGUgfHwgJ1Vua25vd24gQ291bnRyeSc7XG5cbiAgICAgIGNvbnN0IHByb3ZpbmNlSWQgPSAobG9jYXRpb24gYXMgYW55KS5zdGF0ZUlkIHx8ICd1bmtub3duJztcbiAgICAgIGNvbnN0IHByb3ZpbmNlVGl0bGUgPSAobG9jYXRpb24gYXMgYW55KS5zdGF0ZT8udGl0bGUgfHwgJ1Vua25vd24gUHJvdmluY2UnO1xuXG4gICAgICBjb25zdCBjaXR5SWQgPSAobG9jYXRpb24gYXMgYW55KS5jaXR5SWQgfHwgJ3Vua25vd24nO1xuICAgICAgY29uc3QgY2l0eVRpdGxlID0gKGxvY2F0aW9uIGFzIGFueSkuY2l0eT8udGl0bGUgfHwgJ1Vua25vd24gQ2l0eSc7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXN0ZWQgbWFwIHN0cnVjdHVyZTogY291bnRyeSAtPiBwcm92aW5jZSAtPiBjaXR5IC0+IGxvY2F0aW9uc1tdXG4gICAgICBpZiAoIWxvY2F0aW9uR3JvdXBzLmhhcyhjb3VudHJ5SWQpKSB7XG4gICAgICAgIGxvY2F0aW9uR3JvdXBzLnNldChjb3VudHJ5SWQsIG5ldyBNYXAoKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3ZpbmNlTWFwID0gbG9jYXRpb25Hcm91cHMuZ2V0KGNvdW50cnlJZCkhO1xuICAgICAgaWYgKCFwcm92aW5jZU1hcC5oYXMocHJvdmluY2VJZCkpIHtcbiAgICAgICAgcHJvdmluY2VNYXAuc2V0KHByb3ZpbmNlSWQsIG5ldyBNYXAoKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNpdHlNYXAgPSBwcm92aW5jZU1hcC5nZXQocHJvdmluY2VJZCkhO1xuICAgICAgaWYgKCFjaXR5TWFwLmhhcyhjaXR5SWQpKSB7XG4gICAgICAgIGNpdHlNYXAuc2V0KGNpdHlJZCwgW10pO1xuICAgICAgfVxuXG4gICAgICBjaXR5TWFwLmdldChjaXR5SWQpIS5wdXNoKGxvY2F0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBBZ2dyZWdhdGUgZGF0YSBieSBjb3VudHJ5LCBwcm92aW5jZSwgYW5kIGNpdHlcbiAgICBjb25zdCBhZ2dyZWdhdGVkUmVzdWx0czogTG9jYXRpb25CeUNpdHlSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbY291bnRyeUlkLCBwcm92aW5jZU1hcF0gb2YgbG9jYXRpb25Hcm91cHMuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBmaXJzdExvY2F0aW9uID0gQXJyYXkuZnJvbShwcm92aW5jZU1hcC52YWx1ZXMoKSlbMF0/LnZhbHVlcygpLm5leHQoKS52YWx1ZT8uWzBdO1xuICAgICAgY29uc3QgY291bnRyeVRpdGxlID0gKGZpcnN0TG9jYXRpb24gYXMgYW55KT8uY291bnRyeT8udGl0bGUgfHwgJ1Vua25vd24gQ291bnRyeSc7XG5cbiAgICAgIGZvciAoY29uc3QgW3Byb3ZpbmNlSWQsIGNpdHlNYXBdIG9mIHByb3ZpbmNlTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBjb25zdCBmaXJzdExvY2F0aW9uSW5Qcm92aW5jZSA9IGNpdHlNYXAudmFsdWVzKCkubmV4dCgpLnZhbHVlPy5bMF07XG4gICAgICAgIGNvbnN0IHByb3ZpbmNlVGl0bGUgPSAoZmlyc3RMb2NhdGlvbkluUHJvdmluY2UgYXMgYW55KT8uc3RhdGU/LnRpdGxlIHx8ICdVbmtub3duIFByb3ZpbmNlJztcblxuICAgICAgICBmb3IgKGNvbnN0IFtjaXR5SWQsIGxvY2F0aW9uc10gb2YgY2l0eU1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICBjb25zdCBjaXR5VGl0bGUgPSAobG9jYXRpb25zWzBdIGFzIGFueSk/LmNpdHk/LnRpdGxlIHx8ICdVbmtub3duIENpdHknO1xuXG4gICAgICAgICAgYWdncmVnYXRlZFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICBjb3VudHJ5SWQsXG4gICAgICAgICAgICBjb3VudHJ5VGl0bGUsXG4gICAgICAgICAgICBwcm92aW5jZUlkLFxuICAgICAgICAgICAgcHJvdmluY2VUaXRsZSxcbiAgICAgICAgICAgIGNpdHlJZCxcbiAgICAgICAgICAgIGNpdHlUaXRsZSxcbiAgICAgICAgICAgIGxvY2F0aW9uQ291bnQ6IGxvY2F0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbExvY2F0aW9uczogbG9jYXRpb25zLmxlbmd0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwcGx5IHNvcnRpbmcgaWYgcHJvdmlkZWRcbiAgICBpZiAoaW5wdXQuc29ydCAmJiBpbnB1dC5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFnZ3JlZ2F0ZWRSZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBzb3J0RmllbGQgb2YgaW5wdXQuc29ydCEpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHNvcnRGaWVsZC5maWVsZCBhcyBrZXlvZiBMb2NhdGlvbkJ5Q2l0eVJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGJWYWx1ZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAoYVZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAxICogZGlyO1xuICAgICAgICAgIGlmIChiVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xICogZGlyO1xuXG4gICAgICAgICAgaWYgKGFWYWx1ZSA8IGJWYWx1ZSkgcmV0dXJuIC0xICogZGlyO1xuICAgICAgICAgIGlmIChhVmFsdWUgPiBiVmFsdWUpIHJldHVybiAxICogZGlyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgcGFnaW5hdGlvblxuICAgIGNvbnN0IHNraXAgPSBpbnB1dC5za2lwIHx8IDA7XG4gICAgY29uc3QgdGFrZSA9IGlucHV0LnRha2UgfHwgMTA7XG4gICAgY29uc3QgdG90YWwgPSBhZ2dyZWdhdGVkUmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSBhZ2dyZWdhdGVkUmVzdWx0cy5zbGljZShza2lwLCBza2lwICsgdGFrZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXMsXG4gICAgICB0b3RhbCxcbiAgICB9O1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgRXh0cmFjdGlvbiAgIC0tLS1cblxuICAvKipcbiAgICogRXh0cmFjdCBsb2NhdGlvbi1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgKiBNYXBzIHJlcG9ydCBwYXJhbWV0ZXIgcGF0aHMgdG8gbG9jYXRpb24gZW50aXR5IGZpZWxkIG5hbWVzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RMb2NhdGlvbkZpbHRlcnMocGFyYW1ldGVyczogYW55KTogR2V0TG9jYXRpb25MaXN0UXVlcnlJbnB1dFsnZmlsdGVycyddIHtcbiAgICBjb25zdCBmaWx0ZXJzOiBHZXRMb2NhdGlvbkxpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgIGlmICghcGFyYW1zQW55Py5maWx0ZXJzIHx8ICFBcnJheS5pc0FycmF5KHBhcmFtc0FueS5maWx0ZXJzKSkge1xuICAgICAgY29uc29sZS5sb2coJ+KaoO+4jyBbZXh0cmFjdExvY2F0aW9uRmlsdGVyc10gTm8gZmlsdGVycyBhcnJheSBmb3VuZCBvciBub3QgYW4gYXJyYXknKTtcbiAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yIHx8IHsgdHlwZTogJ2VxdWFsJyB9O1xuXG4gICAgICAvLyBIYW5kbGUgbG9jYXRpb24tc3BlY2lmaWMgZmllbGQgbWFwcGluZ3NcbiAgICAgIGlmIChmaWVsZCA9PT0gJ2NvdW50cnknKSB7XG4gICAgICAgIC8vIENvdW50cnkgZmlsdGVyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnY291bnRyeUlkJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdpbicgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2NvdW50cnlJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdwcm92aW5jZScpIHtcbiAgICAgICAgLy8gUHJvdmluY2UvU3RhdGUgZmlsdGVyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnc3RhdGVJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaW4nIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0ZUlkJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIFtleHRyYWN0TG9jYXRpb25GaWx0ZXJzXSBBZGRlZCBwcm92aW5jZSBmaWx0ZXIgKGVxdWFsKTonLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdjaXR5Jykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2NpdHlJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaW4nIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdjaXR5SWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19"],"names":["LocationRootConfig"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs","sources":["../tmp-esm2022/mock/lib/product-catalog/reports/get-product-chart-data.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '@acorex/modules/product-catalog';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetProductChartDataQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.productService = this.entityService.withEntity(`${RootConfig.module.name}.${RootConfig.entities.product.name}`).data();\n }\n async fetch(input) {\n // Extract product-specific filters from AXPFilterClause format\n const extractedFilters = this.extractProductFilters(input.filters);\n // Separate custom filters from entity filters\n const entityFilters = [];\n let priceRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'priceRange') {\n priceRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all products from storage with entity filters (no pagination for charts)\n const allProductsResult = await this.productService.query({\n skip: 0,\n take: 10000, // Get all products for aggregation\n filter: entityFilters.length > 0\n ? {\n logic: input.logic || 'and',\n filters: entityFilters,\n }\n : undefined,\n });\n let allProducts = allProductsResult.items;\n // Apply custom price range filter after fetching\n if (priceRangeFilter && priceRangeFilter !== 'all') {\n allProducts = this.applyPriceRangeFilter(allProducts, priceRangeFilter);\n }\n // Group products by brand\n const brandGroups = new Map();\n for (const product of allProducts) {\n const brandKey = product.brand?.title || product.brandId || 'Unknown';\n if (!brandGroups.has(brandKey)) {\n brandGroups.set(brandKey, []);\n }\n brandGroups.get(brandKey).push(product);\n }\n // Aggregate data by brand for chart\n const chartResults = [];\n for (const [brandName, products] of brandGroups.entries()) {\n chartResults.push({\n brand: brandName,\n productCount: products.length,\n });\n }\n return {\n items: chartResults,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract product-specific filters from AXPFilterClause format\n * Maps report parameter paths to product entity field names\n */\n extractProductFilters(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 product-specific field mappings\n if (field === 'brand') {\n // Brand filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'brandId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'brandId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'category') {\n // Category filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value[0], // Use first category for contains check\n });\n }\n else if (value) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value,\n });\n }\n }\n else if (field === 'status') {\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 === 'priceRange') {\n // Price range filter - custom logic handled in query\n filters.push({\n field: 'priceRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else if (field === 'startDate' || field === 'endDate') {\n // Date filters - can be handled if needed\n // For now, skip as they might not be directly on product entity\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 custom price range filter to products\n */\n applyPriceRangeFilter(products, priceRange) {\n return products.filter((product) => {\n const price = product.basePrice || 0;\n switch (priceRange) {\n case 'under-50':\n return price < 50;\n case '50-100':\n return price >= 50 && price < 100;\n case '100-500':\n return price >= 100 && price < 500;\n case '500-1000':\n return price >= 500 && price < 1000;\n case 'over-1000':\n return price >= 1000;\n default:\n return true;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductChartDataQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductChartDataQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb2R1Y3QtY2hhcnQtZGF0YS5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi9wcm9kdWN0LWNhdGFsb2cvcmVwb3J0cy9nZXQtcHJvZHVjdC1jaGFydC1kYXRhLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFzQjdELFlBQVk7QUFLWixNQUFNLE9BQU8sd0JBQXdCO0lBSHJDO1FBSW1CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUErQyxDQUFDO0tBMEw3SztJQXhMQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQTBDO1FBQ3BELCtEQUErRDtRQUMvRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkUsOENBQThDO1FBQzlDLE1BQU0sYUFBYSxHQUE2QyxFQUFFLENBQUM7UUFDbkUsSUFBSSxnQkFBb0MsQ0FBQztRQUV6QyxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxLQUFLLE1BQU0sTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RDLElBQUksTUFBTSxD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QUFFO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBRXJDLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ25CLEtBQUssVUFBVTtvQkFDYixPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssUUFBUTtvQkFDWCxPQUFPLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDcEMsS0FBSyxTQUFTO29CQUNaLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNyQyxLQUFLLFVBQVU7b0JBQ2IsT0FBTyxLQUFLLElBQUksR0FBRyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLEtBQUssV0FBVztvQkFDZCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7Z0JBQ3ZCO29CQUNFLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBekxVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcHJvZHVjdC1jYXRhbG9nJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcHJvZHVjdC1jYXRhbG9nJztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZHVjdENoYXJ0RGF0YVF1ZXJ5SW5wdXQge1xuICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0b3I6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgdmFsdWU6IGFueTtcbiAgfT47XG4gIGxvZ2ljPzogJ2FuZCcgfCAnb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RDaGFydERhdGFSZXN1bHQge1xuICBicmFuZDogc3RyaW5nO1xuICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9kdWN0Q2hhcnREYXRhUXVlcnlSZXN1bHQge1xuICBpdGVtczogUHJvZHVjdENoYXJ0RGF0YVJlc3VsdFtdO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdldFByb2R1Y3RDaGFydERhdGFRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFByb2R1Y3RDaGFydERhdGFRdWVyeUlucHV0LCBHZXRQcm9kdWN0Q2hhcnREYXRhUXVlcnlSZXN1bHQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHByb2R1Y3RTZXJ2aWNlID0gdGhpcy5lbnRpdHlTZXJ2aWNlLndpdGhFbnRpdHkoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnByb2R1Y3QubmFtZX1gKS5kYXRhPHN0cmluZywgQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWw+KCk7XG5cbiAgYXN5bmMgZmV0Y2goaW5wdXQ6IEdldFByb2R1Y3RDaGFydERhdGFRdWVyeUlucHV0IHwgYW55KTogUHJvbWlzZTxHZXRQcm9kdWN0Q2hhcnREYXRhUXVlcnlSZXN1bHQ+IHtcbiAgICAvLyBFeHRyYWN0IHByb2R1Y3Qtc3BlY2lmaWMgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICBjb25zdCBleHRyYWN0ZWRGaWx0ZXJzID0gdGhpcy5leHRyYWN0UHJvZHVjdEZpbHRlcnMoaW5wdXQuZmlsdGVycyk7XG5cbiAgICAvLyBTZXBhcmF0ZSBjdXN0b20gZmlsdGVycyBmcm9tIGVudGl0eSBmaWx0ZXJzXG4gICAgY29uc3QgZW50aXR5RmlsdGVyczogR2V0UHJvZHVjdENoYXJ0RGF0YVF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgIGxldCBwcmljZVJhbmdlRmlsdGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ3ByaWNlUmFuZ2UnKSB7XG4gICAgICAgICAgcHJpY2VSYW5nZUZpbHRlciA9IGZpbHRlci52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnRpdHlGaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBhbGwgcHJvZHVjdHMgZnJvbSBzdG9yYWdlIHdpdGggZW50aXR5IGZpbHRlcnMgKG5vIHBhZ2luYXRpb24gZm9yIGNoYXJ0cylcbiAgICBjb25zdCBhbGxQcm9kdWN0c1Jlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcDogMCxcbiAgICAgIHRha2U6IDEwMDAwLCAvLyBHZXQgYWxsIHByb2R1Y3RzIGZvciBhZ2dyZWdhdGlvblxuICAgICAgZmlsdGVyOlxuICAgICAgICBlbnRpdHlGaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICh7XG4gICAgICAgICAgICBsb2dpYzogaW5wdXQubG9naWMgfHwgJ2FuZCcsXG4gICAgICAgICAgICBmaWx0ZXJzOiBlbnRpdHlGaWx0ZXJzLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgbGV0IGFsbFByb2R1Y3RzID0gYWxsUHJvZHVjdHNSZXN1bHQuaXRlbXM7XG5cbiAgICAvLyBBcHBseSBjdXN0b20gcHJpY2UgcmFuZ2UgZmlsdGVyIGFmdGVyIGZldGNoaW5nXG4gICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIgJiYgcHJpY2VSYW5nZUZpbHRlciAhPT0gJ2FsbCcpIHtcbiAgICAgIGFsbFByb2R1Y3RzID0gdGhpcy5hcHBseVByaWNlUmFuZ2VGaWx0ZXIoYWxsUHJvZHVjdHMsIHByaWNlUmFuZ2VGaWx0ZXIpO1xuICAgIH1cblxuICAgIC8vIEdyb3VwIHByb2R1Y3RzIGJ5IGJyYW5kXG4gICAgY29uc3QgYnJhbmRHcm91cHMgPSBuZXcgTWFwPHN0cmluZywgQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWxbXT4oKTtcblxuICAgIGZvciAoY29uc3QgcHJvZHVjdCBvZiBhbGxQcm9kdWN0cykge1xuICAgICAgY29uc3QgYnJhbmRLZXkgPSBwcm9kdWN0LmJyYW5kPy50aXRsZSB8fCBwcm9kdWN0LmJyYW5kSWQgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWJyYW5kR3JvdXBzLmhhcyhicmFuZEtleSkpIHtcbiAgICAgICAgYnJhbmRHcm91cHMuc2V0KGJyYW5kS2V5LCBbXSk7XG4gICAgICB9XG5cbiAgICAgIGJyYW5kR3JvdXBzLmdldChicmFuZEtleSkhLnB1c2gocHJvZHVjdCk7XG4gICAgfVxuXG4gICAgLy8gQWdncmVnYXRlIGRhdGEgYnkgYnJhbmQgZm9yIGNoYXJ0XG4gICAgY29uc3QgY2hhcnRSZXN1bHRzOiBQcm9kdWN0Q2hhcnREYXRhUmVzdWx0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW2JyYW5kTmFtZSwgcHJvZHVjdHNdIG9mIGJyYW5kR3JvdXBzLmVudHJpZXMoKSkge1xuICAgICAgY2hhcnRSZXN1bHRzLnB1c2goe1xuICAgICAgICBicmFuZDogYnJhbmROYW1lLFxuICAgICAgICBwcm9kdWN0Q291bnQ6IHByb2R1Y3RzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogY2hhcnRSZXN1bHRzLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHByb2R1Y3Qtc3BlY2lmaWMgZmlsdGVycyBmcm9tIEFYUEZpbHRlckNsYXVzZSBmb3JtYXRcbiAgICogTWFwcyByZXBvcnQgcGFyYW1ldGVyIHBhdGhzIHRvIHByb2R1Y3QgZW50aXR5IGZpZWxkIG5hbWVzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RQcm9kdWN0RmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRQcm9kdWN0Q2hhcnREYXRhUXVlcnlJbnB1dFsnZmlsdGVycyddIHtcbiAgICBjb25zdCBmaWx0ZXJzOiBHZXRQcm9kdWN0Q2hhcnREYXRhUXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG4gICAgY29uc3QgcGFyYW1zQW55ID0gcGFyYW1ldGVycyBhcyBhbnk7XG5cbiAgICBpZiAoIXBhcmFtc0FueT8uZmlsdGVycyB8fCAhQXJyYXkuaXNBcnJheShwYXJhbXNBbnkuZmlsdGVycykpIHtcbiAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHBhcmFtc0FueS5maWx0ZXJzKSB7XG4gICAgICBpZiAoIWZpbHRlcj8uZmllbGQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcj8udmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpZWxkID0gZmlsdGVyLmZpZWxkO1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlci5vcGVyYXRvciB8fCB7IHR5cGU6ICdlcXVhbCcgfTtcblxuICAgICAgLy8gSGFuZGxlIHByb2R1Y3Qtc3BlY2lmaWMgZmllbGQgbWFwcGluZ3NcbiAgICAgIGlmIChmaWVsZCA9PT0gJ2JyYW5kJykge1xuICAgICAgICAvLyBCcmFuZCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnYnJhbmRJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgICAgLy8gQ2F0ZWdvcnkgZmlsdGVyIC0gY2FuIGJlIGFycmF5IG9mIElEcyBvciBzaW5nbGUgSURcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVbMF0sIC8vIFVzZSBmaXJzdCBjYXRlZ29yeSBmb3IgY29udGFpbnMgY2hlY2tcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2NhdGVnb3J5SWRzJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3N0YXR1cycpIHtcbiAgICAgICAgLy8gU3RhdHVzIGZpbHRlciAtIHNraXAgJ2FsbCcgdmFsdWVcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAnYWxsJykge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3N0YXR1c0lkJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3ByaWNlUmFuZ2UnKSB7XG4gICAgICAgIC8vIFByaWNlIHJhbmdlIGZpbHRlciAtIGN1c3RvbSBsb2dpYyBoYW5kbGVkIGluIHF1ZXJ5XG4gICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6ICdwcmljZVJhbmdlJyxcbiAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnIHx8IGZpZWxkID09PSAnZW5kRGF0ZScpIHtcbiAgICAgICAgLy8gRGF0ZSBmaWx0ZXJzIC0gY2FuIGJlIGhhbmRsZWQgaWYgbmVlZGVkXG4gICAgICAgIC8vIEZvciBub3csIHNraXAgYXMgdGhleSBtaWdodCBub3QgYmUgZGlyZWN0bHkgb24gcHJvZHVjdCBlbnRpdHlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpcmVjdCBmaWVsZCBtYXBwaW5nXG4gICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDdXN0b20gRmlsdGVyIEhhbmRsZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBBcHBseSBjdXN0b20gcHJpY2UgcmFuZ2UgZmlsdGVyIHRvIHByb2R1Y3RzXG4gICAqL1xuICBwcml2YXRlIGFwcGx5UHJpY2VSYW5nZUZpbHRlcihcbiAgICBwcm9kdWN0czogQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWxbXSxcbiAgICBwcmljZVJhbmdlOiBzdHJpbmdcbiAgKTogQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWxbXSB7XG4gICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcigocHJvZHVjdCkgPT4ge1xuICAgICAgY29uc3QgcHJpY2UgPSBwcm9kdWN0LmJhc2VQcmljZSB8fCAwO1xuXG4gICAgICBzd2l0Y2ggKHByaWNlUmFuZ2UpIHtcbiAgICAgICAgY2FzZSAndW5kZXItNTAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA8IDUwO1xuICAgICAgICBjYXNlICc1MC0xMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSA1MCAmJiBwcmljZSA8IDEwMDtcbiAgICAgICAgY2FzZSAnMTAwLTUwMCc6XG4gICAgICAgICAgcmV0dXJuIHByaWNlID49IDEwMCAmJiBwcmljZSA8IDUwMDtcbiAgICAgICAgY2FzZSAnNTAwLTEwMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSA1MDAgJiYgcHJpY2UgPCAxMDAwO1xuICAgICAgICBjYXNlICdvdmVyLTEwMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSAxMDAwO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs","sources":["../tmp-esm2022/mock/lib/product-catalog/reports/get-product-list.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '@acorex/modules/product-catalog';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetProductListQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.productService = this.entityService.withEntity(`${RootConfig.module.name}.${RootConfig.entities.product.name}`).data();\n }\n async fetch(input) {\n // Extract product-specific filters from AXPFilterClause format\n const extractedFilters = this.extractProductFilters(input.filters);\n // Separate custom filters from entity filters\n const entityFilters = [];\n let priceRangeFilter;\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'priceRange') {\n priceRangeFilter = filter.value;\n }\n else {\n entityFilters.push(filter);\n }\n }\n }\n // Get all products from storage with entity filters\n const allProductsResult = await this.productService.query({\n skip: 0,\n take: 10000, // Get all products for aggregation\n filter: entityFilters.length > 0\n ? {\n logic: input.logic || 'and',\n filters: entityFilters,\n }\n : undefined,\n });\n let allProducts = allProductsResult.items;\n // Apply custom price range filter after fetching\n if (priceRangeFilter && priceRangeFilter !== 'all') {\n allProducts = this.applyPriceRangeFilter(allProducts, priceRangeFilter);\n }\n // Group products by brand\n const brandGroups = new Map();\n for (const product of allProducts) {\n const brandKey = product.brand?.title || product.brandId || 'Unknown';\n if (!brandGroups.has(brandKey)) {\n brandGroups.set(brandKey, []);\n }\n brandGroups.get(brandKey).push(product);\n }\n // Aggregate data by brand\n const aggregatedResults = [];\n for (const [brandName, products] of brandGroups.entries()) {\n const prices = products.map((p) => p.basePrice || 0).filter((p) => p > 0);\n const totalValue = prices.reduce((sum, price) => sum + price, 0);\n const productCount = products.length;\n const averagePrice = productCount > 0 ? totalValue / productCount : 0;\n const minPrice = prices.length > 0 ? Math.min(...prices) : 0;\n const maxPrice = prices.length > 0 ? Math.max(...prices) : 0;\n // Get unique categories\n const categorySet = new Set();\n for (const product of products) {\n if (product.categories && Array.isArray(product.categories)) {\n for (const cat of product.categories) {\n if (cat.title) {\n categorySet.add(cat.title);\n }\n }\n }\n }\n const categories = Array.from(categorySet).join(', ');\n // Get brand ID from first product\n const brandId = products[0]?.brandId || products[0]?.brand?.id;\n // Get manufacturer from first product (assuming all products in a brand have same manufacturer)\n const manufacturerName = products[0]?.manufacturer?.title || products[0]?.manufacturerId || 'Unknown';\n const manufacturerId = products[0]?.manufacturerId || products[0]?.manufacturer?.id;\n aggregatedResults.push({\n brand: brandName,\n brandId,\n manufacturer: manufacturerName,\n manufacturerId,\n productCount,\n totalValue: Number(totalValue.toFixed(2)),\n averagePrice: Number(averagePrice.toFixed(2)),\n minPrice: Number(minPrice.toFixed(2)),\n maxPrice: Number(maxPrice.toFixed(2)),\n categories,\n });\n }\n // Apply sorting if provided\n if (input.sort && input.sort.length > 0) {\n aggregatedResults.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 // Handle undefined values\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 // Apply pagination\n const skip = input.skip || 0;\n const take = input.take || 10;\n const total = aggregatedResults.length;\n const items = aggregatedResults.slice(skip, skip + take);\n return {\n items,\n total,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract product-specific filters from AXPFilterClause format\n * Maps report parameter paths to product entity field names\n */\n extractProductFilters(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 product-specific field mappings\n if (field === 'brand') {\n // Brand filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'brandId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'brandId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'category') {\n // Category filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value[0], // Use first category for contains check\n });\n }\n else if (value) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value,\n });\n }\n }\n else if (field === 'status') {\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 === 'priceRange') {\n // Price range filter - custom logic handled in query\n filters.push({\n field: 'priceRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else if (field === 'startDate' || field === 'endDate') {\n // Date filters - can be handled if needed\n // For now, skip as they might not be directly on product entity\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 custom price range filter to products\n */\n applyPriceRangeFilter(products, priceRange) {\n return products.filter((product) => {\n const price = product.basePrice || 0;\n switch (priceRange) {\n case 'under-50':\n return price < 50;\n case '50-100':\n return price >= 50 && price < 100;\n case '100-500':\n return price >= 100 && price < 500;\n case '500-1000':\n return price >= 500 && price < 1000;\n case 'over-1000':\n return price >= 1000;\n default:\n return true;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductListQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductListQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb2R1Y3QtbGlzdC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi9wcm9kdWN0LWNhdGFsb2cvcmVwb3J0cy9nZXQtcHJvZHVjdC1saXN0LnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFrQzdELFlBQVk7QUFLWixNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSW1CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUErQyxDQUFDO0tBeVA3SztJQXZQQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQXFDO1FBQy9DLCtEQUErRDtRQUMvRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkUsOENBQThDO1FBQzlDLE1BQU0sYUFBYSxHQUF3QyxFQUFFLENBQUM7UUFDOUQsSUFBSSxnQkFBb0MsQ0FBQztRQUV6QyxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxLQUFLLE1BQU0sTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RDLElBQUksTUFBTSxDQUFDLEtBQUssS0FB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O1FBRWxCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO1lBRXJDLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ25CLEtBQUssVUFBVTtvQkFDYixPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssUUFBUTtvQkFDWCxPQUFPLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDcEMsS0FBSyxTQUFTO29CQUNaLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNyQyxLQUFLLFVBQVU7b0JBQ2IsT0FBTyxLQUFLLElBQUksR0FBRyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLEtBQUssV0FBVztvQkFDZCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7Z0JBQ3ZCO29CQUNFLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBeFBVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcHJvZHVjdC1jYXRhbG9nJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcHJvZHVjdC1jYXRhbG9nJztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZHVjdExpc3RRdWVyeUlucHV0IHtcbiAgc2tpcD86IG51bWJlcjtcbiAgdGFrZT86IG51bWJlcjtcbiAgc29ydD86IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9PjtcbiAgZmlsdGVycz86IEFycmF5PHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9wZXJhdG9yOiB7IHR5cGU6IHN0cmluZyB9O1xuICAgIHZhbHVlOiBhbnk7XG4gIH0+O1xuICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0QnlCcmFuZFJlc3VsdCB7XG4gIGJyYW5kOiBzdHJpbmc7XG4gIGJyYW5kSWQ/OiBzdHJpbmc7XG4gIG1hbnVmYWN0dXJlcjogc3RyaW5nO1xuICBtYW51ZmFjdHVyZXJJZD86IHN0cmluZztcbiAgcHJvZHVjdENvdW50OiBudW1iZXI7XG4gIHRvdGFsVmFsdWU6IG51bWJlcjtcbiAgYXZlcmFnZVByaWNlOiBudW1iZXI7XG4gIG1pblByaWNlOiBudW1iZXI7XG4gIG1heFByaWNlOiBudW1iZXI7XG4gIGNhdGVnb3JpZXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9kdWN0TGlzdFF1ZXJ5UmVzdWx0IHtcbiAgaXRlbXM6IFByb2R1Y3RCeUJyYW5kUmVzdWx0W107XG4gIHRvdGFsOiBudW1iZXI7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0UHJvZHVjdExpc3RRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dCwgR2V0UHJvZHVjdExpc3RRdWVyeVJlc3VsdD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgcHJvZHVjdFNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2Uud2l0aEVudGl0eShgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucHJvZHVjdC5uYW1lfWApLmRhdGE8c3RyaW5nLCBBWE1Qcm9kdWN0Q2F0YWxvZ1Byb2R1Y3RFbnRpdHlNb2RlbD4oKTtcblxuICBhc3luYyBmZXRjaChpbnB1dDogR2V0UHJvZHVjdExpc3RRdWVyeUlucHV0IHwgYW55KTogUHJvbWlzZTxHZXRQcm9kdWN0TGlzdFF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgY29uc3QgZXh0cmFjdGVkRmlsdGVycyA9IHRoaXMuZXh0cmFjdFByb2R1Y3RGaWx0ZXJzKGlucHV0LmZpbHRlcnMpO1xuXG4gICAgLy8gU2VwYXJhdGUgY3VzdG9tIGZpbHRlcnMgZnJvbSBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGVudGl0eUZpbHRlcnM6IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG4gICAgbGV0IHByaWNlUmFuZ2VGaWx0ZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChleHRyYWN0ZWRGaWx0ZXJzICYmIGV4dHJhY3RlZEZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZXh0cmFjdGVkRmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyLmZpZWxkID09PSAncHJpY2VSYW5nZScpIHtcbiAgICAgICAgICBwcmljZVJhbmdlRmlsdGVyID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudGl0eUZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IGFsbCBwcm9kdWN0cyBmcm9tIHN0b3JhZ2Ugd2l0aCBlbnRpdHkgZmlsdGVyc1xuICAgIGNvbnN0IGFsbFByb2R1Y3RzUmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0U2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsIC8vIEdldCBhbGwgcHJvZHVjdHMgZm9yIGFnZ3JlZ2F0aW9uXG4gICAgICBmaWx0ZXI6XG4gICAgICAgIGVudGl0eUZpbHRlcnMubGVuZ3RoID4gMFxuICAgICAgICAgID8gKHtcbiAgICAgICAgICAgIGxvZ2ljOiBpbnB1dC5sb2dpYyB8fCAnYW5kJyxcbiAgICAgICAgICAgIGZpbHRlcnM6IGVudGl0eUZpbHRlcnMsXG4gICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBsZXQgYWxsUHJvZHVjdHMgPSBhbGxQcm9kdWN0c1Jlc3VsdC5pdGVtcztcblxuICAgIC8vIEFwcGx5IGN1c3RvbSBwcmljZSByYW5nZSBmaWx0ZXIgYWZ0ZXIgZmV0Y2hpbmdcbiAgICBpZiAocHJpY2VSYW5nZUZpbHRlciAmJiBwcmljZVJhbmdlRmlsdGVyICE9PSAnYWxsJykge1xuICAgICAgYWxsUHJvZHVjdHMgPSB0aGlzLmFwcGx5UHJpY2VSYW5nZUZpbHRlcihhbGxQcm9kdWN0cywgcHJpY2VSYW5nZUZpbHRlcik7XG4gICAgfVxuXG4gICAgLy8gR3JvdXAgcHJvZHVjdHMgYnkgYnJhbmRcbiAgICBjb25zdCBicmFuZEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBBWE1Qcm9kdWN0Q2F0YWxvZ1Byb2R1Y3RFbnRpdHlNb2RlbFtdPigpO1xuXG4gICAgZm9yIChjb25zdCBwcm9kdWN0IG9mIGFsbFByb2R1Y3RzKSB7XG4gICAgICBjb25zdCBicmFuZEtleSA9IHByb2R1Y3QuYnJhbmQ/LnRpdGxlIHx8IHByb2R1Y3QuYnJhbmRJZCB8fCAnVW5rbm93bic7XG5cbiAgICAgIGlmICghYnJhbmRHcm91cHMuaGFzKGJyYW5kS2V5KSkge1xuICAgICAgICBicmFuZEdyb3Vwcy5zZXQoYnJhbmRLZXksIFtdKTtcbiAgICAgIH1cblxuICAgICAgYnJhbmRHcm91cHMuZ2V0KGJyYW5kS2V5KSEucHVzaChwcm9kdWN0KTtcbiAgICB9XG5cbiAgICAvLyBBZ2dyZWdhdGUgZGF0YSBieSBicmFuZFxuICAgIGNvbnN0IGFnZ3JlZ2F0ZWRSZXN1bHRzOiBQcm9kdWN0QnlCcmFuZFJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFticmFuZE5hbWUsIHByb2R1Y3RzXSBvZiBicmFuZEdyb3Vwcy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHByaWNlcyA9IHByb2R1Y3RzLm1hcCgocCkgPT4gcC5iYXNlUHJpY2UgfHwgMCkuZmlsdGVyKChwKSA9PiBwID4gMCk7XG4gICAgICBjb25zdCB0b3RhbFZhbHVlID0gcHJpY2VzLnJlZHVjZSgoc3VtLCBwcmljZSkgPT4gc3VtICsgcHJpY2UsIDApO1xuICAgICAgY29uc3QgcHJvZHVjdENvdW50ID0gcHJvZHVjdHMubGVuZ3RoO1xuICAgICAgY29uc3QgYXZlcmFnZVByaWNlID0gcHJvZHVjdENvdW50ID4gMCA/IHRvdGFsVmFsdWUgLyBwcm9kdWN0Q291bnQgOiAwO1xuICAgICAgY29uc3QgbWluUHJpY2UgPSBwcmljZXMubGVuZ3RoID4gMCA/IE1hdGgubWluKC4uLnByaWNlcykgOiAwO1xuICAgICAgY29uc3QgbWF4UHJpY2UgPSBwcmljZXMubGVuZ3RoID4gMCA/IE1hdGgubWF4KC4uLnByaWNlcykgOiAwO1xuXG4gICAgICAvLyBHZXQgdW5pcXVlIGNhdGVnb3JpZXNcbiAgICAgIGNvbnN0IGNhdGVnb3J5U2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBmb3IgKGNvbnN0IHByb2R1Y3Qgb2YgcHJvZHVjdHMpIHtcbiAgICAgICAgaWYgKHByb2R1Y3QuY2F0ZWdvcmllcyAmJiBBcnJheS5pc0FycmF5KHByb2R1Y3QuY2F0ZWdvcmllcykpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBwcm9kdWN0LmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgIGlmIChjYXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgY2F0ZWdvcnlTZXQuYWRkKGNhdC50aXRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbShjYXRlZ29yeVNldCkuam9pbignLCAnKTtcblxuICAgICAgLy8gR2V0IGJyYW5kIElEIGZyb20gZmlyc3QgcHJvZHVjdFxuICAgICAgY29uc3QgYnJhbmRJZCA9IHByb2R1Y3RzWzBdPy5icmFuZElkIHx8IHByb2R1Y3RzWzBdPy5icmFuZD8uaWQ7XG5cbiAgICAgIC8vIEdldCBtYW51ZmFjdHVyZXIgZnJvbSBmaXJzdCBwcm9kdWN0IChhc3N1bWluZyBhbGwgcHJvZHVjdHMgaW4gYSBicmFuZCBoYXZlIHNhbWUgbWFudWZhY3R1cmVyKVxuICAgICAgY29uc3QgbWFudWZhY3R1cmVyTmFtZSA9IHByb2R1Y3RzWzBdPy5tYW51ZmFjdHVyZXI/LnRpdGxlIHx8IHByb2R1Y3RzWzBdPy5tYW51ZmFjdHVyZXJJZCB8fCAnVW5rbm93bic7XG4gICAgICBjb25zdCBtYW51ZmFjdHVyZXJJZCA9IHByb2R1Y3RzWzBdPy5tYW51ZmFjdHVyZXJJZCB8fCBwcm9kdWN0c1swXT8ubWFudWZhY3R1cmVyPy5pZDtcblxuICAgICAgYWdncmVnYXRlZFJlc3VsdHMucHVzaCh7XG4gICAgICAgIGJyYW5kOiBicmFuZE5hbWUsXG4gICAgICAgIGJyYW5kSWQsXG4gICAgICAgIG1hbnVmYWN0dXJlcjogbWFudWZhY3R1cmVyTmFtZSxcbiAgICAgICAgbWFudWZhY3R1cmVySWQsXG4gICAgICAgIHByb2R1Y3RDb3VudCxcbiAgICAgICAgdG90YWxWYWx1ZTogTnVtYmVyKHRvdGFsVmFsdWUudG9GaXhlZCgyKSksXG4gICAgICAgIGF2ZXJhZ2VQcmljZTogTnVtYmVyKGF2ZXJhZ2VQcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgICAgbWluUHJpY2U6IE51bWJlcihtaW5QcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgICAgbWF4UHJpY2U6IE51bWJlcihtYXhQcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHNvcnRpbmcgaWYgcHJvdmlkZWRcbiAgICBpZiAoaW5wdXQuc29ydCAmJiBpbnB1dC5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFnZ3JlZ2F0ZWRSZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBzb3J0RmllbGQgb2YgaW5wdXQuc29ydCEpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHNvcnRGaWVsZC5maWVsZCBhcyBrZXlvZiBQcm9kdWN0QnlCcmFuZFJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGJWYWx1ZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAoYVZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAxICogZGlyO1xuICAgICAgICAgIGlmIChiVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xICogZGlyO1xuXG4gICAgICAgICAgaWYgKGFWYWx1ZSA8IGJWYWx1ZSkgcmV0dXJuIC0xICogZGlyO1xuICAgICAgICAgIGlmIChhVmFsdWUgPiBiVmFsdWUpIHJldHVybiAxICogZGlyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgcGFnaW5hdGlvblxuICAgIGNvbnN0IHNraXAgPSBpbnB1dC5za2lwIHx8IDA7XG4gICAgY29uc3QgdGFrZSA9IGlucHV0LnRha2UgfHwgMTA7XG4gICAgY29uc3QgdG90YWwgPSBhZ2dyZWdhdGVkUmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSBhZ2dyZWdhdGVkUmVzdWx0cy5zbGljZShza2lwLCBza2lwICsgdGFrZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXMsXG4gICAgICB0b3RhbCxcbiAgICB9O1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgRXh0cmFjdGlvbiAgIC0tLS1cblxuICAvKipcbiAgICogRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAqIE1hcHMgcmVwb3J0IHBhcmFtZXRlciBwYXRocyB0byBwcm9kdWN0IGVudGl0eSBmaWVsZCBuYW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0UHJvZHVjdEZpbHRlcnMocGFyYW1ldGVyczogYW55KTogR2V0UHJvZHVjdExpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dFsnZmlsdGVycyddID0gW107XG4gICAgY29uc3QgcGFyYW1zQW55ID0gcGFyYW1ldGVycyBhcyBhbnk7XG5cbiAgICBpZiAoIXBhcmFtc0FueT8uZmlsdGVycyB8fCAhQXJyYXkuaXNBcnJheShwYXJhbXNBbnkuZmlsdGVycykpIHtcbiAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHBhcmFtc0FueS5maWx0ZXJzKSB7XG4gICAgICBpZiAoIWZpbHRlcj8uZmllbGQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcj8udmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpZWxkID0gZmlsdGVyLmZpZWxkO1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlci5vcGVyYXRvciB8fCB7IHR5cGU6ICdlcXVhbCcgfTtcblxuICAgICAgLy8gSGFuZGxlIHByb2R1Y3Qtc3BlY2lmaWMgZmllbGQgbWFwcGluZ3NcbiAgICAgIGlmIChmaWVsZCA9PT0gJ2JyYW5kJykge1xuICAgICAgICAvLyBCcmFuZCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkOiAnYnJhbmRJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgICAgLy8gQ2F0ZWdvcnkgZmlsdGVyIC0gY2FuIGJlIGFycmF5IG9mIElEcyBvciBzaW5nbGUgSURcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVbMF0sIC8vIFVzZSBmaXJzdCBjYXRlZ29yeSBmb3IgY29udGFpbnMgY2hlY2tcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ2NhdGVnb3J5SWRzJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdjb250YWlucycgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3N0YXR1cycpIHtcbiAgICAgICAgLy8gU3RhdHVzIGZpbHRlciAtIHNraXAgJ2FsbCcgdmFsdWVcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAnYWxsJykge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3N0YXR1c0lkJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3ByaWNlUmFuZ2UnKSB7XG4gICAgICAgIC8vIFByaWNlIHJhbmdlIGZpbHRlciAtIGN1c3RvbSBsb2dpYyBoYW5kbGVkIGluIHF1ZXJ5XG4gICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6ICdwcmljZVJhbmdlJyxcbiAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnIHx8IGZpZWxkID09PSAnZW5kRGF0ZScpIHtcbiAgICAgICAgLy8gRGF0ZSBmaWx0ZXJzIC0gY2FuIGJlIGhhbmRsZWQgaWYgbmVlZGVkXG4gICAgICAgIC8vIEZvciBub3csIHNraXAgYXMgdGhleSBtaWdodCBub3QgYmUgZGlyZWN0bHkgb24gcHJvZHVjdCBlbnRpdHlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERpcmVjdCBmaWVsZCBtYXBwaW5nXG4gICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDdXN0b20gRmlsdGVyIEhhbmRsZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBBcHBseSBjdXN0b20gcHJpY2UgcmFuZ2UgZmlsdGVyIHRvIHByb2R1Y3RzXG4gICAqL1xuICBwcml2YXRlIGFwcGx5UHJpY2VSYW5nZUZpbHRlcihcbiAgICBwcm9kdWN0czogQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWxbXSxcbiAgICBwcmljZVJhbmdlOiBzdHJpbmdcbiAgKTogQVhNUHJvZHVjdENhdGFsb2dQcm9kdWN0RW50aXR5TW9kZWxbXSB7XG4gICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcigocHJvZHVjdCkgPT4ge1xuICAgICAgY29uc3QgcHJpY2UgPSBwcm9kdWN0LmJhc2VQcmljZSB8fCAwO1xuXG4gICAgICBzd2l0Y2ggKHByaWNlUmFuZ2UpIHtcbiAgICAgICAgY2FzZSAndW5kZXItNTAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA8IDUwO1xuICAgICAgICBjYXNlICc1MC0xMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSA1MCAmJiBwcmljZSA8IDEwMDtcbiAgICAgICAgY2FzZSAnMTAwLTUwMCc6XG4gICAgICAgICAgcmV0dXJuIHByaWNlID49IDEwMCAmJiBwcmljZSA8IDUwMDtcbiAgICAgICAgY2FzZSAnNTAwLTEwMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSA1MDAgJiYgcHJpY2UgPCAxMDAwO1xuICAgICAgICBjYXNlICdvdmVyLTEwMDAnOlxuICAgICAgICAgIHJldHVybiBwcmljZSA+PSAxMDAwO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs","sources":["../tmp-esm2022/mock/lib/product-catalog/reports/get-product-pdf-data.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { GetProductListQuery } from './get-product-list.query';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetProductPdfDataQuery {\n constructor() {\n this.productListQuery = inject(GetProductListQuery);\n }\n async fetch(input) {\n // Extract product-specific filters from AXPFilterClause format\n const extractedFilters = this.extractProductFilters(input.filters);\n // Get the product list data to generate PDF content\n const productListInput = {\n skip: 0,\n take: 10000, // Get all products for PDF\n filters: extractedFilters,\n logic: input.logic,\n };\n const productData = await this.productListQuery.fetch(productListInput);\n // Generate a mock PDF base64 string\n // In production, this would call an actual PDF generation service\n const pdfBase64 = this.generateMockPdfBase64(productData);\n return {\n base64: pdfBase64,\n filename: `Product_Report_${new Date().toISOString().split('T')[0]}.pdf`,\n };\n }\n //#region ---- Filter Extraction ----\n /**\n * Extract product-specific filters from AXPFilterClause format\n * Maps report parameter paths to product entity field names\n */\n extractProductFilters(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 product-specific field mappings\n if (field === 'brand') {\n // Brand filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'brandId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'brandId',\n operator: { type: 'equal' },\n value: value,\n });\n }\n }\n else if (field === 'category') {\n // Category filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value[0], // Use first category for contains check\n });\n }\n else if (value) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value,\n });\n }\n }\n else if (field === 'status') {\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 === 'priceRange') {\n // Price range filter - custom logic handled in query\n filters.push({\n field: 'priceRange',\n operator: { type: 'equal' },\n value: value,\n });\n }\n else if (field === 'startDate' || field === 'endDate') {\n // Date filters - can be handled if needed\n // For now, skip as they might not be directly on product entity\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 ---- PDF Generation Helpers ----\n /**\n * Generate a mock PDF base64 string\n * In production, this would call an actual PDF generation service\n */\n generateMockPdfBase64(productData) {\n // Create a minimal valid PDF with some content\n // This is a very basic PDF structure for demonstration\n // In production, use a proper PDF library like jsPDF or call a backend service\n const pdfContent = this.createSimplePdf(productData);\n // Convert to base64\n const base64 = btoa(pdfContent);\n return base64;\n }\n /**\n * Create a simple PDF document structure\n * This is a minimal valid PDF for demonstration - in production use a proper PDF library\n */\n createSimplePdf(productData) {\n // Use a minimal valid PDF structure that browsers can render\n // This is a very basic single-page PDF\n const pdf = `%PDF-1.4\n1 0 obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n2 0 obj\n<< /Type /Pages /Kids [3 0 R] /Count 1 >>\nendobj\n3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >>\nendobj\n4 0 obj\n<< /Length 200 >>\nstream\nBT\n/F1 12 Tf\n100 700 Td\n(Product Report) Tj\n0 -20 Td\n(Total Brands: ${productData.total}) Tj\n0 -20 Td\n(Generated: ${new Date().toLocaleDateString()}) Tj\n0 -20 Td\n(Items: ${productData.items.length}) Tj\nET\nendstream\nendobj\n5 0 obj\n<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>\nendobj\nxref\n0 6\n0000000000 65535 f \n0000000009 00000 n \n0000000058 00000 n \n0000000115 00000 n \n0000000317 00000 n \n0000000444 00000 n \ntrailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n527\n%%EOF`;\n return pdf;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductPdfDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductPdfDataQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetProductPdfDataQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb2R1Y3QtcGRmLWRhdGEucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvcHJvZHVjdC1jYXRhbG9nL3JlcG9ydHMvZ2V0LXByb2R1Y3QtcGRmLWRhdGEucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBb0IvRCxZQUFZO0FBS1osTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlxQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQTJMbkU7SUF6TEcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUF3QztRQUNoRCwrREFBK0Q7UUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLG9EQUFvRDtRQUNwRCxNQUFNLGdCQUFnQixHQUE2QjtZQUMvQyxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxLQUFLLEVBQUUsMkJBQTJCO1lBQ3hDLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ3JCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV4RSxvQ0FBb0M7UUFDcEMsa0VBQWtFO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0gsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLGtCQUFrQixJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUMzRSxDQUFDO0lBQ04sQ0FBQztJQUVELHlDQUF5QztJQUV6Qzs7O09BR0c7SUFDSyxxQkFBcUIsQ0FBQyxVQUFlO1FBQ3pDLE1BQU0sT0FBTyxHQUF3QyxFQUFFLENBQUM7UUFDeEQsTUFBTSxTQUFTLEdBQUcsVUFBaUIsQ0FBQztRQUVwQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUVELEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLE1BQU0sRUFBRSxLQUFLLEtBQUssU0FBUyxJQUFJLE1BQU0sRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzFFLFNBQVM7WUFDYixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFFdEQseUNBQXlDO1lBQ3pDLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixrREFBa0Q7Z0JBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNULEtBQUssRUFBRSxTQUFTO3dCQUNoQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO3dCQUN4QixLQUFLLEVBQUUsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztxQkFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ1QsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7d0JBQzNCLEtBQUssRUFBRSxLQUFLO3FCQUNmLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDOUIscURBQXFEO2dCQUNyRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDVCxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt3QkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSx3Q0FBd0M7cUJBQzVELENBQUMsQ0FBQztnQkFDUCxDQUFDO3FCQUFNLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDVCxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt3QkFDOUIsS0FBSyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixtQ0FBbUM7Z0JBQ25DLElBQUksS0FBSyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDVCxLQUFLLEVBQUUsVUFBVTt3QkFDakIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTt3QkFDM0IsS0FBSyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksS0FBSyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNoQyxxREFBcUQ7Z0JBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1QsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7b0JBQzNCLEtBQUssRUFBRSxLQUFLO2lCQUNmLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sSUFBSSxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEQsMENBQTBDO2dCQUMxQyxnRUFBZ0U7WUFDcEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHVCQUF1QjtnQkFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDVCxLQUFLLEVBQUUsS0FBSztvQkFDWixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsS0FBSyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtJQUVaLDhDQUE4QztJQUU5Qzs7O09BR0c7SUFDSyxxQkFBcUIsQ0FBQyxXQUFzQztRQUNoRSwrQ0FBK0M7UUFDL0MsdURBQXVEO1FBQ3ZELCtFQUErRTtRQUUvRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJELG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxXQUFzQztRQUMxRCw2REFBNkQ7UUFDN0QsdUNBQXVDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JILFdBQVcsQ0FBQyxLQUFLOztjQUVwQixJQUFJLElBQUksRUFBRSxDQUFDLGtCQUFrQixFQUFFOztVQUVuQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQjVCLENBQUM7UUFFQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7K0dBekxRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07OzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dCwgR2V0UHJvZHVjdExpc3RRdWVyeVJlc3VsdCB9IGZyb20gJy4vZ2V0LXByb2R1Y3QtbGlzdC5xdWVyeSc7XG5pbXBvcnQgeyBHZXRQcm9kdWN0TGlzdFF1ZXJ5IH0gZnJvbSAnLi9nZXQtcHJvZHVjdC1saXN0LnF1ZXJ5JztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeUlucHV0IHtcbiAgICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiBzdHJpbmcgfTtcbiAgICAgICAgdmFsdWU6IGFueTtcbiAgICB9PjtcbiAgICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9kdWN0UGRmRGF0YVF1ZXJ5UmVzdWx0IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgYmFzZTY0Pzogc3RyaW5nO1xuICAgIGJsb2I/OiBCbG9iO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFByb2R1Y3RQZGZEYXRhUXVlcnlJbnB1dCwgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeVJlc3VsdD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdExpc3RRdWVyeSA9IGluamVjdChHZXRQcm9kdWN0TGlzdFF1ZXJ5KTtcblxuICAgIGFzeW5jIGZldGNoKGlucHV0OiBHZXRQcm9kdWN0UGRmRGF0YVF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFByb2R1Y3RQZGZEYXRhUXVlcnlSZXN1bHQ+IHtcbiAgICAgICAgLy8gRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZEZpbHRlcnMgPSB0aGlzLmV4dHJhY3RQcm9kdWN0RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcblxuICAgICAgICAvLyBHZXQgdGhlIHByb2R1Y3QgbGlzdCBkYXRhIHRvIGdlbmVyYXRlIFBERiBjb250ZW50XG4gICAgICAgIGNvbnN0IHByb2R1Y3RMaXN0SW5wdXQ6IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dCA9IHtcbiAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICB0YWtlOiAxMDAwMCwgLy8gR2V0IGFsbCBwcm9kdWN0cyBmb3IgUERGXG4gICAgICAgICAgICBmaWx0ZXJzOiBleHRyYWN0ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgbG9naWM6IGlucHV0LmxvZ2ljLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHByb2R1Y3REYXRhID0gYXdhaXQgdGhpcy5wcm9kdWN0TGlzdFF1ZXJ5LmZldGNoKHByb2R1Y3RMaXN0SW5wdXQpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIGEgbW9jayBQREYgYmFzZTY0IHN0cmluZ1xuICAgICAgICAvLyBJbiBwcm9kdWN0aW9uLCB0aGlzIHdvdWxkIGNhbGwgYW4gYWN0dWFsIFBERiBnZW5lcmF0aW9uIHNlcnZpY2VcbiAgICAgICAgY29uc3QgcGRmQmFzZTY0ID0gdGhpcy5nZW5lcmF0ZU1vY2tQZGZCYXNlNjQocHJvZHVjdERhdGEpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYXNlNjQ6IHBkZkJhc2U2NCxcbiAgICAgICAgICAgIGZpbGVuYW1lOiBgUHJvZHVjdF9SZXBvcnRfJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXX0ucGRmYCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgICogTWFwcyByZXBvcnQgcGFyYW1ldGVyIHBhdGhzIHRvIHByb2R1Y3QgZW50aXR5IGZpZWxkIG5hbWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0UHJvZHVjdEZpbHRlcnMocGFyYW1ldGVyczogYW55KTogR2V0UHJvZHVjdExpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBHZXRQcm9kdWN0TGlzdFF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgICAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgICAgICBpZiAoIXBhcmFtc0FueT8uZmlsdGVycyB8fCAhQXJyYXkuaXNBcnJheShwYXJhbXNBbnkuZmlsdGVycykpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXIub3BlcmF0b3IgfHwgeyB0eXBlOiAnZXF1YWwnIH07XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSBwcm9kdWN0LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICAgICAgICBpZiAoZmllbGQgPT09ICdicmFuZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBCcmFuZCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnY2F0ZWdvcnknKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2F0ZWdvcnkgZmlsdGVyIC0gY2FuIGJlIGFycmF5IG9mIElEcyBvciBzaW5nbGUgSURcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVbMF0sIC8vIFVzZSBmaXJzdCBjYXRlZ29yeSBmb3IgY29udGFpbnMgY2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgICAgICAgLy8gU3RhdHVzIGZpbHRlciAtIHNraXAgJ2FsbCcgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3N0YXR1c0lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3ByaWNlUmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgLy8gUHJpY2UgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3ByaWNlUmFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnIHx8IGZpZWxkID09PSAnZW5kRGF0ZScpIHtcbiAgICAgICAgICAgICAgICAvLyBEYXRlIGZpbHRlcnMgLSBjYW4gYmUgaGFuZGxlZCBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBza2lwIGFzIHRoZXkgbWlnaHQgbm90IGJlIGRpcmVjdGx5IG9uIHByb2R1Y3QgZW50aXR5XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIERpcmVjdCBmaWVsZCBtYXBwaW5nXG4gICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQREYgR2VuZXJhdGlvbiBIZWxwZXJzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgYSBtb2NrIFBERiBiYXNlNjQgc3RyaW5nXG4gICAgICogSW4gcHJvZHVjdGlvbiwgdGhpcyB3b3VsZCBjYWxsIGFuIGFjdHVhbCBQREYgZ2VuZXJhdGlvbiBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU1vY2tQZGZCYXNlNjQocHJvZHVjdERhdGE6IEdldFByb2R1Y3RMaXN0UXVlcnlSZXN1bHQpOiBzdHJpbmcge1xuICAgICAgICAvLyBDcmVhdGUgYSBtaW5pbWFsIHZhbGlkIFBERiB3aXRoIHNvbWUgY29udGVudFxuICAgICAgICAvLyBUaGlzIGlzIGEgdmVyeSBiYXNpYyBQREYgc3RydWN0dXJlIGZvciBkZW1vbnN0cmF0aW9uXG4gICAgICAgIC8vIEluIHByb2R1Y3Rpb24sIHVzZSBhIHByb3BlciBQREYgbGlicmFyeSBsaWtlIGpzUERGIG9yIGNhbGwgYSBiYWNrZW5kIHNlcnZpY2VcblxuICAgICAgICBjb25zdCBwZGZDb250ZW50ID0gdGhpcy5jcmVhdGVTaW1wbGVQZGYocHJvZHVjdERhdGEpO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gYmFzZTY0XG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IGJ0b2EocGRmQ29udGVudCk7XG5cbiAgICAgICAgcmV0dXJuIGJhc2U2NDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBzaW1wbGUgUERGIGRvY3VtZW50IHN0cnVjdHVyZVxuICAgICAqIFRoaXMgaXMgYSBtaW5pbWFsIHZhbGlkIFBERiBmb3IgZGVtb25zdHJhdGlvbiAtIGluIHByb2R1Y3Rpb24gdXNlIGEgcHJvcGVyIFBERiBsaWJyYXJ5XG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVTaW1wbGVQZGYocHJvZHVjdERhdGE6IEdldFByb2R1Y3RMaXN0UXVlcnlSZXN1bHQpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2UgYSBtaW5pbWFsIHZhbGlkIFBERiBzdHJ1Y3R1cmUgdGhhdCBicm93c2VycyBjYW4gcmVuZGVyXG4gICAgICAgIC8vIFRoaXMgaXMgYSB2ZXJ5IGJhc2ljIHNpbmdsZS1wYWdlIFBERlxuICAgICAgICBjb25zdCBwZGYgPSBgJVBERi0xLjRcbjEgMCBvYmpcbjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAyIDAgUiA+PlxuZW5kb2JqXG4yIDAgb2JqXG48PCAvVHlwZSAvUGFnZXMgL0tpZHMgWzMgMCBSXSAvQ291bnQgMSA+PlxuZW5kb2JqXG4zIDAgb2JqXG48PCAvVHlwZSAvUGFnZSAvUGFyZW50IDIgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUiAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiA+PlxuZW5kb2JqXG40IDAgb2JqXG48PCAvTGVuZ3RoIDIwMCA+Plxuc3RyZWFtXG5CVFxuL0YxIDEyIFRmXG4xMDAgNzAwIFRkXG4oUHJvZHVjdCBSZXBvcnQpIFRqXG4wIC0yMCBUZFxuKFRvdGFsIEJyYW5kczogJHtwcm9kdWN0RGF0YS50b3RhbH0pIFRqXG4wIC0yMCBUZFxuKEdlbmVyYXRlZDogJHtuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfSkgVGpcbjAgLTIwIFRkXG4oSXRlbXM6ICR7cHJvZHVjdERhdGEuaXRlbXMubGVuZ3RofSkgVGpcbkVUXG5lbmRzdHJlYW1cbmVuZG9ialxuNSAwIG9ialxuPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+XG5lbmRvYmpcbnhyZWZcbjAgNlxuMDAwMDAwMDAwMCA2NTUzNSBmIFxuMDAwMDAwMDAwOSAwMDAwMCBuIFxuMDAwMDAwMDA1OCAwMDAwMCBuIFxuMDAwMDAwMDExNSAwMDAwMCBuIFxuMDAwMDAwMDMxNyAwMDAwMCBuIFxuMDAwMDAwMDQ0NCAwMDAwMCBuIFxudHJhaWxlclxuPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+Plxuc3RhcnR4cmVmXG41MjdcbiUlRU9GYDtcblxuICAgICAgICByZXR1cm4gcGRmO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0="],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-subscriptions-chart-data.query.js"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { GetSubscriptionsTimelineQuery } from './get-subscriptions-timeline.query';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetSubscriptionsChartDataQuery {\n constructor() {\n this.subscriptionsTimelineQuery = inject(GetSubscriptionsTimelineQuery);\n }\n async fetch(input) {\n // Get all subscription timeline data (no pagination for charts)\n const timelineResult = await this.subscriptionsTimelineQuery.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 subscriptionCount: 0,\n });\n }\n const group = monthGroups.get(monthKey);\n group.subscriptionCount++;\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: GetSubscriptionsChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetSubscriptionsChartDataQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetSubscriptionsChartDataQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN1YnNjcmlwdGlvbnMtY2hhcnQtZGF0YS5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi90ZW5hbnQtbWFuYWdlbWVudC9yZXBvcnRzL2dldC1zdWJzY3JpcHRpb25zLWNoYXJ0LWRhdGEucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBd0JuRixZQUFZO0FBS1osTUFBTSxPQUFPLDhCQUE4QjtJQUgzQztRQU1tQiwrQkFBMEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztLQTBDckY7SUF4Q0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFnRDtRQUMxRCxnRUFBZ0U7UUFDaEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO1lBQ2pFLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUVILGlCQUFpQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztRQUVwRSxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFFN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsaUJBQWlCLEVBQUUsQ0FBQztpQkFDckIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3RCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RCxPQUFPLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO0lBQ0osQ0FBQzsrR0E1Q1UsOEJBQThCO21IQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7NEZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUXVlcnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlJbnB1dCB9IGZyb20gJy4vZ2V0LXN1YnNjcmlwdGlvbnMtdGltZWxpbmUucXVlcnknO1xuaW1wb3J0IHsgR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnkgfSBmcm9tICcuL2dldC1zdWJzY3JpcHRpb25zLXRpbWVsaW5lLnF1ZXJ5JztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U3Vic2NyaXB0aW9uc0NoYXJ0RGF0YVF1ZXJ5SW5wdXQge1xuICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0b3I6IHsgdHlwZTogc3RyaW5nIH07XG4gICAgdmFsdWU6IGFueTtcbiAgfT47XG4gIGxvZ2ljPzogJ2FuZCcgfCAnb3InO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmlwdGlvbnNDaGFydERhdGFSZXN1bHQge1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBudW1iZXI7XG4gIHF1YXJ0ZXI6IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTdWJzY3JpcHRpb25zQ2hhcnREYXRhUXVlcnlSZXN1bHQge1xuICBpdGVtczogU3Vic2NyaXB0aW9uc0NoYXJ0RGF0YVJlc3VsdFtdO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdldFN1YnNjcmlwdGlvbnNDaGFydERhdGFRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFN1YnNjcmlwdGlvbnNDaGFydERhdGFRdWVyeUlucHV0LCBHZXRTdWJzY3JpcHRpb25zQ2hhcnREYXRhUXVlcnlSZXN1bHQ+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnkgPSBpbmplY3QoR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnkpO1xuXG4gIGFzeW5jIGZldGNoKGlucHV0OiBHZXRTdWJzY3JpcHRpb25zQ2hhcnREYXRhUXVlcnlJbnB1dCB8IGFueSk6IFByb21pc2U8R2V0U3Vic2NyaXB0aW9uc0NoYXJ0RGF0YVF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gR2V0IGFsbCBzdWJzY3JpcHRpb24gdGltZWxpbmUgZGF0YSAobm8gcGFnaW5hdGlvbiBmb3IgY2hhcnRzKVxuICAgIGNvbnN0IHRpbWVsaW5lUmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeS5mZXRjaCh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgICBmaWx0ZXJzOiBpbnB1dC5maWx0ZXJzLFxuICAgICAgbG9naWM6IGlucHV0LmxvZ2ljLFxuICAgIH0pO1xuXG4gICAgLy8gR3JvdXAgYnkgbW9udGhcbiAgICBjb25zdCBtb250aEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBTdWJzY3JpcHRpb25zQ2hhcnREYXRhUmVzdWx0PigpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRpbWVsaW5lUmVzdWx0Lml0ZW1zKSB7XG4gICAgICBjb25zdCBtb250aEtleSA9IGAke2l0ZW0ueWVhcn0tJHtTdHJpbmcoaXRlbS5tb250aE51bWJlcikucGFkU3RhcnQoMiwgJzAnKX1gO1xuXG4gICAgICBpZiAoIW1vbnRoR3JvdXBzLmhhcyhtb250aEtleSkpIHtcbiAgICAgICAgbW9udGhHcm91cHMuc2V0KG1vbnRoS2V5LCB7XG4gICAgICAgICAgbW9udGg6IGl0ZW0ubW9udGgsXG4gICAgICAgICAgeWVhcjogaXRlbS55ZWFyLFxuICAgICAgICAgIHF1YXJ0ZXI6IGl0ZW0ucXVhcnRlcixcbiAgICAgICAgICBzdWJzY3JpcHRpb25Db3VudDogMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyb3VwID0gbW9udGhHcm91cHMuZ2V0KG1vbnRoS2V5KSE7XG4gICAgICBncm91cC5zdWJzY3JpcHRpb25Db3VudCsrO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gYXJyYXkgYW5kIHNvcnQgYnkgZGF0ZVxuICAgIGNvbnN0IHJlc3VsdHMgPSBBcnJheS5mcm9tKG1vbnRoR3JvdXBzLnZhbHVlcygpKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS55ZWFyICE9PSBiLnllYXIpIHJldHVybiBhLnllYXIgLSBiLnllYXI7XG4gICAgICBjb25zdCBtb250aEEgPSBuZXcgRGF0ZShgJHthLm1vbnRofSAxLCAke2EueWVhcn1gKS5nZXRNb250aCgpO1xuICAgICAgY29uc3QgbW9udGhCID0gbmV3IERhdGUoYCR7Yi5tb250aH0gMSwgJHtiLnllYXJ9YCkuZ2V0TW9udGgoKTtcbiAgICAgIHJldHVybiBtb250aEEgLSBtb250aEI7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IHJlc3VsdHMsXG4gICAgfTtcbiAgfVxufVxuXG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs","sources":["../tmp-esm2022/mock/lib/tenant-management/reports/get-subscriptions-timeline.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 SubscriptionRootConfig } from '@acorex/modules/subscription-management';\nimport { RootConfig as TenantRootConfig } from '@acorex/modules/tenant-management';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class GetSubscriptionsTimelineQuery {\n constructor() {\n this.entityService = inject(AXPEntityService);\n this.subscriptionService = this.entityService\n .withEntity(`${SubscriptionRootConfig.module.name}.${SubscriptionRootConfig.entities.subscription.name}`)\n .data();\n this.tenantService = this.entityService\n .withEntity(`${TenantRootConfig.module.name}.${TenantRootConfig.entities.tenant.name}`)\n .data();\n }\n async fetch(input) {\n // Extract filters from AXPFilterClause format\n const extractedFilters = this.extractSubscriptionFilters(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 subscriptions\n const subscriptionsResult = await this.subscriptionService.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 subscriptions = subscriptionsResult.items.filter((s) => s.subscriberType === 'Tenant');\n // Get all tenants for lookup\n const tenantsResult = await this.tenantService.query({\n skip: 0,\n take: 10000,\n });\n const tenants = tenantsResult.items;\n const tenantMap = new Map(tenants.map((t) => [t.id, t]));\n // Apply date range filter if provided\n if (dateRangeFilter) {\n subscriptions = this.applyDateRangeFilter(subscriptions, dateRangeFilter);\n }\n const now = new Date();\n // Build results\n const results = [];\n for (const subscription of subscriptions) {\n const startDate = new Date(subscription.startDate);\n const endDate = subscription.endDate ? new Date(subscription.endDate) : undefined;\n // Calculate duration in days\n const durationDays = endDate\n ? Math.ceil((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24))\n : Math.ceil((now.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));\n // Extract time period info from start date\n const year = startDate.getFullYear();\n const month = startDate.getMonth() + 1;\n const monthName = startDate.toLocaleString('en-US', { month: 'long' });\n const quarter = Math.ceil(month / 3);\n const quarterName = `Q${quarter}`;\n // Check if subscription is currently active\n const isActive = subscription.statusId === AXPSystemStatusType.Active &&\n startDate <= now &&\n (!endDate || endDate >= now);\n // Get tenant name\n const tenant = tenantMap.get(subscription.subscriberId);\n results.push({\n subscriptionId: subscription.id,\n subscriptionTitle: subscription.title || `${tenant?.title || 'Unknown'} - ${subscription.plan?.title || 'Unknown Plan'}`,\n tenantId: subscription.subscriberId,\n tenantName: tenant?.title || 'Unknown',\n planId: subscription.planId,\n planName: subscription.plan?.title || 'Unknown',\n status: subscription.statusId || 'Unknown',\n startDate: startDate,\n startDateStr: startDate.toISOString(),\n endDate: endDate,\n endDateStr: endDate?.toISOString(),\n durationDays: durationDays,\n month: monthName,\n monthNumber: month,\n quarter: quarterName,\n year: year,\n isActive: isActive,\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 === 'startDate') {\n const aDate = a.startDate.getTime();\n const bDate = b.startDate.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 start date descending (newest first)\n results.sort((a, b) => {\n return b.startDate.getTime() - a.startDate.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 ---- Filter Extraction ----\n /**\n * Extract subscription-specific filters from AXPFilterClause format\n * Maps report parameter paths to subscription entity field names\n */\n extractSubscriptionFilters(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 subscription-specific field mappings\n if (field === 'planId') {\n // Plan ID filter - can be array of IDs or single ID\n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n field: 'planId',\n operator: { type: 'in' },\n value: value,\n });\n }\n else if (value) {\n filters.push({\n field: 'planId',\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 subscriptions\n */\n applyDateRangeFilter(subscriptions, dateRange) {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return subscriptions;\n }\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999);\n return subscriptions.filter((subscription) => {\n const subStartDate = new Date(subscription.startDate);\n const subEndDate = subscription.endDate ? new Date(subscription.endDate) : null;\n // Check if subscription overlaps with the date range\n return ((subStartDate >= startDate && subStartDate <= endDate) ||\n (subEndDate && subEndDate >= startDate && subEndDate <= endDate) ||\n (subStartDate <= startDate && (!subEndDate || subEndDate >= endDate)));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetSubscriptionsTimelineQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetSubscriptionsTimelineQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: GetSubscriptionsTimelineQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN1YnNjcmlwdGlvbnMtdGltZWxpbmUucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvdGVuYW50LW1hbmFnZW1lbnQvcmVwb3J0cy9nZXQtc3Vic2NyaXB0aW9ucy10aW1lbGluZS5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxJQUFJLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0YsT0FBTyxFQUFFLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQXlDbkYsWUFBWTtBQUtaLE1BQU0sT0FBTyw2QkFBNkI7SUFIMUM7UUFNbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYTthQUM3QyxVQUFVLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEcsSUFBSSxFQUE0RCxDQUFDO1FBQzVELGtCQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDdkMsVUFBVSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RGLElBQUksRUFBZ0QsQ0FBQztLQXVQekQ7SUFyUEMsS0FBSyxDQUFDLEtBQUss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Y0FGNUIsTUFBTTs7NEZBRVAsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUXVlcnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWwgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhNVGVuYW50TWFuYWdlbWVudFRlbmFudEVudGl0eU1vZGVsIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFN5c3RlbVN0YXR1c1R5cGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBSb290Q29uZmlnIGFzIFN1YnNjcmlwdGlvblJvb3RDb25maWcgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc3Vic2NyaXB0aW9uLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyBhcyBUZW5hbnRSb290Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3RlbmFudC1tYW5hZ2VtZW50JztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlJbnB1dCB7XG4gIHNraXA/OiBudW1iZXI7XG4gIHRha2U/OiBudW1iZXI7XG4gIHNvcnQ/OiBBcnJheTx7IGZpZWxkOiBzdHJpbmc7IGRpcjogJ2FzYycgfCAnZGVzYycgfT47XG4gIGZpbHRlcnM/OiBBcnJheTx7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRvcjogeyB0eXBlOiBzdHJpbmcgfTtcbiAgICB2YWx1ZTogYW55O1xuICB9PjtcbiAgbG9naWM/OiAnYW5kJyB8ICdvcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uc1RpbWVsaW5lUmVzdWx0IHtcbiAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uVGl0bGU6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgdGVuYW50TmFtZTogc3RyaW5nO1xuICBwbGFuSWQ/OiBzdHJpbmc7XG4gIHBsYW5OYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzdGFydERhdGU6IERhdGU7XG4gIHN0YXJ0RGF0ZVN0cjogc3RyaW5nO1xuICBlbmREYXRlPzogRGF0ZTtcbiAgZW5kRGF0ZVN0cj86IHN0cmluZztcbiAgZHVyYXRpb25EYXlzOiBudW1iZXI7XG4gIG1vbnRoOiBzdHJpbmc7XG4gIG1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIHF1YXJ0ZXI6IHN0cmluZztcbiAgeWVhcjogbnVtYmVyO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeVJlc3VsdCB7XG4gIGl0ZW1zOiBTdWJzY3JpcHRpb25zVGltZWxpbmVSZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeVxuICBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5SW5wdXQsIEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5UmVzdWx0Plxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZSA9IHRoaXMuZW50aXR5U2VydmljZVxuICAgIC53aXRoRW50aXR5KGAke1N1YnNjcmlwdGlvblJvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7U3Vic2NyaXB0aW9uUm9vdENvbmZpZy5lbnRpdGllcy5zdWJzY3JpcHRpb24ubmFtZX1gKVxuICAgIC5kYXRhPHN0cmluZywgQVhNU3Vic2NyaXB0aW9uTWFuYWdlbWVudFN1YnNjcmlwdGlvbkVudGl0eU1vZGVsPigpO1xuICBwcml2YXRlIHRlbmFudFNlcnZpY2UgPSB0aGlzLmVudGl0eVNlcnZpY2VcbiAgICAud2l0aEVudGl0eShgJHtUZW5hbnRSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1RlbmFudFJvb3RDb25maWcuZW50aXRpZXMudGVuYW50Lm5hbWV9YClcbiAgICAuZGF0YTxzdHJpbmcsIEFYTVRlbmFudE1hbmFnZW1lbnRUZW5hbnRFbnRpdHlNb2RlbD4oKTtcblxuICBhc3luYyBmZXRjaChpbnB1dDogR2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlJbnB1dCB8IGFueSk6IFByb21pc2U8R2V0U3Vic2NyaXB0aW9uc1RpbWVsaW5lUXVlcnlSZXN1bHQ+IHtcbiAgICAvLyBFeHRyYWN0IGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgY29uc3QgZXh0cmFjdGVkRmlsdGVycyA9IHRoaXMuZXh0cmFjdFN1YnNjcmlwdGlvbkZpbHRlcnMoaW5wdXQuZmlsdGVycyk7XG4gICAgY29uc3QgZmlsdGVyTG9naWMgPSAoaW5wdXQuZmlsdGVycyBhcyBhbnkpPy5sb2dpYyB8fCBpbnB1dC5sb2dpYyB8fCAnYW5kJztcblxuICAgIC8vIFNlcGFyYXRlIGN1c3RvbSBmaWx0ZXJzIGZyb20gZW50aXR5IGZpbHRlcnNcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJzOiBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10gPSBbXTtcbiAgICBsZXQgZGF0ZVJhbmdlRmlsdGVyOiBhbnk7XG5cbiAgICBpZiAoZXh0cmFjdGVkRmlsdGVycyAmJiBleHRyYWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGV4dHJhY3RlZEZpbHRlcnMpIHtcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ2RhdGVSYW5nZScpIHtcbiAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXIgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50aXR5RmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgYWxsIHN1YnNjcmlwdGlvbnNcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zUmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxMDAwMCxcbiAgICAgIGZpbHRlcjpcbiAgICAgICAgZW50aXR5RmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgbG9naWM6IGZpbHRlckxvZ2ljLFxuICAgICAgICAgICAgZmlsdGVyczogZW50aXR5RmlsdGVycyxcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGxldCBzdWJzY3JpcHRpb25zID0gc3Vic2NyaXB0aW9uc1Jlc3VsdC5pdGVtcy5maWx0ZXIoKHMpID0+IHMuc3Vic2NyaWJlclR5cGUgPT09ICdUZW5hbnQnKTtcblxuICAgIC8vIEdldCBhbGwgdGVuYW50cyBmb3IgbG9va3VwXG4gICAgY29uc3QgdGVuYW50c1Jlc3VsdCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogMTAwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdGVuYW50cyA9IHRlbmFudHNSZXN1bHQuaXRlbXM7XG4gICAgY29uc3QgdGVuYW50TWFwID0gbmV3IE1hcCh0ZW5hbnRzLm1hcCgodCkgPT4gW3QuaWQsIHRdKSk7XG5cbiAgICAvLyBBcHBseSBkYXRlIHJhbmdlIGZpbHRlciBpZiBwcm92aWRlZFxuICAgIGlmIChkYXRlUmFuZ2VGaWx0ZXIpIHtcbiAgICAgIHN1YnNjcmlwdGlvbnMgPSB0aGlzLmFwcGx5RGF0ZVJhbmdlRmlsdGVyKHN1YnNjcmlwdGlvbnMsIGRhdGVSYW5nZUZpbHRlcik7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIEJ1aWxkIHJlc3VsdHNcbiAgICBjb25zdCByZXN1bHRzOiBTdWJzY3JpcHRpb25zVGltZWxpbmVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3Vic2NyaXB0aW9uLnN0YXJ0RGF0ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gc3Vic2NyaXB0aW9uLmVuZERhdGUgPyBuZXcgRGF0ZShzdWJzY3JpcHRpb24uZW5kRGF0ZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBkdXJhdGlvbiBpbiBkYXlzXG4gICAgICBjb25zdCBkdXJhdGlvbkRheXMgPSBlbmREYXRlXG4gICAgICAgID8gTWF0aC5jZWlsKChlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKVxuICAgICAgICA6IE1hdGguY2VpbCgobm93LmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcblxuICAgICAgLy8gRXh0cmFjdCB0aW1lIHBlcmlvZCBpbmZvIGZyb20gc3RhcnQgZGF0ZVxuICAgICAgY29uc3QgeWVhciA9IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgICBjb25zdCBtb250aE5hbWUgPSBzdGFydERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgICAgY29uc3QgcXVhcnRlciA9IE1hdGguY2VpbChtb250aCAvIDMpO1xuICAgICAgY29uc3QgcXVhcnRlck5hbWUgPSBgUSR7cXVhcnRlcn1gO1xuXG4gICAgICAvLyBDaGVjayBpZiBzdWJzY3JpcHRpb24gaXMgY3VycmVudGx5IGFjdGl2ZVxuICAgICAgY29uc3QgaXNBY3RpdmUgPVxuICAgICAgICBzdWJzY3JpcHRpb24uc3RhdHVzSWQgPT09IEFYUFN5c3RlbVN0YXR1c1R5cGUuQWN0aXZlICYmXG4gICAgICAgIHN0YXJ0RGF0ZSA8PSBub3cgJiZcbiAgICAgICAgKCFlbmREYXRlIHx8IGVuZERhdGUgPj0gbm93KTtcblxuICAgICAgLy8gR2V0IHRlbmFudCBuYW1lXG4gICAgICBjb25zdCB0ZW5hbnQgPSB0ZW5hbnRNYXAuZ2V0KHN1YnNjcmlwdGlvbi5zdWJzY3JpYmVySWQpO1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICBzdWJzY3JpcHRpb25JZDogc3Vic2NyaXB0aW9uLmlkLFxuICAgICAgICBzdWJzY3JpcHRpb25UaXRsZTogc3Vic2NyaXB0aW9uLnRpdGxlIHx8IGAke3RlbmFudD8udGl0bGUgfHwgJ1Vua25vd24nfSAtICR7c3Vic2NyaXB0aW9uLnBsYW4/LnRpdGxlIHx8ICdVbmtub3duIFBsYW4nfWAsXG4gICAgICAgIHRlbmFudElkOiBzdWJzY3JpcHRpb24uc3Vic2NyaWJlcklkLFxuICAgICAgICB0ZW5hbnROYW1lOiB0ZW5hbnQ/LnRpdGxlIHx8ICdVbmtub3duJyxcbiAgICAgICAgcGxhbklkOiBzdWJzY3JpcHRpb24ucGxhbklkLFxuICAgICAgICBwbGFuTmFtZTogc3Vic2NyaXB0aW9uLnBsYW4/LnRpdGxlIHx8ICdVbmtub3duJyxcbiAgICAgICAgc3RhdHVzOiBzdWJzY3JpcHRpb24uc3RhdHVzSWQgfHwgJ1Vua25vd24nLFxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcbiAgICAgICAgc3RhcnREYXRlU3RyOiBzdGFydERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcbiAgICAgICAgZW5kRGF0ZVN0cjogZW5kRGF0ZT8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZHVyYXRpb25EYXlzOiBkdXJhdGlvbkRheXMsXG4gICAgICAgIG1vbnRoOiBtb250aE5hbWUsXG4gICAgICAgIG1vbnRoTnVtYmVyOiBtb250aCxcbiAgICAgICAgcXVhcnRlcjogcXVhcnRlck5hbWUsXG4gICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgIGlzQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHNvcnRpbmcgaWYgcHJvdmlkZWRcbiAgICBpZiAoaW5wdXQuc29ydCAmJiBpbnB1dC5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNvcnRGaWVsZCBvZiBpbnB1dC5zb3J0ISkge1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gc29ydEZpZWxkLmZpZWxkIGFzIGtleW9mIFN1YnNjcmlwdGlvbnNUaW1lbGluZVJlc3VsdDtcbiAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkXTtcbiAgICAgICAgICBjb25zdCBkaXIgPSBzb3J0RmllbGQuZGlyID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgICAgICAgIGlmIChhVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBiVmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYlZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAtMSAqIGRpcjtcblxuICAgICAgICAgIC8vIEhhbmRsZSBkYXRlIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBhRGF0ZSA9IGEuc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGJEYXRlID0gYi5zdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYgKGFEYXRlIDwgYkRhdGUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICAgIGlmIChhRGF0ZSA+IGJEYXRlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhVmFsdWUgPCBiVmFsdWUpIHJldHVybiAtMSAqIGRpcjtcbiAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSByZXR1cm4gMSAqIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnQgYnkgc3RhcnQgZGF0ZSBkZXNjZW5kaW5nIChuZXdlc3QgZmlyc3QpXG4gICAgICByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIGIuc3RhcnREYXRlLmdldFRpbWUoKSAtIGEuc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgICBjb25zdCBza2lwID0gaW5wdXQuc2tpcCB8fCAwO1xuICAgIGNvbnN0IHRha2UgPSBpbnB1dC50YWtlIHx8IDEwO1xuICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbXMgPSByZXN1bHRzLnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtcyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHN1YnNjcmlwdGlvbi1zcGVjaWZpYyBmaWx0ZXJzIGZyb20gQVhQRmlsdGVyQ2xhdXNlIGZvcm1hdFxuICAgKiBNYXBzIHJlcG9ydCBwYXJhbWV0ZXIgcGF0aHMgdG8gc3Vic2NyaXB0aW9uIGVudGl0eSBmaWVsZCBuYW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0U3Vic2NyaXB0aW9uRmlsdGVycyhwYXJhbWV0ZXJzOiBhbnkpOiBHZXRTdWJzY3JpcHRpb25zVGltZWxpbmVRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEdldFN1YnNjcmlwdGlvbnNUaW1lbGluZVF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgIGNvbnN0IHBhcmFtc0FueSA9IHBhcmFtZXRlcnMgYXMgYW55O1xuXG4gICAgaWYgKCFwYXJhbXNBbnk/LmZpbHRlcnMgfHwgIUFycmF5LmlzQXJyYXkocGFyYW1zQW55LmZpbHRlcnMpKSB7XG4gICAgICByZXR1cm4gZmlsdGVycztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBwYXJhbXNBbnkuZmlsdGVycykge1xuICAgICAgaWYgKCFmaWx0ZXI/LmZpZWxkIHx8IGZpbHRlcj8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXI/LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZDtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXIub3BlcmF0b3IgfHwgeyB0eXBlOiAnZXF1YWwnIH07XG5cbiAgICAgIC8vIEhhbmRsZSBzdWJzY3JpcHRpb24tc3BlY2lmaWMgZmllbGQgbWFwcGluZ3NcbiAgICAgIGlmIChmaWVsZCA9PT0gJ3BsYW5JZCcpIHtcbiAgICAgICAgLy8gUGxhbiBJRCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZDogJ3BsYW5JZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaW4nIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdwbGFuSWQnLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnc3RhdHVzSWQnKSB7XG4gICAgICAgIC8vIFN0YXR1cyBmaWx0ZXIgLSBza2lwICdhbGwnIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXNJZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIC8vIERhdGUgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogJ2RhdGVSYW5nZScsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEaXJlY3QgZmllbGQgbWFwcGluZ1xuICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIEZpbHRlciBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogQXBwbHkgZGF0ZSByYW5nZSBmaWx0ZXIgdG8gc3Vic2NyaXB0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseURhdGVSYW5nZUZpbHRlcihcbiAgICBzdWJzY3JpcHRpb25zOiBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWxbXSxcbiAgICBkYXRlUmFuZ2U6IGFueVxuICApOiBBWE1TdWJzY3JpcHRpb25NYW5hZ2VtZW50U3Vic2NyaXB0aW9uRW50aXR5TW9kZWxbXSB7XG4gICAgaWYgKCFkYXRlUmFuZ2UgfHwgIWRhdGVSYW5nZS5zdGFydCB8fCAhZGF0ZVJhbmdlLmVuZCkge1xuICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbnM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZGF0ZVJhbmdlLmVuZCk7XG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YlN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN1YnNjcmlwdGlvbi5zdGFydERhdGUpO1xuICAgICAgY29uc3Qgc3ViRW5kRGF0ZSA9IHN1YnNjcmlwdGlvbi5lbmREYXRlID8gbmV3IERhdGUoc3Vic2NyaXB0aW9uLmVuZERhdGUpIDogbnVsbDtcblxuICAgICAgLy8gQ2hlY2sgaWYgc3Vic2NyaXB0aW9uIG92ZXJsYXBzIHdpdGggdGhlIGRhdGUgcmFuZ2VcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChzdWJTdGFydERhdGUgPj0gc3RhcnREYXRlICYmIHN1YlN0YXJ0RGF0ZSA8PSBlbmREYXRlKSB8fFxuICAgICAgICAoc3ViRW5kRGF0ZSAmJiBzdWJFbmREYXRlID49IHN0YXJ0RGF0ZSAmJiBzdWJFbmREYXRlIDw9IGVuZERhdGUpIHx8XG4gICAgICAgIChzdWJTdGFydERhdGUgPD0gc3RhcnREYXRlICYmICghc3ViRW5kRGF0ZSB8fCBzdWJFbmREYXRlID49IGVuZERhdGUpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0="],"names":["SubscriptionRootConfig","TenantRootConfig"],"mappings":"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"}
|