@acorex/connectivity 21.0.0-next.2 → 21.0.0-next.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/api/index.d.ts +6 -65
  2. package/fesm2022/{acorex-connectivity-api-execute.command-CQt_HF1B.mjs → acorex-connectivity-api-execute.command-Di850KiF.mjs} +7 -7
  3. package/fesm2022/acorex-connectivity-api-execute.command-Di850KiF.mjs.map +1 -0
  4. package/fesm2022/acorex-connectivity-api.mjs +128 -206
  5. package/fesm2022/acorex-connectivity-api.mjs.map +1 -1
  6. package/fesm2022/acorex-connectivity-mock-assign-to-manager.command-T6-ao4e9.mjs +66 -0
  7. package/fesm2022/acorex-connectivity-mock-assign-to-manager.command-T6-ao4e9.mjs.map +1 -0
  8. package/fesm2022/{acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs → acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs} +4 -4
  9. package/fesm2022/{acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs.map → acorex-connectivity-mock-category-with-items.query-KB7GIYeb.mjs.map} +1 -1
  10. package/fesm2022/acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs +53 -0
  11. package/fesm2022/acorex-connectivity-mock-check-permission.command-C-AZTcHP.mjs.map +1 -0
  12. package/fesm2022/acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs +80 -0
  13. package/fesm2022/acorex-connectivity-mock-complete-signature-process.command-CHci1rOa.mjs.map +1 -0
  14. package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs → acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs} +4 -4
  15. package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs.map → acorex-connectivity-mock-distribution-record.command-DMoZvago.mjs.map} +1 -1
  16. package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs +115 -0
  17. package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-B1TrIBvU.mjs.map +1 -0
  18. package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs +163 -0
  19. package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-CvNjA4OH.mjs.map +1 -0
  20. package/fesm2022/acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs +213 -0
  21. package/fesm2022/acorex-connectivity-mock-get-employee-list.query--f2M5RgC.mjs.map +1 -0
  22. package/fesm2022/acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs +209 -0
  23. package/fesm2022/acorex-connectivity-mock-get-location-list.query-Cz55arFF.mjs.map +1 -0
  24. package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs +186 -0
  25. package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-C7v7D4ep.mjs.map +1 -0
  26. package/fesm2022/acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs +246 -0
  27. package/fesm2022/acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs.map +1 -0
  28. package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs +192 -0
  29. package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs.map +1 -0
  30. package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs +56 -0
  31. package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs.map +1 -0
  32. package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs +246 -0
  33. package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs.map +1 -0
  34. package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs +258 -0
  35. package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-BDfrwf5Z.mjs.map +1 -0
  36. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs +56 -0
  37. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-BD4T2loB.mjs.map +1 -0
  38. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs +294 -0
  39. package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-CMJ8W3Ns.mjs.map +1 -0
  40. package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs +212 -0
  41. package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-C-gCUjbX.mjs.map +1 -0
  42. package/fesm2022/acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs +69 -0
  43. package/fesm2022/acorex-connectivity-mock-notify-signers.command-DLMsWjWQ.mjs.map +1 -0
  44. package/fesm2022/acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs +72 -0
  45. package/fesm2022/acorex-connectivity-mock-request-signature.command-JNkj9-Yz.mjs.map +1 -0
  46. package/fesm2022/{acorex-connectivity-mock-sample.command-CkH5bmEs.mjs → acorex-connectivity-mock-sample.command-CyrjdvEA.mjs} +4 -4
  47. package/fesm2022/{acorex-connectivity-mock-sample.command-CkH5bmEs.mjs.map → acorex-connectivity-mock-sample.command-CyrjdvEA.mjs.map} +1 -1
  48. package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs +81 -0
  49. package/fesm2022/acorex-connectivity-mock-validate-all-signatures.command-xKr94NrA.mjs.map +1 -0
  50. package/fesm2022/acorex-connectivity-mock.mjs +63874 -45210
  51. package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
  52. package/fesm2022/acorex-connectivity-utils.mjs +7 -7
  53. package/fesm2022/acorex-connectivity-utils.mjs.map +1 -1
  54. package/mock/index.d.ts +986 -1839
  55. package/package.json +6 -6
  56. package/fesm2022/acorex-connectivity-api-execute.command-CQt_HF1B.mjs.map +0 -1
