@acorex/connectivity 21.0.0-next.34 → 21.0.0-next.39

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 (20) hide show
  1. package/fesm2022/{acorex-connectivity-mock-acorex-connectivity-mock-BpUUTZOi.mjs → acorex-connectivity-mock-acorex-connectivity-mock-Bso6KgSC.mjs} +7102 -3436
  2. package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-Bso6KgSC.mjs.map +1 -0
  3. package/fesm2022/{acorex-connectivity-mock-chat-generate-image.command-BA0r4IMn.mjs → acorex-connectivity-mock-chat-generate-image.command-BYNcjNoo.mjs} +2 -2
  4. package/fesm2022/{acorex-connectivity-mock-chat-generate-image.command-BA0r4IMn.mjs.map → acorex-connectivity-mock-chat-generate-image.command-BYNcjNoo.mjs.map} +1 -1
  5. package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-B5-8a7SC.mjs → acorex-connectivity-mock-chat-synthesize-speech.command-82f3G8lC.mjs} +2 -2
  6. package/fesm2022/{acorex-connectivity-mock-chat-synthesize-speech.command-B5-8a7SC.mjs.map → acorex-connectivity-mock-chat-synthesize-speech.command-82f3G8lC.mjs.map} +1 -1
  7. package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-BGzXvTnh.mjs → acorex-connectivity-mock-chat-transcribe-speech.command-D6gp3I1V.mjs} +2 -2
  8. package/fesm2022/{acorex-connectivity-mock-chat-transcribe-speech.command-BGzXvTnh.mjs.map → acorex-connectivity-mock-chat-transcribe-speech.command-D6gp3I1V.mjs.map} +1 -1
  9. package/fesm2022/{acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs → acorex-connectivity-mock-entity-update.activity-06HTKiQQ.mjs} +1 -3
  10. package/fesm2022/acorex-connectivity-mock-entity-update.activity-06HTKiQQ.mjs.map +1 -0
  11. package/fesm2022/{acorex-connectivity-mock-get-product-list.query-B06aC73T.mjs → acorex-connectivity-mock-get-product-list.query-f-mTj4ah.mjs} +7 -5
  12. package/fesm2022/acorex-connectivity-mock-get-product-list.query-f-mTj4ah.mjs.map +1 -0
  13. package/fesm2022/{acorex-connectivity-mock-get-product-pdf-data.query-CM7bsjl7.mjs → acorex-connectivity-mock-get-product-pdf-data.query-Co1V52c4.mjs} +2 -2
  14. package/fesm2022/{acorex-connectivity-mock-get-product-pdf-data.query-CM7bsjl7.mjs.map → acorex-connectivity-mock-get-product-pdf-data.query-Co1V52c4.mjs.map} +1 -1
  15. package/fesm2022/acorex-connectivity-mock.mjs +1 -1
  16. package/package.json +2 -2
  17. package/types/acorex-connectivity-mock.d.ts +80 -38
  18. package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-BpUUTZOi.mjs.map +0 -1
  19. package/fesm2022/acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs.map +0 -1
  20. package/fesm2022/acorex-connectivity-mock-get-product-list.query-B06aC73T.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/entity-update.activity.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXPEntityStorageService } from '@acorex/platform/layout/entity';\n\n//#region ---- Types ----\n\nexport interface EntityUpdateInput {\n entity: string;\n id: string;\n data: Record<string, any>;\n}\n\nexport interface EntityUpdateOutput {\n data: any;\n success: boolean;\n error?: string;\n}\n\n//#endregion\n\n/**\n * Entity Update Activity (Mock – Dexie)\n *\n * Updates one entity in storage (Dexie in mock).\n * Activity type: workflow-activity:entity-update\n * Outcomes: Done | Failed\n */\n@Injectable({ providedIn: 'root' })\nexport class EntityUpdateActivity implements AXPCommand<EntityUpdateInput, EntityUpdateOutput> {\n private readonly storage = inject(AXPEntityStorageService);\n\n async execute(\n input: EntityUpdateInput,\n ): Promise<AXPExecuteCommandResult<EntityUpdateOutput>> {\n\n debugger;\n console.log('EntityUpdateActivity', input);\n \n\n try {\n if (!input?.entity) {\n return {\n success: false,\n message: { text: 'entity is required' },\n data: { data: null, success: false, error: 'entity is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n if (!input?.id) {\n return {\n success: false,\n message: { text: 'id is required' },\n data: { data: null, success: false, error: 'id is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n if (!input.data || typeof input.data !== 'object') {\n return {\n success: false,\n message: { text: 'data is required' },\n data: { data: null, success: false, error: 'data is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const updated = await this.storage.updateOne(input.entity, input.id, input.data as any);\n\n return {\n success: true,\n data: { data: updated, success: true },\n metadata: { outcome: 'Done' },\n };\n } catch (error: any) {\n return {\n success: false,\n message: { text: error?.message ?? 'Update failed' },\n data: { data: null, success: false, error: error?.message ?? 'Update failed' },\n metadata: { outcome: 'Failed' },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;AAmBA;AAEA;;;;;;AAMG;MAEU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAoD3D,IAAA;IAlDC,MAAM,OAAO,CACX,KAAwB,EAAA;AAGxB,QAAA;AACA,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAG1C,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAClB,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;AACvC,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACjE,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAChC;YACH;AACA,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE;gBACd,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;AACnC,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAC7D,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAChC;YACH;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACjD,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;AACrC,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC/D,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAChC;YACH;YAEA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAW,CAAC;YAEvF,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACtC,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC9B;QACH;QAAE,OAAO,KAAU,EAAE;YACnB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE;AACpD,gBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE;AAC9E,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;IACF;8GApDW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-connectivity-mock-get-product-list.query-B06aC73T.mjs","sources":["../../../../libs/connectivity/mock/src/lib/product-catalog/reports/get-product-list.query.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { resolveMultiLanguageString } from '@acorex/platform/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPQuery } from '@acorex/platform/runtime';\nimport { AXMProductCatalogProductEntityModel } from '@acorex/modules/product-catalog';\nimport { RootConfig } from '@acorex/modules/product-catalog';\n\n//#region ---- Query Input/Output Types ----\n\nexport interface GetProductListQueryInput {\n skip?: number;\n take?: number;\n sort?: Array<{ field: string; dir: 'asc' | 'desc' }>;\n filters?: Array<{\n field: string;\n operator: { type: string };\n value: any;\n }>;\n logic?: 'and' | 'or';\n}\n\nexport interface ProductByBrandResult {\n brand: string;\n brandId?: string;\n manufacturer: string;\n manufacturerId?: string;\n productCount: number;\n totalValue: number;\n averagePrice: number;\n minPrice: number;\n maxPrice: number;\n categories: string;\n}\n\nexport interface GetProductListQueryResult {\n items: ProductByBrandResult[];\n total: number;\n}\n\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GetProductListQuery implements AXPQuery<GetProductListQueryInput, GetProductListQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n private productService = this.entityService.withEntity(`${RootConfig.module.name}.${RootConfig.entities.product.name}`).data<string, AXMProductCatalogProductEntityModel>();\n\n async fetch(input: GetProductListQueryInput | any): Promise<GetProductListQueryResult> {\n // Extract product-specific filters from AXPFilterClause format\n const extractedFilters = this.extractProductFilters(input.filters);\n\n // Separate custom filters from entity filters\n const entityFilters: GetProductListQueryInput['filters'] = [];\n let priceRangeFilter: string | undefined;\n\n if (extractedFilters && extractedFilters.length > 0) {\n for (const filter of extractedFilters) {\n if (filter.field === 'priceRange') {\n priceRangeFilter = filter.value;\n } else {\n entityFilters.push(filter);\n }\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:\n entityFilters.length > 0\n ? ({\n logic: input.logic || 'and',\n filters: entityFilters,\n } as any)\n : undefined,\n });\n\n let allProducts = allProductsResult.items;\n\n // Apply custom price range filter after fetching\n if (priceRangeFilter && priceRangeFilter !== 'all') {\n allProducts = this.applyPriceRangeFilter(allProducts, priceRangeFilter);\n }\n\n // Group products by brand\n const brandGroups = new Map<string, AXMProductCatalogProductEntityModel[]>();\n\n for (const product of allProducts) {\n const brandKey = product.brand?.title || product.brandId || 'Unknown';\n\n if (!brandGroups.has(brandKey)) {\n brandGroups.set(brandKey, []);\n }\n\n brandGroups.get(brandKey)!.push(product);\n }\n\n // Aggregate data by brand\n const aggregatedResults: ProductByBrandResult[] = [];\n\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\n // Get unique categories\n const categorySet = new Set<string>();\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(resolveMultiLanguageString(cat.title, 'en-US'));\n }\n }\n }\n }\n const categories = Array.from(categorySet).join(', ');\n\n // Get brand ID from first product\n const brandId = products[0]?.brandId || products[0]?.brand?.id;\n\n // Get manufacturer from first product (assuming all products in a brand have same manufacturer)\n const manufacturerName =\n (products[0]?.manufacturer?.title != null\n ? resolveMultiLanguageString(products[0].manufacturer!.title, 'en-US')\n : '') ||\n products[0]?.manufacturerId ||\n 'Unknown';\n const manufacturerId = products[0]?.manufacturerId || products[0]?.manufacturer?.id;\n\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\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 as keyof ProductByBrandResult;\n const aValue = a[field];\n const bValue = b[field];\n const dir = sortField.dir === 'asc' ? 1 : -1;\n\n // Handle undefined values\n if (aValue === undefined && bValue === undefined) continue;\n if (aValue === undefined) return 1 * dir;\n if (bValue === undefined) return -1 * dir;\n\n if (aValue < bValue) return -1 * dir;\n if (aValue > bValue) return 1 * dir;\n }\n return 0;\n });\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\n return {\n items,\n total,\n };\n }\n\n //#region ---- Filter Extraction ----\n\n /**\n * Extract product-specific filters from AXPFilterClause format\n * Maps report parameter paths to product entity field names\n */\n private extractProductFilters(parameters: any): GetProductListQueryInput['filters'] {\n const filters: GetProductListQueryInput['filters'] = [];\n const paramsAny = parameters as any;\n\n if (!paramsAny?.filters || !Array.isArray(paramsAny.filters)) {\n return filters;\n }\n\n for (const filter of paramsAny.filters) {\n if (!filter?.field || filter?.value === undefined || filter?.value === null) {\n continue;\n }\n\n const field = filter.field;\n const value = filter.value;\n const operator = filter.operator || { type: 'equal' };\n\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 } else if (value) {\n filters.push({\n field: 'brandId',\n operator: { type: 'equal' },\n value: value,\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 } else if (value) {\n filters.push({\n field: 'categoryIds',\n operator: { type: 'contains' },\n value: value,\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 } 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 } 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 } else {\n // Direct field mapping\n filters.push({\n field: field,\n operator: operator,\n value: value,\n });\n }\n }\n\n return filters;\n }\n\n //#endregion\n\n //#region ---- Custom Filter Handlers ----\n\n /**\n * Apply custom price range filter to products\n */\n private applyPriceRangeFilter(\n products: AXMProductCatalogProductEntityModel[],\n priceRange: string\n ): AXMProductCatalogProductEntityModel[] {\n return products.filter((product) => {\n const price = product.basePrice || 0;\n\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\n //#endregion\n}\n\n"],"names":[],"mappings":"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"}