@acorex-platform/extension-project-management-jira-client 1.0.1 → 1.0.2
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-platform-extension-project-management-jira-client-connect-jira.command-w724jEDQ.mjs +215 -0
- package/fesm2022/acorex-platform-extension-project-management-jira-client-connect-jira.command-w724jEDQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-extension-project-management-jira-client-contracts.mjs +72 -67
- package/fesm2022/acorex-platform-extension-project-management-jira-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-extension-project-management-jira-client.mjs +90 -692
- package/fesm2022/acorex-platform-extension-project-management-jira-client.mjs.map +1 -1
- package/i18n/en-AU/extensions-jira.json +14 -4
- package/i18n/en-US/extensions-jira.json +14 -4
- package/i18n/fa-IR/extensions-jira.json +14 -4
- package/package.json +3 -3
- package/types/acorex-platform-extension-project-management-jira-client-contracts.d.ts +32 -66
- package/types/acorex-platform-extension-project-management-jira-client.d.ts +11 -54
- package/fesm2022/acorex-platform-extension-project-management-jira-client-connect-jira.command-BhnLiDk0.mjs +0 -355
- package/fesm2022/acorex-platform-extension-project-management-jira-client-connect-jira.command-BhnLiDk0.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-extension-project-management-jira-client.mjs","sources":["../../../../libs/extensions/project-management/jira/client/src/lib/entity.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/jira-project/jira-project-status.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-management/jira-project-link-expression-evaluator-scope.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-management/project-jira.entity-modifier.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo-key.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration-runtime.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.connection-established.handler.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/menu.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/jira-extension.module.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-mark.paths.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.component.ts","../../../../libs/extensions/project-management/jira/client/src/lib/features/project-import/jira-project-import-popup.component.ts","../../../../libs/extensions/project-management/jira/client/src/acorex-platform-extension-project-management-jira-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-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Entity Provider ----\n\n@Injectable()\nexport class AXEJiraEntityProvider 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 switch (entityName) {\n case RootConfig.entities.jiraInstance.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraInstanceFactory();\n case RootConfig.entities.jiraProject.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectFactory();\n case RootConfig.entities.jiraIssueType.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraIssueTypeFactory();\n case RootConfig.entities.jiraField.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraFieldFactory();\n case RootConfig.entities.jiraProjectIssueType.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectIssueTypeFactory();\n case RootConfig.entities.jiraProjectIssueTypeField.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraProjectIssueTypeFieldFactory();\n case RootConfig.entities.jiraWorkflowStatus.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraWorkflowStatusFactory();\n case RootConfig.entities.jiraIssue.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraIssueFactory();\n case RootConfig.entities.jiraWorklog.name:\n return (await import('@acorex-platform/extension-project-management-jira-domain')).jiraWorklogFactory();\n default:\n return null;\n }\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 { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Status Helper ----\n\nconst status = (\n name: string,\n title: string,\n color: string,\n options: Partial<AXPStatusDefinition> = {},\n): AXPStatusDefinition => ({\n name,\n title,\n color,\n ...options,\n});\n\n//#endregion\n\n//#region ---- Jira Project Status Provider ----\n\n/**\n * Operational sync status for mirrored Jira projects (not Jira workflow statuses).\n */\nexport class AXEJiraProjectStatusProvider extends AXPStatusProvider {\n readonly key = 'extensions-jira.status.jira-project';\n\n readonly statuses: AXPStatusDefinition[] = [\n status('Active', '@extensions-jira:projects.statuses.active', 'success', {\n order: 1,\n generateView: true,\n isInitial: true,\n icon: 'fa-light fa-circle-check',\n }),\n status('Archived', '@extensions-jira:projects.statuses.archived', 'neutral', {\n order: 2,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-box-archive',\n }),\n status('SyncError', '@extensions-jira:projects.statuses.sync-error', 'danger', {\n order: 3,\n generateView: true,\n icon: 'fa-light fa-triangle-exclamation',\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: 'Active',\n to: 'Archived',\n title: '@extensions-jira:projects.transitions.archive',\n },\n {\n from: 'Archived',\n to: 'Active',\n title: '@extensions-jira:projects.transitions.activate',\n },\n {\n from: 'Active',\n to: 'SyncError',\n title: '@extensions-jira:projects.transitions.mark-sync-error',\n },\n {\n from: 'SyncError',\n to: 'Active',\n title: '@extensions-jira:projects.transitions.resolve-sync-error',\n },\n ];\n\n readonly defaultStatus = 'Active';\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPIntegrationRuntimeService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraProjectEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\n\n//#endregion\n\n/** Expression scope namespace (no hyphens — safe for `with (scope)` eval). */\nexport const AXE_JIRA_EXPRESSION_SCOPE = 'JiraExtension';\n\n//#region ---- Provider ----\n\nexport class AXEJiraProjectLinkExpressionEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly entityService = inject(AXPEntityService);\n private readonly integrationRuntime = inject(AXPIntegrationRuntimeService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(AXE_JIRA_EXPRESSION_SCOPE, {\n hasProjectLink: async (platformProjectIdRaw?: unknown): Promise<boolean> => {\n const platformProjectId = typeof platformProjectIdRaw === 'string' ? platformProjectIdRaw.trim() : '';\n if (!platformProjectId) {\n return false;\n }\n\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jiraProject.name)\n .data<string, AXEJiraProjectEntityModel>()\n .query({\n skip: 0,\n take: 1,\n filter: {\n field: 'platformProjectId',\n operator: { type: 'equal' },\n value: platformProjectId,\n },\n });\n\n return (result.items?.length ?? 0) > 0;\n },\n hasJiraConnection: async (): Promise<boolean> => {\n try {\n await this.integrationRuntime.getConnection({ providerId: 'jira', connectionScope: 'tenant' });\n return true;\n } catch {\n return false;\n }\n },\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSystemActionType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport {\n actionExists,\n AXPEntityModifierProvider,\n ensureListActions,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { RootConfig as PmRootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport { AXE_JIRA_EXPRESSION_SCOPE } from './jira-project-link-expression-evaluator-scope.provider';\n\n//#endregion\n\nconst IMPORT_ORDER = 35;\nconst SYNC_ORDER = 36;\n\nfunction buildImportAction(): AXPEntityAction {\n return {\n name: AXEJiraCommandKeys.ProjectImportFromJira,\n title: '@extensions-jira:actions.import-from-jira.title',\n command: { name: AXEJiraCommandKeys.ProjectImportFromJira },\n priority: 'secondary',\n type: AXPSystemActionType.Import,\n icon: 'fa-brands fa-jira',\n scope: AXPEntityCommandScope.TypeLevel,\n order: IMPORT_ORDER,\n };\n}\n\nfunction buildSyncAction(): AXPEntityAction {\n return {\n name: AXEJiraCommandKeys.ProjectSync,\n title: '@extensions-jira:actions.sync.title',\n command: {\n name: AXEJiraCommandKeys.ProjectSync,\n options: { platformProjectId: '{{ context.eval(\"id\") }}' },\n },\n priority: 'secondary',\n type: AXPSystemActionType.Sync,\n icon: 'fa-light fa-arrows-rotate',\n scope: AXPEntityCommandScope.Individual,\n order: SYNC_ORDER,\n hidden: `{{ !(await ${AXE_JIRA_EXPRESSION_SCOPE}.hasProjectLink(context.eval(\"id\"))) }}`,\n };\n}\n\n/** Adds Jira import/sync actions to ProjectManagement.Project views. */\nexport const AXEJiraProjectEntityModifier: AXPEntityModifierProvider = {\n entityName: PmRootConfig.entities.project.name,\n order: 50,\n modifier: (ctx) => {\n if (ctx.module.get() !== PmRootConfig.module.name) {\n return;\n }\n\n ensureListActions(ctx);\n\n ctx.interfaces.update((interfaces) => {\n const next = (interfaces ?? {}) as Record<string, unknown>;\n const master = (next['master'] ?? {}) as Record<string, unknown>;\n const list = (master['list'] ?? { actions: [], views: [] }) as Record<string, unknown>;\n const listActions = (list['actions'] ?? []) as AXPEntityAction[];\n\n if (!actionExists(listActions, AXEJiraCommandKeys.ProjectImportFromJira)) {\n listActions.push(buildImportAction());\n }\n list['actions'] = listActions;\n master['list'] = list;\n\n const single = master['single'] as Record<string, unknown> | undefined;\n if (single) {\n const singleActions = (single['actions'] ?? []) as AXPEntityAction[];\n if (!actionExists(singleActions, AXEJiraCommandKeys.ProjectSync)) {\n singleActions.push(buildSyncAction());\n }\n single['actions'] = singleActions;\n }\n\n next['master'] = master;\n return next as typeof interfaces;\n });\n },\n};\n\n//#endregion\n","//#region ---- Jira logo registry key ----\n\nexport const axpJiraLogoKey = 'jira' as const;\n\n//#endregion\n","import { AXP_INTEGRATION_AUTH_METHOD_TYPE, AXP_INTEGRATION_CAPABILITY, AXP_INTEGRATION_CONNECTION_SCOPE, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPIntegrationProvider,\n AXPIntegrationProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { AXEJiraCommandKeys, RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { axpJiraLogoKey } from '../brand/jira-logo-key';\n\n@Injectable()\nexport class AXEJiraIntegrationProvider implements AXPIntegrationProvider {\n async provide(context: AXPIntegrationProviderContext): Promise<void> {\n const I18N = `@${RootConfig.config.i18n}:integration`;\n\n context.register({\n domainId: 'project-management',\n id: 'jira',\n module: RootConfig.module.name,\n displayName: `${I18N}.display-name`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n logoKey: axpJiraLogoKey,\n capabilities: [\n AXP_INTEGRATION_CAPABILITY.IssueTracking,\n AXP_INTEGRATION_CAPABILITY.Sync,\n AXP_INTEGRATION_CAPABILITY.TimeLogging,\n ],\n connectionScopes: [AXP_INTEGRATION_CONNECTION_SCOPE.Tenant, AXP_INTEGRATION_CONNECTION_SCOPE.User],\n allowMultipleConnections: true,\n defaultConnectionKey: 'default',\n connectCommandKey: AXEJiraCommandKeys.ConnectionConnect,\n authMethods: [\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Pat,\n label: `${I18N}.auth.pat.label`,\n instructions: `${I18N}.auth.pat.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.pat.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'token',\n options: { placeholder: `${I18N}.auth.pat.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Basic,\n label: `${I18N}.auth.basic.label`,\n instructions: `${I18N}.auth.basic.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.basic.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'username',\n options: { placeholder: `${I18N}.auth.basic.username.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'password',\n options: { placeholder: `${I18N}.auth.basic.password.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n label: `${I18N}.auth.api-token.label`,\n instructions: `${I18N}.auth.api-token.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'siteUrl',\n options: { placeholder: `${I18N}.auth.api-token.site-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'email',\n options: { placeholder: `${I18N}.auth.api-token.email.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'apiToken',\n options: { placeholder: `${I18N}.auth.api-token.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.OAuth2,\n label: `${I18N}.auth.oauth.label`,\n instructions: `${I18N}.auth.oauth.instructions`,\n usesRedirect: true,\n supportsRefresh: true,\n supportsRevoke: false,\n supportsValidation: true,\n defaultScopes: ['read:jira-work', 'read:jira-user'],\n fields: [],\n },\n ],\n });\n }\n}\n\n//#endregion\n","import { AXP_INTEGRATION_AUTH_METHOD_TYPE, AXP_INTEGRATION_CONNECTION_STATUS, type AXPIntegrationProviderRuntimeHooks, type AXPIntegrationRuntimeContext, type AXPIntegrationValidationResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_INTEGRATION_SECRET_STORE,\n type AXPIntegrationRuntimeProvider,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, trim } from 'lodash-es';\n\n@Injectable()\nexport class AXEJiraIntegrationRuntimeProvider implements AXPIntegrationRuntimeProvider {\n readonly providerId = 'jira';\n\n private readonly secretStore = inject(AXP_INTEGRATION_SECRET_STORE, { optional: true });\n\n async getHooks(): Promise<AXPIntegrationProviderRuntimeHooks> {\n return {\n validateConnection: (ctx) => this.validateConnection(ctx),\n createClient: (ctx) => this.createClient(ctx),\n };\n }\n\n private async validateConnection(ctx: AXPIntegrationRuntimeContext): Promise<AXPIntegrationValidationResult> {\n if (!this.secretStore) {\n return { valid: false, status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid, errorMessage: 'Secret store unavailable.' };\n }\n\n try {\n const credentials = await this.secretStore.resolve(ctx.secretRef, ctx);\n const token =\n credentials.token ??\n credentials.apiToken ??\n credentials.accessToken;\n\n if (!trim(defaultTo(token, ''))) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'No token available for Jira connection.',\n };\n }\n\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountName: defaultTo(ctx.instanceUrl, 'Jira'),\n };\n } catch {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'Failed to validate Jira credentials.',\n };\n }\n }\n\n private async createClient(ctx: AXPIntegrationRuntimeContext): Promise<{ token: string; baseUrl?: string }> {\n if (!this.secretStore) {\n throw new Error('Secret store unavailable.');\n }\n\n const credentials = await this.secretStore.resolve(ctx.secretRef, ctx);\n const token =\n credentials.token ??\n credentials.apiToken ??\n credentials.accessToken;\n\n if (!trim(defaultTo(token, ''))) {\n throw new Error('Jira connection has no usable token.');\n }\n\n return {\n token: token!,\n baseUrl: defaultTo(ctx.instanceUrl, undefined),\n };\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_INTEGRATION_CONNECTION_ESTABLISHED, type AXPIntegrationConnectionEstablishedHandler } from '@acorex-platform/framework-client/common';\nimport { AXP_INTEGRATION_CONNECTION_SCOPE, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { trim } from 'lodash-es';\n\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\n\n//#endregion\n\n//#region ---- Handler ----\n\n@Injectable()\nexport class AXEJiraConnectionEstablishedHandler implements AXPIntegrationConnectionEstablishedHandler {\n readonly providerId = 'jira';\n\n private readonly entityService = inject(AXPEntityService);\n\n async onEstablished(connection: AXPSafeIntegrationConnectionDto): Promise<void> {\n if (connection.connectionScope !== AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return;\n }\n\n const connectionKey = trim(connection.connectionKey);\n if (!connectionKey) {\n return;\n }\n\n const accessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.jiraInstance.name)\n .data<string, AXEJiraInstanceEntityModel>();\n\n const result = await accessor.query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'name', operator: { type: 'equal' }, value: connectionKey }],\n },\n });\n\n const instance = result.items?.[0];\n if (!instance || instance.integrationConnectionId === connection.id) {\n return;\n }\n\n await accessor.update(instance.id, { integrationConnectionId: connection.id });\n }\n}\n\nexport const provideJiraConnectionEstablishedHandler = {\n provide: AXP_INTEGRATION_CONNECTION_ESTABLISHED,\n useClass: AXEJiraConnectionEstablishedHandler,\n multi: true,\n};\n\n//#endregion\n","import {\n AXP_LOGO_PROVIDER,\n type AXPLogoProvider,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\nimport { axpJiraLogoKey } from './jira-logo-key';\n\nconst jiraLogoProvider: AXPLogoProvider = {\n key: axpJiraLogoKey,\n resolve: async (request: AXPLogoRequest): Promise<AXPLogoView> => ({\n kind: 'component',\n load: () => import('./jira-logo.component').then((module) => module.AXEJiraLogoComponent),\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n }),\n};\n\nexport const AXE_JIRA_LOGO_PROVIDER = {\n provide: AXP_LOGO_PROVIDER,\n useValue: jiraLogoProvider,\n multi: true,\n} as const;\n","//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXEJiraMenuKeys,\n RootConfig,\n AXPAdministrationPermissionKeys\n} from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n@Injectable()\nexport class AXEJiraMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const policy = {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.MaintainConnections],\n };\n\n const configMenu = context.find(AXPCommonMenuKeys.Configuration);\n if (!context.find(AXEJiraMenuKeys.JiraExtensionConfig).exists) {\n configMenu.addItems([\n {\n name: AXEJiraMenuKeys.JiraExtensionConfig,\n text: '@extensions-jira:module.menus.configuration.title',\n icon: module.icon,\n type: 'menu',\n priority: 8935,\n policy,\n children: [],\n },\n ]);\n }\n\n const jiraConfig = context.find(AXEJiraMenuKeys.JiraExtensionConfig);\n const catalogPolicy = {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n };\n\n jiraConfig.addItems([\n {\n name: AXEJiraMenuKeys.Instances,\n text: RootConfig.entities.jiraInstance.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraInstance.name),\n icon: RootConfig.entities.jiraInstance.icon,\n priority: 1,\n policy,\n },\n {\n name: AXEJiraMenuKeys.IssueTypes,\n text: RootConfig.entities.jiraIssueType.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraIssueType.name),\n icon: RootConfig.entities.jiraIssueType.icon,\n priority: 3,\n policy: catalogPolicy,\n },\n {\n name: AXEJiraMenuKeys.Fields,\n text: RootConfig.entities.jiraField.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraField.name),\n icon: RootConfig.entities.jiraField.icon,\n priority: 4,\n policy: catalogPolicy,\n },\n {\n name: AXEJiraMenuKeys.Issues,\n text: RootConfig.entities.jiraIssue.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraIssue.name),\n icon: RootConfig.entities.jiraIssue.icon,\n priority: 5,\n policy: {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n },\n },\n {\n name: AXEJiraMenuKeys.Worklogs,\n text: RootConfig.entities.jiraWorklog.titlePlural,\n path: this.entityService.createPath(module.name, RootConfig.entities.jiraWorklog.name),\n icon: RootConfig.entities.jiraWorklog.icon,\n priority: 6,\n policy: {\n features: [module.name],\n permissions: [AXPAdministrationPermissionKeys.ViewIntegrations],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMIntegrationManagementModule } from '@acorex-platform/module-integration-management-client';\nimport {\n AXP_INTEGRATION_PROVIDER,\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_MENU_PROVIDER,\n AXP_STATUS_PROVIDERS,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { AXEJiraEntityProvider } from './entity.provider';\nimport { AXEJiraProjectStatusProvider } from './features/jira-project/jira-project-status.provider';\nimport { AXEJiraProjectLinkExpressionEvaluatorScopeProvider } from './features/project-management/jira-project-link-expression-evaluator-scope.provider';\nimport { AXEJiraProjectEntityModifier } from './features/project-management/project-jira.entity-modifier';\nimport { AXEJiraIntegrationProvider } from './integration/jira.integration.provider';\nimport { AXEJiraIntegrationRuntimeProvider } from './integration/jira.integration-runtime.provider';\nimport { provideJiraConnectionEstablishedHandler } from './integration/jira.connection-established.handler';\nimport { AXE_JIRA_LOGO_PROVIDER } from './brand/jira-logo.provider';\nimport { AXEJiraMenuProvider } from './menu.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [AXMIntegrationManagementModule],\n providers: [\n AXE_JIRA_LOGO_PROVIDER,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXEJiraMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXEJiraEntityProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXEJiraProjectEntityModifier,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXEJiraProjectLinkExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXEJiraProjectStatusProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_PROVIDER,\n useClass: AXEJiraIntegrationProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_RUNTIME_PROVIDER,\n useClass: AXEJiraIntegrationRuntimeProvider,\n multi: true,\n },\n provideJiraConnectionEstablishedHandler,\n provideCommandSetups([\n {\n key: AXEJiraCommandKeys.ConnectionConnect,\n command: () => import('./features/connect/connect-jira.command').then((c) => c.ConnectJiraCommand),\n },\n ]),\n ],\n})\nexport class AXEJiraExtensionModule {}\n\n//#endregion\n","//#region ---- Atlassian / Jira mark vector paths ----\n\nexport const AXE_JIRA_MARK_BLUE = '#2684FF';\n\n/** Left sail */\nexport const AXE_JIRA_MARK_LEFT_PATH =\n 'M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z';\n\n/** Right sail */\nexport const AXE_JIRA_MARK_RIGHT_PATH =\n 'M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z';\n\n//#endregion\n","import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport {\n AXE_JIRA_MARK_BLUE,\n AXE_JIRA_MARK_LEFT_PATH,\n AXE_JIRA_MARK_RIGHT_PATH,\n} from './jira-mark.paths';\n\n//#region ---- Jira brand logo (owned by Jira extension) ----\n\n@Component({\n selector: 'axe-jira-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @switch (resolvedAppearance()) {\n @case ('monochrome') {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" [attr.d]=\"leftPath\" />\n <path fill=\"currentColor\" [attr.d]=\"rightPath\" />\n </svg>\n }\n @default {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path [attr.fill]=\"markBlue\" [attr.d]=\"leftPath\" />\n <path [attr.fill]=\"markBlue\" [attr.d]=\"rightPath\" />\n </svg>\n }\n }\n `,\n})\nexport class AXEJiraLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n\n protected readonly leftPath = AXE_JIRA_MARK_LEFT_PATH;\n protected readonly rightPath = AXE_JIRA_MARK_RIGHT_PATH;\n protected readonly markBlue = AXE_JIRA_MARK_BLUE;\n\n protected readonly resolvedAppearance = computed(() => {\n const value = this.appearance();\n return value === 'monochrome' ? 'monochrome' : 'colored';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXComboBoxComponent, type AXComboBoxItem, type AXComboBoxValue } from '@acorex/components/combo-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXEJiraProjectSyncStrategy } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { AXE_JIRA_PROJECT_SYNC_STRATEGIES } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport type { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { AXEJiraRemoteProject } from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXEJiraProjectImportPopupData {\n instance: AXEJiraInstanceEntityModel;\n defaultProjectTypeId: string;\n projectTypes: Array<{ id: string; title: string }>;\n remoteProjects: AXEJiraRemoteProject[];\n alreadyLinkedJiraIds: Set<string>;\n}\n\nexport interface AXEJiraProjectImportPopupResult {\n defaultProjectTypeId: string;\n rows: Array<{\n remote: AXEJiraRemoteProject;\n selected: boolean;\n syncStrategy: AXEJiraProjectSyncStrategy;\n }>;\n}\n\ninterface ImportRowState {\n remote: AXEJiraRemoteProject;\n selected: boolean;\n syncStrategy: AXEJiraProjectSyncStrategy;\n alreadyLinked: boolean;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axe-jira-project-import-popup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXComboBoxComponent,\n AXTranslationModule,\n ],\n template: `\n <div class=\"flex flex-col gap-4 p-4 max-h-[70vh] overflow-auto\">\n <div class=\"flex flex-col gap-1\">\n <span class=\"text-sm font-medium\">\n {{ '@extensions-jira:import.popup.default-project-type' | translate | async }}\n </span>\n <ax-combo-box\n [items]=\"projectTypeComboItems\"\n [searchable]=\"false\"\n [value]=\"defaultProjectTypeId()\"\n (onValueChanged)=\"handleProjectTypeChange($event)\"\n ></ax-combo-box>\n </div>\n\n @if (loading()) {\n <ax-loading></ax-loading>\n } @else if (rows().length === 0) {\n <p class=\"text-sm opacity-70\">\n {{ '@extensions-jira:import.popup.empty' | translate | async }}\n </p>\n } @else {\n <table class=\"w-full text-sm\">\n <thead>\n <tr class=\"border-b\">\n <th class=\"p-2 text-start\"></th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.key' | translate | async }}</th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.name' | translate | async }}</th>\n <th class=\"p-2 text-start\">{{ '@extensions-jira:import.popup.columns.strategy' | translate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track row.remote.id) {\n <tr class=\"border-b border-opacity-20\">\n <td class=\"p-2\">\n <ax-check-box\n [ngModel]=\"row.selected\"\n [disabled]=\"row.alreadyLinked\"\n (onValueChanged)=\"toggleRow(row.remote.id, $event)\"\n ></ax-check-box>\n </td>\n <td class=\"p-2\">{{ row.remote.key }}</td>\n <td class=\"p-2\">{{ row.remote.name }}</td>\n <td class=\"p-2\">\n <ax-combo-box\n class=\"min-w-40\"\n [items]=\"strategyOptions\"\n [searchable]=\"false\"\n [value]=\"row.syncStrategy\"\n [disabled]=\"!row.selected\"\n (onValueChanged)=\"changeStrategy(row.remote.id, $event)\"\n ></ax-combo-box>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"outline\"\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n (onClick)=\"close()\"\n ></ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!hasSelection()\"\n [text]=\"'@extensions-jira:import.popup.confirm' | translate | async\"\n (onClick)=\"confirm()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n})\nexport class AXEJiraProjectImportPopupComponent extends AXBasePageComponent {\n protected loading = signal(false);\n protected defaultProjectTypeId = signal('');\n protected rows = signal<ImportRowState[]>([]);\n\n instance!: AXEJiraInstanceEntityModel;\n projectTypes: Array<{ id: string; title: string }> = [];\n remoteProjects: AXEJiraRemoteProject[] = [];\n alreadyLinkedJiraIds = new Set<string>();\n\n protected readonly strategyOptions: AXComboBoxItem[] =\n AXE_JIRA_PROJECT_SYNC_STRATEGIES.map((id) => ({\n id,\n text: `@extensions-jira:import.sync-strategy.${id}`,\n value: id,\n }));\n\n protected get projectTypeComboItems(): AXComboBoxItem[] {\n return this.projectTypes.map((type) => ({\n id: type.id,\n text: type.title,\n value: type.id,\n }));\n }\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.defaultProjectTypeId.set(this.projectTypes[0]?.id ?? '');\n this.rows.set(\n this.remoteProjects.map((remote) => ({\n remote,\n selected: !this.alreadyLinkedJiraIds.has(remote.id),\n syncStrategy: 'merge' as AXEJiraProjectSyncStrategy,\n alreadyLinked: this.alreadyLinkedJiraIds.has(remote.id),\n })),\n );\n }\n\n protected handleProjectTypeChange(event: AXValueChangedEvent<AXComboBoxValue>): void {\n const value = event.value;\n this.defaultProjectTypeId.set(typeof value === 'string' ? value : '');\n }\n\n protected toggleRow(remoteId: string, event: AXValueChangedEvent<boolean>): void {\n const selected = !!event.value;\n this.rows.update((items) =>\n items.map((row) => (row.remote.id === remoteId ? { ...row, selected } : row)),\n );\n }\n\n protected changeStrategy(remoteId: string, event: AXValueChangedEvent<AXComboBoxValue>): void {\n const raw = event.value;\n const syncStrategy =\n typeof raw === 'string' && AXE_JIRA_PROJECT_SYNC_STRATEGIES.includes(raw as AXEJiraProjectSyncStrategy)\n ? (raw as AXEJiraProjectSyncStrategy)\n : 'merge';\n this.rows.update((items) =>\n items.map((row) => (row.remote.id === remoteId ? { ...row, syncStrategy } : row)),\n );\n }\n\n protected hasSelection(): boolean {\n return this.rows().some((row) => row.selected && !row.alreadyLinked);\n }\n\n protected confirm(): void {\n const result: AXEJiraProjectImportPopupResult = {\n defaultProjectTypeId: this.defaultProjectTypeId(),\n rows: this.rows()\n .filter((row) => row.selected && !row.alreadyLinked)\n .map((row) => ({\n remote: row.remote,\n selected: true,\n syncStrategy: row.syncStrategy,\n })),\n };\n this.close(result);\n }\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PmRootConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-project-management-jira-client.mjs","sources":["../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo-key.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/integration/jira.integration-runtime.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/settings/jira.settings.provider.ts","../../../../libs/extensions/project-management/jira/client/src/lib/jira-extension.module.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-mark.paths.ts","../../../../libs/extensions/project-management/jira/client/src/lib/brand/jira-logo.component.ts","../../../../libs/extensions/project-management/jira/client/src/acorex-platform-extension-project-management-jira-client.ts"],"sourcesContent":["//#region ---- Jira logo registry key ----\n\nexport const axpJiraLogoKey = 'jira' as const;\n\n//#endregion\n","import { AXP_INTEGRATION_AUTH_METHOD_TYPE, AXP_INTEGRATION_CAPABILITY, AXP_INTEGRATION_CONNECTION_SCOPE, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPIntegrationProvider,\n AXPIntegrationProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable } from '@angular/core';\nimport { AXEJiraCommandKeys, RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { axpJiraLogoKey } from '../brand/jira-logo-key';\n\n@Injectable()\nexport class AXEJiraIntegrationProvider implements AXPIntegrationProvider {\n async provide(context: AXPIntegrationProviderContext): Promise<void> {\n const I18N = `@${RootConfig.config.i18n}:integration`;\n\n context.register({\n domainId: 'project-management',\n id: 'jira',\n module: RootConfig.module.name,\n displayName: `${I18N}.display-name`,\n description: `${I18N}.description`,\n icon: RootConfig.module.icon,\n logoKey: axpJiraLogoKey,\n capabilities: [\n AXP_INTEGRATION_CAPABILITY.IssueTracking,\n AXP_INTEGRATION_CAPABILITY.Sync,\n AXP_INTEGRATION_CAPABILITY.TimeLogging,\n ],\n connectionScopes: [AXP_INTEGRATION_CONNECTION_SCOPE.User],\n allowMultipleConnections: false,\n defaultConnectionKey: 'default',\n connectCommandKey: AXEJiraCommandKeys.ConnectionConnect,\n authMethods: [\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Pat,\n label: `${I18N}.auth.pat.label`,\n instructions: `${I18N}.auth.pat.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.pat.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'token',\n options: { placeholder: `${I18N}.auth.pat.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.Basic,\n label: `${I18N}.auth.basic.label`,\n instructions: `${I18N}.auth.basic.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'baseUrl',\n options: { placeholder: `${I18N}.auth.basic.base-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'username',\n options: { placeholder: `${I18N}.auth.basic.username.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'password',\n options: { placeholder: `${I18N}.auth.basic.password.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken,\n label: `${I18N}.auth.api-token.label`,\n instructions: `${I18N}.auth.api-token.instructions`,\n supportsValidation: true,\n fields: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'siteUrl',\n options: { placeholder: `${I18N}.auth.api-token.site-url.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.TextBox,\n path: 'email',\n options: { placeholder: `${I18N}.auth.api-token.email.placeholder` },\n },\n {\n type: AXPWidgetsList.Editors.PasswordBox,\n path: 'apiToken',\n options: { placeholder: `${I18N}.auth.api-token.token.placeholder` },\n },\n ],\n },\n {\n type: AXP_INTEGRATION_AUTH_METHOD_TYPE.OAuth2,\n label: `${I18N}.auth.oauth.label`,\n instructions: `${I18N}.auth.oauth.instructions`,\n usesRedirect: true,\n supportsRefresh: true,\n supportsRevoke: false,\n supportsValidation: true,\n defaultScopes: ['read:jira-work', 'read:jira-user'],\n fields: [],\n },\n ],\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_INTEGRATION_CONNECTION_STATUS, runtimeCommandPayloadData, type AXPIntegrationConnectionSettingsContext, type AXPIntegrationProviderRuntimeHooks, type AXPIntegrationRuntimeContext, type AXPIntegrationSettingsRowBadge, type AXPIntegrationValidationResult } from '@acorex-platform/framework-shared/core';\nimport { type AXPIntegrationRuntimeProvider } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXMIntegrationConnectionManager } from '@acorex-platform/module-integration-management-client';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, trim } from 'lodash-es';\n\n//#endregion\n\n//#region ---- Runtime Provider ----\n\n@Injectable()\nexport class AXEJiraIntegrationRuntimeProvider implements AXPIntegrationRuntimeProvider {\n readonly providerId = 'jira';\n\n private readonly commandService = inject(AXPCommandService);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n async getHooks(): Promise<AXPIntegrationProviderRuntimeHooks> {\n return {\n validateConnection: (ctx) => this.validateConnection(ctx),\n createClient: (ctx) => this.createClient(ctx),\n getConnectionSettingsBadges: (ctx) => this.recheckStoredConnection(ctx),\n };\n }\n\n private async recheckStoredConnection(\n ctx: AXPIntegrationConnectionSettingsContext,\n ): Promise<AXPIntegrationSettingsRowBadge[]> {\n const config = (ctx.connection.config ?? {}) as { token?: string };\n const token = trim(defaultTo(config.token, ''));\n const instanceUrl = trim(defaultTo(ctx.connection.instanceUrl, ''));\n try {\n const reachable = token && instanceUrl\n ? await this.probeJira(instanceUrl, token)\n : false;\n if (!reachable && ctx.connection.id) {\n await this.connectionManager.updateConnection(ctx.connection.id, {\n status: AXP_INTEGRATION_CONNECTION_STATUS.NotConnected,\n isRevoked: false,\n });\n }\n } catch {\n return [];\n }\n return [];\n }\n\n private async probeJira(instanceUrl: string, token: string): Promise<boolean> {\n const probe = await this.commandService.executeRemote<\n { instanceUrl: string; token: string },\n { displayName?: string }\n >(AXEJiraCommandKeys.ConnectionValidate, { instanceUrl, token });\n return probe?.success === true && !!trim(defaultTo(runtimeCommandPayloadData(probe)?.displayName, ''));\n }\n\n private async validateConnection(ctx: AXPIntegrationRuntimeContext): Promise<AXPIntegrationValidationResult> {\n const token = this.readToken(ctx);\n const instanceUrl = trim(defaultTo(ctx.instanceUrl, ''));\n if (!token || !instanceUrl || !(await this.probeJira(instanceUrl, token))) {\n return {\n valid: false,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Invalid,\n errorMessage: 'Jira rejected the saved address or personal access token.',\n };\n }\n\n return {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n externalAccountName: instanceUrl,\n };\n }\n\n private async createClient(ctx: AXPIntegrationRuntimeContext): Promise<{ token: string; baseUrl?: string }> {\n const token = this.readToken(ctx);\n if (!token) {\n throw new Error('Jira connection has no usable token.');\n }\n\n return {\n token,\n baseUrl: defaultTo(ctx.instanceUrl, undefined),\n };\n }\n\n private readToken(ctx: AXPIntegrationRuntimeContext): string {\n const config = (ctx.config ?? {}) as { token?: string };\n return trim(defaultTo(config.token, ''));\n }\n}\n\n//#endregion\n","import {\n AXP_LOGO_PROVIDER,\n type AXPLogoProvider,\n type AXPLogoRequest,\n type AXPLogoView,\n} from '@acorex-platform/framework-client/core';\nimport { axpJiraLogoKey } from './jira-logo-key';\n\nconst jiraLogoProvider: AXPLogoProvider = {\n key: axpJiraLogoKey,\n resolve: async (request: AXPLogoRequest): Promise<AXPLogoView> => ({\n kind: 'component',\n load: () => import('./jira-logo.component').then((module) => module.AXEJiraLogoComponent),\n inputs: {\n appearance: request.appearance,\n size: request.size,\n },\n }),\n};\n\nexport const AXE_JIRA_LOGO_PROVIDER = {\n provide: AXP_LOGO_PROVIDER,\n useValue: jiraLogoProvider,\n multi: true,\n} as const;\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 { ensureUserIntegrationConnectionsSection } from '@acorex-platform/module-integration-management-client';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/extension-project-management-jira-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst JIRA_I18N = `@${RootConfig.config.i18n}:settings.jira`;\n\nconst JIRA_PROVIDER_ID = 'jira';\n\n//#endregion\n\n//#region ----- Settings Provider -----\n\n@Injectable()\nexport class AXEJiraSettingsProvider implements AXPSettingDefinitionProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n if (!this.sessionService.isModuleEnabled(RootConfig.module.name)) {\n return;\n }\n\n const connections = ensureUserIntegrationConnectionsSection(context);\n if (!connections) {\n return;\n }\n\n connections.addSetting({\n key: 'Jira:Setting:ConnectionPanel',\n title: `${JIRA_I18N}.section-title`,\n scope: 'U',\n overridableAt: [],\n isInherited: false,\n widget: {\n type: AXPWidgetsList.Advanced.IntegrationConnectionsPanel,\n layout: { stacked: true },\n options: {\n providerId: JIRA_PROVIDER_ID,\n connectionScope: 'user',\n },\n },\n });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMIntegrationManagementModule } from '@acorex-platform/module-integration-management-client';\nimport {\n AXP_INTEGRATION_PROVIDER,\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n} from '@acorex-platform/framework-client/common';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\nimport { AXEJiraCommandKeys } from '@acorex-platform/extension-project-management-jira-client/contracts';\nimport { AXEJiraIntegrationProvider } from './integration/jira.integration.provider';\nimport { AXEJiraIntegrationRuntimeProvider } from './integration/jira.integration-runtime.provider';\nimport { AXE_JIRA_LOGO_PROVIDER } from './brand/jira-logo.provider';\nimport { AXEJiraSettingsProvider } from './settings/jira.settings.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [AXMIntegrationManagementModule],\n providers: [\n AXE_JIRA_LOGO_PROVIDER,\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXEJiraSettingsProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_PROVIDER,\n useClass: AXEJiraIntegrationProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_RUNTIME_PROVIDER,\n useClass: AXEJiraIntegrationRuntimeProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXEJiraCommandKeys.ConnectionConnect,\n command: () => import('./features/connect/connect-jira.command').then((c) => c.ConnectJiraCommand),\n },\n ]),\n ],\n})\nexport class AXEJiraExtensionModule {}\n\n//#endregion\n","//#region ---- Atlassian / Jira mark vector paths ----\n\nexport const AXE_JIRA_MARK_BLUE = '#2684FF';\n\n/** Left sail */\nexport const AXE_JIRA_MARK_LEFT_PATH =\n 'M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z';\n\n/** Right sail */\nexport const AXE_JIRA_MARK_RIGHT_PATH =\n 'M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z';\n\n//#endregion\n","import type { AXPLogoAppearance } from '@acorex-platform/framework-client/core';\nimport { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport {\n AXE_JIRA_MARK_BLUE,\n AXE_JIRA_MARK_LEFT_PATH,\n AXE_JIRA_MARK_RIGHT_PATH,\n} from './jira-mark.paths';\n\n//#region ---- Jira brand logo (owned by Jira extension) ----\n\n@Component({\n selector: 'axe-jira-logo',\n host: { class: 'inline-flex items-center justify-center' },\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @switch (resolvedAppearance()) {\n @case ('monochrome') {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path fill=\"currentColor\" [attr.d]=\"leftPath\" />\n <path fill=\"currentColor\" [attr.d]=\"rightPath\" />\n </svg>\n }\n @default {\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path [attr.fill]=\"markBlue\" [attr.d]=\"leftPath\" />\n <path [attr.fill]=\"markBlue\" [attr.d]=\"rightPath\" />\n </svg>\n }\n }\n `,\n})\nexport class AXEJiraLogoComponent {\n appearance = input<AXPLogoAppearance>('colored');\n size = input(20);\n\n protected readonly leftPath = AXE_JIRA_MARK_LEFT_PATH;\n protected readonly rightPath = AXE_JIRA_MARK_RIGHT_PATH;\n protected readonly markBlue = AXE_JIRA_MARK_BLUE;\n\n protected readonly resolvedAppearance = computed(() => {\n const value = this.appearance();\n return value === 'monochrome' ? 'monochrome' : 'colored';\n });\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -27,17 +27,27 @@
|
|
|
27
27
|
"fields": {
|
|
28
28
|
"display-name": "Display Name",
|
|
29
29
|
"instance-url": "Instance URL",
|
|
30
|
-
"token": "Personal Access Token"
|
|
30
|
+
"token": "Personal Access Token",
|
|
31
|
+
"assist-instructions": "Personal Instructions"
|
|
31
32
|
},
|
|
32
33
|
"placeholders": {
|
|
33
34
|
"display-name": "Jira",
|
|
34
35
|
"instance-url": "https://jira.example.com",
|
|
35
|
-
"token": "Paste your personal access token"
|
|
36
|
+
"token": "Paste your personal access token",
|
|
37
|
+
"assist-instructions": "Example: answer in Persian and list my open bugs first."
|
|
36
38
|
},
|
|
37
39
|
"actions": {
|
|
38
40
|
"save": "Save Connection"
|
|
39
41
|
}
|
|
40
42
|
},
|
|
43
|
+
"messages": {
|
|
44
|
+
"required": "Jira base URL and personal access token are required.",
|
|
45
|
+
"invalid-url": "Enter a valid URL starting with http:// or https://.",
|
|
46
|
+
"save-failed": "Failed to save the Jira connection.",
|
|
47
|
+
"success": "Jira connection saved.",
|
|
48
|
+
"unauthorized": "Jira rejected the personal access token.",
|
|
49
|
+
"unreachable": "Jira could not be reached. Check the base URL."
|
|
50
|
+
},
|
|
41
51
|
"oauth-dialog": {
|
|
42
52
|
"title": "Connect with OAuth 2.0",
|
|
43
53
|
"actions": {
|
|
@@ -76,9 +86,9 @@
|
|
|
76
86
|
"settings": {
|
|
77
87
|
"jira": {
|
|
78
88
|
"section-title": "Jira",
|
|
79
|
-
"section-description": "
|
|
89
|
+
"section-description": "Save your on-premises Jira address and personal access token.",
|
|
80
90
|
"connection-title": "Account",
|
|
81
|
-
"connection-description": "
|
|
91
|
+
"connection-description": "Enter the base URL and personal access token. They are stored on your user connection."
|
|
82
92
|
}
|
|
83
93
|
},
|
|
84
94
|
"permissions": {
|
|
@@ -27,17 +27,27 @@
|
|
|
27
27
|
"fields": {
|
|
28
28
|
"display-name": "Display Name",
|
|
29
29
|
"instance-url": "Instance URL",
|
|
30
|
-
"token": "Personal Access Token"
|
|
30
|
+
"token": "Personal Access Token",
|
|
31
|
+
"assist-instructions": "Personal Instructions"
|
|
31
32
|
},
|
|
32
33
|
"placeholders": {
|
|
33
34
|
"display-name": "Jira",
|
|
34
35
|
"instance-url": "https://jira.example.com",
|
|
35
|
-
"token": "Paste your personal access token"
|
|
36
|
+
"token": "Paste your personal access token",
|
|
37
|
+
"assist-instructions": "Example: answer in Persian and list my open bugs first."
|
|
36
38
|
},
|
|
37
39
|
"actions": {
|
|
38
40
|
"save": "Save Connection"
|
|
39
41
|
}
|
|
40
42
|
},
|
|
43
|
+
"messages": {
|
|
44
|
+
"required": "Jira base URL and personal access token are required.",
|
|
45
|
+
"invalid-url": "Enter a valid URL starting with http:// or https://.",
|
|
46
|
+
"save-failed": "Failed to save the Jira connection.",
|
|
47
|
+
"success": "Jira connection saved.",
|
|
48
|
+
"unauthorized": "Jira rejected the personal access token.",
|
|
49
|
+
"unreachable": "Jira could not be reached. Check the base URL."
|
|
50
|
+
},
|
|
41
51
|
"oauth-dialog": {
|
|
42
52
|
"title": "Connect with OAuth 2.0",
|
|
43
53
|
"actions": {
|
|
@@ -76,9 +86,9 @@
|
|
|
76
86
|
"settings": {
|
|
77
87
|
"jira": {
|
|
78
88
|
"section-title": "Jira",
|
|
79
|
-
"section-description": "
|
|
89
|
+
"section-description": "Save your on-premises Jira address and personal access token.",
|
|
80
90
|
"connection-title": "Account",
|
|
81
|
-
"connection-description": "
|
|
91
|
+
"connection-description": "Enter the base URL and personal access token. They are stored on your user connection."
|
|
82
92
|
}
|
|
83
93
|
},
|
|
84
94
|
"permissions": {
|
|
@@ -27,17 +27,27 @@
|
|
|
27
27
|
"fields": {
|
|
28
28
|
"display-name": "نام نمایشی",
|
|
29
29
|
"instance-url": "آدرس نمونه",
|
|
30
|
-
"token": "توکن دسترسی شخصی"
|
|
30
|
+
"token": "توکن دسترسی شخصی",
|
|
31
|
+
"assist-instructions": "دستورهای شخصی"
|
|
31
32
|
},
|
|
32
33
|
"placeholders": {
|
|
33
34
|
"display-name": "Jira",
|
|
34
35
|
"instance-url": "https://jira.example.com",
|
|
35
|
-
"token": "توکن دسترسی شخصی را وارد کنید"
|
|
36
|
+
"token": "توکن دسترسی شخصی را وارد کنید",
|
|
37
|
+
"assist-instructions": "مثلاً فارسی جواب بده و اول باگهای باز خودم را بگو."
|
|
36
38
|
},
|
|
37
39
|
"actions": {
|
|
38
40
|
"save": "ذخیره اتصال"
|
|
39
41
|
}
|
|
40
42
|
},
|
|
43
|
+
"messages": {
|
|
44
|
+
"required": "آدرس پایه جیرا و توکن دسترسی شخصی الزامی است.",
|
|
45
|
+
"invalid-url": "یک آدرس معتبر وارد کنید که با http:// یا https:// شروع شود.",
|
|
46
|
+
"save-failed": "ذخیره اتصال جیرا انجام نشد.",
|
|
47
|
+
"success": "اتصال جیرا ذخیره شد.",
|
|
48
|
+
"unauthorized": "جیرا توکن دسترسی شخصی را نپذیرفت.",
|
|
49
|
+
"unreachable": "به جیرا وصل نشد. آدرس پایه را بررسی کنید."
|
|
50
|
+
},
|
|
41
51
|
"oauth-dialog": {
|
|
42
52
|
"title": "اتصال با OAuth 2.0",
|
|
43
53
|
"actions": {
|
|
@@ -76,9 +86,9 @@
|
|
|
76
86
|
"settings": {
|
|
77
87
|
"jira": {
|
|
78
88
|
"section-title": "جیرا",
|
|
79
|
-
"section-description": "
|
|
89
|
+
"section-description": "آدرس جیرای داخل سازمان و توکن دسترسی شخصی را ذخیره کنید.",
|
|
80
90
|
"connection-title": "حساب",
|
|
81
|
-
"connection-description": "
|
|
91
|
+
"connection-description": "آدرس پایه و توکن دسترسی شخصی را وارد کنید. این مقادیر روی اتصال کاربر ذخیره میشوند."
|
|
82
92
|
}
|
|
83
93
|
},
|
|
84
94
|
"permissions": {
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex-platform/extension-project-management-jira-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@acorex-platform/extension-project-management-core-client": "1.0.
|
|
6
|
+
"@acorex-platform/extension-project-management-core-client": "1.0.2",
|
|
7
7
|
"@angular/common": "^21.0.0 || ^22.0.0",
|
|
8
8
|
"@angular/core": "^21.0.0 || ^22.0.0"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@acorex-platform/extension-project-management-jira-domain": "1.0.
|
|
11
|
+
"@acorex-platform/extension-project-management-jira-domain": "1.0.2",
|
|
12
12
|
"tslib": "^2.3.0"
|
|
13
13
|
},
|
|
14
14
|
"module": "fesm2022/acorex-platform-extension-project-management-jira-client.mjs",
|
|
@@ -11,83 +11,49 @@ declare const RootConfig: {
|
|
|
11
11
|
title: string;
|
|
12
12
|
icon: string;
|
|
13
13
|
};
|
|
14
|
-
entities: {
|
|
15
|
-
jiraInstance: {
|
|
16
|
-
name: string;
|
|
17
|
-
fullName: string;
|
|
18
|
-
title: string;
|
|
19
|
-
titlePlural: string;
|
|
20
|
-
icon: string;
|
|
21
|
-
};
|
|
22
|
-
jiraProject: {
|
|
23
|
-
name: string;
|
|
24
|
-
fullName: string;
|
|
25
|
-
title: string;
|
|
26
|
-
titlePlural: string;
|
|
27
|
-
icon: string;
|
|
28
|
-
};
|
|
29
|
-
jiraIssueType: {
|
|
30
|
-
name: string;
|
|
31
|
-
fullName: string;
|
|
32
|
-
title: string;
|
|
33
|
-
titlePlural: string;
|
|
34
|
-
icon: string;
|
|
35
|
-
};
|
|
36
|
-
jiraField: {
|
|
37
|
-
name: string;
|
|
38
|
-
fullName: string;
|
|
39
|
-
title: string;
|
|
40
|
-
titlePlural: string;
|
|
41
|
-
icon: string;
|
|
42
|
-
};
|
|
43
|
-
jiraProjectIssueType: {
|
|
44
|
-
name: string;
|
|
45
|
-
fullName: string;
|
|
46
|
-
title: string;
|
|
47
|
-
titlePlural: string;
|
|
48
|
-
icon: string;
|
|
49
|
-
};
|
|
50
|
-
jiraProjectIssueTypeField: {
|
|
51
|
-
name: string;
|
|
52
|
-
fullName: string;
|
|
53
|
-
title: string;
|
|
54
|
-
titlePlural: string;
|
|
55
|
-
icon: string;
|
|
56
|
-
};
|
|
57
|
-
jiraWorkflowStatus: {
|
|
58
|
-
name: string;
|
|
59
|
-
fullName: string;
|
|
60
|
-
title: string;
|
|
61
|
-
titlePlural: string;
|
|
62
|
-
icon: string;
|
|
63
|
-
};
|
|
64
|
-
jiraIssue: {
|
|
65
|
-
name: string;
|
|
66
|
-
fullName: string;
|
|
67
|
-
title: string;
|
|
68
|
-
titlePlural: string;
|
|
69
|
-
icon: string;
|
|
70
|
-
};
|
|
71
|
-
jiraWorklog: {
|
|
72
|
-
name: string;
|
|
73
|
-
fullName: string;
|
|
74
|
-
title: string;
|
|
75
|
-
titlePlural: string;
|
|
76
|
-
icon: string;
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
14
|
};
|
|
80
15
|
|
|
16
|
+
/** Stable `AiManagement.Assist` id. The catalog row is shared; credentials stay on the user connection. */
|
|
17
|
+
declare const AXE_JIRA_ASSIST_ID = "b0000001-0000-4000-8000-000000000006";
|
|
18
|
+
/** Programmatic assist name (`AiManagement.Assist.name`). */
|
|
19
|
+
declare const AXE_JIRA_ASSIST_NAME = "jira-assistant";
|
|
20
|
+
declare const AXE_JIRA_SKILL_ID = "e0000001-0000-4000-8000-000000000020";
|
|
21
|
+
declare const AXE_JIRA_SKILL_NAME = "jira-issues";
|
|
22
|
+
/** `IntegrationConnection.config` field for this user's standing assist instructions. */
|
|
23
|
+
declare const AXE_JIRA_ASSIST_INSTRUCTIONS_FIELD = "assistInstructions";
|
|
24
|
+
declare const AXE_JIRA_ASSIST_INSTRUCTIONS_MAX = 4000;
|
|
25
|
+
|
|
26
|
+
declare const AXE_JIRA_SKILL_MARKDOWN: string;
|
|
27
|
+
/** Playbook attached to `jira-assistant`. Seeded as an `AiManagement.Skill` row. */
|
|
28
|
+
declare const AXE_JIRA_SKILL_ROWS: {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
title: {
|
|
32
|
+
'en-US': string;
|
|
33
|
+
'fa-IR': string;
|
|
34
|
+
};
|
|
35
|
+
description: {
|
|
36
|
+
'en-US': string;
|
|
37
|
+
'fa-IR': string;
|
|
38
|
+
};
|
|
39
|
+
markdown: string;
|
|
40
|
+
}[];
|
|
41
|
+
|
|
81
42
|
declare const JiraExtensionManifest: AXPModuleManifest;
|
|
82
43
|
|
|
83
44
|
declare const AXEJiraCommandKeys: {
|
|
84
45
|
readonly ConnectionConnect: "jira-extension.Connection:Connect";
|
|
46
|
+
readonly ConnectionValidate: "jira-extension.Connection:Validate";
|
|
47
|
+
readonly IssueCreate: "jira-extension.Issue:Create";
|
|
48
|
+
readonly IssueUpdate: "jira-extension.Issue:Update";
|
|
85
49
|
readonly ProjectImportFromJira: "jira-extension.Project:ImportFromJira";
|
|
86
50
|
readonly ProjectSync: "jira-extension.Project:Sync";
|
|
87
51
|
};
|
|
88
52
|
|
|
89
53
|
declare const AXEJiraQueryKeys: {
|
|
90
54
|
readonly ProjectListRemote: "jira-extension.Project:ListRemote";
|
|
55
|
+
readonly IssueSearch: "jira-extension.Issue:Search";
|
|
56
|
+
readonly IssueGet: "jira-extension.Issue:Get";
|
|
91
57
|
};
|
|
92
58
|
|
|
93
59
|
declare const AXEJiraMenuKeys: {
|
|
@@ -220,5 +186,5 @@ interface AXEJiraSyncPlatformProjectRequest {
|
|
|
220
186
|
platformProjectId: string;
|
|
221
187
|
}
|
|
222
188
|
|
|
223
|
-
export { AXEJiraCommandKeys, AXEJiraMenuKeys, AXEJiraPermissions, AXEJiraQueryKeys, AXPAdministrationPermissionKeys, JiraExtensionManifest, RootConfig };
|
|
189
|
+
export { AXEJiraCommandKeys, AXEJiraMenuKeys, AXEJiraPermissions, AXEJiraQueryKeys, AXE_JIRA_ASSIST_ID, AXE_JIRA_ASSIST_INSTRUCTIONS_FIELD, AXE_JIRA_ASSIST_INSTRUCTIONS_MAX, AXE_JIRA_ASSIST_NAME, AXE_JIRA_SKILL_ID, AXE_JIRA_SKILL_MARKDOWN, AXE_JIRA_SKILL_NAME, AXE_JIRA_SKILL_ROWS, AXPAdministrationPermissionKeys, JiraExtensionManifest, RootConfig };
|
|
224
190
|
export type { AXEJiraImportProjectsRequest, AXEJiraListRemoteProjectsRequest, AXEJiraListRemoteProjectsResponse, AXEJiraProjectImportResult, AXEJiraProjectImportRowInput, AXEJiraProjectImportStatus, AXEJiraRemoteProject, AXEJiraRemoteProjectListItem, AXEJiraSyncPlatformProjectRequest };
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
2
|
import * as i1 from '@acorex-platform/module-integration-management-client';
|
|
3
3
|
import { AXPLogoAppearance, AXPLogoProvider } from '@acorex-platform/framework-client/core';
|
|
4
|
-
import { AXValueChangedEvent } from '@acorex/cdk/common';
|
|
5
|
-
import { AXBasePageComponent } from '@acorex/components/page';
|
|
6
|
-
import { AXComboBoxItem, AXComboBoxValue } from '@acorex/components/combo-box';
|
|
7
|
-
import { AXEJiraRemoteProject, AXEJiraProjectSyncStrategy } from '@acorex-platform/extension-project-management-jira-client/contracts';
|
|
8
|
-
import { AXEJiraInstanceEntityModel } from '@acorex-platform/extension-project-management-jira-domain';
|
|
9
4
|
|
|
10
5
|
declare class AXEJiraExtensionModule {
|
|
11
|
-
static ɵfac:
|
|
12
|
-
static ɵmod:
|
|
13
|
-
static ɵinj:
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXEJiraExtensionModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXEJiraExtensionModule, never, [typeof i1.AXMIntegrationManagementModule], never>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXEJiraExtensionModule>;
|
|
14
9
|
}
|
|
15
10
|
|
|
16
11
|
declare class AXEJiraLogoComponent {
|
|
17
|
-
appearance:
|
|
18
|
-
size:
|
|
12
|
+
appearance: i0.InputSignal<AXPLogoAppearance>;
|
|
13
|
+
size: i0.InputSignal<number>;
|
|
19
14
|
protected readonly leftPath = "M7.12 11.084a.683.683 0 0 0-1.16.126L.075 22.974a.703.703 0 0 0 .63 1.018h8.19a.678.678 0 0 0 .63-.39c1.767-3.65.696-9.203-2.406-12.52z";
|
|
20
15
|
protected readonly rightPath = "M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z";
|
|
21
16
|
protected readonly markBlue = "#2684FF";
|
|
22
|
-
protected readonly resolvedAppearance:
|
|
23
|
-
static ɵfac:
|
|
24
|
-
static ɵcmp:
|
|
17
|
+
protected readonly resolvedAppearance: i0.Signal<"colored" | "monochrome">;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXEJiraLogoComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXEJiraLogoComponent, "axe-jira-logo", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
25
20
|
}
|
|
26
21
|
|
|
27
22
|
declare const axpJiraLogoKey: "jira";
|
|
@@ -33,47 +28,9 @@ declare const AXE_JIRA_MARK_LEFT_PATH = "M7.12 11.084a.683.683 0 0 0-1.16.126L.0
|
|
|
33
28
|
declare const AXE_JIRA_MARK_RIGHT_PATH = "M11.434.386a15.515 15.515 0 0 0-.906 15.317l3.95 7.9a.703.703 0 0 0 .628.388h8.19a.703.703 0 0 0 .63-1.017L12.63.38a.664.664 0 0 0-1.196.006z";
|
|
34
29
|
|
|
35
30
|
declare const AXE_JIRA_LOGO_PROVIDER: {
|
|
36
|
-
readonly provide:
|
|
31
|
+
readonly provide: i0.InjectionToken<AXPLogoProvider[]>;
|
|
37
32
|
readonly useValue: AXPLogoProvider;
|
|
38
33
|
readonly multi: true;
|
|
39
34
|
};
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
defaultProjectTypeId: string;
|
|
43
|
-
rows: Array<{
|
|
44
|
-
remote: AXEJiraRemoteProject;
|
|
45
|
-
selected: boolean;
|
|
46
|
-
syncStrategy: AXEJiraProjectSyncStrategy;
|
|
47
|
-
}>;
|
|
48
|
-
}
|
|
49
|
-
interface ImportRowState {
|
|
50
|
-
remote: AXEJiraRemoteProject;
|
|
51
|
-
selected: boolean;
|
|
52
|
-
syncStrategy: AXEJiraProjectSyncStrategy;
|
|
53
|
-
alreadyLinked: boolean;
|
|
54
|
-
}
|
|
55
|
-
declare class AXEJiraProjectImportPopupComponent extends AXBasePageComponent {
|
|
56
|
-
protected loading: _angular_core.WritableSignal<boolean>;
|
|
57
|
-
protected defaultProjectTypeId: _angular_core.WritableSignal<string>;
|
|
58
|
-
protected rows: _angular_core.WritableSignal<ImportRowState[]>;
|
|
59
|
-
instance: AXEJiraInstanceEntityModel;
|
|
60
|
-
projectTypes: Array<{
|
|
61
|
-
id: string;
|
|
62
|
-
title: string;
|
|
63
|
-
}>;
|
|
64
|
-
remoteProjects: AXEJiraRemoteProject[];
|
|
65
|
-
alreadyLinkedJiraIds: Set<string>;
|
|
66
|
-
protected readonly strategyOptions: AXComboBoxItem[];
|
|
67
|
-
protected get projectTypeComboItems(): AXComboBoxItem[];
|
|
68
|
-
protected ngOnInit(): void;
|
|
69
|
-
protected handleProjectTypeChange(event: AXValueChangedEvent<AXComboBoxValue>): void;
|
|
70
|
-
protected toggleRow(remoteId: string, event: AXValueChangedEvent<boolean>): void;
|
|
71
|
-
protected changeStrategy(remoteId: string, event: AXValueChangedEvent<AXComboBoxValue>): void;
|
|
72
|
-
protected hasSelection(): boolean;
|
|
73
|
-
protected confirm(): void;
|
|
74
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEJiraProjectImportPopupComponent, never>;
|
|
75
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEJiraProjectImportPopupComponent, "axe-jira-project-import-popup", never, {}, {}, never, never, true, never>;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export { AXEJiraExtensionModule, AXEJiraLogoComponent, AXEJiraProjectImportPopupComponent, AXE_JIRA_LOGO_PROVIDER, AXE_JIRA_MARK_BLUE, AXE_JIRA_MARK_LEFT_PATH, AXE_JIRA_MARK_RIGHT_PATH, axpJiraLogoKey };
|
|
79
|
-
export type { AXEJiraProjectImportPopupResult };
|
|
36
|
+
export { AXEJiraExtensionModule, AXEJiraLogoComponent, AXE_JIRA_LOGO_PROVIDER, AXE_JIRA_MARK_BLUE, AXE_JIRA_MARK_LEFT_PATH, AXE_JIRA_MARK_RIGHT_PATH, axpJiraLogoKey };
|