@acorex-platform/extension-source-control-core-client 0.0.38 → 0.0.46

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.
@@ -23,6 +23,19 @@ const RootConfig = {
23
23
  };
24
24
  //#endregion
25
25
 
26
+ //#region ----- Manifest -----
27
+ const SourceControlExtensionManifest = {
28
+ name: RootConfig.module.name,
29
+ version: '1.0.0',
30
+ title: RootConfig.module.title,
31
+ icon: RootConfig.module.icon,
32
+ i18n: RootConfig.config.i18n,
33
+ type: 'integration',
34
+ domain: 'source-control',
35
+ dependencies: [],
36
+ };
37
+ //#endregion
38
+
26
39
  //#region ----- Source control extension settings keys -----
27
40
  const AXESourceControlExtensionSettings = {
28
41
  EnabledProjectTypeIds: 'SourceControlExtension:Setting:EnabledProjectTypeIds',
@@ -65,5 +78,5 @@ const AXE_SC_PROVIDER_IDS = [AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB];
65
78
  * Generated bundle index. Do not edit.
66
79
  */
67
80
 
68
- export { AXESourceControlCommandKeys, AXESourceControlExtensionSettings, AXESourceControlHookKeys, AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID, AXE_SC_DOMAIN_ID, AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB, AXE_SC_PROVIDER_IDS, RootConfig };
81
+ export { AXESourceControlCommandKeys, AXESourceControlExtensionSettings, AXESourceControlHookKeys, AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID, AXE_SC_DOMAIN_ID, AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB, AXE_SC_PROVIDER_IDS, RootConfig, SourceControlExtensionManifest };
69
82
  //# sourceMappingURL=acorex-platform-extension-source-control-core-client-contracts.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-source-control-core-client-contracts.mjs","sources":["../../../../libs/extensions/source-control/core/contracts/src/root-config.ts","../../../../libs/extensions/source-control/core/contracts/src/settings.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/commands.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/hook.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/provider.constants.ts","../../../../libs/extensions/source-control/core/contracts/src/repo.types.ts","../../../../libs/extensions/source-control/core/contracts/src/repository.types.ts","../../../../libs/extensions/source-control/core/contracts/src/link.types.ts","../../../../libs/extensions/source-control/core/contracts/src/acorex-platform-extension-source-control-core-client-contracts.ts"],"sourcesContent":["//#region ----- Source control extension root config -----\n\nconst config = {\n i18n: 'extensions-source-control',\n};\n\nconst MODULE_NAME = 'SourceControlExtension';\n\nexport const RootConfig = {\n config,\n module: {\n name: MODULE_NAME,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-code-branch',\n },\n entities: {\n projectSourceControlLink: {\n name: 'ProjectSourceControlLink',\n fullName: `${MODULE_NAME}.ProjectSourceControlLink`,\n title: `@${config.i18n}:entities.project-source-control-link.title`,\n titlePlural: `@${config.i18n}:entities.project-source-control-link.plural`,\n icon: 'fa-light fa-link',\n source: `${MODULE_NAME}.ProjectSourceControlLink`,\n },\n },\n};\n\n//#endregion\n","//#region ----- Source control extension settings keys -----\n\nexport const AXESourceControlExtensionSettings = {\n EnabledProjectTypeIds: 'SourceControlExtension:Setting:EnabledProjectTypeIds',\n} as const;\n\n/** Demo default — matches ProjectManagement seed Software project type id. */\nexport const AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID = 'pm-mock-project-type-software';\n\n//#endregion\n","//#region ----- Source control extension command keys -----\n\nexport const AXESourceControlCommandKeys = {\n ProjectLinkRepository: 'SourceControlExtension.Project:LinkRepository',\n ProjectUnlinkRepository: 'SourceControlExtension.Project:UnlinkRepository',\n} as const;\n\n//#endregion\n","//#region ----- Source control hook keys -----\r\r\n\r\r\nexport const AXESourceControlHookKeys = {\r\r\n CommitActions: 'source-control.repository.commit-actions',\r\r\n BranchActions: 'source-control.repository.branch-actions',\r\r\n} as const;\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Source control provider constants -----\n\nexport const AXE_SC_DOMAIN_ID = 'source-control';\n\nexport const AXE_SC_PROVIDER_GITHUB = 'github';\nexport const AXE_SC_PROVIDER_GITLAB = 'gitlab';\n\nexport const AXE_SC_PROVIDER_IDS = [AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB] as const;\n\nexport type AXESourceControlProviderId = (typeof AXE_SC_PROVIDER_IDS)[number];\n\n//#endregion\n","//#region ----- Remote repository DTOs -----\n\nexport interface AXESourceControlRemoteRepoDto {\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n description?: string;\n}\n\nexport interface AXESourceControlSearchReposRequest {\n providerId: string;\n connectionId: string;\n query?: string;\n}\n\nexport interface AXESourceControlSearchReposResponse {\n items: AXESourceControlRemoteRepoDto[];\n}\n\n//#endregion\n","//#region ----- Repository browse DTOs -----\r\r\n\r\r\nimport type { AXPActionMenuItem } from '@acorex-platform/framework-shared/core';\r\r\n\r\r\nimport type { AXESourceControlProjectSourceControlLinkEntityModel } from './link.types';\r\r\n\r\r\nexport interface AXESourceControlBranchDto {\r\r\n name: string;\r\r\n isDefault?: boolean;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlCommitDto {\r\r\n sha: string;\r\r\n shortSha?: string;\r\r\n message: string;\r\r\n authorName: string;\r\r\n committedAt: string;\r\r\n webUrl: string;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListBranchesRequest {\r\r\n providerId: string;\r\r\n connectionId: string;\r\r\n fullName: string;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListBranchesResponse {\r\r\n items: AXESourceControlBranchDto[];\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListCommitsRequest {\r\r\n providerId: string;\r\r\n connectionId: string;\r\r\n fullName: string;\r\r\n branch: string;\r\r\n take?: number;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListCommitsResponse {\r\r\n items: AXESourceControlCommitDto[];\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n\r\r\n//#region ----- Hook payloads -----\r\r\n\r\r\nexport interface AXESourceControlCommitActionsHookPayload {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n commit: AXESourceControlCommitDto;\r\r\n actions: AXPActionMenuItem[];\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlBranchActionsHookPayload {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n baseBranch: string;\r\r\n actions: AXPActionMenuItem[];\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Project source control link types -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\nexport interface AXESourceControlProjectSourceControlLinkEntityModel extends AXPEntityModel<string> {\n projectId: string;\n providerId: string;\n connectionId: string;\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n linkedAt: string;\n}\n\nexport interface AXESourceControlLinkRepositoryCommandInput {\n projectId: string;\n}\n\nexport interface AXESourceControlUnlinkRepositoryCommandInput {\n projectId: string;\n}\n\nexport interface AXESourceControlLinkRepositoryPayload {\n projectId: string;\n providerId: string;\n connectionId: string;\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n linkedAt: string;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,2BAA2B;CAClC;AAED,MAAM,WAAW,GAAG,wBAAwB;AAErC,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,yBAAyB;AAChC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,wBAAwB,EAAE;AACxB,YAAA,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,yBAAA,CAA2B;AACnD,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2CAAA,CAA6C;AACnE,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,4CAAA,CAA8C;AAC1E,YAAA,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,yBAAA,CAA2B;AAClD,SAAA;AACF,KAAA;;AAGH;;AC3BA;AAEO,MAAM,iCAAiC,GAAG;AAC/C,IAAA,qBAAqB,EAAE,sDAAsD;;AAG/E;AACO,MAAM,sCAAsC,GAAG;AAEtD;;ACTA;AAEO,MAAM,2BAA2B,GAAG;AACzC,IAAA,qBAAqB,EAAE,+CAA+C;AACtE,IAAA,uBAAuB,EAAE,iDAAiD;;AAG5E;;ACPA;AAIO,MAAM,wBAAwB,GAAG;AAEtC,IAAA,aAAa,EAAE,0CAA0C;AAEzD,IAAA,aAAa,EAAE,0CAA0C;;AAM3D;;ACdA;AAEO,MAAM,gBAAgB,GAAG;AAEzB,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;MAEzB,mBAAmB,GAAG,CAAC,sBAAsB,EAAE,sBAAsB;AAIlF;;ACXA;AAoBA;;ACpBA;AA4HA;;AC5HA;AAkCA;;AClCA;;AAEG;;"}
1
+ {"version":3,"file":"acorex-platform-extension-source-control-core-client-contracts.mjs","sources":["../../../../libs/extensions/source-control/core/contracts/src/root-config.ts","../../../../libs/extensions/source-control/core/contracts/src/manifest.ts","../../../../libs/extensions/source-control/core/contracts/src/settings.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/commands.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/hook.keys.ts","../../../../libs/extensions/source-control/core/contracts/src/provider.constants.ts","../../../../libs/extensions/source-control/core/contracts/src/repo.types.ts","../../../../libs/extensions/source-control/core/contracts/src/repository.types.ts","../../../../libs/extensions/source-control/core/contracts/src/link.types.ts","../../../../libs/extensions/source-control/core/contracts/src/acorex-platform-extension-source-control-core-client-contracts.ts"],"sourcesContent":["//#region ----- Source control extension root config -----\n\nconst config = {\n i18n: 'extensions-source-control',\n};\n\nconst MODULE_NAME = 'SourceControlExtension';\n\nexport const RootConfig = {\n config,\n module: {\n name: MODULE_NAME,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-code-branch',\n },\n entities: {\n projectSourceControlLink: {\n name: 'ProjectSourceControlLink',\n fullName: `${MODULE_NAME}.ProjectSourceControlLink`,\n title: `@${config.i18n}:entities.project-source-control-link.title`,\n titlePlural: `@${config.i18n}:entities.project-source-control-link.plural`,\n icon: 'fa-light fa-link',\n source: `${MODULE_NAME}.ProjectSourceControlLink`,\n },\n },\n};\n\n//#endregion\n","//#region ----- Manifest -----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\nexport const SourceControlExtensionManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'integration',\n domain: 'source-control',\n dependencies: [],\n};\n\n//#endregion\n","//#region ----- Source control extension settings keys -----\n\nexport const AXESourceControlExtensionSettings = {\n EnabledProjectTypeIds: 'SourceControlExtension:Setting:EnabledProjectTypeIds',\n} as const;\n\n/** Demo default — matches ProjectManagement seed Software project type id. */\nexport const AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID = 'pm-mock-project-type-software';\n\n//#endregion\n","//#region ----- Source control extension command keys -----\n\nexport const AXESourceControlCommandKeys = {\n ProjectLinkRepository: 'SourceControlExtension.Project:LinkRepository',\n ProjectUnlinkRepository: 'SourceControlExtension.Project:UnlinkRepository',\n} as const;\n\n//#endregion\n","//#region ----- Source control hook keys -----\r\r\n\r\r\nexport const AXESourceControlHookKeys = {\r\r\n CommitActions: 'source-control.repository.commit-actions',\r\r\n BranchActions: 'source-control.repository.branch-actions',\r\r\n} as const;\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Source control provider constants -----\n\nexport const AXE_SC_DOMAIN_ID = 'source-control';\n\nexport const AXE_SC_PROVIDER_GITHUB = 'github';\nexport const AXE_SC_PROVIDER_GITLAB = 'gitlab';\n\nexport const AXE_SC_PROVIDER_IDS = [AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB] as const;\n\nexport type AXESourceControlProviderId = (typeof AXE_SC_PROVIDER_IDS)[number];\n\n//#endregion\n","//#region ----- Remote repository DTOs -----\n\nexport interface AXESourceControlRemoteRepoDto {\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n description?: string;\n}\n\nexport interface AXESourceControlSearchReposRequest {\n providerId: string;\n connectionId: string;\n query?: string;\n}\n\nexport interface AXESourceControlSearchReposResponse {\n items: AXESourceControlRemoteRepoDto[];\n}\n\n//#endregion\n","//#region ----- Repository browse DTOs -----\r\r\n\r\r\nimport type { AXPActionMenuItem } from '@acorex-platform/framework-shared/core';\r\r\n\r\r\nimport type { AXESourceControlProjectSourceControlLinkEntityModel } from './link.types';\r\r\n\r\r\nexport interface AXESourceControlBranchDto {\r\r\n name: string;\r\r\n isDefault?: boolean;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlCommitDto {\r\r\n sha: string;\r\r\n shortSha?: string;\r\r\n message: string;\r\r\n authorName: string;\r\r\n committedAt: string;\r\r\n webUrl: string;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListBranchesRequest {\r\r\n providerId: string;\r\r\n connectionId: string;\r\r\n fullName: string;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListBranchesResponse {\r\r\n items: AXESourceControlBranchDto[];\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListCommitsRequest {\r\r\n providerId: string;\r\r\n connectionId: string;\r\r\n fullName: string;\r\r\n branch: string;\r\r\n take?: number;\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlListCommitsResponse {\r\r\n items: AXESourceControlCommitDto[];\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n\r\r\n//#region ----- Hook payloads -----\r\r\n\r\r\nexport interface AXESourceControlCommitActionsHookPayload {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n commit: AXESourceControlCommitDto;\r\r\n actions: AXPActionMenuItem[];\r\r\n}\r\r\n\r\r\nexport interface AXESourceControlBranchActionsHookPayload {\r\r\n projectId: string;\r\r\n link: AXESourceControlProjectSourceControlLinkEntityModel;\r\r\n branch: string;\r\r\n baseBranch: string;\r\r\n actions: AXPActionMenuItem[];\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Project source control link types -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\nexport interface AXESourceControlProjectSourceControlLinkEntityModel extends AXPEntityModel<string> {\n projectId: string;\n providerId: string;\n connectionId: string;\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n linkedAt: string;\n}\n\nexport interface AXESourceControlLinkRepositoryCommandInput {\n projectId: string;\n}\n\nexport interface AXESourceControlUnlinkRepositoryCommandInput {\n projectId: string;\n}\n\nexport interface AXESourceControlLinkRepositoryPayload {\n projectId: string;\n providerId: string;\n connectionId: string;\n remoteId: string;\n fullName: string;\n webUrl: string;\n defaultBranch?: string;\n linkedAt: string;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,2BAA2B;CAClC;AAED,MAAM,WAAW,GAAG,wBAAwB;AAErC,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,yBAAyB;AAChC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,wBAAwB,EAAE;AACxB,YAAA,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,yBAAA,CAA2B;AACnD,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2CAAA,CAA6C;AACnE,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,4CAAA,CAA8C;AAC1E,YAAA,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,yBAAA,CAA2B;AAClD,SAAA;AACF,KAAA;;AAGH;;AC3BA;AAKO,MAAM,8BAA8B,GAAsB;AAC/D,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC9B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,YAAY,EAAE,EAAE;;AAGlB;;AChBA;AAEO,MAAM,iCAAiC,GAAG;AAC/C,IAAA,qBAAqB,EAAE,sDAAsD;;AAG/E;AACO,MAAM,sCAAsC,GAAG;AAEtD;;ACTA;AAEO,MAAM,2BAA2B,GAAG;AACzC,IAAA,qBAAqB,EAAE,+CAA+C;AACtE,IAAA,uBAAuB,EAAE,iDAAiD;;AAG5E;;ACPA;AAIO,MAAM,wBAAwB,GAAG;AAEtC,IAAA,aAAa,EAAE,0CAA0C;AAEzD,IAAA,aAAa,EAAE,0CAA0C;;AAM3D;;ACdA;AAEO,MAAM,gBAAgB,GAAG;AAEzB,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;MAEzB,mBAAmB,GAAG,CAAC,sBAAsB,EAAE,sBAAsB;AAIlF;;ACXA;AAoBA;;ACpBA;AA4HA;;AC5HA;AAkCA;;AClCA;;AAEG;;"}
@@ -1,5 +1,5 @@
1
1
  import { AXPSettingsService, AXPIntegrationRuntimeService, AXP_SETTING_DEFINITION_PROVIDER, AXP_INTEGRATION_DOMAIN_PROVIDER } from '@acorex-platform/framework-client/common';
2
- import { AXP_MODULE_MANIFEST_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';
2
+ import { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';
3
3
  import { AXPEntityService, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';
4
4
  import { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';
5
5
  import * as i0 from '@angular/core';
@@ -129,22 +129,23 @@ const AXE_SOURCE_CONTROL_EXPRESSION_SCOPE = 'SourceControlExtension';
129
129
  //#region ----- Provider -----
130
130
  class AXESourceControlProjectLinkExpressionEvaluatorScopeProvider {
131
131
  constructor() {
132
+ //#region ----- Services & Dependencies -----
132
133
  this.entityService = inject(AXPEntityService);
133
134
  this.settingsService = inject(AXPSettingsService);
134
135
  this.integrationRuntime = inject(AXPIntegrationRuntimeService);
135
136
  }
137
+ //#endregion
136
138
  async provide(context) {
137
139
  context.addScope(AXE_SOURCE_CONTROL_EXPRESSION_SCOPE, {
138
140
  isEnabledForProject: async (platformProjectIdRaw) => {
139
141
  const projectTypeId = await this.resolveProjectTypeId(platformProjectIdRaw);
140
- if (!projectTypeId) {
141
- return false;
142
- }
143
- const enabledIds = await this.resolveEnabledProjectTypeIds();
144
- return enabledIds.includes(projectTypeId);
142
+ return this.isProjectTypeEnabled(projectTypeId);
143
+ },
144
+ isEnabledForProjectType: async (projectTypeIdRaw) => {
145
+ return this.isProjectTypeEnabled(this.coerceId(projectTypeIdRaw));
145
146
  },
146
147
  hasRepoLink: async (platformProjectIdRaw) => {
147
- const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';
148
+ const platformProjectId = this.coerceId(platformProjectIdRaw);
148
149
  if (!platformProjectId) {
149
150
  return false;
150
151
  }
@@ -165,8 +166,25 @@ class AXESourceControlProjectLinkExpressionEvaluatorScopeProvider {
165
166
  },
166
167
  });
167
168
  }
169
+ //#region ----- Enabled project types -----
170
+ coerceId(raw) {
171
+ if (typeof raw === 'string') {
172
+ return raw.trim();
173
+ }
174
+ if (raw && typeof raw === 'object' && 'id' in raw) {
175
+ return String(raw.id ?? '').trim();
176
+ }
177
+ return '';
178
+ }
179
+ async isProjectTypeEnabled(projectTypeId) {
180
+ if (!projectTypeId) {
181
+ return false;
182
+ }
183
+ const enabledIds = await this.resolveEnabledProjectTypeIds();
184
+ return enabledIds.includes(projectTypeId);
185
+ }
168
186
  async resolveProjectTypeId(platformProjectIdRaw) {
169
- const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';
187
+ const platformProjectId = this.coerceId(platformProjectIdRaw);
170
188
  if (!platformProjectId) {
171
189
  return '';
172
190
  }
@@ -178,11 +196,12 @@ class AXESourceControlProjectLinkExpressionEvaluatorScopeProvider {
178
196
  }
179
197
  async resolveEnabledProjectTypeIds() {
180
198
  const raw = await this.settingsService.get(AXESourceControlExtensionSettings.EnabledProjectTypeIds);
181
- if (!Array.isArray(raw)) {
182
- return [];
183
- }
184
- return raw.map((item) => String(item).trim()).filter(Boolean);
199
+ const fromSetting = Array.isArray(raw)
200
+ ? raw.map((item) => String(item).trim()).filter(Boolean)
201
+ : [];
202
+ return fromSetting.length > 0 ? fromSetting : [AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID];
185
203
  }
204
+ //#endregion
186
205
  async findLinkByProjectId(projectId) {
187
206
  const result = await this.entityService
188
207
  .withEntity(RootConfig.module.name, RootConfig.entities.projectSourceControlLink.name)
@@ -221,17 +240,25 @@ const AXESourceControlProjectEntityModifier = {
221
240
  return;
222
241
  }
223
242
  ctx.entity.pages ??= [];
224
- const pageExists = ctx.entity.pages.some((page) => page.componentKey === SOURCE_CONTROL_PAGE_COMPONENT_KEY);
225
- if (pageExists) {
226
- return;
227
- }
228
- ctx.entity.pages.push({
243
+ const page = {
229
244
  componentKey: SOURCE_CONTROL_PAGE_COMPONENT_KEY,
230
245
  title: '@extensions-source-control:pages.repository.title',
231
246
  icon: 'fa-light fa-code-branch',
232
247
  layout: { order: SOURCE_CONTROL_PAGE_ORDER },
233
- hidden: `{{ !(await ${AXE_SOURCE_CONTROL_EXPRESSION_SCOPE}.isEnabledForProject(context.eval("id"))) }}`,
234
- });
248
+ /**
249
+ * Required for update/edit form wizard steps.
250
+ * Details view always includes entity.pages; empty state handles unlinked records.
251
+ */
252
+ appearOn: { update: true },
253
+ hidden: `{{ !(await ${AXE_SOURCE_CONTROL_EXPRESSION_SCOPE}.isEnabledForProjectType(context.eval("projectTypeId"))) }}`,
254
+ };
255
+ const existingIndex = ctx.entity.pages.findIndex((entry) => entry.componentKey === SOURCE_CONTROL_PAGE_COMPONENT_KEY);
256
+ if (existingIndex >= 0) {
257
+ ctx.entity.pages[existingIndex] = page;
258
+ }
259
+ else {
260
+ ctx.entity.pages.push(page);
261
+ }
235
262
  },
236
263
  };
237
264
  //#endregion
@@ -254,19 +281,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
254
281
  type: Injectable
255
282
  }] });
256
283
 
257
- //#region ----- Manifest -----
258
- const SourceControlExtensionManifest = {
259
- name: RootConfig.module.name,
260
- version: '1.0.0',
261
- title: RootConfig.module.title,
262
- icon: RootConfig.module.icon,
263
- i18n: RootConfig.config.i18n,
264
- type: 'integration',
265
- domain: 'source-control',
266
- dependencies: [],
267
- };
268
- //#endregion
269
-
270
284
  //#region ----- Imports -----
271
285
  //#endregion
272
286
  //#region ----- Module -----
@@ -274,7 +288,6 @@ class AXESourceControlExtensionModule {
274
288
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXESourceControlExtensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
275
289
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXESourceControlExtensionModule }); }
276
290
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXESourceControlExtensionModule, providers: [
277
- { provide: AXP_MODULE_MANIFEST_PROVIDER, useValue: SourceControlExtensionManifest, multi: true },
278
291
  { provide: AXP_SETTING_DEFINITION_PROVIDER, useClass: AXESourceControlSettingsProvider, multi: true },
279
292
  { provide: AXP_INTEGRATION_DOMAIN_PROVIDER, useClass: AXESourceControlIntegrationDomainProvider, multi: true },
280
293
  { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXESourceControlEntityProvider, multi: true },
@@ -295,7 +308,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
295
308
  type: NgModule,
296
309
  args: [{
297
310
  providers: [
298
- { provide: AXP_MODULE_MANIFEST_PROVIDER, useValue: SourceControlExtensionManifest, multi: true },
299
311
  { provide: AXP_SETTING_DEFINITION_PROVIDER, useClass: AXESourceControlSettingsProvider, multi: true },
300
312
  { provide: AXP_INTEGRATION_DOMAIN_PROVIDER, useClass: AXESourceControlIntegrationDomainProvider, multi: true },
301
313
  { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXESourceControlEntityProvider, multi: true },
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-extension-source-control-core-client.mjs","sources":["../../../../libs/extensions/source-control/core/client/src/lib/entity.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/integration/source-control.integration-domain.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/settings.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-project-link-expression-evaluator-scope.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-page/source-control-page.constants.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/project-source-control.entity-modifier.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-page/source-control-page-component.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/manifest.ts","../../../../libs/extensions/source-control/core/client/src/lib/source-control-extension.module.ts","../../../../libs/extensions/source-control/core/client/src/acorex-platform-extension-source-control-core-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-source-control-core-client/contracts';\n\n//#endregion\n\n//#region ----- Entity Provider -----\n\n@Injectable()\nexport class AXESourceControlEntityProvider 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.projectSourceControlLink.name) {\n return (await import('@acorex-platform/extension-source-control-core-domain')).projectSourceControlLinkFactory();\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 {\n AXP_INTEGRATION_CAPABILITY,\n AXP_INTEGRATION_CATEGORY,\n} from '@acorex-platform/framework-shared/core';\nimport {\n type AXPIntegrationDomainProvider,\n AXPIntegrationDomainProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = `@${RootConfig.config.i18n}:integration.domain`;\n\n//#endregion\n\n//#region ----- Domain Provider -----\n\n@Injectable()\nexport class AXESourceControlIntegrationDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: AXP_INTEGRATION_CATEGORY.SourceControl,\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n category: AXP_INTEGRATION_CATEGORY.SourceControl,\n capabilities: [AXP_INTEGRATION_CAPABILITY.Sync, AXP_INTEGRATION_CAPABILITY.Import],\n sortOrder: 30,\n });\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID,\n AXESourceControlExtensionSettings,\n RootConfig,\n} 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\nconst SC_SETTINGS_GROUP = 'source-control';\nconst I18N = `@${RootConfig.config.i18n}:settings.source-control`;\n\n//#endregion\n\n//#region ----- Settings Provider -----\n\n@Injectable()\nexport class AXESourceControlSettingsProvider implements AXPSettingDefinitionProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // Only register when the edition entitles Source Control (e.g. not Safetyminder).\n if (!this.sessionService.isModuleEnabled(RootConfig.module.name)) {\n return;\n }\n\n if (context.hasGroup(SC_SETTINGS_GROUP)) {\n return;\n }\n\n context\n .addGroup(\n SC_SETTINGS_GROUP,\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n RootConfig.module.icon,\n `${I18N}.group.title`,\n 47,\n )\n .addSection('configuration', `${I18N}.section-title`, `${I18N}.section-description`)\n .addSetting({\n key: AXESourceControlExtensionSettings.EnabledProjectTypeIds,\n title: `${I18N}.enabled-project-types.title`,\n scope: 'T',\n overridableAt: [],\n isInherited: false,\n defaultValue: [AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID],\n widget: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${PmRootConfig.module.name}.${PmRootConfig.entities.projectType.name}`,\n look: 'select',\n multiple: true,\n textField: 'title',\n valueField: 'id',\n hasClearButton: true,\n },\n },\n description: `${I18N}.enabled-project-types.description`,\n })\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPIntegrationRuntimeService, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXE_SC_PROVIDER_IDS,\n AXESourceControlExtensionSettings,\n RootConfig,\n type AXESourceControlProjectSourceControlLinkEntityModel,\n} from '@acorex-platform/extension-source-control-core-client/contracts';\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Expression scope namespace (no hyphens — safe for `with (scope)` eval). */\nexport const AXE_SOURCE_CONTROL_EXPRESSION_SCOPE = 'SourceControlExtension';\n\n//#endregion\n\n//#region ----- Provider -----\n\nexport class AXESourceControlProjectLinkExpressionEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly integrationRuntime = inject(AXPIntegrationRuntimeService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(AXE_SOURCE_CONTROL_EXPRESSION_SCOPE, {\n isEnabledForProject: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const projectTypeId = await this.resolveProjectTypeId(platformProjectIdRaw);\n if (!projectTypeId) {\n return false;\n }\n\n const enabledIds = await this.resolveEnabledProjectTypeIds();\n return enabledIds.includes(projectTypeId);\n },\n hasRepoLink: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';\n if (!platformProjectId) {\n return false;\n }\n\n const link = await this.findLinkByProjectId(platformProjectId);\n return Boolean(link);\n },\n hasAnyConnection: async (): Promise<boolean> => {\n for (const providerId of AXE_SC_PROVIDER_IDS) {\n try {\n await this.integrationRuntime.getConnection({ providerId, connectionScope: 'tenant' });\n return true;\n } catch {\n // try next provider\n }\n }\n return false;\n },\n });\n }\n\n private async resolveProjectTypeId(platformProjectIdRaw?: unknown): Promise<string> {\n const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';\n if (!platformProjectId) {\n return '';\n }\n\n const project = (await this.entityService\n .withEntity(PmRootConfig.module.name, PmRootConfig.entities.project.name)\n .data<string, AXMProjectManagementProjectEntityModel>()\n .byKey(platformProjectId)) as AXMProjectManagementProjectEntityModel | null;\n\n return String(project?.projectTypeId ?? '').trim();\n }\n\n private async resolveEnabledProjectTypeIds(): Promise<string[]> {\n const raw = await this.settingsService.get(AXESourceControlExtensionSettings.EnabledProjectTypeIds);\n if (!Array.isArray(raw)) {\n return [];\n }\n return raw.map((item) => String(item).trim()).filter(Boolean);\n }\n\n private async findLinkByProjectId(\n projectId: string,\n ): Promise<AXESourceControlProjectSourceControlLinkEntityModel | null> {\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectSourceControlLink.name)\n .data<string, AXESourceControlProjectSourceControlLinkEntityModel>()\n .query({\n skip: 0,\n take: 1,\n filter: {\n field: 'projectId',\n operator: { type: 'equal' },\n value: projectId,\n },\n });\n\n return result.items?.[0] ?? null;\n }\n}\n\n//#endregion\n","//#region ----- Constants -----\n\n/** Component key for the project source-control repository page tab. */\nexport const SOURCE_CONTROL_PAGE_COMPONENT_KEY = 'entity-source-control-page';\n\n//#endregion\n","//#region ----- Imports -----\r\r\n\r\r\nimport { AXPEntityModifierProvider } from '@acorex-platform/framework-client/layout/entity';\r\r\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\r\r\nimport { AXE_SOURCE_CONTROL_EXPRESSION_SCOPE } from './source-control-project-link-expression-evaluator-scope.provider';\r\r\nimport { SOURCE_CONTROL_PAGE_COMPONENT_KEY } from './source-control-page/source-control-page.constants';\r\r\n\r\r\n//#endregion\r\r\n\r\r\n//#region ----- Constants -----\r\r\n\r\r\nconst SOURCE_CONTROL_PAGE_ORDER = 145_000;\r\r\n\r\r\n//#endregion\r\r\n\r\r\n//#region ----- Modifier -----\r\r\n\r\r\n/** Adds a source-control repository tab to ProjectManagement.Project detail views. */\r\r\nexport const AXESourceControlProjectEntityModifier: AXPEntityModifierProvider = {\r\r\n entityName: PmRootConfig.entities.project.name,\r\r\n order: 55,\r\r\n modifier: (ctx) => {\r\r\n if (ctx.module.get() !== PmRootConfig.module.name) {\r\r\n return;\r\r\n }\r\r\n\r\r\n ctx.entity.pages ??= [];\r\r\n const pageExists = ctx.entity.pages.some((page) => page.componentKey === SOURCE_CONTROL_PAGE_COMPONENT_KEY);\r\r\n if (pageExists) {\r\r\n return;\r\r\n }\r\r\n\r\r\n ctx.entity.pages.push({\r\r\n componentKey: SOURCE_CONTROL_PAGE_COMPONENT_KEY,\r\r\n title: '@extensions-source-control:pages.repository.title',\r\r\n icon: 'fa-light fa-code-branch',\r\r\n layout: { order: SOURCE_CONTROL_PAGE_ORDER },\r\r\n hidden: `{{ !(await ${AXE_SOURCE_CONTROL_EXPRESSION_SCOPE}.isEnabledForProject(context.eval(\"id\"))) }}`,\r\r\n });\r\r\n },\r\r\n};\r\r\n\r\r\n//#endregion\r\r\n","//#region ----- Imports -----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { SOURCE_CONTROL_PAGE_COMPONENT_KEY } from './source-control-page.constants';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXESourceControlPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: SOURCE_CONTROL_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./source-control-page.component').then((m) => m.AXESourceControlPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ----- Manifest -----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\n\nexport const SourceControlExtensionManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'integration',\n domain: 'source-control',\n dependencies: [],\n};\n\n//#endregion\n","//#region ----- Imports -----\r\r\n\r\r\nimport {\r\r\n AXP_INTEGRATION_DOMAIN_PROVIDER,\r\r\n AXP_SETTING_DEFINITION_PROVIDER,\r\r\n} from '@acorex-platform/framework-client/common';\r\r\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\r\r\nimport { AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\r\r\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\r\r\nimport { RootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\r\r\nimport { NgModule } from '@angular/core';\r\r\nimport { AXESourceControlEntityProvider } from './entity.provider';\r\r\nimport { AXESourceControlIntegrationDomainProvider } from './integration/source-control.integration-domain.provider';\r\r\nimport { AXESourceControlSettingsProvider } from './settings.provider';\r\r\nimport { AXESourceControlProjectLinkExpressionEvaluatorScopeProvider } from './features/project-management/source-control-project-link-expression-evaluator-scope.provider';\r\r\nimport { AXESourceControlProjectEntityModifier } from './features/project-management/project-source-control.entity-modifier';\r\r\nimport { AXESourceControlPageComponentProvider } from './features/project-management/source-control-page/source-control-page-component.provider';\r\r\nimport { SourceControlExtensionManifest } from './manifest';\r\r\n\r\r\n//#endregion\r\r\n\r\r\n//#region ----- Module -----\r\r\n\r\r\n@NgModule({\r\r\n providers: [\r\r\n { provide: AXP_MODULE_MANIFEST_PROVIDER, useValue: SourceControlExtensionManifest, multi: true },\r\r\n { provide: AXP_SETTING_DEFINITION_PROVIDER, useClass: AXESourceControlSettingsProvider, multi: true },\r\r\n { provide: AXP_INTEGRATION_DOMAIN_PROVIDER, useClass: AXESourceControlIntegrationDomainProvider, multi: true },\r\r\n { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXESourceControlEntityProvider, multi: true },\r\r\n { provide: AXP_ENTITY_MODIFIER, useValue: AXESourceControlProjectEntityModifier, multi: true },\r\r\n {\r\r\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\r\r\n useClass: AXESourceControlProjectLinkExpressionEvaluatorScopeProvider,\r\r\n multi: true,\r\r\n },\r\r\n {\r\r\n provide: AXP_PAGE_COMPONENT_PROVIDER,\r\r\n useClass: AXESourceControlPageComponentProvider,\r\r\n multi: true,\r\r\n },\r\r\n ],\r\r\n})\r\r\nexport class AXESourceControlExtensionModule {}\r\r\n\r\r\n//#endregion\r\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N","PmRootConfig"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-extension-source-control-core-client.mjs","sources":["../../../../libs/extensions/source-control/core/client/src/lib/entity.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/integration/source-control.integration-domain.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/settings.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-project-link-expression-evaluator-scope.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-page/source-control-page.constants.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/project-source-control.entity-modifier.ts","../../../../libs/extensions/source-control/core/client/src/lib/features/project-management/source-control-page/source-control-page-component.provider.ts","../../../../libs/extensions/source-control/core/client/src/lib/source-control-extension.module.ts","../../../../libs/extensions/source-control/core/client/src/acorex-platform-extension-source-control-core-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-source-control-core-client/contracts';\n\n//#endregion\n\n//#region ----- Entity Provider -----\n\n@Injectable()\nexport class AXESourceControlEntityProvider 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.projectSourceControlLink.name) {\n return (await import('@acorex-platform/extension-source-control-core-domain')).projectSourceControlLinkFactory();\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 {\n AXP_INTEGRATION_CAPABILITY,\n AXP_INTEGRATION_CATEGORY,\n} from '@acorex-platform/framework-shared/core';\nimport {\n type AXPIntegrationDomainProvider,\n AXPIntegrationDomainProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = `@${RootConfig.config.i18n}:integration.domain`;\n\n//#endregion\n\n//#region ----- Domain Provider -----\n\n@Injectable()\nexport class AXESourceControlIntegrationDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: AXP_INTEGRATION_CATEGORY.SourceControl,\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n category: AXP_INTEGRATION_CATEGORY.SourceControl,\n capabilities: [AXP_INTEGRATION_CAPABILITY.Sync, AXP_INTEGRATION_CAPABILITY.Import],\n sortOrder: 30,\n });\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID,\n AXESourceControlExtensionSettings,\n RootConfig,\n} 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\nconst SC_SETTINGS_GROUP = 'source-control';\nconst I18N = `@${RootConfig.config.i18n}:settings.source-control`;\n\n//#endregion\n\n//#region ----- Settings Provider -----\n\n@Injectable()\nexport class AXESourceControlSettingsProvider implements AXPSettingDefinitionProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // Only register when the edition entitles Source Control (e.g. not Safetyminder).\n if (!this.sessionService.isModuleEnabled(RootConfig.module.name)) {\n return;\n }\n\n if (context.hasGroup(SC_SETTINGS_GROUP)) {\n return;\n }\n\n context\n .addGroup(\n SC_SETTINGS_GROUP,\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n RootConfig.module.icon,\n `${I18N}.group.title`,\n 47,\n )\n .addSection('configuration', `${I18N}.section-title`, `${I18N}.section-description`)\n .addSetting({\n key: AXESourceControlExtensionSettings.EnabledProjectTypeIds,\n title: `${I18N}.enabled-project-types.title`,\n scope: 'T',\n overridableAt: [],\n isInherited: false,\n defaultValue: [AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID],\n widget: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${PmRootConfig.module.name}.${PmRootConfig.entities.projectType.name}`,\n look: 'select',\n multiple: true,\n textField: 'title',\n valueField: 'id',\n hasClearButton: true,\n },\n },\n description: `${I18N}.enabled-project-types.description`,\n })\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPIntegrationRuntimeService, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID,\n AXE_SC_PROVIDER_IDS,\n AXESourceControlExtensionSettings,\n RootConfig,\n type AXESourceControlProjectSourceControlLinkEntityModel,\n} from '@acorex-platform/extension-source-control-core-client/contracts';\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Expression scope namespace (no hyphens — safe for `with (scope)` eval). */\nexport const AXE_SOURCE_CONTROL_EXPRESSION_SCOPE = 'SourceControlExtension';\n\n//#endregion\n\n//#region ----- Provider -----\n\nexport class AXESourceControlProjectLinkExpressionEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly integrationRuntime = inject(AXPIntegrationRuntimeService);\n\n //#endregion\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(AXE_SOURCE_CONTROL_EXPRESSION_SCOPE, {\n isEnabledForProject: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const projectTypeId = await this.resolveProjectTypeId(platformProjectIdRaw);\n return this.isProjectTypeEnabled(projectTypeId);\n },\n isEnabledForProjectType: async (projectTypeIdRaw?: unknown): Promise<boolean> => {\n return this.isProjectTypeEnabled(this.coerceId(projectTypeIdRaw));\n },\n hasRepoLink: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const platformProjectId = this.coerceId(platformProjectIdRaw);\n if (!platformProjectId) {\n return false;\n }\n\n const link = await this.findLinkByProjectId(platformProjectId);\n return Boolean(link);\n },\n hasAnyConnection: async (): Promise<boolean> => {\n for (const providerId of AXE_SC_PROVIDER_IDS) {\n try {\n await this.integrationRuntime.getConnection({ providerId, connectionScope: 'tenant' });\n return true;\n } catch {\n // try next provider\n }\n }\n return false;\n },\n });\n }\n\n //#region ----- Enabled project types -----\n\n private coerceId(raw?: unknown): string {\n if (typeof raw === 'string') {\n return raw.trim();\n }\n if (raw && typeof raw === 'object' && 'id' in raw) {\n return String((raw as { id: unknown }).id ?? '').trim();\n }\n return '';\n }\n\n private async isProjectTypeEnabled(projectTypeId: string): Promise<boolean> {\n if (!projectTypeId) {\n return false;\n }\n const enabledIds = await this.resolveEnabledProjectTypeIds();\n return enabledIds.includes(projectTypeId);\n }\n\n private async resolveProjectTypeId(platformProjectIdRaw?: unknown): Promise<string> {\n const platformProjectId = this.coerceId(platformProjectIdRaw);\n if (!platformProjectId) {\n return '';\n }\n\n const project = (await this.entityService\n .withEntity(PmRootConfig.module.name, PmRootConfig.entities.project.name)\n .data<string, AXMProjectManagementProjectEntityModel>()\n .byKey(platformProjectId)) as AXMProjectManagementProjectEntityModel | null;\n\n return String(project?.projectTypeId ?? '').trim();\n }\n\n private async resolveEnabledProjectTypeIds(): Promise<string[]> {\n const raw = await this.settingsService.get(AXESourceControlExtensionSettings.EnabledProjectTypeIds);\n const fromSetting = Array.isArray(raw)\n ? raw.map((item) => String(item).trim()).filter(Boolean)\n : [];\n return fromSetting.length > 0 ? fromSetting : [AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID];\n }\n\n //#endregion\n\n private async findLinkByProjectId(\n projectId: string,\n ): Promise<AXESourceControlProjectSourceControlLinkEntityModel | null> {\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectSourceControlLink.name)\n .data<string, AXESourceControlProjectSourceControlLinkEntityModel>()\n .query({\n skip: 0,\n take: 1,\n filter: {\n field: 'projectId',\n operator: { type: 'equal' },\n value: projectId,\n },\n });\n\n return result.items?.[0] ?? null;\n }\n}\n\n//#endregion\n","//#region ----- Constants -----\n\n/** Component key for the project source-control repository page tab. */\nexport const SOURCE_CONTROL_PAGE_COMPONENT_KEY = 'entity-source-control-page';\n\n//#endregion\n","//#region ----- Imports -----\r\n\r\nimport { AXPEntityModifierProvider } from '@acorex-platform/framework-client/layout/entity';\r\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\r\nimport { AXE_SOURCE_CONTROL_EXPRESSION_SCOPE } from './source-control-project-link-expression-evaluator-scope.provider';\r\nimport { SOURCE_CONTROL_PAGE_COMPONENT_KEY } from './source-control-page/source-control-page.constants';\r\n\r\n//#endregion\r\n\r\n//#region ----- Constants -----\r\n\r\nconst SOURCE_CONTROL_PAGE_ORDER = 145_000;\r\n\r\n//#endregion\r\n\r\n//#region ----- Modifier -----\r\n\r\n/** Adds a source-control repository tab to ProjectManagement.Project detail views. */\r\nexport const AXESourceControlProjectEntityModifier: AXPEntityModifierProvider = {\r\n entityName: PmRootConfig.entities.project.name,\r\n order: 55,\r\n modifier: (ctx) => {\r\n if (ctx.module.get() !== PmRootConfig.module.name) {\r\n return;\r\n }\r\n\r\n ctx.entity.pages ??= [];\r\n const page = {\r\n componentKey: SOURCE_CONTROL_PAGE_COMPONENT_KEY,\r\n title: '@extensions-source-control:pages.repository.title',\r\n icon: 'fa-light fa-code-branch',\r\n layout: { order: SOURCE_CONTROL_PAGE_ORDER },\r\n /**\r\n * Required for update/edit form wizard steps.\r\n * Details view always includes entity.pages; empty state handles unlinked records.\r\n */\r\n appearOn: { update: true },\r\n hidden: `{{ !(await ${AXE_SOURCE_CONTROL_EXPRESSION_SCOPE}.isEnabledForProjectType(context.eval(\"projectTypeId\"))) }}`,\r\n };\r\n const existingIndex = ctx.entity.pages.findIndex(\r\n (entry) => entry.componentKey === SOURCE_CONTROL_PAGE_COMPONENT_KEY,\r\n );\r\n if (existingIndex >= 0) {\r\n ctx.entity.pages[existingIndex] = page;\r\n } else {\r\n ctx.entity.pages.push(page);\r\n }\r\n },\r\n};\r\n\r\n//#endregion\r\n","//#region ----- Imports -----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { SOURCE_CONTROL_PAGE_COMPONENT_KEY } from './source-control-page.constants';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXESourceControlPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: SOURCE_CONTROL_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./source-control-page.component').then((m) => m.AXESourceControlPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\r\n\r\nimport {\r\n AXP_INTEGRATION_DOMAIN_PROVIDER,\r\n AXP_SETTING_DEFINITION_PROVIDER,\r\n} from '@acorex-platform/framework-client/common';\r\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_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 { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\r\nimport { RootConfig } from '@acorex-platform/extension-source-control-core-client/contracts';\r\nimport { NgModule } from '@angular/core';\r\nimport { AXESourceControlEntityProvider } from './entity.provider';\r\nimport { AXESourceControlIntegrationDomainProvider } from './integration/source-control.integration-domain.provider';\r\nimport { AXESourceControlSettingsProvider } from './settings.provider';\r\nimport { AXESourceControlProjectLinkExpressionEvaluatorScopeProvider } from './features/project-management/source-control-project-link-expression-evaluator-scope.provider';\r\nimport { AXESourceControlProjectEntityModifier } from './features/project-management/project-source-control.entity-modifier';\r\nimport { AXESourceControlPageComponentProvider } from './features/project-management/source-control-page/source-control-page-component.provider';\r\n\r\n//#endregion\r\n\r\n//#region ----- Module -----\r\n\r\n@NgModule({\r\n providers: [\r\n { provide: AXP_SETTING_DEFINITION_PROVIDER, useClass: AXESourceControlSettingsProvider, multi: true },\r\n { provide: AXP_INTEGRATION_DOMAIN_PROVIDER, useClass: AXESourceControlIntegrationDomainProvider, multi: true },\r\n { provide: AXP_ENTITY_DEFINITION_LOADER, useClass: AXESourceControlEntityProvider, multi: true },\r\n { provide: AXP_ENTITY_MODIFIER, useValue: AXESourceControlProjectEntityModifier, multi: true },\r\n {\r\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\r\n useClass: AXESourceControlProjectLinkExpressionEvaluatorScopeProvider,\r\n multi: true,\r\n },\r\n {\r\n provide: AXP_PAGE_COMPONENT_PROVIDER,\r\n useClass: AXESourceControlPageComponentProvider,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class AXESourceControlExtensionModule {}\r\n\r\n//#endregion\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N","PmRootConfig"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@acorex-platform/extension-source-control-core-client",
3
- "version": "0.0.38",
3
+ "version": "0.0.46",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0 || ^22.0.0",
7
7
  "@angular/core": "^21.0.0 || ^22.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@acorex-platform/extension-source-control-core-domain": "0.0.38",
10
+ "@acorex-platform/extension-source-control-core-domain": "0.0.46",
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "module": "fesm2022/acorex-platform-extension-source-control-core-client.mjs",
@@ -1,4 +1,4 @@
1
- import { AXPActionMenuItem } from '@acorex-platform/framework-shared/core';
1
+ import { AXPModuleManifest, AXPActionMenuItem } from '@acorex-platform/framework-shared/core';
2
2
  import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
3
3
 
4
4
  declare const RootConfig: {
@@ -22,6 +22,8 @@ declare const RootConfig: {
22
22
  };
23
23
  };
24
24
 
25
+ declare const SourceControlExtensionManifest: AXPModuleManifest;
26
+
25
27
  declare const AXESourceControlExtensionSettings: {
26
28
  readonly EnabledProjectTypeIds: "SourceControlExtension:Setting:EnabledProjectTypeIds";
27
29
  };
@@ -132,5 +134,5 @@ interface AXESourceControlBranchActionsHookPayload {
132
134
  actions: AXPActionMenuItem[];
133
135
  }
134
136
 
135
- export { AXESourceControlCommandKeys, AXESourceControlExtensionSettings, AXESourceControlHookKeys, AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID, AXE_SC_DOMAIN_ID, AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB, AXE_SC_PROVIDER_IDS, RootConfig };
137
+ export { AXESourceControlCommandKeys, AXESourceControlExtensionSettings, AXESourceControlHookKeys, AXE_SC_DEFAULT_ENABLED_PROJECT_TYPE_ID, AXE_SC_DOMAIN_ID, AXE_SC_PROVIDER_GITHUB, AXE_SC_PROVIDER_GITLAB, AXE_SC_PROVIDER_IDS, RootConfig, SourceControlExtensionManifest };
136
138
  export type { AXESourceControlBranchActionsHookPayload, AXESourceControlBranchDto, AXESourceControlCommitActionsHookPayload, AXESourceControlCommitDto, AXESourceControlLinkRepositoryCommandInput, AXESourceControlLinkRepositoryPayload, AXESourceControlListBranchesRequest, AXESourceControlListBranchesResponse, AXESourceControlListCommitsRequest, AXESourceControlListCommitsResponse, AXESourceControlProjectSourceControlLinkEntityModel, AXESourceControlProviderId, AXESourceControlRemoteRepoDto, AXESourceControlSearchReposRequest, AXESourceControlSearchReposResponse, AXESourceControlUnlinkRepositoryCommandInput };