@acorex-platform/extension-ai-code-review-client 0.0.38 → 0.0.48

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.
@@ -8,6 +8,48 @@ const AXECodeReviewCommandKeys = {
8
8
  //#region ----- Code review command inputs -----
9
9
  //#endregion
10
10
 
11
+ //#region ----- Review rule categories and severities -----
12
+ /** Google review aspects, plus security (Sonar vulnerability type). */
13
+ const AXE_CODE_REVIEW_RULE_CATEGORIES = [
14
+ 'design',
15
+ 'functionality',
16
+ 'complexity',
17
+ 'tests',
18
+ 'naming',
19
+ 'style',
20
+ 'documentation',
21
+ 'security',
22
+ ];
23
+ /** SARIF defaultConfiguration.level. */
24
+ const AXE_CODE_REVIEW_RULE_SEVERITIES = ['error', 'warning', 'note'];
25
+ const AXE_CODE_REVIEW_RULE_DEFAULT_SEVERITY = 'warning';
26
+ //#endregion
27
+
28
+ //#region ----- Code review extension root config -----
29
+ const config = {
30
+ i18n: 'extensions-code-review',
31
+ };
32
+ const MODULE_NAME = 'CodeReviewExtension';
33
+ const RootConfig = {
34
+ config,
35
+ module: {
36
+ name: MODULE_NAME,
37
+ title: `@${config.i18n}:module.title`,
38
+ icon: 'fa-light fa-magnifying-glass-chart',
39
+ },
40
+ entities: {
41
+ reviewRule: {
42
+ name: 'ReviewRule',
43
+ fullName: `${MODULE_NAME}.ReviewRule`,
44
+ title: `@${config.i18n}:entities.review-rule.title`,
45
+ titlePlural: `@${config.i18n}:entities.review-rule.plural`,
46
+ icon: 'fa-light fa-list-check',
47
+ source: `${MODULE_NAME}.ReviewRule`,
48
+ },
49
+ },
50
+ };
51
+ //#endregion
52
+
11
53
  //#region ---- Contracts barrel ----
12
54
  //#endregion
13
55
 
@@ -15,5 +57,5 @@ const AXECodeReviewCommandKeys = {
15
57
  * Generated bundle index. Do not edit.
16
58
  */
17
59
 
18
- export { AXECodeReviewCommandKeys };
60
+ export { AXECodeReviewCommandKeys, AXE_CODE_REVIEW_RULE_CATEGORIES, AXE_CODE_REVIEW_RULE_DEFAULT_SEVERITY, AXE_CODE_REVIEW_RULE_SEVERITIES, RootConfig };
19
61
  //# sourceMappingURL=acorex-platform-extension-ai-code-review-client-contracts.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-ai-code-review-client-contracts.mjs","sources":["../../../../libs/extensions/ai/code-review/contracts/src/code-review.constants.ts","../../../../libs/extensions/ai/code-review/contracts/src/code-review.types.ts","../../../../libs/extensions/ai/code-review/contracts/src/index.ts","../../../../libs/extensions/ai/code-review/contracts/src/acorex-platform-extension-ai-code-review-client-contracts.ts"],"sourcesContent":["//#region ----- Code review command keys -----\r\r\n\r\r\nexport const AXECodeReviewCommandKeys = {\r\r\n ReviewCommit: 'CodeReviewExtension.Commit:Review',\r\r\n ReviewBranch: 'CodeReviewExtension.Branch:Review',\r\r\n} as const;\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Code review command inputs -----\r\r\n\r\r\nimport type {\r\r\n AXESourceControlCommitDto,\r\r\n AXESourceControlProjectSourceControlLinkEntityModel,\r\r\n} from '@acorex-platform/extension-source-control-core-client/contracts';\r\r\n\r\r\nexport interface AXECodeReviewCommitCommandInput {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n commit: AXESourceControlCommitDto;\r\r\n}\r\r\n\r\r\nexport interface AXECodeReviewBranchCommandInput {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n baseBranch: string;\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n","//#region ---- Contracts barrel ----\r\r\n\r\r\nexport * from './code-review.constants';\r\r\nexport * from './code-review.types';\r\r\n\r\r\n//#endregion\r\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAIO,MAAM,wBAAwB,GAAG;AAEtC,IAAA,YAAY,EAAE,mCAAmC;AAEjD,IAAA,YAAY,EAAE,mCAAmC;;AAMnD;;ACdA;AA0CA;;AC1CA;AAUA;;ACVA;;AAEG;;"}
1
+ {"version":3,"file":"acorex-platform-extension-ai-code-review-client-contracts.mjs","sources":["../../../../libs/extensions/ai/code-review/contracts/src/code-review.constants.ts","../../../../libs/extensions/ai/code-review/contracts/src/code-review.types.ts","../../../../libs/extensions/ai/code-review/contracts/src/review-rule.constants.ts","../../../../libs/extensions/ai/code-review/contracts/src/root-config.ts","../../../../libs/extensions/ai/code-review/contracts/src/index.ts","../../../../libs/extensions/ai/code-review/contracts/src/acorex-platform-extension-ai-code-review-client-contracts.ts"],"sourcesContent":["//#region ----- Code review command keys -----\r\r\n\r\r\nexport const AXECodeReviewCommandKeys = {\r\r\n ReviewCommit: 'CodeReviewExtension.Commit:Review',\r\r\n ReviewBranch: 'CodeReviewExtension.Branch:Review',\r\r\n} as const;\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Code review command inputs -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXESourceControlCommitDto,\n AXESourceControlProjectSourceControlLinkEntityModel,\n} from '@acorex-platform/extension-source-control-core-client/contracts';\n\nimport type { AXECodeReviewRuleCategory, AXECodeReviewRuleSeverity } from './review-rule.constants';\n\nexport interface AXECodeReviewCommitCommandInput {\n projectId: string;\n link: AXESourceControlProjectSourceControlLinkEntityModel;\n branch: string;\n commit: AXESourceControlCommitDto;\n}\n\nexport interface AXECodeReviewBranchCommandInput {\n projectId: string;\n link: AXESourceControlProjectSourceControlLinkEntityModel;\n branch: string;\n baseBranch: string;\n}\n\nexport interface AXECodeReviewRuleEntityModel extends AXPEntityModel<string> {\n projectId: string;\n title: string;\n instruction: string;\n category: AXECodeReviewRuleCategory;\n severity: AXECodeReviewRuleSeverity;\n enabled: boolean;\n pathPattern?: string;\n}\n\n//#endregion\n","//#region ----- Review rule categories and severities -----\n\n/** Google review aspects, plus security (Sonar vulnerability type). */\nexport const AXE_CODE_REVIEW_RULE_CATEGORIES = [\n 'design',\n 'functionality',\n 'complexity',\n 'tests',\n 'naming',\n 'style',\n 'documentation',\n 'security',\n] as const;\n\nexport type AXECodeReviewRuleCategory = (typeof AXE_CODE_REVIEW_RULE_CATEGORIES)[number];\n\n/** SARIF defaultConfiguration.level. */\nexport const AXE_CODE_REVIEW_RULE_SEVERITIES = ['error', 'warning', 'note'] as const;\n\nexport type AXECodeReviewRuleSeverity = (typeof AXE_CODE_REVIEW_RULE_SEVERITIES)[number];\n\nexport const AXE_CODE_REVIEW_RULE_DEFAULT_SEVERITY: AXECodeReviewRuleSeverity = 'warning';\n\n//#endregion\n","//#region ----- Code review extension root config -----\n\nconst config = {\n i18n: 'extensions-code-review',\n};\n\nconst MODULE_NAME = 'CodeReviewExtension';\n\nexport const RootConfig = {\n config,\n module: {\n name: MODULE_NAME,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-magnifying-glass-chart',\n },\n entities: {\n reviewRule: {\n name: 'ReviewRule',\n fullName: `${MODULE_NAME}.ReviewRule`,\n title: `@${config.i18n}:entities.review-rule.title`,\n titlePlural: `@${config.i18n}:entities.review-rule.plural`,\n icon: 'fa-light fa-list-check',\n source: `${MODULE_NAME}.ReviewRule`,\n },\n },\n};\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './code-review.constants';\nexport * from './code-review.types';\nexport * from './review-rule.constants';\nexport * from './root-config';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAIO,MAAM,wBAAwB,GAAG;AAEtC,IAAA,YAAY,EAAE,mCAAmC;AAEjD,IAAA,YAAY,EAAE,mCAAmC;;AAMnD;;ACdA;AAkCA;;AClCA;AAEA;AACO,MAAM,+BAA+B,GAAG;IAC7C,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,OAAO;IACP,eAAe;IACf,UAAU;;AAKZ;AACO,MAAM,+BAA+B,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM;AAInE,MAAM,qCAAqC,GAA8B;AAEhF;;ACvBA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,wBAAwB;CAC/B;AAED,MAAM,WAAW,GAAG,qBAAqB;AAElC,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,oCAAoC;AAC3C,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,WAAA,CAAa;AACrC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2BAAA,CAA6B;AACnD,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,4BAAA,CAA8B;AAC1D,YAAA,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,WAAA,CAAa;AACpC,SAAA;AACF,KAAA;;AAGH;;AC3BA;AAOA;;ACPA;;AAEG;;"}
@@ -1,9 +1,75 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule } from '@angular/core';
3
- import { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex-platform/framework-client/core';
2
+ import { Injectable, NgModule } from '@angular/core';
3
+ import { AXP_HOOK_PROVIDER } from '@acorex-platform/framework-client/core';
4
+ import { AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';
4
5
  import { provideCommandSetups } from '@acorex-platform/framework-client/runtime';
5
- import { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';
6
- import { AXESourceControlHookKeys } from '@acorex-platform/extension-source-control-core-client/contracts';
6
+ import { RootConfig, AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';
7
+ import { entityDetailsCrudActions, entityDetailsSimpleCondition } from '@acorex-platform/framework-shared/entity';
8
+ import { RootConfig as RootConfig$2, AXESourceControlHookKeys } from '@acorex-platform/extension-source-control-core-client/contracts';
9
+ import { RootConfig as RootConfig$1 } from '@acorex-platform/module-project-management-client/contracts';
10
+
11
+ //#endregion
12
+ //#region ----- Entity Provider -----
13
+ class AXECodeReviewEntityProvider {
14
+ preload() {
15
+ const module = RootConfig.module.name;
16
+ return Object.values(RootConfig.entities).map((entity) => ({
17
+ module,
18
+ entity: entity.name,
19
+ }));
20
+ }
21
+ async get(moduleName, entityName) {
22
+ if (moduleName !== RootConfig.module.name) {
23
+ return null;
24
+ }
25
+ if (entityName === RootConfig.entities.reviewRule.name) {
26
+ return (await import('@acorex-platform/extension-ai-code-review-domain')).reviewRuleFactory();
27
+ }
28
+ return null;
29
+ }
30
+ async list() {
31
+ const module = RootConfig.module.name;
32
+ return Object.values(RootConfig.entities).map((entity) => ({
33
+ name: entity.name,
34
+ module,
35
+ }));
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewEntityProvider }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewEntityProvider, decorators: [{
41
+ type: Injectable
42
+ }] });
43
+
44
+ //#region ----- Imports -----
45
+ //#endregion
46
+ //#region ----- Constants -----
47
+ /** Just after the source-control repository page (order 145_000). */
48
+ const REVIEW_RULES_PAGE_ORDER = 146_000;
49
+ //#endregion
50
+ //#region ----- Modifier -----
51
+ /** Adds a Review Rules tab to ProjectManagement.Project when source control is enabled for the project type. */
52
+ const AXECodeReviewProjectEntityModifier = {
53
+ entityName: RootConfig$1.entities.project.name,
54
+ order: 56,
55
+ modifier: (ctx) => {
56
+ if (ctx.module.get() !== RootConfig$1.module.name) {
57
+ return;
58
+ }
59
+ ctx.relatedEntities.add({
60
+ entity: RootConfig.entities.reviewRule.fullName,
61
+ title: RootConfig.entities.reviewRule.titlePlural,
62
+ icon: RootConfig.entities.reviewRule.icon,
63
+ columns: ['title', 'category', 'severity', 'enabled'],
64
+ conditions: [entityDetailsSimpleCondition('projectId')],
65
+ excludeProperties: ['projectId'],
66
+ actions: entityDetailsCrudActions('projectId'),
67
+ layout: { type: 'page-list', position: 'after', order: REVIEW_RULES_PAGE_ORDER },
68
+ hidden: `{{ !(await ${RootConfig$2.module.name}.isEnabledForProjectType(context.eval("projectTypeId"))) }}`,
69
+ });
70
+ },
71
+ };
72
+ //#endregion
7
73
 
8
74
  //#region ---- Imports ----
9
75
  //#endregion
@@ -63,19 +129,21 @@ const AXECodeReviewSourceControlCommitActionsHookProvider = {
63
129
  //#endregion
64
130
  //#region ---- Module ----
65
131
  /**
66
- * Code review extension — contributes review actions on the project Repository page via source-control hooks.
132
+ * Code review extension — project Review Rules tab, plus review actions on the Repository page.
67
133
  */
68
134
  class AXECodeReviewExtensionModule {
69
135
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewExtensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
70
136
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewExtensionModule }); }
71
137
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXECodeReviewExtensionModule, providers: [
138
+ { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXECodeReviewEntityProvider, multi: true },
139
+ { provide: AXP_ENTITY_MODIFIER, useValue: AXECodeReviewProjectEntityModifier, multi: true },
72
140
  {
73
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
141
+ provide: AXP_HOOK_PROVIDER,
74
142
  useValue: AXECodeReviewSourceControlCommitActionsHookProvider,
75
143
  multi: true,
76
144
  },
77
145
  {
78
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
146
+ provide: AXP_HOOK_PROVIDER,
79
147
  useValue: AXECodeReviewSourceControlBranchActionsHookProvider,
80
148
  multi: true,
81
149
  },
@@ -95,13 +163,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
95
163
  type: NgModule,
96
164
  args: [{
97
165
  providers: [
166
+ { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXECodeReviewEntityProvider, multi: true },
167
+ { provide: AXP_ENTITY_MODIFIER, useValue: AXECodeReviewProjectEntityModifier, multi: true },
98
168
  {
99
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
169
+ provide: AXP_HOOK_PROVIDER,
100
170
  useValue: AXECodeReviewSourceControlCommitActionsHookProvider,
101
171
  multi: true,
102
172
  },
103
173
  {
104
- provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
174
+ provide: AXP_HOOK_PROVIDER,
105
175
  useValue: AXECodeReviewSourceControlBranchActionsHookProvider,
106
176
  multi: true,
107
177
  },
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-ai-code-review-client.mjs","sources":["../../../../libs/extensions/ai/code-review/client/src/lib/hooks/source-control-branch-actions.hook.ts","../../../../libs/extensions/ai/code-review/client/src/lib/hooks/source-control-commit-actions.hook.ts","../../../../libs/extensions/ai/code-review/client/src/lib/code-review-extension.module.ts","../../../../libs/extensions/ai/code-review/client/src/acorex-platform-extension-ai-code-review-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport {\n AXESourceControlHookKeys,\n type AXESourceControlBranchActionsHookPayload,\n} from '@acorex-platform/extension-source-control-core-client/contracts';\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\n\n//#endregion\n\n//#region ---- Hook provider ----\n\nexport const AXECodeReviewSourceControlBranchActionsHookProvider: AXPDistributedEventListenerProvider<\n AXESourceControlBranchActionsHookPayload,\n AXESourceControlBranchActionsHookPayload\n> = {\n key: AXESourceControlHookKeys.BranchActions,\n priority: 10,\n async execute(data: AXESourceControlBranchActionsHookPayload): Promise<AXESourceControlBranchActionsHookPayload> {\n data.actions.push({\n name: 'code-review-branch',\n title: '@extensions-code-review:actions.review-branch.title',\n icon: 'fa-light fa-code-pull-request',\n color: 'primary',\n command: {\n name: AXECodeReviewCommandKeys.ReviewBranch,\n options: {\n projectId: data.projectId,\n link: data.link,\n branch: data.branch,\n baseBranch: data.baseBranch,\n },\n },\n });\n return data;\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';\nimport {\n AXESourceControlHookKeys,\n type AXESourceControlCommitActionsHookPayload,\n} from '@acorex-platform/extension-source-control-core-client/contracts';\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\n\n//#endregion\n\n//#region ---- Hook provider ----\n\nexport const AXECodeReviewSourceControlCommitActionsHookProvider: AXPDistributedEventListenerProvider<\n AXESourceControlCommitActionsHookPayload,\n AXESourceControlCommitActionsHookPayload\n> = {\n key: AXESourceControlHookKeys.CommitActions,\n priority: 10,\n async execute(data: AXESourceControlCommitActionsHookPayload): Promise<AXESourceControlCommitActionsHookPayload> {\n data.actions.push({\n name: 'code-review-commit',\n title: '@extensions-code-review:actions.review-commit.title',\n icon: 'fa-light fa-magnifying-glass-chart',\n color: 'primary',\n command: {\n name: AXECodeReviewCommandKeys.ReviewCommit,\n options: {\n projectId: data.projectId,\n link: data.link,\n branch: data.branch,\n commit: data.commit,\n },\n },\n });\n return data;\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { NgModule } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\nimport { AXECodeReviewSourceControlBranchActionsHookProvider } from './hooks/source-control-branch-actions.hook';\nimport { AXECodeReviewSourceControlCommitActionsHookProvider } from './hooks/source-control-commit-actions.hook';\n\n//#endregion\n\n//#region ---- Module ----\n\n/**\n * Code review extension — contributes review actions on the project Repository page via source-control hooks.\n */\n@NgModule({\n providers: [\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: AXECodeReviewSourceControlCommitActionsHookProvider,\n multi: true,\n },\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useValue: AXECodeReviewSourceControlBranchActionsHookProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXECodeReviewCommandKeys.ReviewCommit,\n command: () => import('./commands/review-commit.command').then((c) => c.AXECodeReviewCommitCommand),\n },\n {\n key: AXECodeReviewCommandKeys.ReviewBranch,\n command: () => import('./commands/review-branch.command').then((c) => c.AXECodeReviewBranchCommand),\n },\n ]),\n ],\n})\nexport class AXECodeReviewExtensionModule {}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-extension-ai-code-review-client.mjs","sources":["../../../../libs/extensions/ai/code-review/client/src/lib/entity.provider.ts","../../../../libs/extensions/ai/code-review/client/src/lib/features/project-management/project-review-rule.entity-modifier.ts","../../../../libs/extensions/ai/code-review/client/src/lib/hooks/source-control-branch-actions.hook.ts","../../../../libs/extensions/ai/code-review/client/src/lib/hooks/source-control-commit-actions.hook.ts","../../../../libs/extensions/ai/code-review/client/src/lib/code-review-extension.module.ts","../../../../libs/extensions/ai/code-review/client/src/acorex-platform-extension-ai-code-review-client.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { AXPEntityDefinitionLoader, AXPEntityPreloadEntity } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-ai-code-review-client/contracts';\n\n//#endregion\n\n//#region ----- Entity Provider -----\n\n@Injectable()\nexport class AXECodeReviewEntityProvider implements AXPEntityDefinitionLoader {\n preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Object.values(RootConfig.entities).map((entity) => ({\n module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName !== RootConfig.module.name) {\n return null;\n }\n\n if (entityName === RootConfig.entities.reviewRule.name) {\n return (await import('@acorex-platform/extension-ai-code-review-domain')).reviewRuleFactory();\n }\n\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const module = RootConfig.module.name;\n return Object.values(RootConfig.entities).map((entity) => ({\n name: entity.name,\n module,\n }));\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityModifierProvider } from '@acorex-platform/framework-client/layout/entity';\nimport { entityDetailsCrudActions, entityDetailsSimpleCondition } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '@acorex-platform/extension-ai-code-review-client/contracts';\nimport { RootConfig as SourceControlRootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Just after the source-control repository page (order 145_000). */\nconst REVIEW_RULES_PAGE_ORDER = 146_000;\n\n//#endregion\n\n//#region ----- Modifier -----\n\n/** Adds a Review Rules tab to ProjectManagement.Project when source control is enabled for the project type. */\nexport const AXECodeReviewProjectEntityModifier: AXPEntityModifierProvider = {\n entityName: PmRootConfig.entities.project.name,\n order: 56,\n modifier: (ctx) => {\n if (ctx.module.get() !== PmRootConfig.module.name) {\n return;\n }\n\n ctx.relatedEntities.add({\n entity: RootConfig.entities.reviewRule.fullName,\n title: RootConfig.entities.reviewRule.titlePlural,\n icon: RootConfig.entities.reviewRule.icon,\n columns: ['title', 'category', 'severity', 'enabled'],\n conditions: [entityDetailsSimpleCondition('projectId')],\n excludeProperties: ['projectId'],\n actions: entityDetailsCrudActions('projectId'),\n layout: { type: 'page-list', position: 'after', order: REVIEW_RULES_PAGE_ORDER },\n hidden: `{{ !(await ${SourceControlRootConfig.module.name}.isEnabledForProjectType(context.eval(\"projectTypeId\"))) }}`,\n });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\r\n\r\nimport type { AXPHookProvider } from '@acorex-platform/framework-client/core';\r\nimport {\r\n AXESourceControlHookKeys,\r\n type AXESourceControlBranchActionsHookPayload,\r\n} from '@acorex-platform/extension-source-control-core-client/contracts';\r\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\r\n\r\n//#endregion\r\n\r\n//#region ---- Hook provider ----\r\n\r\nexport const AXECodeReviewSourceControlBranchActionsHookProvider: AXPHookProvider<\r\n AXESourceControlBranchActionsHookPayload,\r\n AXESourceControlBranchActionsHookPayload\r\n> = {\r\n key: AXESourceControlHookKeys.BranchActions,\r\n priority: 10,\r\n async execute(data: AXESourceControlBranchActionsHookPayload): Promise<AXESourceControlBranchActionsHookPayload> {\r\n data.actions.push({\r\n name: 'code-review-branch',\r\n title: '@extensions-code-review:actions.review-branch.title',\r\n icon: 'fa-light fa-code-pull-request',\r\n color: 'primary',\r\n command: {\r\n name: AXECodeReviewCommandKeys.ReviewBranch,\r\n options: {\r\n projectId: data.projectId,\r\n link: data.link,\r\n branch: data.branch,\r\n baseBranch: data.baseBranch,\r\n },\r\n },\r\n });\r\n return data;\r\n },\r\n};\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\r\n\r\nimport type { AXPHookProvider } from '@acorex-platform/framework-client/core';\r\nimport {\r\n AXESourceControlHookKeys,\r\n type AXESourceControlCommitActionsHookPayload,\r\n} from '@acorex-platform/extension-source-control-core-client/contracts';\r\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\r\n\r\n//#endregion\r\n\r\n//#region ---- Hook provider ----\r\n\r\nexport const AXECodeReviewSourceControlCommitActionsHookProvider: AXPHookProvider<\r\n AXESourceControlCommitActionsHookPayload,\r\n AXESourceControlCommitActionsHookPayload\r\n> = {\r\n key: AXESourceControlHookKeys.CommitActions,\r\n priority: 10,\r\n async execute(data: AXESourceControlCommitActionsHookPayload): Promise<AXESourceControlCommitActionsHookPayload> {\r\n data.actions.push({\r\n name: 'code-review-commit',\r\n title: '@extensions-code-review:actions.review-commit.title',\r\n icon: 'fa-light fa-magnifying-glass-chart',\r\n color: 'primary',\r\n command: {\r\n name: AXECodeReviewCommandKeys.ReviewCommit,\r\n options: {\r\n projectId: data.projectId,\r\n link: data.link,\r\n branch: data.branch,\r\n commit: data.commit,\r\n },\r\n },\r\n });\r\n return data;\r\n },\r\n};\r\n\r\n//#endregion\r\n","//#region ---- Imports ----\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { AXP_HOOK_PROVIDER } from '@acorex-platform/framework-client/core';\r\nimport { AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\r\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\r\nimport { AXECodeReviewCommandKeys } from '@acorex-platform/extension-ai-code-review-client/contracts';\r\nimport { AXECodeReviewEntityProvider } from './entity.provider';\r\nimport { AXECodeReviewProjectEntityModifier } from './features/project-management/project-review-rule.entity-modifier';\r\nimport { AXECodeReviewSourceControlBranchActionsHookProvider } from './hooks/source-control-branch-actions.hook';\r\nimport { AXECodeReviewSourceControlCommitActionsHookProvider } from './hooks/source-control-commit-actions.hook';\r\n\r\n//#endregion\r\n\r\n//#region ---- Module ----\r\n\r\n/**\r\n * Code review extension — project Review Rules tab, plus review actions on the Repository page.\r\n */\r\n@NgModule({\r\n providers: [\r\n { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXECodeReviewEntityProvider, multi: true },\r\n { provide: AXP_ENTITY_MODIFIER, useValue: AXECodeReviewProjectEntityModifier, multi: true },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: AXECodeReviewSourceControlCommitActionsHookProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_HOOK_PROVIDER,\r\n useValue: AXECodeReviewSourceControlBranchActionsHookProvider,\r\n multi: true,\r\n },\r\n provideCommandSetups([\r\n {\r\n key: AXECodeReviewCommandKeys.ReviewCommit,\r\n command: () => import('./commands/review-commit.command').then((c) => c.AXECodeReviewCommitCommand),\r\n },\r\n {\r\n key: AXECodeReviewCommandKeys.ReviewBranch,\r\n command: () => import('./commands/review-branch.command').then((c) => c.AXECodeReviewBranchCommand),\r\n },\r\n ]),\r\n ],\r\n})\r\nexport class AXECodeReviewExtensionModule {}\r\n\r\n//#endregion\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PmRootConfig","SourceControlRootConfig"],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/extension-ai-code-review-client",
3
- "version": "0.0.38",
3
+ "version": "0.0.48",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/extension-source-control-core-client": "0.0.38",
6
+ "@acorex-platform/extension-source-control-core-client": "0.0.48",
7
7
  "@angular/common": "^21.0.0 || ^22.0.0",
8
8
  "@angular/core": "^21.0.0 || ^22.0.0"
9
9
  },
@@ -1,3 +1,4 @@
1
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
1
2
  import { AXESourceControlProjectSourceControlLinkEntityModel, AXESourceControlCommitDto } from '@acorex-platform/extension-source-control-core-client/contracts';
2
3
 
3
4
  declare const AXECodeReviewCommandKeys: {
@@ -5,6 +6,14 @@ declare const AXECodeReviewCommandKeys: {
5
6
  readonly ReviewBranch: "CodeReviewExtension.Branch:Review";
6
7
  };
7
8
 
9
+ /** Google review aspects, plus security (Sonar vulnerability type). */
10
+ declare const AXE_CODE_REVIEW_RULE_CATEGORIES: readonly ["design", "functionality", "complexity", "tests", "naming", "style", "documentation", "security"];
11
+ type AXECodeReviewRuleCategory = (typeof AXE_CODE_REVIEW_RULE_CATEGORIES)[number];
12
+ /** SARIF defaultConfiguration.level. */
13
+ declare const AXE_CODE_REVIEW_RULE_SEVERITIES: readonly ["error", "warning", "note"];
14
+ type AXECodeReviewRuleSeverity = (typeof AXE_CODE_REVIEW_RULE_SEVERITIES)[number];
15
+ declare const AXE_CODE_REVIEW_RULE_DEFAULT_SEVERITY: AXECodeReviewRuleSeverity;
16
+
8
17
  interface AXECodeReviewCommitCommandInput {
9
18
  projectId: string;
10
19
  link: AXESourceControlProjectSourceControlLinkEntityModel;
@@ -17,6 +26,36 @@ interface AXECodeReviewBranchCommandInput {
17
26
  branch: string;
18
27
  baseBranch: string;
19
28
  }
29
+ interface AXECodeReviewRuleEntityModel extends AXPEntityModel<string> {
30
+ projectId: string;
31
+ title: string;
32
+ instruction: string;
33
+ category: AXECodeReviewRuleCategory;
34
+ severity: AXECodeReviewRuleSeverity;
35
+ enabled: boolean;
36
+ pathPattern?: string;
37
+ }
38
+
39
+ declare const RootConfig: {
40
+ config: {
41
+ i18n: string;
42
+ };
43
+ module: {
44
+ name: string;
45
+ title: string;
46
+ icon: string;
47
+ };
48
+ entities: {
49
+ reviewRule: {
50
+ name: string;
51
+ fullName: string;
52
+ title: string;
53
+ titlePlural: string;
54
+ icon: string;
55
+ source: string;
56
+ };
57
+ };
58
+ };
20
59
 
21
- export { AXECodeReviewCommandKeys };
22
- export type { AXECodeReviewBranchCommandInput, AXECodeReviewCommitCommandInput };
60
+ export { AXECodeReviewCommandKeys, AXE_CODE_REVIEW_RULE_CATEGORIES, AXE_CODE_REVIEW_RULE_DEFAULT_SEVERITY, AXE_CODE_REVIEW_RULE_SEVERITIES, RootConfig };
61
+ export type { AXECodeReviewBranchCommandInput, AXECodeReviewCommitCommandInput, AXECodeReviewRuleCategory, AXECodeReviewRuleEntityModel, AXECodeReviewRuleSeverity };
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
 
3
3
  /**
4
- * Code review extension — contributes review actions on the project Repository page via source-control hooks.
4
+ * Code review extension — project Review Rules tab, plus review actions on the Repository page.
5
5
  */
6
6
  declare class AXECodeReviewExtensionModule {
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<AXECodeReviewExtensionModule, never>;