@acorex/connectivity 21.0.0-next.3 → 21.0.0-next.33
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-SGNBLcOi.mjs → acorex-connectivity-api-execute.command-CiBl7z_H.mjs} +6 -6
- package/fesm2022/acorex-connectivity-api-execute.command-CiBl7z_H.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-api.mjs +101 -185
- package/fesm2022/acorex-connectivity-api.mjs.map +1 -1
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-BpUUTZOi.mjs +65873 -0
- package/fesm2022/acorex-connectivity-mock-acorex-connectivity-mock-BpUUTZOi.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs +79 -0
- package/fesm2022/acorex-connectivity-mock-assign-to-manager.activity-DTPM1eU1.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-category-metadata-inheritance.query-CWRL1dTa.mjs +198 -0
- package/fesm2022/acorex-connectivity-mock-category-metadata-inheritance.query-CWRL1dTa.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs → acorex-connectivity-mock-category-with-items.query-Cj6FWu7S.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-Cj6FWu7S.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-chat-generate-image.command-BA0r4IMn.mjs +114 -0
- package/fesm2022/acorex-connectivity-mock-chat-generate-image.command-BA0r4IMn.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-chat-synthesize-speech.command-B5-8a7SC.mjs +130 -0
- package/fesm2022/acorex-connectivity-mock-chat-synthesize-speech.command-B5-8a7SC.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-chat-transcribe-speech.command-BGzXvTnh.mjs +110 -0
- package/fesm2022/acorex-connectivity-mock-chat-transcribe-speech.command-BGzXvTnh.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-check-permission.activity-vr3OHtjC.mjs +45 -0
- package/fesm2022/acorex-connectivity-mock-check-permission.activity-vr3OHtjC.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-complete-signature-process.activity-BO-IFsHT.mjs +56 -0
- package/fesm2022/acorex-connectivity-mock-complete-signature-process.activity-BO-IFsHT.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-contact-core.module-5TLCGWOR.mjs +968 -0
- package/fesm2022/acorex-connectivity-mock-contact-core.module-5TLCGWOR.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-content-management.module-GQdqKsPB.mjs +16 -0
- package/fesm2022/acorex-connectivity-mock-content-management.module-GQdqKsPB.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs → acorex-connectivity-mock-distribution-record.activity-DuNluOzA.mjs} +18 -6
- package/fesm2022/acorex-connectivity-mock-distribution-record.activity-DuNluOzA.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-entity-create.activity-Ca19tIj4.mjs +60 -0
- package/fesm2022/acorex-connectivity-mock-entity-create.activity-Ca19tIj4.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-entity-delete.activity-ErEN1c24.mjs +60 -0
- package/fesm2022/acorex-connectivity-mock-entity-delete.activity-ErEN1c24.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-entity-read.activity-1fJW8gVe.mjs +67 -0
- package/fesm2022/acorex-connectivity-mock-entity-read.activity-1fJW8gVe.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs +70 -0
- package/fesm2022/acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-extract-document-text.command-nGfUTSf6.mjs +64 -0
- package/fesm2022/acorex-connectivity-mock-extract-document-text.command-nGfUTSf6.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs +115 -0
- package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-sFKYynZA.mjs +163 -0
- package/fesm2022/acorex-connectivity-mock-get-application-versions-timeline.query-sFKYynZA.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-current-session-user.activity-C6S4ZJgp.mjs +35 -0
- package/fesm2022/acorex-connectivity-mock-get-current-session-user.activity-C6S4ZJgp.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-current-user-manager.activity-C1mj2bgB.mjs +69 -0
- package/fesm2022/acorex-connectivity-mock-get-current-user-manager.activity-C1mj2bgB.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-employee-list.query-DifHwuqH.mjs +213 -0
- package/fesm2022/acorex-connectivity-mock-get-employee-list.query-DifHwuqH.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-location-list.query-bMjkZnzq.mjs +209 -0
- package/fesm2022/acorex-connectivity-mock-get-location-list.query-bMjkZnzq.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-D7DBzLT-.mjs +186 -0
- package/fesm2022/acorex-connectivity-mock-get-product-chart-data.query-D7DBzLT-.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-product-list.query-B06aC73T.mjs +251 -0
- package/fesm2022/acorex-connectivity-mock-get-product-list.query-B06aC73T.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-CM7bsjl7.mjs +192 -0
- package/fesm2022/acorex-connectivity-mock-get-product-pdf-data.query-CM7bsjl7.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-BQT5a_hn.mjs +56 -0
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-chart-data.query-BQT5a_hn.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-D4qfDfeV.mjs +246 -0
- package/fesm2022/acorex-connectivity-mock-get-subscriptions-timeline.query-D4qfDfeV.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-n1_Azada.mjs +258 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-application-access.query-n1_Azada.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-Cg4ykZU2.mjs +56 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-chart-data.query-Cg4ykZU2.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-0sCBtdbp.mjs +294 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-registration-timeline.query-0sCBtdbp.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-rD811gtM.mjs +212 -0
- package/fesm2022/acorex-connectivity-mock-get-tenant-user-distribution.query-rD811gtM.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-if.activity-DvzuhItL.mjs +35 -0
- package/fesm2022/acorex-connectivity-mock-if.activity-DvzuhItL.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-notify-signers.activity-Dg0sKGip.mjs +49 -0
- package/fesm2022/acorex-connectivity-mock-notify-signers.activity-Dg0sKGip.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-request-signature.activity-CoRT_H2u.mjs +60 -0
- package/fesm2022/acorex-connectivity-mock-request-signature.activity-CoRT_H2u.mjs.map +1 -0
- package/fesm2022/{acorex-connectivity-mock-sample.command-CkH5bmEs.mjs → acorex-connectivity-mock-sample.command-CJmDL4pL.mjs} +4 -4
- package/fesm2022/acorex-connectivity-mock-sample.command-CJmDL4pL.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-structured-text-completion.command-l31pjl9-.mjs +38 -0
- package/fesm2022/acorex-connectivity-mock-structured-text-completion.command-l31pjl9-.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock-validate-all-signatures.activity-JuHjNFFS.mjs +61 -0
- package/fesm2022/acorex-connectivity-mock-validate-all-signatures.activity-JuHjNFFS.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock.mjs +1 -51504
- 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/fesm2022/acorex-connectivity.mjs.map +1 -1
- package/package.json +8 -7
- package/{api/index.d.ts → types/acorex-connectivity-api.d.ts} +1 -59
- package/types/acorex-connectivity-mock.d.ts +3951 -0
- package/fesm2022/acorex-connectivity-api-execute.command-SGNBLcOi.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-Dsxj98tX.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-distribution-record.command-DRiDwlqN.mjs.map +0 -1
- package/fesm2022/acorex-connectivity-mock-sample.command-CkH5bmEs.mjs.map +0 -1
- package/mock/index.d.ts +0 -2775
- /package/{utils/index.d.ts → types/acorex-connectivity-utils.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-connectivity.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-contact-core.module-5TLCGWOR.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var name = "content-management";
|
|
2
|
+
var title = "Content Management";
|
|
3
|
+
var icon = "fa-light fa-file-invoice";
|
|
4
|
+
var i18n = "content-management";
|
|
5
|
+
var aggregates = [
|
|
6
|
+
];
|
|
7
|
+
var contentManagement_module = {
|
|
8
|
+
name: name,
|
|
9
|
+
title: title,
|
|
10
|
+
icon: icon,
|
|
11
|
+
i18n: i18n,
|
|
12
|
+
aggregates: aggregates
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { aggregates, contentManagement_module as default, i18n, icon, name, title };
|
|
16
|
+
//# sourceMappingURL=acorex-connectivity-mock-content-management.module-GQdqKsPB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-content-management.module-GQdqKsPB.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,13 @@ import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, Injector, runInInjectionContext, Injectable } from '@angular/core';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Distribution Record Activity (Backend - Mock)
|
|
7
|
+
*
|
|
8
|
+
* Creates distribution records for assigned users.
|
|
9
|
+
* Key: Distribution:Record (not workflow-activity - used by other flows)
|
|
10
|
+
*/
|
|
11
|
+
class DistributionRecordActivity {
|
|
6
12
|
constructor() {
|
|
7
13
|
this.injector = inject(Injector);
|
|
8
14
|
}
|
|
@@ -29,6 +35,9 @@ class AXCDistributionCommand {
|
|
|
29
35
|
success: true,
|
|
30
36
|
message: 'Distribution records created successfully',
|
|
31
37
|
},
|
|
38
|
+
metadata: {
|
|
39
|
+
outcome: 'Done',
|
|
40
|
+
},
|
|
32
41
|
};
|
|
33
42
|
}
|
|
34
43
|
catch (error) {
|
|
@@ -41,18 +50,21 @@ class AXCDistributionCommand {
|
|
|
41
50
|
success: false,
|
|
42
51
|
message: 'Failed to create distribution records',
|
|
43
52
|
},
|
|
53
|
+
metadata: {
|
|
54
|
+
outcome: 'Failed',
|
|
55
|
+
},
|
|
44
56
|
};
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
48
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DistributionRecordActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
60
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DistributionRecordActivity, providedIn: 'root' }); }
|
|
49
61
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DistributionRecordActivity, decorators: [{
|
|
51
63
|
type: Injectable,
|
|
52
64
|
args: [{
|
|
53
65
|
providedIn: 'root',
|
|
54
66
|
}]
|
|
55
67
|
}] });
|
|
56
68
|
|
|
57
|
-
export {
|
|
58
|
-
//# sourceMappingURL=acorex-connectivity-mock-distribution-record.
|
|
69
|
+
export { DistributionRecordActivity };
|
|
70
|
+
//# sourceMappingURL=acorex-connectivity-mock-distribution-record.activity-DuNluOzA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-distribution-record.activity-DuNluOzA.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/distribution-record.activity.ts"],"sourcesContent":["import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\n\nexport interface DistributionRecordInput {\n refId: string;\n refType: string;\n assignedTo: string[];\n}\n\nexport interface DistributionRecordOutput {\n success: boolean;\n message: string;\n}\n\n/**\n * Distribution Record Activity (Backend - Mock)\n *\n * Creates distribution records for assigned users.\n * Key: Distribution:Record (not workflow-activity - used by other flows)\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DistributionRecordActivity\n implements AXPCommand<DistributionRecordInput, DistributionRecordOutput> {\n private readonly injector = inject(Injector);\n\n async execute(\n input: DistributionRecordInput,\n ): Promise<AXPExecuteCommandResult<DistributionRecordOutput>> {\n const dataService = runInInjectionContext(\n this.injector,\n () => new AXMEntityCrudServiceImpl<any, any>(`${input.refType}Distribution`),\n );\n\n const dataServiceEntity = runInInjectionContext(\n this.injector,\n () => new AXMEntityCrudServiceImpl<any, any>(input.refType),\n );\n\n try {\n for (const user of input.assignedTo) {\n await dataService.insertOne({\n distributionRefId: input.refId,\n assignedId: user,\n distributionDate: new Date(),\n });\n await dataServiceEntity.updateOne(input.refId, {\n stateInfo: {\n ...(await dataServiceEntity.getOne(input.refId)).stateInfo,\n isDistributed: true,\n },\n });\n }\n return {\n success: true,\n data: {\n success: true,\n message: 'Distribution records created successfully',\n },\n metadata: {\n outcome: 'Done',\n },\n };\n } catch (error) {\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : 'Failed to create distribution records',\n },\n data: {\n success: false,\n message: 'Failed to create distribution records',\n },\n metadata: {\n outcome: 'Failed',\n },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;AAgBA;;;;;AAKG;MAIU,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAuD7C,IAAA;IArDC,MAAM,OAAO,CACX,KAA8B,EAAA;QAE9B,MAAM,WAAW,GAAG,qBAAqB,CACvC,IAAI,CAAC,QAAQ,EACb,MAAM,IAAI,wBAAwB,CAAW,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,YAAA,CAAc,CAAC,CAC7E;AAED,QAAA,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,IAAI,CAAC,QAAQ,EACb,MAAM,IAAI,wBAAwB,CAAW,KAAK,CAAC,OAAO,CAAC,CAC5D;AAED,QAAA,IAAI;AACF,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;gBACnC,MAAM,WAAW,CAAC,SAAS,CAAC;oBAC1B,iBAAiB,EAAE,KAAK,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,gBAAgB,EAAE,IAAI,IAAI,EAAE;AAC7B,iBAAA,CAAC;AACF,gBAAA,MAAM,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AAC7C,oBAAA,SAAS,EAAE;AACT,wBAAA,GAAG,CAAC,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS;AAC1D,wBAAA,aAAa,EAAE,IAAI;AACpB,qBAAA;AACF,iBAAA,CAAC;YACJ;YACA,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,OAAO,EAAE,2CAA2C;AACrD,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,OAAO,EAAE,MAAM;AAChB,iBAAA;aACF;QACH;QAAE,OAAO,KAAK,EAAE;YACd,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,uCAAuC;AACvF,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE,uCAAuC;AACjD,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,OAAO,EAAE,QAAQ;AAClB,iBAAA;aACF;QACH;IACF;8GAxDW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,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,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
4
|
+
|
|
5
|
+
//#endregion
|
|
6
|
+
/**
|
|
7
|
+
* Entity Create Activity (Mock – Dexie)
|
|
8
|
+
*
|
|
9
|
+
* Inserts one entity into storage (Dexie in mock).
|
|
10
|
+
* Activity type: workflow-activity:entity-create
|
|
11
|
+
* Outcomes: Done | Failed
|
|
12
|
+
*/
|
|
13
|
+
class EntityCreateActivity {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.storage = inject(AXPEntityStorageService);
|
|
16
|
+
}
|
|
17
|
+
async execute(input) {
|
|
18
|
+
try {
|
|
19
|
+
if (!input?.entity) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
message: { text: 'entity is required' },
|
|
23
|
+
data: { id: '', success: false, error: 'entity is required' },
|
|
24
|
+
metadata: { outcome: 'Failed' },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!input.data || typeof input.data !== 'object') {
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
message: { text: 'data is required' },
|
|
31
|
+
data: { id: '', success: false, error: 'data is required' },
|
|
32
|
+
metadata: { outcome: 'Failed' },
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const id = await this.storage.insertOne(input.entity, input.data);
|
|
36
|
+
return {
|
|
37
|
+
success: true,
|
|
38
|
+
data: { id, success: true },
|
|
39
|
+
metadata: { outcome: 'Done' },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
message: { text: error?.message ?? 'Create failed' },
|
|
46
|
+
data: { id: '', success: false, error: error?.message ?? 'Create failed' },
|
|
47
|
+
metadata: { outcome: 'Failed' },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityCreateActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
52
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityCreateActivity, providedIn: 'root' }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityCreateActivity, decorators: [{
|
|
55
|
+
type: Injectable,
|
|
56
|
+
args: [{ providedIn: 'root' }]
|
|
57
|
+
}] });
|
|
58
|
+
|
|
59
|
+
export { EntityCreateActivity };
|
|
60
|
+
//# sourceMappingURL=acorex-connectivity-mock-entity-create.activity-Ca19tIj4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-entity-create.activity-Ca19tIj4.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/entity-create.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 EntityCreateInput {\n entity: string;\n data: Record<string, any>;\n}\n\nexport interface EntityCreateOutput {\n id: string;\n success: boolean;\n error?: string;\n}\n\n//#endregion\n\n/**\n * Entity Create Activity (Mock – Dexie)\n *\n * Inserts one entity into storage (Dexie in mock).\n * Activity type: workflow-activity:entity-create\n * Outcomes: Done | Failed\n */\n@Injectable({ providedIn: 'root' })\nexport class EntityCreateActivity implements AXPCommand<EntityCreateInput, EntityCreateOutput> {\n private readonly storage = inject(AXPEntityStorageService);\n\n async execute(\n input: EntityCreateInput,\n ): Promise<AXPExecuteCommandResult<EntityCreateOutput>> {\n try {\n if (!input?.entity) {\n return {\n success: false,\n message: { text: 'entity is required' },\n data: { id: '', success: false, error: 'entity 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: { id: '', success: false, error: 'data is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const id = await this.storage.insertOne(input.entity, input.data as any);\n\n return {\n success: true,\n data: { id, success: true },\n metadata: { outcome: 'Done' },\n };\n } catch (error: any) {\n return {\n success: false,\n message: { text: error?.message ?? 'Create failed' },\n data: { id: '', success: false, error: error?.message ?? 'Create failed' },\n metadata: { outcome: 'Failed' },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;AAkBA;AAEA;;;;;;AAMG;MAEU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAuC3D,IAAA;IArCC,MAAM,OAAO,CACX,KAAwB,EAAA;AAExB,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,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,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,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC3D,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAChC;YACH;AAEA,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAW,CAAC;YAExE,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC3B,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,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE;AAC1E,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;IACF;8GAvCW,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;;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
4
|
+
|
|
5
|
+
//#endregion
|
|
6
|
+
/**
|
|
7
|
+
* Entity Delete Activity (Mock – Dexie)
|
|
8
|
+
*
|
|
9
|
+
* Deletes one entity from storage (Dexie in mock).
|
|
10
|
+
* Activity type: workflow-activity:entity-delete
|
|
11
|
+
* Outcomes: Done | Failed
|
|
12
|
+
*/
|
|
13
|
+
class EntityDeleteActivity {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.storage = inject(AXPEntityStorageService);
|
|
16
|
+
}
|
|
17
|
+
async execute(input) {
|
|
18
|
+
try {
|
|
19
|
+
if (!input?.entity) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
message: { text: 'entity is required' },
|
|
23
|
+
data: { success: false, error: 'entity is required' },
|
|
24
|
+
metadata: { outcome: 'Failed' },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!input?.id) {
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
message: { text: 'id is required' },
|
|
31
|
+
data: { success: false, error: 'id is required' },
|
|
32
|
+
metadata: { outcome: 'Failed' },
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
await this.storage.deleteOne(input.entity, input.id);
|
|
36
|
+
return {
|
|
37
|
+
success: true,
|
|
38
|
+
data: { success: true },
|
|
39
|
+
metadata: { outcome: 'Done' },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
message: { text: error?.message ?? 'Delete failed' },
|
|
46
|
+
data: { success: false, error: error?.message ?? 'Delete failed' },
|
|
47
|
+
metadata: { outcome: 'Failed' },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityDeleteActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
52
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityDeleteActivity, providedIn: 'root' }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityDeleteActivity, decorators: [{
|
|
55
|
+
type: Injectable,
|
|
56
|
+
args: [{ providedIn: 'root' }]
|
|
57
|
+
}] });
|
|
58
|
+
|
|
59
|
+
export { EntityDeleteActivity };
|
|
60
|
+
//# sourceMappingURL=acorex-connectivity-mock-entity-delete.activity-ErEN1c24.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-entity-delete.activity-ErEN1c24.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/entity-delete.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 EntityDeleteInput {\n entity: string;\n id: string;\n}\n\nexport interface EntityDeleteOutput {\n success: boolean;\n error?: string;\n}\n\n//#endregion\n\n/**\n * Entity Delete Activity (Mock – Dexie)\n *\n * Deletes one entity from storage (Dexie in mock).\n * Activity type: workflow-activity:entity-delete\n * Outcomes: Done | Failed\n */\n@Injectable({ providedIn: 'root' })\nexport class EntityDeleteActivity implements AXPCommand<EntityDeleteInput, EntityDeleteOutput> {\n private readonly storage = inject(AXPEntityStorageService);\n\n async execute(\n input: EntityDeleteInput,\n ): Promise<AXPExecuteCommandResult<EntityDeleteOutput>> {\n try {\n if (!input?.entity) {\n return {\n success: false,\n message: { text: 'entity is required' },\n data: { 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: { success: false, error: 'id is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n await this.storage.deleteOne(input.entity, input.id);\n\n return {\n success: true,\n data: { success: true },\n metadata: { outcome: 'Done' },\n };\n } catch (error: any) {\n return {\n success: false,\n message: { text: error?.message ?? 'Delete failed' },\n data: { success: false, error: error?.message ?? 'Delete failed' },\n metadata: { outcome: 'Failed' },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;AAiBA;AAEA;;;;;;AAMG;MAEU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAuC3D,IAAA;IArCC,MAAM,OAAO,CACX,KAAwB,EAAA;AAExB,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;oBACvC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACrD,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;oBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACjD,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAChC;YACH;AAEA,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YAEpD,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,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,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE;AAClE,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;IACF;8GAvCW,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;;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
4
|
+
|
|
5
|
+
//#endregion
|
|
6
|
+
/**
|
|
7
|
+
* Entity Read Activity (Mock – Dexie)
|
|
8
|
+
*
|
|
9
|
+
* Loads one entity by id from storage (Dexie in mock).
|
|
10
|
+
* Activity type: workflow-activity:entity-read
|
|
11
|
+
* Outcomes: Done | NotFound | Failed
|
|
12
|
+
*/
|
|
13
|
+
class EntityReadActivity {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.storage = inject(AXPEntityStorageService);
|
|
16
|
+
}
|
|
17
|
+
async execute(input) {
|
|
18
|
+
try {
|
|
19
|
+
if (!input?.entity) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
message: { text: 'entity is required' },
|
|
23
|
+
data: { data: null, success: false, error: 'entity is required' },
|
|
24
|
+
metadata: { outcome: 'Failed' },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!input?.id) {
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
message: { text: 'id is required' },
|
|
31
|
+
data: { data: null, success: false, error: 'id is required' },
|
|
32
|
+
metadata: { outcome: 'Failed' },
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const data = await this.storage.getOne(input.entity, input.id);
|
|
36
|
+
if (data == null) {
|
|
37
|
+
return {
|
|
38
|
+
success: true,
|
|
39
|
+
data: { data: null, success: false, error: 'Not found' },
|
|
40
|
+
metadata: { outcome: 'NotFound' },
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
success: true,
|
|
45
|
+
data: { data, success: true },
|
|
46
|
+
metadata: { outcome: 'Done' },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
message: { text: error?.message ?? 'Read failed' },
|
|
53
|
+
data: { data: null, success: false, error: error?.message ?? 'Read failed' },
|
|
54
|
+
metadata: { outcome: 'Failed' },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityReadActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityReadActivity, providedIn: 'root' }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityReadActivity, decorators: [{
|
|
62
|
+
type: Injectable,
|
|
63
|
+
args: [{ providedIn: 'root' }]
|
|
64
|
+
}] });
|
|
65
|
+
|
|
66
|
+
export { EntityReadActivity };
|
|
67
|
+
//# sourceMappingURL=acorex-connectivity-mock-entity-read.activity-1fJW8gVe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-entity-read.activity-1fJW8gVe.mjs","sources":["../../../../libs/connectivity/mock/src/lib/workflow-management/activities/entity-read.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 EntityReadInput {\n entity: string;\n id: string;\n}\n\nexport interface EntityReadOutput {\n data: any;\n success: boolean;\n error?: string;\n}\n\n//#endregion\n\n/**\n * Entity Read Activity (Mock – Dexie)\n *\n * Loads one entity by id from storage (Dexie in mock).\n * Activity type: workflow-activity:entity-read\n * Outcomes: Done | NotFound | Failed\n */\n@Injectable({ providedIn: 'root' })\nexport class EntityReadActivity implements AXPCommand<EntityReadInput, EntityReadOutput> {\n private readonly storage = inject(AXPEntityStorageService);\n\n async execute(\n input: EntityReadInput,\n ): Promise<AXPExecuteCommandResult<EntityReadOutput>> {\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\n const data = await this.storage.getOne(input.entity, input.id);\n\n if (data == null) {\n return {\n success: true,\n data: { data: null, success: false, error: 'Not found' },\n metadata: { outcome: 'NotFound' },\n };\n }\n\n return {\n success: true,\n data: { data, success: true },\n metadata: { outcome: 'Done' },\n };\n } catch (error: any) {\n return {\n success: false,\n message: { text: error?.message ?? 'Read failed' },\n data: { data: null, success: false, error: error?.message ?? 'Read failed' },\n metadata: { outcome: 'Failed' },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;AAkBA;AAEA;;;;;;AAMG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AA+C3D,IAAA;IA7CC,MAAM,OAAO,CACX,KAAsB,EAAA;AAEtB,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;AAEA,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;AAE9D,YAAA,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;AACxD,oBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;iBAClC;YACH;YAEA,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AAC7B,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,aAAa,EAAE;AAClD,gBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE;AAC5E,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;IACF;8GA/CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,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,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
4
|
+
|
|
5
|
+
//#endregion
|
|
6
|
+
/**
|
|
7
|
+
* Entity Update Activity (Mock – Dexie)
|
|
8
|
+
*
|
|
9
|
+
* Updates one entity in storage (Dexie in mock).
|
|
10
|
+
* Activity type: workflow-activity:entity-update
|
|
11
|
+
* Outcomes: Done | Failed
|
|
12
|
+
*/
|
|
13
|
+
class EntityUpdateActivity {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.storage = inject(AXPEntityStorageService);
|
|
16
|
+
}
|
|
17
|
+
async execute(input) {
|
|
18
|
+
debugger;
|
|
19
|
+
console.log('EntityUpdateActivity', input);
|
|
20
|
+
try {
|
|
21
|
+
if (!input?.entity) {
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
message: { text: 'entity is required' },
|
|
25
|
+
data: { data: null, success: false, error: 'entity is required' },
|
|
26
|
+
metadata: { outcome: 'Failed' },
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (!input?.id) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
message: { text: 'id is required' },
|
|
33
|
+
data: { data: null, success: false, error: 'id is required' },
|
|
34
|
+
metadata: { outcome: 'Failed' },
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (!input.data || typeof input.data !== 'object') {
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
message: { text: 'data is required' },
|
|
41
|
+
data: { data: null, success: false, error: 'data is required' },
|
|
42
|
+
metadata: { outcome: 'Failed' },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const updated = await this.storage.updateOne(input.entity, input.id, input.data);
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
data: { data: updated, success: true },
|
|
49
|
+
metadata: { outcome: 'Done' },
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
message: { text: error?.message ?? 'Update failed' },
|
|
56
|
+
data: { data: null, success: false, error: error?.message ?? 'Update failed' },
|
|
57
|
+
metadata: { outcome: 'Failed' },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityUpdateActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
62
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityUpdateActivity, providedIn: 'root' }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EntityUpdateActivity, decorators: [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{ providedIn: 'root' }]
|
|
67
|
+
}] });
|
|
68
|
+
|
|
69
|
+
export { EntityUpdateActivity };
|
|
70
|
+
//# sourceMappingURL=acorex-connectivity-mock-entity-update.activity-D0hyBha-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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;;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AXPAiEngine, AXPAiChatToolRunContextService } from '@acorex/modules/ai-management';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
function parseExtractInput(args) {
|
|
6
|
+
const obj = args != null && typeof args === 'object' && !Array.isArray(args)
|
|
7
|
+
? args
|
|
8
|
+
: null;
|
|
9
|
+
if (!obj) {
|
|
10
|
+
return { ok: false, error: 'Invalid arguments: expected an object.' };
|
|
11
|
+
}
|
|
12
|
+
const fileId = typeof obj['fileId'] === 'string' ? obj['fileId'].trim() : '';
|
|
13
|
+
if (!fileId) {
|
|
14
|
+
return { ok: false, error: 'Invalid arguments: "fileId" is required.' };
|
|
15
|
+
}
|
|
16
|
+
const instruction = typeof obj['instruction'] === 'string' ? obj['instruction'].trim() : undefined;
|
|
17
|
+
return { ok: true, fileId, ...(instruction ? { instruction } : {}) };
|
|
18
|
+
}
|
|
19
|
+
class AiManagementExtractDocumentTextCommand {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.engine = inject(AXPAiEngine);
|
|
22
|
+
this.runContext = inject(AXPAiChatToolRunContextService);
|
|
23
|
+
}
|
|
24
|
+
async execute(input) {
|
|
25
|
+
const ctx = this.runContext.getContext();
|
|
26
|
+
const parsed = parseExtractInput(input);
|
|
27
|
+
if (!parsed.ok) {
|
|
28
|
+
return { success: false, message: { text: parsed.error } };
|
|
29
|
+
}
|
|
30
|
+
const assistId = ctx?.assistId?.trim() ?? input.assistId?.trim();
|
|
31
|
+
const chatTransport = ctx?.chatTransport ?? input.chatTransport;
|
|
32
|
+
const modelEntityId = ctx?.modelEntityId ?? input.modelEntityId;
|
|
33
|
+
if (!assistId || !chatTransport) {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
message: {
|
|
37
|
+
text: 'Document extraction requires assist id and chat transport (active chat context or input fields).',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const data = await this.engine.extractDocumentTextFromStoredFile({
|
|
43
|
+
assistId,
|
|
44
|
+
chatTransport,
|
|
45
|
+
modelEntityId,
|
|
46
|
+
fileId: parsed.fileId,
|
|
47
|
+
instruction: parsed.instruction,
|
|
48
|
+
});
|
|
49
|
+
return { success: true, data };
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
53
|
+
return { success: false, message: { text: msg } };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AiManagementExtractDocumentTextCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AiManagementExtractDocumentTextCommand }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AiManagementExtractDocumentTextCommand, decorators: [{
|
|
60
|
+
type: Injectable
|
|
61
|
+
}] });
|
|
62
|
+
|
|
63
|
+
export { AiManagementExtractDocumentTextCommand };
|
|
64
|
+
//# sourceMappingURL=acorex-connectivity-mock-extract-document-text.command-nGfUTSf6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-extract-document-text.command-nGfUTSf6.mjs","sources":["../../../../libs/connectivity/mock/src/lib/ai-management/commands/extract-document-text.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPAiChatTransport } from '@acorex/modules/ai-management';\nimport { AXPAiChatToolRunContextService } from '@acorex/modules/ai-management';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXPAiEngine } from '@acorex/modules/ai-management';\n\nimport type { AXCAiEngine } from '../ai-agent-engine.mock';\n\n//#endregion\n\n//#region ---- Command ----\n\nexport interface AiManagementExtractDocumentTextInput {\n fileId?: string;\n instruction?: string;\n /** When not in an AI chat run context (e.g. document metadata prefill). */\n assistId?: string;\n chatTransport?: AXPAiChatTransport;\n modelEntityId?: string;\n}\n\nfunction parseExtractInput(args: unknown):\n | { ok: true; fileId: string; instruction?: string }\n | { ok: false; error: string } {\n const obj =\n args != null && typeof args === 'object' && !Array.isArray(args)\n ? (args as Record<string, unknown>)\n : null;\n if (!obj) {\n return { ok: false, error: 'Invalid arguments: expected an object.' };\n }\n const fileId = typeof obj['fileId'] === 'string' ? obj['fileId'].trim() : '';\n if (!fileId) {\n return { ok: false, error: 'Invalid arguments: \"fileId\" is required.' };\n }\n const instruction = typeof obj['instruction'] === 'string' ? obj['instruction'].trim() : undefined;\n return { ok: true, fileId, ...(instruction ? { instruction } : {}) };\n}\n\n@Injectable()\nexport class AiManagementExtractDocumentTextCommand\n implements AXPCommand<AiManagementExtractDocumentTextInput, { text: string }>\n{\n private readonly engine = inject(AXPAiEngine) as AXCAiEngine;\n private readonly runContext = inject(AXPAiChatToolRunContextService);\n\n async execute(\n input: AiManagementExtractDocumentTextInput,\n ): Promise<AXPExecuteCommandResult<{ text: string }>> {\n const ctx = this.runContext.getContext();\n const parsed = parseExtractInput(input);\n if (!parsed.ok) {\n return { success: false, message: { text: parsed.error } };\n }\n\n const assistId = ctx?.assistId?.trim() ?? input.assistId?.trim();\n const chatTransport = ctx?.chatTransport ?? input.chatTransport;\n const modelEntityId = ctx?.modelEntityId ?? input.modelEntityId;\n\n if (!assistId || !chatTransport) {\n return {\n success: false,\n message: {\n text: 'Document extraction requires assist id and chat transport (active chat context or input fields).',\n },\n };\n }\n\n try {\n const data = await this.engine.extractDocumentTextFromStoredFile({\n assistId,\n chatTransport,\n modelEntityId,\n fileId: parsed.fileId,\n instruction: parsed.instruction,\n });\n return { success: true, data };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { success: false, message: { text: msg } };\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
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/application-management';
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
class GetApplicationVersionsChartDataQuery {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.entityService = inject(AXPEntityService);
|
|
10
|
+
this.appVersionService = this.entityService
|
|
11
|
+
.withEntity(`${RootConfig.module.name}.${RootConfig.entities.appVersion.name}`)
|
|
12
|
+
.data();
|
|
13
|
+
}
|
|
14
|
+
async fetch(input) {
|
|
15
|
+
// Get all app versions from storage (no pagination for charts)
|
|
16
|
+
const allVersionsResult = await this.appVersionService.query({
|
|
17
|
+
skip: 0,
|
|
18
|
+
take: 10000, // Get all versions for aggregation
|
|
19
|
+
filter: input.filters && input.filters.length > 0
|
|
20
|
+
? {
|
|
21
|
+
logic: input.logic || 'and',
|
|
22
|
+
filters: input.filters,
|
|
23
|
+
}
|
|
24
|
+
: undefined,
|
|
25
|
+
});
|
|
26
|
+
let allVersions = allVersionsResult.items;
|
|
27
|
+
// Apply custom filters after fetching
|
|
28
|
+
if (input.filters) {
|
|
29
|
+
for (const filter of input.filters) {
|
|
30
|
+
if (filter.field === 'dateRange' && filter.value) {
|
|
31
|
+
allVersions = this.applyDateRangeFilter(allVersions, filter.value);
|
|
32
|
+
}
|
|
33
|
+
if (filter.field === 'versionNumber' && filter.value) {
|
|
34
|
+
allVersions = this.applyVersionNumberFilter(allVersions, filter.value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Group versions by month for chart aggregation
|
|
39
|
+
const monthGroups = new Map();
|
|
40
|
+
for (const version of allVersions) {
|
|
41
|
+
const publishDate = new Date(version.publishDate);
|
|
42
|
+
const year = publishDate.getFullYear();
|
|
43
|
+
const month = publishDate.getMonth() + 1;
|
|
44
|
+
const monthKey = `${year}-${String(month).padStart(2, '0')}`;
|
|
45
|
+
if (!monthGroups.has(monthKey)) {
|
|
46
|
+
monthGroups.set(monthKey, []);
|
|
47
|
+
}
|
|
48
|
+
monthGroups.get(monthKey).push(version);
|
|
49
|
+
}
|
|
50
|
+
// Aggregate data by month for chart
|
|
51
|
+
const chartResults = [];
|
|
52
|
+
for (const [monthKey, versions] of monthGroups.entries()) {
|
|
53
|
+
const [year, month] = monthKey.split('-');
|
|
54
|
+
const publishDate = new Date(parseInt(year), parseInt(month) - 1, 1);
|
|
55
|
+
const monthName = publishDate.toLocaleString('en-US', { month: 'long' });
|
|
56
|
+
const quarter = Math.ceil(parseInt(month) / 3);
|
|
57
|
+
const quarterName = `Q${quarter}`;
|
|
58
|
+
chartResults.push({
|
|
59
|
+
publishDate: publishDate.toISOString(),
|
|
60
|
+
month: monthName,
|
|
61
|
+
year: parseInt(year),
|
|
62
|
+
quarter: quarterName,
|
|
63
|
+
versionCount: versions.length,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// Sort by date ascending for timeline
|
|
67
|
+
chartResults.sort((a, b) => {
|
|
68
|
+
const dateA = new Date(a.publishDate).getTime();
|
|
69
|
+
const dateB = new Date(b.publishDate).getTime();
|
|
70
|
+
return dateA - dateB;
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
items: chartResults,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//#region ---- Custom Filter Handlers ----
|
|
77
|
+
/**
|
|
78
|
+
* Apply date range filter to versions
|
|
79
|
+
*/
|
|
80
|
+
applyDateRangeFilter(versions, dateRange) {
|
|
81
|
+
if (!dateRange || !dateRange.start || !dateRange.end) {
|
|
82
|
+
return versions;
|
|
83
|
+
}
|
|
84
|
+
const startDate = new Date(dateRange.start);
|
|
85
|
+
const endDate = new Date(dateRange.end);
|
|
86
|
+
endDate.setHours(23, 59, 59, 999); // Include the entire end date
|
|
87
|
+
return versions.filter((version) => {
|
|
88
|
+
const publishDate = new Date(version.publishDate);
|
|
89
|
+
return publishDate >= startDate && publishDate <= endDate;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Apply version number filter to versions
|
|
94
|
+
*/
|
|
95
|
+
applyVersionNumberFilter(versions, versionNumber) {
|
|
96
|
+
if (!versionNumber) {
|
|
97
|
+
return versions;
|
|
98
|
+
}
|
|
99
|
+
const searchTerm = versionNumber.toLowerCase().trim();
|
|
100
|
+
return versions.filter((version) => {
|
|
101
|
+
return version.versionNumber.toLowerCase().includes(searchTerm);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GetApplicationVersionsChartDataQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
105
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GetApplicationVersionsChartDataQuery, providedIn: 'root' }); }
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: GetApplicationVersionsChartDataQuery, decorators: [{
|
|
108
|
+
type: Injectable,
|
|
109
|
+
args: [{
|
|
110
|
+
providedIn: 'root',
|
|
111
|
+
}]
|
|
112
|
+
}] });
|
|
113
|
+
|
|
114
|
+
export { GetApplicationVersionsChartDataQuery };
|
|
115
|
+
//# sourceMappingURL=acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs.map
|
package/fesm2022/acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-get-application-versions-chart-data.query-DwVuYuKx.mjs","sources":["../../../../libs/connectivity/mock/src/lib/application-management/reports/get-application-versions-chart-data.query.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { AXPQuery } from '@acorex/platform/runtime';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXMAppVersionEntityModel } from '@acorex/modules/application-management';\nimport { RootConfig } from '@acorex/modules/application-management';\nimport { GetApplicationVersionsTimelineQueryInput } from './get-application-versions-timeline.query';\n\n//#region ---- Query Input/Output Types ----\n\nexport interface GetApplicationVersionsChartDataQueryInput {\n filters?: Array<{\n field: string;\n operator: { type: string };\n value: any;\n }>;\n logic?: 'and' | 'or';\n}\n\nexport interface ApplicationVersionChartDataResult {\n publishDate: string;\n month: string;\n year: number;\n quarter: string;\n versionCount: number;\n}\n\nexport interface GetApplicationVersionsChartDataQueryResult {\n items: ApplicationVersionChartDataResult[];\n}\n\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GetApplicationVersionsChartDataQuery\n implements AXPQuery<GetApplicationVersionsChartDataQueryInput, GetApplicationVersionsChartDataQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n private appVersionService = this.entityService\n .withEntity(`${RootConfig.module.name}.${RootConfig.entities.appVersion.name}`)\n .data<string, AXMAppVersionEntityModel>();\n\n async fetch(\n input: GetApplicationVersionsChartDataQueryInput\n ): Promise<GetApplicationVersionsChartDataQueryResult> {\n // Get all app versions from storage (no pagination for charts)\n const allVersionsResult = await this.appVersionService.query({\n skip: 0,\n take: 10000, // Get all versions for aggregation\n filter:\n input.filters && input.filters.length > 0\n ? ({\n logic: input.logic || 'and',\n filters: input.filters,\n } as any)\n : undefined,\n });\n\n let allVersions = allVersionsResult.items;\n\n // Apply custom filters after fetching\n if (input.filters) {\n for (const filter of input.filters) {\n if (filter.field === 'dateRange' && filter.value) {\n allVersions = this.applyDateRangeFilter(allVersions, filter.value);\n }\n if (filter.field === 'versionNumber' && filter.value) {\n allVersions = this.applyVersionNumberFilter(allVersions, filter.value);\n }\n }\n }\n\n // Group versions by month for chart aggregation\n const monthGroups = new Map<string, AXMAppVersionEntityModel[]>();\n\n for (const version of allVersions) {\n const publishDate = new Date(version.publishDate);\n const year = publishDate.getFullYear();\n const month = publishDate.getMonth() + 1;\n const monthKey = `${year}-${String(month).padStart(2, '0')}`;\n\n if (!monthGroups.has(monthKey)) {\n monthGroups.set(monthKey, []);\n }\n\n monthGroups.get(monthKey)!.push(version);\n }\n\n // Aggregate data by month for chart\n const chartResults: ApplicationVersionChartDataResult[] = [];\n\n for (const [monthKey, versions] of monthGroups.entries()) {\n const [year, month] = monthKey.split('-');\n const publishDate = new Date(parseInt(year), parseInt(month) - 1, 1);\n const monthName = publishDate.toLocaleString('en-US', { month: 'long' });\n const quarter = Math.ceil(parseInt(month) / 3);\n const quarterName = `Q${quarter}`;\n\n chartResults.push({\n publishDate: publishDate.toISOString(),\n month: monthName,\n year: parseInt(year),\n quarter: quarterName,\n versionCount: versions.length,\n });\n }\n\n // Sort by date ascending for timeline\n chartResults.sort((a, b) => {\n const dateA = new Date(a.publishDate).getTime();\n const dateB = new Date(b.publishDate).getTime();\n return dateA - dateB;\n });\n\n return {\n items: chartResults,\n };\n }\n\n //#region ---- Custom Filter Handlers ----\n\n /**\n * Apply date range filter to versions\n */\n private applyDateRangeFilter(versions: AXMAppVersionEntityModel[], dateRange: any): AXMAppVersionEntityModel[] {\n if (!dateRange || !dateRange.start || !dateRange.end) {\n return versions;\n }\n\n const startDate = new Date(dateRange.start);\n const endDate = new Date(dateRange.end);\n endDate.setHours(23, 59, 59, 999); // Include the entire end date\n\n return versions.filter((version) => {\n const publishDate = new Date(version.publishDate);\n return publishDate >= startDate && publishDate <= endDate;\n });\n }\n\n /**\n * Apply version number filter to versions\n */\n private applyVersionNumberFilter(\n versions: AXMAppVersionEntityModel[],\n versionNumber: string\n ): AXMAppVersionEntityModel[] {\n if (!versionNumber) {\n return versions;\n }\n\n const searchTerm = versionNumber.toLowerCase().trim();\n\n return versions.filter((version) => {\n return version.versionNumber.toLowerCase().includes(searchTerm);\n });\n }\n\n //#endregion\n}\n\n"],"names":[],"mappings":"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"}
|