@@ -0,0 +1,246 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXPEntityService } from '@acorex/platform/layout/entity';
4
+ import { RootConfig } from '@acorex/modules/product-catalog';
5
+
6
+ //#endregion
7
+ class GetProductListQuery {
8
+ constructor() {
9
+ this.entityService = inject(AXPEntityService);
10
+ this.productService = this.entityService.withEntity(`${RootConfig.module.name}.${RootConfig.entities.product.name}`).data();
11
+ }
12
+ async fetch(input) {
13
+ // Extract product-specific filters from AXPFilterClause format
14
+ const extractedFilters = this.extractProductFilters(input.filters);
15
+ // Separate custom filters from entity filters
16
+ const entityFilters = [];
17
+ let priceRangeFilter;
18
+ if (extractedFilters && extractedFilters.length > 0) {
19
+ for (const filter of extractedFilters) {
20
+ if (filter.field === 'priceRange') {
21
+ priceRangeFilter = filter.value;
22
+ }
23
+ else {
24
+ entityFilters.push(filter);
25
+ }
26
+ }
27
+ }
28
+ // Get all products from storage with entity filters
29
+ const allProductsResult = await this.productService.query({
30
+ skip: 0,
31
+ take: 10000, // Get all products for aggregation
32
+ filter: entityFilters.length > 0
33
+ ? {
34
+ logic: input.logic || 'and',
35
+ filters: entityFilters,
36
+ }
37
+ : undefined,
38
+ });
39
+ let allProducts = allProductsResult.items;
40
+ // Apply custom price range filter after fetching
41
+ if (priceRangeFilter && priceRangeFilter !== 'all') {
42
+ allProducts = this.applyPriceRangeFilter(allProducts, priceRangeFilter);
43
+ }
44
+ // Group products by brand
45
+ const brandGroups = new Map();
46
+ for (const product of allProducts) {
47
+ const brandKey = product.brand?.title || product.brandId || 'Unknown';
48
+ if (!brandGroups.has(brandKey)) {
49
+ brandGroups.set(brandKey, []);
50
+ }
51
+ brandGroups.get(brandKey).push(product);
52
+ }
53
+ // Aggregate data by brand
54
+ const aggregatedResults = [];
55
+ for (const [brandName, products] of brandGroups.entries()) {
56
+ const prices = products.map((p) => p.basePrice || 0).filter((p) => p > 0);
57
+ const totalValue = prices.reduce((sum, price) => sum + price, 0);
58
+ const productCount = products.length;
59
+ const averagePrice = productCount > 0 ? totalValue / productCount : 0;
60
+ const minPrice = prices.length > 0 ? Math.min(...prices) : 0;
61
+ const maxPrice = prices.length > 0 ? Math.max(...prices) : 0;
62
+ // Get unique categories
63
+ const categorySet = new Set();
64
+ for (const product of products) {
65
+ if (product.categories && Array.isArray(product.categories)) {
66
+ for (const cat of product.categories) {
67
+ if (cat.title) {
68
+ categorySet.add(cat.title);
69
+ }
70
+ }
71
+ }
72
+ }
73
+ const categories = Array.from(categorySet).join(', ');
74
+ // Get brand ID from first product
75
+ const brandId = products[0]?.brandId || products[0]?.brand?.id;
76
+ // Get manufacturer from first product (assuming all products in a brand have same manufacturer)
77
+ const manufacturerName = products[0]?.manufacturer?.title || products[0]?.manufacturerId || 'Unknown';
78
+ const manufacturerId = products[0]?.manufacturerId || products[0]?.manufacturer?.id;
79
+ aggregatedResults.push({
80
+ brand: brandName,
81
+ brandId,
82
+ manufacturer: manufacturerName,
83
+ manufacturerId,
84
+ productCount,
85
+ totalValue: Number(totalValue.toFixed(2)),
86
+ averagePrice: Number(averagePrice.toFixed(2)),
87
+ minPrice: Number(minPrice.toFixed(2)),
88
+ maxPrice: Number(maxPrice.toFixed(2)),
89
+ categories,
90
+ });
91
+ }
92
+ // Apply sorting if provided
93
+ if (input.sort && input.sort.length > 0) {
94
+ aggregatedResults.sort((a, b) => {
95
+ for (const sortField of input.sort) {
96
+ const field = sortField.field;
97
+ const aValue = a[field];
98
+ const bValue = b[field];
99
+ const dir = sortField.dir === 'asc' ? 1 : -1;
100
+ // Handle undefined values
101
+ if (aValue === undefined && bValue === undefined)
102
+ continue;
103
+ if (aValue === undefined)
104
+ return 1 * dir;
105
+ if (bValue === undefined)
106
+ return -1 * dir;
107
+ if (aValue < bValue)
108
+ return -1 * dir;
109
+ if (aValue > bValue)
110
+ return 1 * dir;
111
+ }
112
+ return 0;
113
+ });
114
+ }
115
+ // Apply pagination
116
+ const skip = input.skip || 0;
117
+ const take = input.take || 10;
118
+ const total = aggregatedResults.length;
119
+ const items = aggregatedResults.slice(skip, skip + take);
120
+ return {
121
+ items,
122
+ total,
123
+ };
124
+ }
125
+ //#region ---- Filter Extraction ----
126
+ /**
127
+ * Extract product-specific filters from AXPFilterClause format
128
+ * Maps report parameter paths to product entity field names
129
+ */
130
+ extractProductFilters(parameters) {
131
+ const filters = [];
132
+ const paramsAny = parameters;
133
+ if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {
134
+ return filters;
135
+ }
136
+ for (const filter of paramsAny.filters) {
137
+ if (!filter?.field || filter?.value === undefined || filter?.value === null) {
138
+ continue;
139
+ }
140
+ const field = filter.field;
141
+ const value = filter.value;
142
+ const operator = filter.operator || { type: 'equal' };
143
+ // Handle product-specific field mappings
144
+ if (field === 'brand') {
145
+ // Brand filter - can be array of IDs or single ID
146
+ if (Array.isArray(value) && value.length > 0) {
147
+ filters.push({
148
+ field: 'brandId',
149
+ operator: { type: 'in' },
150
+ value: value,
151
+ });
152
+ }
153
+ else if (value) {
154
+ filters.push({
155
+ field: 'brandId',
156
+ operator: { type: 'equal' },
157
+ value: value,
158
+ });
159
+ }
160
+ }
161
+ else if (field === 'category') {
162
+ // Category filter - can be array of IDs or single ID
163
+ if (Array.isArray(value) && value.length > 0) {
164
+ filters.push({
165
+ field: 'categoryIds',
166
+ operator: { type: 'contains' },
167
+ value: value[0], // Use first category for contains check
168
+ });
169
+ }
170
+ else if (value) {
171
+ filters.push({
172
+ field: 'categoryIds',
173
+ operator: { type: 'contains' },
174
+ value: value,
175
+ });
176
+ }
177
+ }
178
+ else if (field === 'status') {
179
+ // Status filter - skip 'all' value
180
+ if (value && value !== 'all') {
181
+ filters.push({
182
+ field: 'statusId',
183
+ operator: { type: 'equal' },
184
+ value: value,
185
+ });
186
+ }
187
+ }
188
+ else if (field === 'priceRange') {
189
+ // Price range filter - custom logic handled in query
190
+ filters.push({
191
+ field: 'priceRange',
192
+ operator: { type: 'equal' },
193
+ value: value,
194
+ });
195
+ }
196
+ else if (field === 'startDate' || field === 'endDate') {
197
+ // Date filters - can be handled if needed
198
+ // For now, skip as they might not be directly on product entity
199
+ }
200
+ else {
201
+ // Direct field mapping
202
+ filters.push({
203
+ field: field,
204
+ operator: operator,
205
+ value: value,
206
+ });
207
+ }
208
+ }
209
+ return filters;
210
+ }
211
+ //#endregion
212
+ //#region ---- Custom Filter Handlers ----
213
+ /**
214
+ * Apply custom price range filter to products
215
+ */
216
+ applyPriceRangeFilter(products, priceRange) {
217
+ return products.filter((product) => {
218
+ const price = product.basePrice || 0;
219
+ switch (priceRange) {
220
+ case 'under-50':
221
+ return price < 50;
222
+ case '50-100':
223
+ return price >= 50 && price < 100;
224
+ case '100-500':
225
+ return price >= 100 && price < 500;
226
+ case '500-1000':
227
+ return price >= 500 && price < 1000;
228
+ case 'over-1000':
229
+ return price >= 1000;
230
+ default:
231
+ return true;
232
+ }
233
+ });
234
+ }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductListQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
236
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductListQuery, providedIn: 'root' }); }
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductListQuery, decorators: [{
239
+ type: Injectable,
240
+ args: [{
241
+ providedIn: 'root',
242
+ }]
243
+ }] });
244
+
245
+ export { GetProductListQuery };
246
+ //# sourceMappingURL=acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs.map
@@ -0,0 +1 @@
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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"}
@@ -0,0 +1,192 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { GetProductListQuery } from './acorex-connectivity-mock-get-product-list.query-DTj8RYwR.mjs';
4
+
5
+ //#endregion
6
+ class GetProductPdfDataQuery {
7
+ constructor() {
8
+ this.productListQuery = inject(GetProductListQuery);
9
+ }
10
+ async fetch(input) {
11
+ // Extract product-specific filters from AXPFilterClause format
12
+ const extractedFilters = this.extractProductFilters(input.filters);
13
+ // Get the product list data to generate PDF content
14
+ const productListInput = {
15
+ skip: 0,
16
+ take: 10000, // Get all products for PDF
17
+ filters: extractedFilters,
18
+ logic: input.logic,
19
+ };
20
+ const productData = await this.productListQuery.fetch(productListInput);
21
+ // Generate a mock PDF base64 string
22
+ // In production, this would call an actual PDF generation service
23
+ const pdfBase64 = this.generateMockPdfBase64(productData);
24
+ return {
25
+ base64: pdfBase64,
26
+ filename: `Product_Report_${new Date().toISOString().split('T')[0]}.pdf`,
27
+ };
28
+ }
29
+ //#region ---- Filter Extraction ----
30
+ /**
31
+ * Extract product-specific filters from AXPFilterClause format
32
+ * Maps report parameter paths to product entity field names
33
+ */
34
+ extractProductFilters(parameters) {
35
+ const filters = [];
36
+ const paramsAny = parameters;
37
+ if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {
38
+ return filters;
39
+ }
40
+ for (const filter of paramsAny.filters) {
41
+ if (!filter?.field || filter?.value === undefined || filter?.value === null) {
42
+ continue;
43
+ }
44
+ const field = filter.field;
45
+ const value = filter.value;
46
+ const operator = filter.operator || { type: 'equal' };
47
+ // Handle product-specific field mappings
48
+ if (field === 'brand') {
49
+ // Brand filter - can be array of IDs or single ID
50
+ if (Array.isArray(value) && value.length > 0) {
51
+ filters.push({
52
+ field: 'brandId',
53
+ operator: { type: 'in' },
54
+ value: value,
55
+ });
56
+ }
57
+ else if (value) {
58
+ filters.push({
59
+ field: 'brandId',
60
+ operator: { type: 'equal' },
61
+ value: value,
62
+ });
63
+ }
64
+ }
65
+ else if (field === 'category') {
66
+ // Category filter - can be array of IDs or single ID
67
+ if (Array.isArray(value) && value.length > 0) {
68
+ filters.push({
69
+ field: 'categoryIds',
70
+ operator: { type: 'contains' },
71
+ value: value[0], // Use first category for contains check
72
+ });
73
+ }
74
+ else if (value) {
75
+ filters.push({
76
+ field: 'categoryIds',
77
+ operator: { type: 'contains' },
78
+ value: value,
79
+ });
80
+ }
81
+ }
82
+ else if (field === 'status') {
83
+ // Status filter - skip 'all' value
84
+ if (value && value !== 'all') {
85
+ filters.push({
86
+ field: 'statusId',
87
+ operator: { type: 'equal' },
88
+ value: value,
89
+ });
90
+ }
91
+ }
92
+ else if (field === 'priceRange') {
93
+ // Price range filter - custom logic handled in query
94
+ filters.push({
95
+ field: 'priceRange',
96
+ operator: { type: 'equal' },
97
+ value: value,
98
+ });
99
+ }
100
+ else if (field === 'startDate' || field === 'endDate') {
101
+ // Date filters - can be handled if needed
102
+ // For now, skip as they might not be directly on product entity
103
+ }
104
+ else {
105
+ // Direct field mapping
106
+ filters.push({
107
+ field: field,
108
+ operator: operator,
109
+ value: value,
110
+ });
111
+ }
112
+ }
113
+ return filters;
114
+ }
115
+ //#endregion
116
+ //#region ---- PDF Generation Helpers ----
117
+ /**
118
+ * Generate a mock PDF base64 string
119
+ * In production, this would call an actual PDF generation service
120
+ */
121
+ generateMockPdfBase64(productData) {
122
+ // Create a minimal valid PDF with some content
123
+ // This is a very basic PDF structure for demonstration
124
+ // In production, use a proper PDF library like jsPDF or call a backend service
125
+ const pdfContent = this.createSimplePdf(productData);
126
+ // Convert to base64
127
+ const base64 = btoa(pdfContent);
128
+ return base64;
129
+ }
130
+ /**
131
+ * Create a simple PDF document structure
132
+ * This is a minimal valid PDF for demonstration - in production use a proper PDF library
133
+ */
134
+ createSimplePdf(productData) {
135
+ // Use a minimal valid PDF structure that browsers can render
136
+ // This is a very basic single-page PDF
137
+ const pdf = `%PDF-1.4
138
+ 1 0 obj
139
+ << /Type /Catalog /Pages 2 0 R >>
140
+ endobj
141
+ 2 0 obj
142
+ << /Type /Pages /Kids [3 0 R] /Count 1 >>
143
+ endobj
144
+ 3 0 obj
145
+ << /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >>
146
+ endobj
147
+ 4 0 obj
148
+ << /Length 200 >>
149
+ stream
150
+ BT
151
+ /F1 12 Tf
152
+ 100 700 Td
153
+ (Product Report) Tj
154
+ 0 -20 Td
155
+ (Total Brands: ${productData.total}) Tj
156
+ 0 -20 Td
157
+ (Generated: ${new Date().toLocaleDateString()}) Tj
158
+ 0 -20 Td
159
+ (Items: ${productData.items.length}) Tj
160
+ ET
161
+ endstream
162
+ endobj
163
+ 5 0 obj
164
+ << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
165
+ endobj
166
+ xref
167
+ 0 6
168
+ 0000000000 65535 f
169
+ 0000000009 00000 n
170
+ 0000000058 00000 n
171
+ 0000000115 00000 n
172
+ 0000000317 00000 n
173
+ 0000000444 00000 n
174
+ trailer
175
+ << /Size 6 /Root 1 0 R >>
176
+ startxref
177
+ 527
178
+ %%EOF`;
179
+ return pdf;
180
+ }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductPdfDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
182
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductPdfDataQuery, providedIn: 'root' }); }
183
+ }
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetProductPdfDataQuery, decorators: [{
185
+ type: Injectable,
186
+ args: [{
187
+ providedIn: 'root',
188
+ }]
189
+ }] });
190
+
191
+ export { GetProductPdfDataQuery };
192
+ //# sourceMappingURL=acorex-connectivity-mock-get-product-pdf-data.query-DdLhRbP5.mjs.map
@@ -0,0 +1 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb2R1Y3QtcGRmLWRhdGEucXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9tb2NrL3NyYy9saWIvcHJvZHVjdC1jYXRhbG9nL3JlcG9ydHMvZ2V0LXByb2R1Y3QtcGRmLWRhdGEucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBb0IvRCxZQUFZO0FBS1osTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlxQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQTJMbkU7SUF6TEcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUF3QztRQUNoRCwrREFBK0Q7UUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLG9EQUFvRDtRQUNwRCxNQUFNLGdCQUFnQixHQUE2QjtZQUMvQyxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxLQUFLLEVBQUUsMkJBQTJCO1lBQ3hDLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ3JCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV4RSxvQ0FBb0M7UUFDcEMsa0VBQWtFO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0gsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLGtCQUFrQixJQUFJLElBQUksRUFBRSxD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S0FBSyxDQUFDLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQjVCLENBQUM7UUFFQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7K0dBekxRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07OzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dCwgR2V0UHJvZHVjdExpc3RRdWVyeVJlc3VsdCB9IGZyb20gJy4vZ2V0LXByb2R1Y3QtbGlzdC5xdWVyeSc7XG5pbXBvcnQgeyBHZXRQcm9kdWN0TGlzdFF1ZXJ5IH0gZnJvbSAnLi9nZXQtcHJvZHVjdC1saXN0LnF1ZXJ5JztcblxuLy8jcmVnaW9uIC0tLS0gICBRdWVyeSBJbnB1dC9PdXRwdXQgVHlwZXMgICAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeUlucHV0IHtcbiAgICBmaWx0ZXJzPzogQXJyYXk8e1xuICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiBzdHJpbmcgfTtcbiAgICAgICAgdmFsdWU6IGFueTtcbiAgICB9PjtcbiAgICBsb2dpYz86ICdhbmQnIHwgJ29yJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9kdWN0UGRmRGF0YVF1ZXJ5UmVzdWx0IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgYmFzZTY0Pzogc3RyaW5nO1xuICAgIGJsb2I/OiBCbG9iO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PEdldFByb2R1Y3RQZGZEYXRhUXVlcnlJbnB1dCwgR2V0UHJvZHVjdFBkZkRhdGFRdWVyeVJlc3VsdD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdExpc3RRdWVyeSA9IGluamVjdChHZXRQcm9kdWN0TGlzdFF1ZXJ5KTtcblxuICAgIGFzeW5jIGZldGNoKGlucHV0OiBHZXRQcm9kdWN0UGRmRGF0YVF1ZXJ5SW5wdXQgfCBhbnkpOiBQcm9taXNlPEdldFByb2R1Y3RQZGZEYXRhUXVlcnlSZXN1bHQ+IHtcbiAgICAgICAgLy8gRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZEZpbHRlcnMgPSB0aGlzLmV4dHJhY3RQcm9kdWN0RmlsdGVycyhpbnB1dC5maWx0ZXJzKTtcblxuICAgICAgICAvLyBHZXQgdGhlIHByb2R1Y3QgbGlzdCBkYXRhIHRvIGdlbmVyYXRlIFBERiBjb250ZW50XG4gICAgICAgIGNvbnN0IHByb2R1Y3RMaXN0SW5wdXQ6IEdldFByb2R1Y3RMaXN0UXVlcnlJbnB1dCA9IHtcbiAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICB0YWtlOiAxMDAwMCwgLy8gR2V0IGFsbCBwcm9kdWN0cyBmb3IgUERGXG4gICAgICAgICAgICBmaWx0ZXJzOiBleHRyYWN0ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgbG9naWM6IGlucHV0LmxvZ2ljLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHByb2R1Y3REYXRhID0gYXdhaXQgdGhpcy5wcm9kdWN0TGlzdFF1ZXJ5LmZldGNoKHByb2R1Y3RMaXN0SW5wdXQpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIGEgbW9jayBQREYgYmFzZTY0IHN0cmluZ1xuICAgICAgICAvLyBJbiBwcm9kdWN0aW9uLCB0aGlzIHdvdWxkIGNhbGwgYW4gYWN0dWFsIFBERiBnZW5lcmF0aW9uIHNlcnZpY2VcbiAgICAgICAgY29uc3QgcGRmQmFzZTY0ID0gdGhpcy5nZW5lcmF0ZU1vY2tQZGZCYXNlNjQocHJvZHVjdERhdGEpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYXNlNjQ6IHBkZkJhc2U2NCxcbiAgICAgICAgICAgIGZpbGVuYW1lOiBgUHJvZHVjdF9SZXBvcnRfJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXX0ucGRmYCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZpbHRlciBFeHRyYWN0aW9uICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdCBwcm9kdWN0LXNwZWNpZmljIGZpbHRlcnMgZnJvbSBBWFBGaWx0ZXJDbGF1c2UgZm9ybWF0XG4gICAgICogTWFwcyByZXBvcnQgcGFyYW1ldGVyIHBhdGhzIHRvIHByb2R1Y3QgZW50aXR5IGZpZWxkIG5hbWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0UHJvZHVjdEZpbHRlcnMocGFyYW1ldGVyczogYW55KTogR2V0UHJvZHVjdExpc3RRdWVyeUlucHV0WydmaWx0ZXJzJ10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBHZXRQcm9kdWN0TGlzdFF1ZXJ5SW5wdXRbJ2ZpbHRlcnMnXSA9IFtdO1xuICAgICAgICBjb25zdCBwYXJhbXNBbnkgPSBwYXJhbWV0ZXJzIGFzIGFueTtcblxuICAgICAgICBpZiAoIXBhcmFtc0FueT8uZmlsdGVycyB8fCAhQXJyYXkuaXNBcnJheShwYXJhbXNBbnkuZmlsdGVycykpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgcGFyYW1zQW55LmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGlmICghZmlsdGVyPy5maWVsZCB8fCBmaWx0ZXI/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyPy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXIub3BlcmF0b3IgfHwgeyB0eXBlOiAnZXF1YWwnIH07XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSBwcm9kdWN0LXNwZWNpZmljIGZpZWxkIG1hcHBpbmdzXG4gICAgICAgICAgICBpZiAoZmllbGQgPT09ICdicmFuZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBCcmFuZCBmaWx0ZXIgLSBjYW4gYmUgYXJyYXkgb2YgSURzIG9yIHNpbmdsZSBJRFxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2luJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2JyYW5kSWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnY2F0ZWdvcnknKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2F0ZWdvcnkgZmlsdGVyIC0gY2FuIGJlIGFycmF5IG9mIElEcyBvciBzaW5nbGUgSURcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVbMF0sIC8vIFVzZSBmaXJzdCBjYXRlZ29yeSBmb3IgY29udGFpbnMgY2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnY29udGFpbnMnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgICAgICAgLy8gU3RhdHVzIGZpbHRlciAtIHNraXAgJ2FsbCcgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3N0YXR1c0lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gJ3ByaWNlUmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgLy8gUHJpY2UgcmFuZ2UgZmlsdGVyIC0gY3VzdG9tIGxvZ2ljIGhhbmRsZWQgaW4gcXVlcnlcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3ByaWNlUmFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdzdGFydERhdGUnIHx8IGZpZWxkID09PSAnZW5kRGF0ZScpIHtcbiAgICAgICAgICAgICAgICAvLyBEYXRlIGZpbHRlcnMgLSBjYW4gYmUgaGFuZGxlZCBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBza2lwIGFzIHRoZXkgbWlnaHQgbm90IGJlIGRpcmVjdGx5IG9uIHByb2R1Y3QgZW50aXR5XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIERpcmVjdCBmaWVsZCBtYXBwaW5nXG4gICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQREYgR2VuZXJhdGlvbiBIZWxwZXJzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgYSBtb2NrIFBERiBiYXNlNjQgc3RyaW5nXG4gICAgICogSW4gcHJvZHVjdGlvbiwgdGhpcyB3b3VsZCBjYWxsIGFuIGFjdHVhbCBQREYgZ2VuZXJhdGlvbiBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU1vY2tQZGZCYXNlNjQocHJvZHVjdERhdGE6IEdldFByb2R1Y3RMaXN0UXVlcnlSZXN1bHQpOiBzdHJpbmcge1xuICAgICAgICAvLyBDcmVhdGUgYSBtaW5pbWFsIHZhbGlkIFBERiB3aXRoIHNvbWUgY29udGVudFxuICAgICAgICAvLyBUaGlzIGlzIGEgdmVyeSBiYXNpYyBQREYgc3RydWN0dXJlIGZvciBkZW1vbnN0cmF0aW9uXG4gICAgICAgIC8vIEluIHByb2R1Y3Rpb24sIHVzZSBhIHByb3BlciBQREYgbGlicmFyeSBsaWtlIGpzUERGIG9yIGNhbGwgYSBiYWNrZW5kIHNlcnZpY2VcblxuICAgICAgICBjb25zdCBwZGZDb250ZW50ID0gdGhpcy5jcmVhdGVTaW1wbGVQZGYocHJvZHVjdERhdGEpO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gYmFzZTY0XG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IGJ0b2EocGRmQ29udGVudCk7XG5cbiAgICAgICAgcmV0dXJuIGJhc2U2NDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBzaW1wbGUgUERGIGRvY3VtZW50IHN0cnVjdHVyZVxuICAgICAqIFRoaXMgaXMgYSBtaW5pbWFsIHZhbGlkIFBERiBmb3IgZGVtb25zdHJhdGlvbiAtIGluIHByb2R1Y3Rpb24gdXNlIGEgcHJvcGVyIFBERiBsaWJyYXJ5XG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVTaW1wbGVQZGYocHJvZHVjdERhdGE6IEdldFByb2R1Y3RMaXN0UXVlcnlSZXN1bHQpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2UgYSBtaW5pbWFsIHZhbGlkIFBERiBzdHJ1Y3R1cmUgdGhhdCBicm93c2VycyBjYW4gcmVuZGVyXG4gICAgICAgIC8vIFRoaXMgaXMgYSB2ZXJ5IGJhc2ljIHNpbmdsZS1wYWdlIFBERlxuICAgICAgICBjb25zdCBwZGYgPSBgJVBERi0xLjRcbjEgMCBvYmpcbjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAyIDAgUiA+PlxuZW5kb2JqXG4yIDAgb2JqXG48PCAvVHlwZSAvUGFnZXMgL0tpZHMgWzMgMCBSXSAvQ291bnQgMSA+PlxuZW5kb2JqXG4zIDAgb2JqXG48PCAvVHlwZSAvUGFnZSAvUGFyZW50IDIgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db250ZW50cyA0IDAgUiAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiA+PlxuZW5kb2JqXG40IDAgb2JqXG48PCAvTGVuZ3RoIDIwMCA+Plxuc3RyZWFtXG5CVFxuL0YxIDEyIFRmXG4xMDAgNzAwIFRkXG4oUHJvZHVjdCBSZXBvcnQpIFRqXG4wIC0yMCBUZFxuKFRvdGFsIEJyYW5kczogJHtwcm9kdWN0RGF0YS50b3RhbH0pIFRqXG4wIC0yMCBUZFxuKEdlbmVyYXRlZDogJHtuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfSkgVGpcbjAgLTIwIFRkXG4oSXRlbXM6ICR7cHJvZHVjdERhdGEuaXRlbXMubGVuZ3RofSkgVGpcbkVUXG5lbmRzdHJlYW1cbmVuZG9ialxuNSAwIG9ialxuPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUxIC9CYXNlRm9udCAvSGVsdmV0aWNhID4+XG5lbmRvYmpcbnhyZWZcbjAgNlxuMDAwMDAwMDAwMCA2NTUzNSBmIFxuMDAwMDAwMDAwOSAwMDAwMCBuIFxuMDAwMDAwMDA1OCAwMDAwMCBuIFxuMDAwMDAwMDExNSAwMDAwMCBuIFxuMDAwMDAwMDMxNyAwMDAwMCBuIFxuMDAwMDAwMDQ0NCAwMDAwMCBuIFxudHJhaWxlclxuPDwgL1NpemUgNiAvUm9vdCAxIDAgUiA+Plxuc3RhcnR4cmVmXG41MjdcbiUlRU9GYDtcblxuICAgICAgICByZXR1cm4gcGRmO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0="],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { GetSubscriptionsTimelineQuery } from './acorex-connectivity-mock-get-subscriptions-timeline.query-kciEUx7d.mjs';
4
+
5
+ //#endregion
6
+ class GetSubscriptionsChartDataQuery {
7
+ constructor() {
8
+ this.subscriptionsTimelineQuery = inject(GetSubscriptionsTimelineQuery);
9
+ }
10
+ async fetch(input) {
11
+ // Get all subscription timeline data (no pagination for charts)
12
+ const timelineResult = await this.subscriptionsTimelineQuery.fetch({
13
+ skip: 0,
14
+ take: 10000,
15
+ filters: input.filters,
16
+ logic: input.logic,
17
+ });
18
+ // Group by month
19
+ const monthGroups = new Map();
20
+ for (const item of timelineResult.items) {
21
+ const monthKey = `${item.year}-${String(item.monthNumber).padStart(2, '0')}`;
22
+ if (!monthGroups.has(monthKey)) {
23
+ monthGroups.set(monthKey, {
24
+ month: item.month,
25
+ year: item.year,
26
+ quarter: item.quarter,
27
+ subscriptionCount: 0,
28
+ });
29
+ }
30
+ const group = monthGroups.get(monthKey);
31
+ group.subscriptionCount++;
32
+ }
33
+ // Convert to array and sort by date
34
+ const results = Array.from(monthGroups.values()).sort((a, b) => {
35
+ if (a.year !== b.year)
36
+ return a.year - b.year;
37
+ const monthA = new Date(`${a.month} 1, ${a.year}`).getMonth();
38
+ const monthB = new Date(`${b.month} 1, ${b.year}`).getMonth();
39
+ return monthA - monthB;
40
+ });
41
+ return {
42
+ items: results,
43
+ };
44
+ }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetSubscriptionsChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetSubscriptionsChartDataQuery, providedIn: 'root' }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetSubscriptionsChartDataQuery, decorators: [{
49
+ type: Injectable,
50
+ args: [{
51
+ providedIn: 'root',
52
+ }]
53
+ }] });
54
+
55
+ export { GetSubscriptionsChartDataQuery };
56
+ //# sourceMappingURL=acorex-connectivity-mock-get-subscriptions-chart-data.query-ybmzmVl5.mjs.map