@acorex-platform/module-integration-management-client 0.0.33 → 0.0.38
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-module-integration-management-client-connect-with-credentials.command-DO_zqjHV.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-application.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-connection.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-oauth-state.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-acorex-platform-module-integration-management-client-contracts-entity-catalog-BT3-xrGZ.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-application.entity-BGZKCUt8.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-connection.entity-CYQq6jv2.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-oauth-state.entity-BPvTE55S.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-delete-connection.command-DQ_kn8dH.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-disconnect-connection.command-B4HeDA1n.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-get-provider.query-Ds10RwnU.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-connection-lifecycle.dispatcher-DRWR9ysx.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CZu5mKUA.mjs → acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CY0tOlNi.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CZu5mKUA.mjs.map → acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CY0tOlNi.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-display.service-CP818xou.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-D9kaBnug.mjs → acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-zVURpFT4.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-D9kaBnug.mjs.map → acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-zVURpFT4.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-page.component-D9hdpnQq.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-widget-column.component-CPLhmHOe.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-widget-view.component-BRpGpWHZ.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-integration-management-client-integrations-page.component-iH0DqEak.mjs → acorex-platform-module-integration-management-client-integrations-page.component-BIDqAXx3.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-integration-management-client-integrations-page.component-iH0DqEak.mjs.map → acorex-platform-module-integration-management-client-integrations-page.component-BIDqAXx3.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-list-domains.query--GGD6J46.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-list-my-connections.query-CmHu1qFm.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-list-providers.query-ODKJ_UhI.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-update-connection.command-BNMR-t12.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-validate-connection.command-CGtb_GPX.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client.mjs +4 -4
- package/fesm2022/acorex-platform-module-integration-management-client.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-list-providers.query-ODKJ_UhI.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/queries/list-providers.query.ts"],"sourcesContent":["import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPIntegrationDomainRegistryService } from '@acorex-platform/framework-client/common';\nimport {\n runtimeQuerySuccessCollection,\n type AXPIntegrationProviderListItemDto,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\n\nimport { Injectable, inject } from '@angular/core';\nimport { AXMIntegrationConnectionManager } from '../shared/integration-connection.manager';\n\n//#region ---- Types ----\n\nexport interface ListProvidersQueryInput {\n includeConnectionStatus?: boolean;\n domainId?: string;\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n@Injectable({ providedIn: 'root' })\nexport class ListProvidersQuery implements AXPQuery<ListProvidersQueryInput, AXPIntegrationProviderListItemDto> {\n private readonly registry = inject(AXPIntegrationDomainRegistryService);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly sessionService = inject(AXPSessionService);\n\n async fetch(input: ListProvidersQueryInput = {}): AXPQueryFetchResultPromise<AXPIntegrationProviderListItemDto> {\n const providers = input.domainId\n ? await this.registry.listProvidersByDomain(input.domainId)\n : await this.registry.listProviders();\n\n const enabledProviders = providers.filter((provider) => this.isProviderEnabledForEdition(provider.module));\n\n const connections =\n input.includeConnectionStatus !== false ? await this.connectionManager.listForCurrentUser() : [];\n\n return runtimeQuerySuccessCollection(enabledProviders.map((provider) => this.toListItem(provider, connections)));\n }\n\n private isProviderEnabledForEdition(moduleName: string | undefined): boolean {\n if (!moduleName?.trim()) {\n return false;\n }\n return this.sessionService.isModuleEnabled(moduleName);\n }\n\n private toListItem(\n provider: Awaited<ReturnType<typeof this.registry.listProviders>>[number],\n connections: Array<{ providerId: string; status: string }>,\n ): AXPIntegrationProviderListItemDto {\n const providerConnections = connections.filter((c) => c.providerId === provider.id);\n const connected = providerConnections.some((c) => c.status === 'Connected');\n\n const oauthMethod = provider.authMethods.find((method) => method.type === 'oauth2');\n\n return {\n id: provider.id,\n domainId: provider.domainId,\n module: provider.module,\n displayName: provider.displayName,\n description: provider.description,\n icon: provider.icon,\n logoKey: provider.logoKey,\n category: provider.category,\n capabilities: provider.capabilities,\n connectionScopes: provider.connectionScopes,\n allowMultipleConnections: provider.allowMultipleConnections,\n authMethodTypes: provider.authMethods.map((m) => m.type),\n oauthUsesRedirect: oauthMethod?.type === 'oauth2' ? oauthMethod.usesRedirect : undefined,\n isConnected: connected,\n connectionCount: providerConnections.length,\n connectCommandKey: provider.connectCommandKey,\n connectDisabledBadgeKey: provider.connectDisabledBadgeKey,\n connectDisabledMessageKey: provider.connectDisabledMessageKey,\n manageActions: provider.manageActions,\n };\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-list-providers.query-ODKJ_UhI.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/queries/list-providers.query.ts"],"sourcesContent":["import { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPIntegrationDomainRegistryService } from '@acorex-platform/framework-client/common';\nimport {\n runtimeQuerySuccessCollection,\n type AXPIntegrationProviderListItemDto,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\n\nimport { Injectable, inject } from '@angular/core';\nimport { AXMIntegrationConnectionManager } from '../shared/integration-connection.manager';\n\n//#region ---- Types ----\n\nexport interface ListProvidersQueryInput {\n includeConnectionStatus?: boolean;\n domainId?: string;\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n@Injectable({ providedIn: 'root' })\nexport class ListProvidersQuery implements AXPQuery<ListProvidersQueryInput, AXPIntegrationProviderListItemDto> {\n private readonly registry = inject(AXPIntegrationDomainRegistryService);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly sessionService = inject(AXPSessionService);\n\n async fetch(input: ListProvidersQueryInput = {}): AXPQueryFetchResultPromise<AXPIntegrationProviderListItemDto> {\n const providers = input.domainId\n ? await this.registry.listProvidersByDomain(input.domainId)\n : await this.registry.listProviders();\n\n const enabledProviders = providers.filter((provider) => this.isProviderEnabledForEdition(provider.module));\n\n const connections =\n input.includeConnectionStatus !== false ? await this.connectionManager.listForCurrentUser() : [];\n\n return runtimeQuerySuccessCollection(enabledProviders.map((provider) => this.toListItem(provider, connections)));\n }\n\n private isProviderEnabledForEdition(moduleName: string | undefined): boolean {\n if (!moduleName?.trim()) {\n return false;\n }\n return this.sessionService.isModuleEnabled(moduleName);\n }\n\n private toListItem(\n provider: Awaited<ReturnType<typeof this.registry.listProviders>>[number],\n connections: Array<{ providerId: string; status: string }>,\n ): AXPIntegrationProviderListItemDto {\n const providerConnections = connections.filter((c) => c.providerId === provider.id);\n const connected = providerConnections.some((c) => c.status === 'Connected');\n\n const oauthMethod = provider.authMethods.find((method) => method.type === 'oauth2');\n\n return {\n id: provider.id,\n domainId: provider.domainId,\n module: provider.module,\n displayName: provider.displayName,\n description: provider.description,\n icon: provider.icon,\n logoKey: provider.logoKey,\n category: provider.category,\n capabilities: provider.capabilities,\n connectionScopes: provider.connectionScopes,\n allowMultipleConnections: provider.allowMultipleConnections,\n authMethodTypes: provider.authMethods.map((m) => m.type),\n oauthUsesRedirect: oauthMethod?.type === 'oauth2' ? oauthMethod.usesRedirect : undefined,\n isConnected: connected,\n connectionCount: providerConnections.length,\n connectCommandKey: provider.connectCommandKey,\n connectDisabledBadgeKey: provider.connectDisabledBadgeKey,\n connectDisabledMessageKey: provider.connectDisabledMessageKey,\n manageActions: provider.manageActions,\n };\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-platform-module-integration-management-client-local-entities.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-local-entities.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/integration-management/client/src/lib/acorex-platform-module-integration-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers integration-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideIntegrationManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.integrationApplication.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-application').then((m) => m.factoryIntegrationApplication()),\n [RootConfig.entities.integrationConnection.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-connection').then((m) => m.factoryIntegrationConnection()),\n [RootConfig.entities.integrationOAuthState.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-oauth-state').then((m) => m.factoryIntegrationOAuthState()),\n },\n });\n}\n\nexport { integrationManagementLocalEntityCatalog } from '@acorex-platform/module-integration-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,yCAAyC,GAAA;AACvD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,MACjD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC;AAC3J,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,iGAAiG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AACzJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AAC3J,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;AC/BA;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-local-entities.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/integration-management/client/src/lib/acorex-platform-module-integration-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers integration-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideIntegrationManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.integrationApplication.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-application').then((m) => m.factoryIntegrationApplication()),\n [RootConfig.entities.integrationConnection.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-connection').then((m) => m.factoryIntegrationConnection()),\n [RootConfig.entities.integrationOAuthState.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-oauth-state').then((m) => m.factoryIntegrationOAuthState()),\n },\n });\n}\n\nexport { integrationManagementLocalEntityCatalog } from '@acorex-platform/module-integration-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,yCAAyC,GAAA;AACvD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,MACjD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC;AAC3J,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,iGAAiG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AACzJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AAC3J,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;AC/BA;;AAEG;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-update-connection.command-BNMR-t12.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/commands/update-connection.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXMIntegrationConnectionManager,\n toSafeIntegrationConnectionDto,\n} from '../shared/integration-connection.manager';\nimport { AXMIntegrationConnectionLifecycleDispatcher } from '../shared/integration-connection-lifecycle.dispatcher';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface UpdateConnectionCommandInput {\n connectionId: string;\n isDisabled?: boolean;\n}\n\n//#endregion\n\n@Injectable({ providedIn: 'root' })\nexport class UpdateConnectionCommand\n implements AXPCommand<UpdateConnectionCommandInput, AXPSafeIntegrationConnectionDto>\n{\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly lifecycle = inject(AXMIntegrationConnectionLifecycleDispatcher);\n\n async execute(\n input: UpdateConnectionCommandInput,\n ): AXPCommandExecuteResultPromise<AXPSafeIntegrationConnectionDto> {\n try {\n if (input.isDisabled === undefined) {\n return { success: false, message: { text: 'No connection fields were provided to update.' } };\n }\n\n const connection = await this.connectionManager.getByIdForCurrentUser(input.connectionId);\n if (!connection) {\n return { success: false, message: { text: 'Connection not found or access denied.' } };\n }\n\n const updated = await this.connectionManager.updateConnection(connection.id, {\n isDisabled: input.isDisabled,\n });\n\n const safe = toSafeIntegrationConnectionDto(updated);\n await this.lifecycle.dispatchEnabledChanged(safe, !input.isDisabled);\n\n return { success: true, kind: 'object', data: safe };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to update integration connection.';\n return { success: false, message: { text: message } };\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAoBA;MAGa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,2CAA2C,CAAC;AA4BjF,IAAA;IA1BC,MAAM,OAAO,CACX,KAAmC,EAAA;AAEnC,QAAA,IAAI;AACF,YAAA,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE;YAC/F;AAEA,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;YACzF,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,EAAE;YACxF;AAEA,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE;gBAC3E,UAAU,EAAE,KAAK,CAAC,UAAU;AAC7B,aAAA,CAAC;AAEF,YAAA,MAAM,IAAI,GAAG,8BAA8B,CAAC,OAAO,CAAC;AACpD,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAEpE,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACtD;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,0CAA0C;AACnG,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GA/BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-update-connection.command-BNMR-t12.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/commands/update-connection.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport {\n AXMIntegrationConnectionManager,\n toSafeIntegrationConnectionDto,\n} from '../shared/integration-connection.manager';\nimport { AXMIntegrationConnectionLifecycleDispatcher } from '../shared/integration-connection-lifecycle.dispatcher';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface UpdateConnectionCommandInput {\n connectionId: string;\n isDisabled?: boolean;\n}\n\n//#endregion\n\n@Injectable({ providedIn: 'root' })\nexport class UpdateConnectionCommand\n implements AXPCommand<UpdateConnectionCommandInput, AXPSafeIntegrationConnectionDto>\n{\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly lifecycle = inject(AXMIntegrationConnectionLifecycleDispatcher);\n\n async execute(\n input: UpdateConnectionCommandInput,\n ): AXPCommandExecuteResultPromise<AXPSafeIntegrationConnectionDto> {\n try {\n if (input.isDisabled === undefined) {\n return { success: false, message: { text: 'No connection fields were provided to update.' } };\n }\n\n const connection = await this.connectionManager.getByIdForCurrentUser(input.connectionId);\n if (!connection) {\n return { success: false, message: { text: 'Connection not found or access denied.' } };\n }\n\n const updated = await this.connectionManager.updateConnection(connection.id, {\n isDisabled: input.isDisabled,\n });\n\n const safe = toSafeIntegrationConnectionDto(updated);\n await this.lifecycle.dispatchEnabledChanged(safe, !input.isDisabled);\n\n return { success: true, kind: 'object', data: safe };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to update integration connection.';\n return { success: false, message: { text: message } };\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAoBA;MAGa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,2CAA2C,CAAC;AA4BjF,IAAA;IA1BC,MAAM,OAAO,CACX,KAAmC,EAAA;AAEnC,QAAA,IAAI;AACF,YAAA,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE;YAC/F;AAEA,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;YACzF,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,EAAE;YACxF;AAEA,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE;gBAC3E,UAAU,EAAE,KAAK,CAAC,UAAU;AAC7B,aAAA,CAAC;AAEF,YAAA,MAAM,IAAI,GAAG,8BAA8B,CAAC,OAAO,CAAC;AACpD,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAEpE,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACtD;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,0CAA0C;AACnG,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GA/BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-validate-connection.command-CGtb_GPX.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/commands/validate-connection.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXP_INTEGRATION_CONNECTION_STATUS, type AXPRuntimeCommandResult, type AXPIntegrationValidationResult, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n} from '@acorex-platform/framework-client/common';\n\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport {\n AXMIntegrationConnectionManager,\n toSafeIntegrationConnectionDto,\n} from '../shared/integration-connection.manager';\n\n//#region ---- Types ----\n\nexport interface ValidateConnectionCommandInput {\n connectionId: string;\n}\n\n//#endregion\n\n@Injectable({ providedIn: 'root' })\nexport class ValidateConnectionCommand\n implements AXPCommand<ValidateConnectionCommandInput, AXPSafeIntegrationConnectionDto>\n{\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly runtimeProviders = inject(AXP_INTEGRATION_RUNTIME_PROVIDER, { optional: true });\n\n async execute(\n input: ValidateConnectionCommandInput,\n ): AXPCommandExecuteResultPromise<AXPSafeIntegrationConnectionDto> {\n try {\n const connection = await this.connectionManager.getByIdForCurrentUser(input.connectionId);\n if (!connection || !connection.secretRef) {\n return { success: false, message: { text: 'Connection not found or not configured.' } };\n }\n\n const hooks = await this.resolveRuntimeHooks(connection.providerId);\n\n let validation: AXPIntegrationValidationResult = {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n };\n if (hooks?.validateConnection) {\n const { tenantId, applicationId, userId } = this.connectionManager.getSessionContext();\n validation = await hooks.validateConnection({\n tenantId,\n applicationId,\n userId,\n connectionId: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n authMethodType: connection.authMethodType,\n instanceUrl: connection.instanceUrl,\n config: connection.config,\n secretRef: connection.secretRef,\n });\n }\n\n const updated = await this.connectionManager.updateConnection(connection.id, {\n status: defaultTo(validation.status, validation.valid ? AXP_INTEGRATION_CONNECTION_STATUS.Connected : AXP_INTEGRATION_CONNECTION_STATUS.Invalid),\n lastValidatedAt: new Date().toISOString(),\n externalAccountId: validation.externalAccountId,\n externalAccountName: validation.externalAccountName,\n grantedScopes: validation.grantedScopes,\n expiresAt: validation.expiresAt,\n lastErrorCode: validation.valid ? null : validation.errorCode,\n lastErrorMessage: validation.valid ? null : validation.errorMessage,\n });\n\n if (!validation.valid) {\n return {\n success: false,\n message: { details: toSafeIntegrationConnectionDto(updated), text: validation.errorMessage ?? 'Connection validation failed.' },\n \n };\n }\n\n return { success: true, kind: 'object', data: toSafeIntegrationConnectionDto(updated) };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Validation failed.';\n return { success: false, message: { text: message } };\n }\n }\n\n private async resolveRuntimeHooks(providerId: string) {\n const providers = this.runtimeProviders ?? [];\n for (const provider of providers) {\n const resolved = provider instanceof Promise ? await provider : provider;\n if (resolved.providerId === providerId) {\n return resolved.getHooks();\n }\n }\n return null;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AAmBA;MAGa,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,+BAA+B,CAAC;QAC3D,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAsEjG,IAAA;IApEC,MAAM,OAAO,CACX,KAAqC,EAAA;AAErC,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;YACzF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACxC,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,yCAAyC,EAAE,EAAE;YACzF;YAEA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC;AAEnE,YAAA,IAAI,UAAU,GAAmC;AAC/C,gBAAA,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,iCAAiC,CAAC,SAAS;aACpD;AACD,YAAA,IAAI,KAAK,EAAE,kBAAkB,EAAE;AAC7B,gBAAA,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;AACtF,gBAAA,UAAU,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC;oBAC1C,QAAQ;oBACR,aAAa;oBACb,MAAM;oBACN,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,eAAe,EAAE,UAAU,CAAC,eAAe;oBAC3C,aAAa,EAAE,UAAU,CAAC,aAAa;oBACvC,cAAc,EAAE,UAAU,CAAC,cAAc;oBACzC,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;AAChC,iBAAA,CAAC;YACJ;AAEA,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE;gBAC3E,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,iCAAiC,CAAC,SAAS,GAAG,iCAAiC,CAAC,OAAO,CAAC;AAChJ,gBAAA,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;gBAC/C,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;gBACnD,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,SAAS,EAAE,UAAU,CAAC,SAAS;AAC/B,gBAAA,aAAa,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,SAAS;AAC7D,gBAAA,gBAAgB,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,YAAY;AACpE,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACrB,OAAO;AACP,oBAAA,OAAO,EAAE,KAAK;AACZ,oBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,8BAA8B,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,IAAI,+BAA+B,EAAE;iBAEhI;YACH;AAEA,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,CAAC,OAAO,CAAC,EAAE;QACzF;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,oBAAoB;AAC7E,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;IAEQ,MAAM,mBAAmB,CAAC,UAAkB,EAAA;AAClD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE;AAC7C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,QAAQ,YAAY,OAAO,GAAG,MAAM,QAAQ,GAAG,QAAQ;AACxE,YAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE;AACtC,gBAAA,OAAO,QAAQ,CAAC,QAAQ,EAAE;YAC5B;QACF;AACA,QAAA,OAAO,IAAI;IACb;8GAzEW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-validate-connection.command-CGtb_GPX.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/commands/validate-connection.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXP_INTEGRATION_CONNECTION_STATUS, type AXPRuntimeCommandResult, type AXPIntegrationValidationResult, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n} from '@acorex-platform/framework-client/common';\n\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport {\n AXMIntegrationConnectionManager,\n toSafeIntegrationConnectionDto,\n} from '../shared/integration-connection.manager';\n\n//#region ---- Types ----\n\nexport interface ValidateConnectionCommandInput {\n connectionId: string;\n}\n\n//#endregion\n\n@Injectable({ providedIn: 'root' })\nexport class ValidateConnectionCommand\n implements AXPCommand<ValidateConnectionCommandInput, AXPSafeIntegrationConnectionDto>\n{\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly runtimeProviders = inject(AXP_INTEGRATION_RUNTIME_PROVIDER, { optional: true });\n\n async execute(\n input: ValidateConnectionCommandInput,\n ): AXPCommandExecuteResultPromise<AXPSafeIntegrationConnectionDto> {\n try {\n const connection = await this.connectionManager.getByIdForCurrentUser(input.connectionId);\n if (!connection || !connection.secretRef) {\n return { success: false, message: { text: 'Connection not found or not configured.' } };\n }\n\n const hooks = await this.resolveRuntimeHooks(connection.providerId);\n\n let validation: AXPIntegrationValidationResult = {\n valid: true,\n status: AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n };\n if (hooks?.validateConnection) {\n const { tenantId, applicationId, userId } = this.connectionManager.getSessionContext();\n validation = await hooks.validateConnection({\n tenantId,\n applicationId,\n userId,\n connectionId: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n authMethodType: connection.authMethodType,\n instanceUrl: connection.instanceUrl,\n config: connection.config,\n secretRef: connection.secretRef,\n });\n }\n\n const updated = await this.connectionManager.updateConnection(connection.id, {\n status: defaultTo(validation.status, validation.valid ? AXP_INTEGRATION_CONNECTION_STATUS.Connected : AXP_INTEGRATION_CONNECTION_STATUS.Invalid),\n lastValidatedAt: new Date().toISOString(),\n externalAccountId: validation.externalAccountId,\n externalAccountName: validation.externalAccountName,\n grantedScopes: validation.grantedScopes,\n expiresAt: validation.expiresAt,\n lastErrorCode: validation.valid ? null : validation.errorCode,\n lastErrorMessage: validation.valid ? null : validation.errorMessage,\n });\n\n if (!validation.valid) {\n return {\n success: false,\n message: { details: toSafeIntegrationConnectionDto(updated), text: validation.errorMessage ?? 'Connection validation failed.' },\n \n };\n }\n\n return { success: true, kind: 'object', data: toSafeIntegrationConnectionDto(updated) };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Validation failed.';\n return { success: false, message: { text: message } };\n }\n }\n\n private async resolveRuntimeHooks(providerId: string) {\n const providers = this.runtimeProviders ?? [];\n for (const provider of providers) {\n const resolved = provider instanceof Promise ? await provider : provider;\n if (resolved.providerId === providerId) {\n return resolved.getHooks();\n }\n }\n return null;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -574,7 +574,7 @@ function integrationManagementRoutesFactory() {
|
|
|
574
574
|
children: [
|
|
575
575
|
{
|
|
576
576
|
path: '',
|
|
577
|
-
loadComponent: () => import('./acorex-platform-module-integration-management-client-integrations-page.component-
|
|
577
|
+
loadComponent: () => import('./acorex-platform-module-integration-management-client-integrations-page.component-BIDqAXx3.mjs').then((c) => c.AXMIntegrationsPageComponent),
|
|
578
578
|
data: { reuse: true },
|
|
579
579
|
},
|
|
580
580
|
],
|
|
@@ -587,12 +587,12 @@ const integrationOAuthCallbackRoutes = [
|
|
|
587
587
|
// App-agnostic callback first — must win over `:appName/...` (else appName="integrations").
|
|
588
588
|
{
|
|
589
589
|
path: 'integrations/oauth/callback/:providerId',
|
|
590
|
-
loadComponent: () => import('./acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-
|
|
590
|
+
loadComponent: () => import('./acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CY0tOlNi.mjs').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),
|
|
591
591
|
},
|
|
592
592
|
// Legacy app-prefixed callback (older provider redirect URI configs).
|
|
593
593
|
{
|
|
594
594
|
path: ':appName/integrations/oauth/callback/:providerId',
|
|
595
|
-
loadComponent: () => import('./acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-
|
|
595
|
+
loadComponent: () => import('./acorex-platform-module-integration-management-client-integration-oauth-callback-page.component-CY0tOlNi.mjs').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),
|
|
596
596
|
},
|
|
597
597
|
];
|
|
598
598
|
|
|
@@ -617,7 +617,7 @@ const AXMIntegrationRefFilterWidget = {
|
|
|
617
617
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
|
|
618
618
|
components: {
|
|
619
619
|
edit: {
|
|
620
|
-
component: () => import('./acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-
|
|
620
|
+
component: () => import('./acorex-platform-module-integration-management-client-integration-ref-filter-widget-edit.component-zVURpFT4.mjs').then((c) => c.AXMIntegrationRefFilterWidgetEditComponent),
|
|
621
621
|
},
|
|
622
622
|
},
|
|
623
623
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/connect/connect.command.types.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-connection.manager.ts","../../../../libs/modules/integration-management/client/src/lib/manifest.ts","../../../../libs/modules/integration-management/client/src/lib/menu.provider.ts","../../../../libs/modules/integration-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/integration-management/client/src/lib/settings.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/domains/integration-legacy-domain.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-runtime.service.impl.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-connection-status.util.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-evaluator-scope.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/integrations-page/integrations-page.routes.ts","../../../../libs/modules/integration-management/client/src/lib/features/oauth-callback/integration-oauth-callback.routes.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page.constants.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-filter.widget.config.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref.widget.config.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref.entity-modifier.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page-component.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget.provider.ts","../../../../libs/modules/integration-management/client/src/lib/integration-management.module.ts","../../../../libs/modules/integration-management/client/src/acorex-platform-module-integration-management-client.ts"],"sourcesContent":["import type { AXPIntegrationAuthMethodType, AXPIntegrationConnectionScope, AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Connect command types ----\n\nexport interface ConnectCommandInput {\n providerId: string;\n connectionScope?: AXPIntegrationConnectionScope;\n /** When set, skips auth-method picker and uses this method directly. */\n authMethodType?: AXPIntegrationAuthMethodType;\n}\n\nexport type ConnectCommandResult =\n | { outcome: 'cancelled' }\n | { outcome: 'connected'; connection: AXPSafeIntegrationConnectionDto }\n | { outcome: 'redirect'; redirectUrl: string };\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPSafeIntegrationConnectionDto,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty, trim } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\nimport type { AXMIntegrationManagementIntegrationConnectionEntityModel } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#region ---- Credential helpers ----\n\nexport const AXP_INTEGRATION_CREDENTIAL_MASK = '••••••••';\n\nfunction hasConfigCredential(config: Record<string, unknown>): boolean {\n return (\n !isEmpty(trim(String(config['apiKey'] ?? ''))) ||\n !isEmpty(trim(String(config['accessToken'] ?? ''))) ||\n !isEmpty(trim(String(config['refreshToken'] ?? ''))) ||\n !isEmpty(trim(String(config['clientSecret'] ?? ''))) ||\n !isEmpty(trim(String(config['botToken'] ?? '')))\n );\n}\n\nexport function isMaskedIntegrationCredential(value: string | null | undefined): boolean {\n const normalized = trim(value ?? '');\n return !normalized || normalized === AXP_INTEGRATION_CREDENTIAL_MASK;\n}\n\n/** Clears runtime OAuth/token fields while keeping reconnect-friendly client settings. */\nexport function scrubDisconnectedConnectionConfig(\n config: Record<string, unknown> | null | undefined,\n): Record<string, unknown> | null {\n if (!config) {\n return null;\n }\n\n const next = { ...config };\n delete next['accessToken'];\n delete next['refreshToken'];\n delete next['tokenExpiresAt'];\n delete next['oauthTokenJson'];\n delete next['authorizationUrl'];\n delete next['token'];\n delete next['password'];\n delete next['apiToken'];\n delete next['apiKey'];\n delete next['botToken'];\n return next;\n}\n\nexport function hasConfiguredIntegrationCredentials(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel | null | undefined,\n): boolean {\n if (!connection || connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected) {\n return false;\n }\n if (connection.isRevoked || connection.isDisabled) {\n return false;\n }\n if (!isEmpty(trim(defaultTo(connection.secretRef, '')))) {\n return true;\n }\n const config = (connection.config ?? {}) as Record<string, unknown>;\n return hasConfigCredential(config);\n}\n\n//#endregion\n\n//#region ---- Safe mapper ----\n\nexport function toSafeIntegrationConnectionDto(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel,\n): AXPSafeIntegrationConnectionDto {\n const secretRef = defaultTo(connection.secretRef, '');\n const config = (connection.config ?? {}) as Record<string, unknown>;\n const hasConfigSecret = hasConfigCredential(config);\n const hasSecret = !isEmpty(trim(secretRef)) || hasConfigSecret;\n\n return {\n id: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n displayName: connection.displayName,\n authMethodType: connection.authMethodType,\n status: connection.status,\n instanceUrl: connection.instanceUrl,\n externalAccountId: connection.externalAccountId,\n externalAccountName: connection.externalAccountName,\n grantedScopes: connection.grantedScopes,\n expiresAt: connection.expiresAt,\n lastConnectedAt: connection.lastConnectedAt,\n lastValidatedAt: connection.lastValidatedAt,\n lastSyncAt: connection.lastSyncAt,\n lastErrorCode: connection.lastErrorCode,\n lastErrorMessage: connection.lastErrorMessage,\n isRevoked: connection.isRevoked,\n isDisabled: connection.isDisabled,\n config: connection.config,\n hasSecret,\n secretPreview: hasSecret ? '••••••••' : null,\n };\n}\n\n//#endregion\n\n//#region ---- Connection manager ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMIntegrationConnectionManager {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Accessors ----\n\n private connectionAccessor() {\n return this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.integrationConnection.name)\n .data<string, AXMIntegrationManagementIntegrationConnectionEntityModel>();\n }\n\n getSessionContext(): { tenantId: string; applicationId: string; userId: string } {\n const tenantId = this.sessionService.tenant?.id;\n const applicationId = this.sessionService.application?.id;\n const userId = this.sessionService.user?.id;\n if (!tenantId || !applicationId || !userId) {\n throw new Error(\n 'Integration operations require an authenticated user, tenant, and application context.',\n );\n }\n return { tenantId, applicationId, userId };\n }\n\n private ownershipFilters(\n tenantId: string,\n applicationId: string,\n userId?: string,\n ): Array<Record<string, unknown>> {\n const filters: Array<Record<string, unknown>> = [\n { field: 'scopeInfo.tenantId', operator: { type: 'equal' }, value: tenantId },\n { field: 'scopeInfo.applicationId', operator: { type: 'equal' }, value: applicationId },\n ];\n if (userId) {\n filters.push({ field: 'scopeInfo.userId', operator: { type: 'equal' }, value: userId });\n }\n return filters;\n }\n\n private buildOwnershipInfo(\n tenantId: string,\n applicationId: string,\n connectionScope: 'user' | 'tenant',\n userId: string,\n ) {\n return {\n tenantId,\n applicationId,\n ...(connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? { userId } : {}),\n };\n }\n\n //#endregion\n\n //#region ---- Queries ----\n\n async listForCurrentUser(\n connectionScope?: 'user' | 'tenant',\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel[]> {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n const result = await this.connectionAccessor().query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n ...this.ownershipFilters(tenantId, applicationId),\n ...(connectionScope\n ? [{ field: 'connectionScope', operator: { type: 'equal' as const }, value: connectionScope }]\n : []),\n {\n logic: 'or',\n filters: [\n {\n field: 'connectionScope',\n operator: { type: 'equal' },\n value: AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n },\n {\n logic: 'and',\n filters: [\n {\n field: 'connectionScope',\n operator: { type: 'equal' },\n value: AXP_INTEGRATION_CONNECTION_SCOPE.User,\n },\n { field: 'scopeInfo.userId', operator: { type: 'equal' }, value: userId },\n ],\n },\n ],\n },\n ],\n },\n });\n\n return (result.items ?? []).filter((item) => {\n if (item.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return true;\n }\n return item.scopeInfo?.userId === userId;\n });\n }\n\n async findByUniqueKey(input: {\n providerId: string;\n connectionScope: 'user' | 'tenant';\n connectionKey: string;\n userId?: string;\n tenantId?: string;\n applicationId?: string;\n }): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel | null> {\n const ctx = this.getSessionContext();\n const tenantId = input.tenantId ?? ctx.tenantId;\n const applicationId = input.applicationId ?? ctx.applicationId;\n const userId = input.userId ?? ctx.userId;\n\n const filters: Array<Record<string, unknown>> = [\n ...this.ownershipFilters(\n tenantId,\n applicationId,\n input.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? userId : undefined,\n ),\n { field: 'providerId', operator: { type: 'equal' }, value: input.providerId },\n { field: 'connectionScope', operator: { type: 'equal' }, value: input.connectionScope },\n { field: 'connectionKey', operator: { type: 'equal' }, value: input.connectionKey },\n ];\n\n const result = await this.connectionAccessor().query({\n skip: 0,\n take: 1,\n filter: { logic: 'and', filters },\n });\n\n return result.items?.[0] ?? null;\n }\n\n async getByIdForCurrentUser(\n connectionId: string,\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel | null> {\n const connection = await this.connectionAccessor().byKey(connectionId);\n if (!connection) {\n return null;\n }\n return this.assertOwnership(connection) ? connection : null;\n }\n\n //#endregion\n\n //#region ---- Mutations ----\n\n async upsertConnection(\n data: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel> & {\n providerId: string;\n connectionScope: 'user' | 'tenant';\n connectionKey: string;\n displayName: string;\n authMethodType: AXMIntegrationManagementIntegrationConnectionEntityModel['authMethodType'];\n },\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel> {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n const existing = await this.findByUniqueKey({\n providerId: data.providerId,\n connectionScope: data.connectionScope,\n connectionKey: data.connectionKey,\n tenantId,\n applicationId,\n userId: data.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? userId : undefined,\n });\n\n const scopeInfo = this.buildOwnershipInfo(\n tenantId,\n applicationId,\n data.connectionScope,\n userId,\n );\n\n const payload: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel> = {\n ...data,\n scopeInfo,\n isRevoked: defaultTo(data.isRevoked, false),\n isDisabled: defaultTo(data.isDisabled, false),\n status: data.status ?? AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n lastConnectedAt: data.lastConnectedAt ?? new Date().toISOString(),\n };\n\n if (existing) {\n await this.connectionAccessor().update(existing.id, payload);\n const updated = await this.connectionAccessor().byKey(existing.id);\n if (!updated) {\n throw new Error('Connection not found after update.');\n }\n return updated;\n }\n\n const createPayload: Omit<AXMIntegrationManagementIntegrationConnectionEntityModel, 'id'> = {\n providerId: data.providerId,\n connectionScope: data.connectionScope,\n connectionKey: data.connectionKey,\n displayName: data.displayName,\n authMethodType: data.authMethodType,\n scopeInfo,\n isRevoked: defaultTo(data.isRevoked, false),\n isDisabled: defaultTo(data.isDisabled, false),\n status: data.status ?? AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n lastConnectedAt: data.lastConnectedAt ?? new Date().toISOString(),\n instanceUrl: data.instanceUrl ?? null,\n externalAccountId: data.externalAccountId ?? null,\n externalAccountName: data.externalAccountName ?? null,\n grantedScopes: data.grantedScopes ?? null,\n secretRef: data.secretRef ?? null,\n expiresAt: data.expiresAt ?? null,\n lastValidatedAt: data.lastValidatedAt ?? null,\n lastSyncAt: data.lastSyncAt ?? null,\n lastErrorCode: data.lastErrorCode ?? null,\n lastErrorMessage: data.lastErrorMessage ?? null,\n config: data.config ?? null,\n };\n\n const id = await this.connectionAccessor().create(createPayload);\n const created = await this.connectionAccessor().byKey(id);\n if (!created) {\n throw new Error('Connection not found after create.');\n }\n return created;\n }\n\n async updateConnection(\n connectionId: string,\n patch: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel>,\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel> {\n const existing = await this.getByIdForCurrentUser(connectionId);\n if (!existing) {\n throw new Error('Connection not found or access denied.');\n }\n await this.connectionAccessor().update(connectionId, patch);\n const updated = await this.connectionAccessor().byKey(connectionId);\n if (!updated) {\n throw new Error('Connection not found after update.');\n }\n return updated;\n }\n\n async deleteConnection(connectionId: string): Promise<void> {\n const existing = await this.getByIdForCurrentUser(connectionId);\n if (!existing) {\n throw new Error('Connection not found or access denied.');\n }\n await this.connectionAccessor().delete(connectionId);\n }\n\n //#endregion\n\n //#region ---- Authorization ----\n\n assertOwnership(connection: AXMIntegrationManagementIntegrationConnectionEntityModel): boolean {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n if (connection.scopeInfo?.tenantId !== tenantId) {\n return false;\n }\n if (connection.scopeInfo?.applicationId !== applicationId) {\n return false;\n }\n if (connection.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return true;\n }\n return connection.scopeInfo?.userId === userId;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\nexport const IntegrationManagementManifest: 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: 'platform',\n domain: 'platform',\n required: false,\n};\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n AXMIntegrationManagementMenuKeys,\n AXPAdministrationPermissionKeys,\n RootConfig,\n} from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Menu Provider -----\n\nexport class AXMIntegrationManagementMenuProvider implements AXPMenuProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n const appName = this.sessionService.application?.name;\n\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXMIntegrationManagementMenuKeys.Integrations,\n priority: 1000,\n text: '@integration-management:pages.integrations.title',\n type: 'menu',\n icon: 'fa-light fa-plug',\n path: `/${appName}/admin/integrations`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPAdministrationPermissionKeys.MaintainConnections],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPAdministrationPermissionKeys } from '@acorex-platform/module-integration-management-client/contracts';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers Integrations section capabilities under Administration.\n */\n@Injectable()\nexport class AXMIntegrationManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAdministrationPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:administration.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, { order: 120 });\n\n context\n .addGroup(\n groups.Administration.Integrations,\n `${G}.administration-integrations.title`,\n `${G}.administration-integrations.description`,\n { parent: groups.Administration.Root, order: 20 },\n )\n .addPermission(keys.ViewIntegrations, `${P}.view-integrations.title`, `${P}.view-integrations.description`)\n .endPermission()\n .addPermission(\n keys.MaintainConnections,\n `${P}.maintain-connections.title`,\n `${P}.maintain-connections.description`,\n )\n .endPermission()\n .addPermission(\n keys.ManageIntegrationActions,\n `${P}.manage-integration-actions.title`,\n `${P}.manage-integration-actions.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ---- Settings Provider ----\n\nconst I18N = '@integration-management:settings';\n\nexport class AXMIntegrationManagementSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n if (context.hasGroup('integrations')) {\n return;\n }\n\n context\n .addGroup(\n 'integrations',\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n 'fa-light fa-plug',\n `${I18N}.group.title`,\n 45,\n )\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXP_INTEGRATION_CATEGORY } 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/module-integration-management-client/contracts';\n\nconst I18N = '@integration-management:settings.domains.other';\n\n/** Fallback domain for connectors not yet assigned to a first-class integration domain. */\n@Injectable()\nexport class AXMIntegrationLegacyDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: 'other',\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: 'fa-light fa-plug',\n category: AXP_INTEGRATION_CATEGORY.Other,\n capabilities: [],\n sortOrder: 999,\n });\n }\n}\n","import { AXP_INTEGRATION_CONNECTION_STATUS, AXPIntegrationExpiredError, AXPIntegrationMissingScopeError, AXPIntegrationNotConnectedError, type AXPIntegrationProviderDefinition, type AXPIntegrationRuntimeContext, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_INTEGRATION_SECRET_STORE,\n AXPIntegrationProviderRegistryService,\n AXPIntegrationRuntimeService,\n type AXPIntegrationWithClientOptions,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty } from 'lodash';\nimport { AXMIntegrationConnectionManager, toSafeIntegrationConnectionDto } from './integration-connection.manager';\n\n//#region ---- Runtime service implementation ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMIntegrationRuntimeServiceImpl extends AXPIntegrationRuntimeService {\n private readonly registry = inject(AXPIntegrationProviderRegistryService);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly secretStore = inject(AXP_INTEGRATION_SECRET_STORE, { optional: true });\n private readonly runtimeProviders = inject(AXP_INTEGRATION_RUNTIME_PROVIDER, { optional: true });\n\n async getProvider(id: string): Promise<AXPIntegrationProviderDefinition> {\n return this.registry.getOrThrow(id);\n }\n\n async listProviders(): Promise<AXPIntegrationProviderDefinition[]> {\n return this.registry.list();\n }\n\n async getConnection(options: AXPIntegrationWithClientOptions): Promise<AXPSafeIntegrationConnectionDto> {\n const connection = await this.resolveConnection(options);\n return toSafeIntegrationConnectionDto(connection);\n }\n\n async withClient<T>(\n options: AXPIntegrationWithClientOptions,\n fn: (client: unknown, ctx: AXPIntegrationRuntimeContext) => Promise<T>,\n ): Promise<T> {\n const connection = await this.resolveConnection(options);\n if (!connection.secretRef) {\n throw new AXPIntegrationNotConnectedError(options.providerId);\n }\n\n const ctx = await this.buildRuntimeContext({\n ...toSafeIntegrationConnectionDto(connection),\n secretRef: connection.secretRef,\n });\n\n const hooks = await this.resolveRuntimeHooks(options.providerId);\n if (!hooks?.createClient) {\n throw new Error(`Integration provider '${options.providerId}' does not expose a runtime client.`);\n }\n\n const client = await hooks.createClient(ctx);\n return fn(client, ctx);\n }\n\n async buildRuntimeContext(\n connection: AXPSafeIntegrationConnectionDto & { secretRef: string },\n ): Promise<AXPIntegrationRuntimeContext> {\n const { tenantId, applicationId, userId } = this.connectionManager.getSessionContext();\n return {\n tenantId,\n applicationId,\n userId,\n connectionId: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n authMethodType: connection.authMethodType,\n instanceUrl: connection.instanceUrl,\n config: connection.config,\n secretRef: connection.secretRef,\n };\n }\n\n private async resolveConnection(options: AXPIntegrationWithClientOptions) {\n const provider = await this.registry.getOrThrow(options.providerId);\n const connectionScope = options.connectionScope ?? 'user';\n const connectionKey = defaultTo(options.connectionKey, provider.defaultConnectionKey ?? 'default');\n\n if (options.requiredCapabilities?.length) {\n const missing = options.requiredCapabilities.filter((c) => !provider.capabilities.includes(c as never));\n if (missing.length) {\n throw new Error(`Provider '${provider.id}' is missing capabilities: ${missing.join(', ')}`);\n }\n }\n\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: options.providerId,\n connectionScope,\n connectionKey,\n });\n\n if (!connection || connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected) {\n throw new AXPIntegrationNotConnectedError(options.providerId);\n }\n\n if (connection.expiresAt && new Date(connection.expiresAt).getTime() < Date.now()) {\n throw new AXPIntegrationExpiredError(options.providerId, connection.id);\n }\n\n if (options.requiredScopes?.length && connection.grantedScopes) {\n const missingScopes = options.requiredScopes.filter((s) => !connection.grantedScopes!.includes(s));\n if (!isEmpty(missingScopes)) {\n throw new AXPIntegrationMissingScopeError(options.providerId, missingScopes);\n }\n }\n\n return connection;\n }\n\n private async resolveRuntimeHooks(providerId: string) {\n const providers = this.runtimeProviders ?? [];\n for (const provider of providers) {\n const resolved = provider instanceof Promise ? await provider : provider;\n if (resolved.providerId === providerId) {\n return resolved.getHooks();\n }\n }\n return null;\n }\n}\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_STATUS,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXMIntegrationManagementIntegrationConnectionEntityModel } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#region ---- Integration connection status ----\n\n/** Matches integration-connections-panel `isProviderConnected` semantics. */\nexport function isActiveIntegrationConnection(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel | null | undefined,\n): boolean {\n if (!connection) {\n return false;\n }\n\n return (\n connection.status === AXP_INTEGRATION_CONNECTION_STATUS.Connected &&\n !connection.isRevoked &&\n !connection.isDisabled\n );\n}\n\n//#endregion\n","import { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n} from '@acorex-platform/framework-shared/core';\nimport { AXMIntegrationConnectionManager } from './integration-connection.manager';\nimport { isActiveIntegrationConnection } from './integration-connection-status.util';\n\n//#region ---- Integration expression scope ----\n\n/**\n * Exposes integration connection checks in expression strings, e.g.\n * `{{ integration.isUserConnected('telegram') }}`.\n */\n@Injectable()\nexport class AXMIntegrationEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('integration', {\n isUserConnected: (providerId: string, connectionKey?: string) =>\n this.isConnected(providerId, AXP_INTEGRATION_CONNECTION_SCOPE.User, connectionKey),\n isTenantConfigured: (providerId: string, connectionKey?: string) =>\n this.isConnected(providerId, AXP_INTEGRATION_CONNECTION_SCOPE.Tenant, connectionKey),\n });\n }\n\n private async isConnected(\n providerId: string,\n scope: typeof AXP_INTEGRATION_CONNECTION_SCOPE.User | typeof AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n connectionKey?: string,\n ): Promise<boolean> {\n const normalizedProviderId = String(providerId ?? '').trim();\n if (!normalizedProviderId) {\n return false;\n }\n\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: normalizedProviderId,\n connectionScope: scope,\n connectionKey: defaultTo(connectionKey, 'default'),\n });\n\n return isActiveIntegrationConnection(connection);\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXP_PROTECTED_ROUTE_GUARDS } from '@acorex-platform/framework-client/common';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { Routes } from '@angular/router';\n\n//#endregion\n\n//#region ----- Routes -----\n\nexport function integrationManagementRoutesFactory(): Routes {\n return [\n {\n path: ':app/admin/integrations',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./integrations-page.component').then((c) => c.AXMIntegrationsPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n","import { Routes } from '@angular/router';\n\nexport const integrationOAuthCallbackRoutes: Routes = [\n // App-agnostic callback first — must win over `:appName/...` (else appName=\"integrations\").\n {\n path: 'integrations/oauth/callback/:providerId',\n loadComponent: () =>\n import('./integration-oauth-callback-page.component').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),\n },\n // Legacy app-prefixed callback (older provider redirect URI configs).\n {\n path: ':appName/integrations/oauth/callback/:providerId',\n loadComponent: () =>\n import('./integration-oauth-callback-page.component').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),\n },\n];\n","export const AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY = 'integration-management.integration-ref-page';\n","//#region ----- Imports -----\n\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\nimport { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const AXM_INTEGRATION_REF_FILTER_WIDGET_NAME = 'integration-ref-filter';\n\n//#endregion\n\n//#region ----- Widget config -----\n\nexport const AXMIntegrationRefFilterWidget: AXPWidgetConfig = {\n name: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n title: 'Integration Source Filter',\n description: 'Select-box filter for integrationRef.source provider ids.',\n type: 'filter',\n icon: 'fa-light fa-plug',\n /**\n * `path` is required so AXPValueWidgetComponent treats this as a value widget\n * and setValue/getValue bind into the filter context (otherwise Apply writes empty).\n */\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./integration-ref-filter-widget-edit.component').then(\n (c) => c.AXMIntegrationRefFilterWidgetEditComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\nimport { AXM_INTEGRATION_REF_FILTER_WIDGET_NAME } from './integration-ref-filter.widget.config';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Widget name used on entity `integrationRef` fields (`schema.interface.type`). */\nexport const AXM_INTEGRATION_REF_WIDGET_NAME = 'integration-ref';\n\n//#endregion\n\n//#region ----- Widget config -----\n\nexport const AXMIntegrationRefWidget: AXPWidgetConfig = {\n name: AXM_INTEGRATION_REF_WIDGET_NAME,\n title: 'Integration Provider',\n description: 'Shows the integration provider logo for records linked via integrationRef.',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-plug',\n defaultFilterWidgetName: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n properties: [],\n components: {\n column: {\n component: () =>\n import('./integration-ref-widget-column.component').then(\n (c) => c.AXMIntegrationRefWidgetColumnComponent,\n ),\n },\n view: {\n component: () =>\n import('./integration-ref-widget-view.component').then(\n (c) => c.AXMIntegrationRefWidgetViewComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityModifierProvider } from '@acorex-platform/framework-client/layout/entity';\n\nimport { AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY } from './integration-ref-page.constants';\nimport { AXM_INTEGRATION_REF_FILTER_WIDGET_NAME } from './integration-ref-filter.widget.config';\nimport { AXM_INTEGRATION_REF_WIDGET_NAME } from './integration-ref.widget.config';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst COLUMN_TITLE = '@integration-management:widgets.integration-ref.column-title';\nconst PAGE_TITLE = '@integration-management:widgets.integration-ref.page.title';\n/** Place near other related tabs (Members/Tasks/Documents), after Overview. */\nconst PAGE_ORDER = 20;\n\n//#endregion\n\n//#region ----- Modifier -----\n\n/**\n * For any entity that already declares `integrationRef`:\n * - wire the `integration-ref` list widget / column\n * - add a readonly Integration Info detail/edit tab (same tab strip as Overview/Profile)\n */\nexport const AXMIntegrationRefEntityModifier: AXPEntityModifierProvider = {\n entityName: '*',\n /** After default column ordering so we can pin the icon column first. */\n order: 120,\n modifier: (ctx) => {\n const property = ctx.properties.find('integrationRef').get();\n if (!property) {\n return;\n }\n\n ctx.properties.find('integrationRef').update((prop) => ({\n ...prop,\n title: COLUMN_TITLE,\n options: {\n ...prop.options,\n filter: {\n ...(prop.options?.filter ?? {}),\n advance: {\n ...(prop.options?.filter?.advance ?? {}),\n enabled: true,\n widgetType: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n },\n inline: {\n ...(prop.options?.filter?.inline ?? {}),\n enabled: true,\n },\n },\n },\n schema: {\n ...prop.schema,\n interface: {\n ...(prop.schema.interface ?? {}),\n type: AXM_INTEGRATION_REF_WIDGET_NAME,\n options: {\n ...(prop.schema.interface?.options ?? {}),\n /**\n * Drives list `inlineQueryField` → `integrationRef.source`\n * so Source filters query the nested provider id.\n */\n textField: 'source',\n expose: [\n {\n source: 'source',\n target: 'integrationRef.source',\n },\n ],\n },\n },\n },\n }));\n\n if (!ctx.columns.find('integrationRef').get()) {\n ctx.columns.add({\n name: 'integrationRef',\n title: COLUMN_TITLE,\n options: { width: '140px' },\n });\n } else {\n ctx.columns.find('integrationRef').update((col) => ({\n ...col,\n title: col.title ?? COLUMN_TITLE,\n options: {\n ...(col.options ?? {}),\n width: '140px',\n },\n }));\n }\n\n const columns = ctx.columns.list();\n if (columns?.length) {\n const index = columns.findIndex((col) => col.name === 'integrationRef');\n if (index > 0) {\n const [column] = columns.splice(index, 1);\n columns.unshift(column);\n }\n }\n\n ctx.entity.pages ??= [];\n const page = {\n componentKey: AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n title: PAGE_TITLE,\n icon: 'fa-light fa-plug',\n layout: { order: PAGE_ORDER, position: 'after' as const },\n /**\n * Required for update/edit form wizard steps.\n * Details view always includes entity.pages; empty state handles unlinked records.\n */\n appearOn: { update: true },\n };\n const existingIndex = ctx.entity.pages.findIndex(\n (entry) => entry.componentKey === AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n );\n if (existingIndex >= 0) {\n ctx.entity.pages[existingIndex] = page;\n } else {\n ctx.entity.pages.push(page);\n }\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\n\nimport { AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY } from './integration-ref-page.constants';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMIntegrationRefPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./integration-ref-page.component').then((m) => m.AXMIntegrationRefPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMIntegrationRefFilterWidget } from './integration-ref-filter.widget.config';\nimport { AXMIntegrationRefWidget } from './integration-ref.widget.config';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMIntegrationRefWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMIntegrationRefWidget, AXMIntegrationRefFilterWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport {\n AXP_MENU_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n AXPIntegrationRuntimeService,\n AXP_INTEGRATION_DOMAIN_PROVIDER,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRuntimeModule, provideCommandSetups, provideQuerySetups } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport {\n AXMIntegrationManagementCommandKeys,\n AXMIntegrationManagementQueryKeys,\n} from '@acorex-platform/module-integration-management-client/contracts';\n\nimport { IntegrationManagementManifest } from './manifest';\nimport { AXMIntegrationManagementMenuProvider } from './menu.provider';\nimport { AXMIntegrationManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMIntegrationManagementSettingProvider } from './settings.provider';\nimport { AXMIntegrationLegacyDomainProvider } from './features/domains/integration-legacy-domain.provider';\nimport { AXMIntegrationRuntimeServiceImpl } from './features/shared/integration-runtime.service.impl';\nimport { AXMIntegrationEvaluatorScopeProvider } from './features/shared/integration-evaluator-scope.provider';\nimport { integrationManagementRoutesFactory } from './features/integrations-page/integrations-page.routes';\nimport { integrationOAuthCallbackRoutes } from './features/oauth-callback/integration-oauth-callback.routes';\nimport { AXMIntegrationRefEntityModifier } from './features/widgets/integration-ref/integration-ref.entity-modifier';\nimport { AXMIntegrationRefPageComponentProvider } from './features/widgets/integration-ref/integration-ref-page-component.provider';\nimport { AXMIntegrationRefWidgetProvider } from './features/widgets/integration-ref/integration-ref-widget.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [CommonModule, AXPRuntimeModule],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => [...integrationManagementRoutesFactory(), ...integrationOAuthCallbackRoutes],\n },\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: IntegrationManagementManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMIntegrationManagementPermissionDefinitionProvider,\n multi: true,\n },\n \n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMIntegrationManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMIntegrationManagementSettingProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_DOMAIN_PROVIDER,\n useClass: AXMIntegrationLegacyDomainProvider,\n multi: true,\n },\n {\n provide: AXPIntegrationRuntimeService,\n useClass: AXMIntegrationRuntimeServiceImpl,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMIntegrationEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMIntegrationRefWidgetProvider,\n multi: true,\n },\n {\n provide: AXP_PAGE_COMPONENT_PROVIDER,\n useClass: AXMIntegrationRefPageComponentProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXMIntegrationRefEntityModifier,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionConnectWithCredentials,\n command: () =>\n import('./features/commands/connect-with-credentials.command').then((c) => c.ConnectWithCredentialsCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionDisconnect,\n command: () =>\n import('./features/commands/disconnect-connection.command').then((c) => c.DisconnectConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionDelete,\n command: () =>\n import('./features/commands/delete-connection.command').then((c) => c.DeleteConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionUpdate,\n command: () =>\n import('./features/commands/update-connection.command').then((c) => c.UpdateConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionValidate,\n command: () =>\n import('./features/commands/validate-connection.command').then((c) => c.ValidateConnectionCommand),\n },\n ]),\n provideQuerySetups([\n {\n key: AXMIntegrationManagementQueryKeys.DomainList,\n loader: () => import('./features/queries/list-domains.query').then((c) => c.ListDomainsQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ProviderList,\n loader: () => import('./features/queries/list-providers.query').then((c) => c.ListProvidersQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ProviderGet,\n loader: () => import('./features/queries/get-provider.query').then((c) => c.GetProviderQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ConnectionListMine,\n loader: () => import('./features/queries/list-my-connections.query').then((c) => c.ListMyConnectionsQuery),\n },\n ]),\n ],\n})\nexport class AXMIntegrationManagementModule {}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/connect/connect.command.types.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-connection.manager.ts","../../../../libs/modules/integration-management/client/src/lib/manifest.ts","../../../../libs/modules/integration-management/client/src/lib/menu.provider.ts","../../../../libs/modules/integration-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/integration-management/client/src/lib/settings.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/domains/integration-legacy-domain.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-runtime.service.impl.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-connection-status.util.ts","../../../../libs/modules/integration-management/client/src/lib/features/shared/integration-evaluator-scope.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/integrations-page/integrations-page.routes.ts","../../../../libs/modules/integration-management/client/src/lib/features/oauth-callback/integration-oauth-callback.routes.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page.constants.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-filter.widget.config.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref.widget.config.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref.entity-modifier.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page-component.provider.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget.provider.ts","../../../../libs/modules/integration-management/client/src/lib/integration-management.module.ts","../../../../libs/modules/integration-management/client/src/acorex-platform-module-integration-management-client.ts"],"sourcesContent":["import type { AXPIntegrationAuthMethodType, AXPIntegrationConnectionScope, AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Connect command types ----\n\nexport interface ConnectCommandInput {\n providerId: string;\n connectionScope?: AXPIntegrationConnectionScope;\n /** When set, skips auth-method picker and uses this method directly. */\n authMethodType?: AXPIntegrationAuthMethodType;\n}\n\nexport type ConnectCommandResult =\n | { outcome: 'cancelled' }\n | { outcome: 'connected'; connection: AXPSafeIntegrationConnectionDto }\n | { outcome: 'redirect'; redirectUrl: string };\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n AXP_INTEGRATION_CONNECTION_STATUS,\n type AXPSafeIntegrationConnectionDto,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty, trim } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\nimport type { AXMIntegrationManagementIntegrationConnectionEntityModel } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#region ---- Credential helpers ----\n\nexport const AXP_INTEGRATION_CREDENTIAL_MASK = '••••••••';\n\nfunction hasConfigCredential(config: Record<string, unknown>): boolean {\n return (\n !isEmpty(trim(String(config['apiKey'] ?? ''))) ||\n !isEmpty(trim(String(config['accessToken'] ?? ''))) ||\n !isEmpty(trim(String(config['refreshToken'] ?? ''))) ||\n !isEmpty(trim(String(config['clientSecret'] ?? ''))) ||\n !isEmpty(trim(String(config['botToken'] ?? '')))\n );\n}\n\nexport function isMaskedIntegrationCredential(value: string | null | undefined): boolean {\n const normalized = trim(value ?? '');\n return !normalized || normalized === AXP_INTEGRATION_CREDENTIAL_MASK;\n}\n\n/** Clears runtime OAuth/token fields while keeping reconnect-friendly client settings. */\nexport function scrubDisconnectedConnectionConfig(\n config: Record<string, unknown> | null | undefined,\n): Record<string, unknown> | null {\n if (!config) {\n return null;\n }\n\n const next = { ...config };\n delete next['accessToken'];\n delete next['refreshToken'];\n delete next['tokenExpiresAt'];\n delete next['oauthTokenJson'];\n delete next['authorizationUrl'];\n delete next['token'];\n delete next['password'];\n delete next['apiToken'];\n delete next['apiKey'];\n delete next['botToken'];\n return next;\n}\n\nexport function hasConfiguredIntegrationCredentials(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel | null | undefined,\n): boolean {\n if (!connection || connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected) {\n return false;\n }\n if (connection.isRevoked || connection.isDisabled) {\n return false;\n }\n if (!isEmpty(trim(defaultTo(connection.secretRef, '')))) {\n return true;\n }\n const config = (connection.config ?? {}) as Record<string, unknown>;\n return hasConfigCredential(config);\n}\n\n//#endregion\n\n//#region ---- Safe mapper ----\n\nexport function toSafeIntegrationConnectionDto(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel,\n): AXPSafeIntegrationConnectionDto {\n const secretRef = defaultTo(connection.secretRef, '');\n const config = (connection.config ?? {}) as Record<string, unknown>;\n const hasConfigSecret = hasConfigCredential(config);\n const hasSecret = !isEmpty(trim(secretRef)) || hasConfigSecret;\n\n return {\n id: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n displayName: connection.displayName,\n authMethodType: connection.authMethodType,\n status: connection.status,\n instanceUrl: connection.instanceUrl,\n externalAccountId: connection.externalAccountId,\n externalAccountName: connection.externalAccountName,\n grantedScopes: connection.grantedScopes,\n expiresAt: connection.expiresAt,\n lastConnectedAt: connection.lastConnectedAt,\n lastValidatedAt: connection.lastValidatedAt,\n lastSyncAt: connection.lastSyncAt,\n lastErrorCode: connection.lastErrorCode,\n lastErrorMessage: connection.lastErrorMessage,\n isRevoked: connection.isRevoked,\n isDisabled: connection.isDisabled,\n config: connection.config,\n hasSecret,\n secretPreview: hasSecret ? '••••••••' : null,\n };\n}\n\n//#endregion\n\n//#region ---- Connection manager ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMIntegrationConnectionManager {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Accessors ----\n\n private connectionAccessor() {\n return this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.integrationConnection.name)\n .data<string, AXMIntegrationManagementIntegrationConnectionEntityModel>();\n }\n\n getSessionContext(): { tenantId: string; applicationId: string; userId: string } {\n const tenantId = this.sessionService.tenant?.id;\n const applicationId = this.sessionService.application?.id;\n const userId = this.sessionService.user?.id;\n if (!tenantId || !applicationId || !userId) {\n throw new Error(\n 'Integration operations require an authenticated user, tenant, and application context.',\n );\n }\n return { tenantId, applicationId, userId };\n }\n\n private ownershipFilters(\n tenantId: string,\n applicationId: string,\n userId?: string,\n ): Array<Record<string, unknown>> {\n const filters: Array<Record<string, unknown>> = [\n { field: 'scopeInfo.tenantId', operator: { type: 'equal' }, value: tenantId },\n { field: 'scopeInfo.applicationId', operator: { type: 'equal' }, value: applicationId },\n ];\n if (userId) {\n filters.push({ field: 'scopeInfo.userId', operator: { type: 'equal' }, value: userId });\n }\n return filters;\n }\n\n private buildOwnershipInfo(\n tenantId: string,\n applicationId: string,\n connectionScope: 'user' | 'tenant',\n userId: string,\n ) {\n return {\n tenantId,\n applicationId,\n ...(connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? { userId } : {}),\n };\n }\n\n //#endregion\n\n //#region ---- Queries ----\n\n async listForCurrentUser(\n connectionScope?: 'user' | 'tenant',\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel[]> {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n const result = await this.connectionAccessor().query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n ...this.ownershipFilters(tenantId, applicationId),\n ...(connectionScope\n ? [{ field: 'connectionScope', operator: { type: 'equal' as const }, value: connectionScope }]\n : []),\n {\n logic: 'or',\n filters: [\n {\n field: 'connectionScope',\n operator: { type: 'equal' },\n value: AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n },\n {\n logic: 'and',\n filters: [\n {\n field: 'connectionScope',\n operator: { type: 'equal' },\n value: AXP_INTEGRATION_CONNECTION_SCOPE.User,\n },\n { field: 'scopeInfo.userId', operator: { type: 'equal' }, value: userId },\n ],\n },\n ],\n },\n ],\n },\n });\n\n return (result.items ?? []).filter((item) => {\n if (item.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return true;\n }\n return item.scopeInfo?.userId === userId;\n });\n }\n\n async findByUniqueKey(input: {\n providerId: string;\n connectionScope: 'user' | 'tenant';\n connectionKey: string;\n userId?: string;\n tenantId?: string;\n applicationId?: string;\n }): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel | null> {\n const ctx = this.getSessionContext();\n const tenantId = input.tenantId ?? ctx.tenantId;\n const applicationId = input.applicationId ?? ctx.applicationId;\n const userId = input.userId ?? ctx.userId;\n\n const filters: Array<Record<string, unknown>> = [\n ...this.ownershipFilters(\n tenantId,\n applicationId,\n input.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? userId : undefined,\n ),\n { field: 'providerId', operator: { type: 'equal' }, value: input.providerId },\n { field: 'connectionScope', operator: { type: 'equal' }, value: input.connectionScope },\n { field: 'connectionKey', operator: { type: 'equal' }, value: input.connectionKey },\n ];\n\n const result = await this.connectionAccessor().query({\n skip: 0,\n take: 1,\n filter: { logic: 'and', filters },\n });\n\n return result.items?.[0] ?? null;\n }\n\n async getByIdForCurrentUser(\n connectionId: string,\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel | null> {\n const connection = await this.connectionAccessor().byKey(connectionId);\n if (!connection) {\n return null;\n }\n return this.assertOwnership(connection) ? connection : null;\n }\n\n //#endregion\n\n //#region ---- Mutations ----\n\n async upsertConnection(\n data: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel> & {\n providerId: string;\n connectionScope: 'user' | 'tenant';\n connectionKey: string;\n displayName: string;\n authMethodType: AXMIntegrationManagementIntegrationConnectionEntityModel['authMethodType'];\n },\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel> {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n const existing = await this.findByUniqueKey({\n providerId: data.providerId,\n connectionScope: data.connectionScope,\n connectionKey: data.connectionKey,\n tenantId,\n applicationId,\n userId: data.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.User ? userId : undefined,\n });\n\n const scopeInfo = this.buildOwnershipInfo(\n tenantId,\n applicationId,\n data.connectionScope,\n userId,\n );\n\n const payload: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel> = {\n ...data,\n scopeInfo,\n isRevoked: defaultTo(data.isRevoked, false),\n isDisabled: defaultTo(data.isDisabled, false),\n status: data.status ?? AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n lastConnectedAt: data.lastConnectedAt ?? new Date().toISOString(),\n };\n\n if (existing) {\n await this.connectionAccessor().update(existing.id, payload);\n const updated = await this.connectionAccessor().byKey(existing.id);\n if (!updated) {\n throw new Error('Connection not found after update.');\n }\n return updated;\n }\n\n const createPayload: Omit<AXMIntegrationManagementIntegrationConnectionEntityModel, 'id'> = {\n providerId: data.providerId,\n connectionScope: data.connectionScope,\n connectionKey: data.connectionKey,\n displayName: data.displayName,\n authMethodType: data.authMethodType,\n scopeInfo,\n isRevoked: defaultTo(data.isRevoked, false),\n isDisabled: defaultTo(data.isDisabled, false),\n status: data.status ?? AXP_INTEGRATION_CONNECTION_STATUS.Connected,\n lastConnectedAt: data.lastConnectedAt ?? new Date().toISOString(),\n instanceUrl: data.instanceUrl ?? null,\n externalAccountId: data.externalAccountId ?? null,\n externalAccountName: data.externalAccountName ?? null,\n grantedScopes: data.grantedScopes ?? null,\n secretRef: data.secretRef ?? null,\n expiresAt: data.expiresAt ?? null,\n lastValidatedAt: data.lastValidatedAt ?? null,\n lastSyncAt: data.lastSyncAt ?? null,\n lastErrorCode: data.lastErrorCode ?? null,\n lastErrorMessage: data.lastErrorMessage ?? null,\n config: data.config ?? null,\n };\n\n const id = await this.connectionAccessor().create(createPayload);\n const created = await this.connectionAccessor().byKey(id);\n if (!created) {\n throw new Error('Connection not found after create.');\n }\n return created;\n }\n\n async updateConnection(\n connectionId: string,\n patch: Partial<AXMIntegrationManagementIntegrationConnectionEntityModel>,\n ): Promise<AXMIntegrationManagementIntegrationConnectionEntityModel> {\n const existing = await this.getByIdForCurrentUser(connectionId);\n if (!existing) {\n throw new Error('Connection not found or access denied.');\n }\n await this.connectionAccessor().update(connectionId, patch);\n const updated = await this.connectionAccessor().byKey(connectionId);\n if (!updated) {\n throw new Error('Connection not found after update.');\n }\n return updated;\n }\n\n async deleteConnection(connectionId: string): Promise<void> {\n const existing = await this.getByIdForCurrentUser(connectionId);\n if (!existing) {\n throw new Error('Connection not found or access denied.');\n }\n await this.connectionAccessor().delete(connectionId);\n }\n\n //#endregion\n\n //#region ---- Authorization ----\n\n assertOwnership(connection: AXMIntegrationManagementIntegrationConnectionEntityModel): boolean {\n const { tenantId, applicationId, userId } = this.getSessionContext();\n if (connection.scopeInfo?.tenantId !== tenantId) {\n return false;\n }\n if (connection.scopeInfo?.applicationId !== applicationId) {\n return false;\n }\n if (connection.connectionScope === AXP_INTEGRATION_CONNECTION_SCOPE.Tenant) {\n return true;\n }\n return connection.scopeInfo?.userId === userId;\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\nexport const IntegrationManagementManifest: 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: 'platform',\n domain: 'platform',\n required: false,\n};\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport {\n AXMIntegrationManagementMenuKeys,\n AXPAdministrationPermissionKeys,\n RootConfig,\n} from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Menu Provider -----\n\nexport class AXMIntegrationManagementMenuProvider implements AXPMenuProvider {\n private readonly sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n const appName = this.sessionService.application?.name;\n\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXMIntegrationManagementMenuKeys.Integrations,\n priority: 1000,\n text: '@integration-management:pages.integrations.title',\n type: 'menu',\n icon: 'fa-light fa-plug',\n path: `/${appName}/admin/integrations`,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPAdministrationPermissionKeys.MaintainConnections],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';\nimport { AXPAdministrationPermissionKeys } from '@acorex-platform/module-integration-management-client/contracts';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers Integrations section capabilities under Administration.\n */\n@Injectable()\nexport class AXMIntegrationManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAdministrationPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:administration.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.Administration.Root, `${G}.administration.title`, `${G}.administration.description`, { order: 120 });\n\n context\n .addGroup(\n groups.Administration.Integrations,\n `${G}.administration-integrations.title`,\n `${G}.administration-integrations.description`,\n { parent: groups.Administration.Root, order: 20 },\n )\n .addPermission(keys.ViewIntegrations, `${P}.view-integrations.title`, `${P}.view-integrations.description`)\n .endPermission()\n .addPermission(\n keys.MaintainConnections,\n `${P}.maintain-connections.title`,\n `${P}.maintain-connections.description`,\n )\n .endPermission()\n .addPermission(\n keys.ManageIntegrationActions,\n `${P}.manage-integration-actions.title`,\n `${P}.manage-integration-actions.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPSettingDefinitionProvider,\n AXPSettingDefinitionProviderContext,\n} from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ---- Settings Provider ----\n\nconst I18N = '@integration-management:settings';\n\nexport class AXMIntegrationManagementSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n if (context.hasGroup('integrations')) {\n return;\n }\n\n context\n .addGroup(\n 'integrations',\n `${I18N}.group.nav-title`,\n `${I18N}.group.description`,\n 'fa-light fa-plug',\n `${I18N}.group.title`,\n 45,\n )\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXP_INTEGRATION_CATEGORY } 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/module-integration-management-client/contracts';\n\nconst I18N = '@integration-management:settings.domains.other';\n\n/** Fallback domain for connectors not yet assigned to a first-class integration domain. */\n@Injectable()\nexport class AXMIntegrationLegacyDomainProvider implements AXPIntegrationDomainProvider {\n async provide(context: AXPIntegrationDomainProviderContext): Promise<void> {\n context.register({\n id: 'other',\n module: RootConfig.module.name,\n displayName: `${I18N}.title`,\n description: `${I18N}.description`,\n icon: 'fa-light fa-plug',\n category: AXP_INTEGRATION_CATEGORY.Other,\n capabilities: [],\n sortOrder: 999,\n });\n }\n}\n","import { AXP_INTEGRATION_CONNECTION_STATUS, AXPIntegrationExpiredError, AXPIntegrationMissingScopeError, AXPIntegrationNotConnectedError, type AXPIntegrationProviderDefinition, type AXPIntegrationRuntimeContext, type AXPSafeIntegrationConnectionDto } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_INTEGRATION_RUNTIME_PROVIDER,\n AXP_INTEGRATION_SECRET_STORE,\n AXPIntegrationProviderRegistryService,\n AXPIntegrationRuntimeService,\n type AXPIntegrationWithClientOptions,\n} from '@acorex-platform/framework-client/common';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, isEmpty } from 'lodash';\nimport { AXMIntegrationConnectionManager, toSafeIntegrationConnectionDto } from './integration-connection.manager';\n\n//#region ---- Runtime service implementation ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMIntegrationRuntimeServiceImpl extends AXPIntegrationRuntimeService {\n private readonly registry = inject(AXPIntegrationProviderRegistryService);\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n private readonly secretStore = inject(AXP_INTEGRATION_SECRET_STORE, { optional: true });\n private readonly runtimeProviders = inject(AXP_INTEGRATION_RUNTIME_PROVIDER, { optional: true });\n\n async getProvider(id: string): Promise<AXPIntegrationProviderDefinition> {\n return this.registry.getOrThrow(id);\n }\n\n async listProviders(): Promise<AXPIntegrationProviderDefinition[]> {\n return this.registry.list();\n }\n\n async getConnection(options: AXPIntegrationWithClientOptions): Promise<AXPSafeIntegrationConnectionDto> {\n const connection = await this.resolveConnection(options);\n return toSafeIntegrationConnectionDto(connection);\n }\n\n async withClient<T>(\n options: AXPIntegrationWithClientOptions,\n fn: (client: unknown, ctx: AXPIntegrationRuntimeContext) => Promise<T>,\n ): Promise<T> {\n const connection = await this.resolveConnection(options);\n if (!connection.secretRef) {\n throw new AXPIntegrationNotConnectedError(options.providerId);\n }\n\n const ctx = await this.buildRuntimeContext({\n ...toSafeIntegrationConnectionDto(connection),\n secretRef: connection.secretRef,\n });\n\n const hooks = await this.resolveRuntimeHooks(options.providerId);\n if (!hooks?.createClient) {\n throw new Error(`Integration provider '${options.providerId}' does not expose a runtime client.`);\n }\n\n const client = await hooks.createClient(ctx);\n return fn(client, ctx);\n }\n\n async buildRuntimeContext(\n connection: AXPSafeIntegrationConnectionDto & { secretRef: string },\n ): Promise<AXPIntegrationRuntimeContext> {\n const { tenantId, applicationId, userId } = this.connectionManager.getSessionContext();\n return {\n tenantId,\n applicationId,\n userId,\n connectionId: connection.id,\n providerId: connection.providerId,\n connectionScope: connection.connectionScope,\n connectionKey: connection.connectionKey,\n authMethodType: connection.authMethodType,\n instanceUrl: connection.instanceUrl,\n config: connection.config,\n secretRef: connection.secretRef,\n };\n }\n\n private async resolveConnection(options: AXPIntegrationWithClientOptions) {\n const provider = await this.registry.getOrThrow(options.providerId);\n const connectionScope = options.connectionScope ?? 'user';\n const connectionKey = defaultTo(options.connectionKey, provider.defaultConnectionKey ?? 'default');\n\n if (options.requiredCapabilities?.length) {\n const missing = options.requiredCapabilities.filter((c) => !provider.capabilities.includes(c as never));\n if (missing.length) {\n throw new Error(`Provider '${provider.id}' is missing capabilities: ${missing.join(', ')}`);\n }\n }\n\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: options.providerId,\n connectionScope,\n connectionKey,\n });\n\n if (!connection || connection.status !== AXP_INTEGRATION_CONNECTION_STATUS.Connected) {\n throw new AXPIntegrationNotConnectedError(options.providerId);\n }\n\n if (connection.expiresAt && new Date(connection.expiresAt).getTime() < Date.now()) {\n throw new AXPIntegrationExpiredError(options.providerId, connection.id);\n }\n\n if (options.requiredScopes?.length && connection.grantedScopes) {\n const missingScopes = options.requiredScopes.filter((s) => !connection.grantedScopes!.includes(s));\n if (!isEmpty(missingScopes)) {\n throw new AXPIntegrationMissingScopeError(options.providerId, missingScopes);\n }\n }\n\n return connection;\n }\n\n private async resolveRuntimeHooks(providerId: string) {\n const providers = this.runtimeProviders ?? [];\n for (const provider of providers) {\n const resolved = provider instanceof Promise ? await provider : provider;\n if (resolved.providerId === providerId) {\n return resolved.getHooks();\n }\n }\n return null;\n }\n}\n\n//#endregion\n","import {\n AXP_INTEGRATION_CONNECTION_STATUS,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXMIntegrationManagementIntegrationConnectionEntityModel } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#region ---- Integration connection status ----\n\n/** Matches integration-connections-panel `isProviderConnected` semantics. */\nexport function isActiveIntegrationConnection(\n connection: AXMIntegrationManagementIntegrationConnectionEntityModel | null | undefined,\n): boolean {\n if (!connection) {\n return false;\n }\n\n return (\n connection.status === AXP_INTEGRATION_CONNECTION_STATUS.Connected &&\n !connection.isRevoked &&\n !connection.isDisabled\n );\n}\n\n//#endregion\n","import { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport {\n AXP_INTEGRATION_CONNECTION_SCOPE,\n} from '@acorex-platform/framework-shared/core';\nimport { AXMIntegrationConnectionManager } from './integration-connection.manager';\nimport { isActiveIntegrationConnection } from './integration-connection-status.util';\n\n//#region ---- Integration expression scope ----\n\n/**\n * Exposes integration connection checks in expression strings, e.g.\n * `{{ integration.isUserConnected('telegram') }}`.\n */\n@Injectable()\nexport class AXMIntegrationEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly connectionManager = inject(AXMIntegrationConnectionManager);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('integration', {\n isUserConnected: (providerId: string, connectionKey?: string) =>\n this.isConnected(providerId, AXP_INTEGRATION_CONNECTION_SCOPE.User, connectionKey),\n isTenantConfigured: (providerId: string, connectionKey?: string) =>\n this.isConnected(providerId, AXP_INTEGRATION_CONNECTION_SCOPE.Tenant, connectionKey),\n });\n }\n\n private async isConnected(\n providerId: string,\n scope: typeof AXP_INTEGRATION_CONNECTION_SCOPE.User | typeof AXP_INTEGRATION_CONNECTION_SCOPE.Tenant,\n connectionKey?: string,\n ): Promise<boolean> {\n const normalizedProviderId = String(providerId ?? '').trim();\n if (!normalizedProviderId) {\n return false;\n }\n\n const connection = await this.connectionManager.findByUniqueKey({\n providerId: normalizedProviderId,\n connectionScope: scope,\n connectionKey: defaultTo(connectionKey, 'default'),\n });\n\n return isActiveIntegrationConnection(connection);\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXP_PROTECTED_ROUTE_GUARDS } from '@acorex-platform/framework-client/common';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { Routes } from '@angular/router';\n\n//#endregion\n\n//#region ----- Routes -----\n\nexport function integrationManagementRoutesFactory(): Routes {\n return [\n {\n path: ':app/admin/integrations',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./integrations-page.component').then((c) => c.AXMIntegrationsPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n","import { Routes } from '@angular/router';\n\nexport const integrationOAuthCallbackRoutes: Routes = [\n // App-agnostic callback first — must win over `:appName/...` (else appName=\"integrations\").\n {\n path: 'integrations/oauth/callback/:providerId',\n loadComponent: () =>\n import('./integration-oauth-callback-page.component').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),\n },\n // Legacy app-prefixed callback (older provider redirect URI configs).\n {\n path: ':appName/integrations/oauth/callback/:providerId',\n loadComponent: () =>\n import('./integration-oauth-callback-page.component').then((c) => c.AXMIntegrationOAuthCallbackPageComponent),\n },\n];\n","export const AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY = 'integration-management.integration-ref-page';\n","//#region ----- Imports -----\n\nimport {\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex-platform/framework-client/layout/widgets';\nimport { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const AXM_INTEGRATION_REF_FILTER_WIDGET_NAME = 'integration-ref-filter';\n\n//#endregion\n\n//#region ----- Widget config -----\n\nexport const AXMIntegrationRefFilterWidget: AXPWidgetConfig = {\n name: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n title: 'Integration Source Filter',\n description: 'Select-box filter for integrationRef.source provider ids.',\n type: 'filter',\n icon: 'fa-light fa-plug',\n /**\n * `path` is required so AXPValueWidgetComponent treats this as a value widget\n * and setValue/getValue bind into the filter context (otherwise Apply writes empty).\n */\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n edit: {\n component: () =>\n import('./integration-ref-filter-widget-edit.component').then(\n (c) => c.AXMIntegrationRefFilterWidgetEditComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\nimport { AXM_INTEGRATION_REF_FILTER_WIDGET_NAME } from './integration-ref-filter.widget.config';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/** Widget name used on entity `integrationRef` fields (`schema.interface.type`). */\nexport const AXM_INTEGRATION_REF_WIDGET_NAME = 'integration-ref';\n\n//#endregion\n\n//#region ----- Widget config -----\n\nexport const AXMIntegrationRefWidget: AXPWidgetConfig = {\n name: AXM_INTEGRATION_REF_WIDGET_NAME,\n title: 'Integration Provider',\n description: 'Shows the integration provider logo for records linked via integrationRef.',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-plug',\n defaultFilterWidgetName: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n properties: [],\n components: {\n column: {\n component: () =>\n import('./integration-ref-widget-column.component').then(\n (c) => c.AXMIntegrationRefWidgetColumnComponent,\n ),\n },\n view: {\n component: () =>\n import('./integration-ref-widget-view.component').then(\n (c) => c.AXMIntegrationRefWidgetViewComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityModifierProvider } from '@acorex-platform/framework-client/layout/entity';\n\nimport { AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY } from './integration-ref-page.constants';\nimport { AXM_INTEGRATION_REF_FILTER_WIDGET_NAME } from './integration-ref-filter.widget.config';\nimport { AXM_INTEGRATION_REF_WIDGET_NAME } from './integration-ref.widget.config';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst COLUMN_TITLE = '@integration-management:widgets.integration-ref.column-title';\nconst PAGE_TITLE = '@integration-management:widgets.integration-ref.page.title';\n/** Place near other related tabs (Members/Tasks/Documents), after Overview. */\nconst PAGE_ORDER = 20;\n\n//#endregion\n\n//#region ----- Modifier -----\n\n/**\n * For any entity that already declares `integrationRef`:\n * - wire the `integration-ref` list widget / column\n * - add a readonly Integration Info detail/edit tab (same tab strip as Overview/Profile)\n */\nexport const AXMIntegrationRefEntityModifier: AXPEntityModifierProvider = {\n entityName: '*',\n /** After default column ordering so we can pin the icon column first. */\n order: 120,\n modifier: (ctx) => {\n const property = ctx.properties.find('integrationRef').get();\n if (!property) {\n return;\n }\n\n ctx.properties.find('integrationRef').update((prop) => ({\n ...prop,\n title: COLUMN_TITLE,\n options: {\n ...prop.options,\n filter: {\n ...(prop.options?.filter ?? {}),\n advance: {\n ...(prop.options?.filter?.advance ?? {}),\n enabled: true,\n widgetType: AXM_INTEGRATION_REF_FILTER_WIDGET_NAME,\n },\n inline: {\n ...(prop.options?.filter?.inline ?? {}),\n enabled: true,\n },\n },\n },\n schema: {\n ...prop.schema,\n interface: {\n ...(prop.schema.interface ?? {}),\n type: AXM_INTEGRATION_REF_WIDGET_NAME,\n options: {\n ...(prop.schema.interface?.options ?? {}),\n /**\n * Drives list `inlineQueryField` → `integrationRef.source`\n * so Source filters query the nested provider id.\n */\n textField: 'source',\n expose: [\n {\n source: 'source',\n target: 'integrationRef.source',\n },\n ],\n },\n },\n },\n }));\n\n if (!ctx.columns.find('integrationRef').get()) {\n ctx.columns.add({\n name: 'integrationRef',\n title: COLUMN_TITLE,\n options: { width: '140px' },\n });\n } else {\n ctx.columns.find('integrationRef').update((col) => ({\n ...col,\n title: col.title ?? COLUMN_TITLE,\n options: {\n ...(col.options ?? {}),\n width: '140px',\n },\n }));\n }\n\n const columns = ctx.columns.list();\n if (columns?.length) {\n const index = columns.findIndex((col) => col.name === 'integrationRef');\n if (index > 0) {\n const [column] = columns.splice(index, 1);\n columns.unshift(column);\n }\n }\n\n ctx.entity.pages ??= [];\n const page = {\n componentKey: AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n title: PAGE_TITLE,\n icon: 'fa-light fa-plug',\n layout: { order: PAGE_ORDER, position: 'after' as const },\n /**\n * Required for update/edit form wizard steps.\n * Details view always includes entity.pages; empty state handles unlinked records.\n */\n appearOn: { update: true },\n };\n const existingIndex = ctx.entity.pages.findIndex(\n (entry) => entry.componentKey === AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n );\n if (existingIndex >= 0) {\n ctx.entity.pages[existingIndex] = page;\n } else {\n ctx.entity.pages.push(page);\n }\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\n\nimport { AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY } from './integration-ref-page.constants';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMIntegrationRefPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: AXM_INTEGRATION_REF_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./integration-ref-page.component').then((m) => m.AXMIntegrationRefPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMIntegrationRefFilterWidget } from './integration-ref-filter.widget.config';\nimport { AXMIntegrationRefWidget } from './integration-ref.widget.config';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMIntegrationRefWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMIntegrationRefWidget, AXMIntegrationRefFilterWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport {\n AXP_MENU_PROVIDER,\n AXP_SETTING_DEFINITION_PROVIDER,\n AXPIntegrationRuntimeService,\n AXP_INTEGRATION_DOMAIN_PROVIDER,\n} from '@acorex-platform/framework-client/common';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRuntimeModule, provideCommandSetups, provideQuerySetups } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport {\n AXMIntegrationManagementCommandKeys,\n AXMIntegrationManagementQueryKeys,\n} from '@acorex-platform/module-integration-management-client/contracts';\n\nimport { IntegrationManagementManifest } from './manifest';\nimport { AXMIntegrationManagementMenuProvider } from './menu.provider';\nimport { AXMIntegrationManagementPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMIntegrationManagementSettingProvider } from './settings.provider';\nimport { AXMIntegrationLegacyDomainProvider } from './features/domains/integration-legacy-domain.provider';\nimport { AXMIntegrationRuntimeServiceImpl } from './features/shared/integration-runtime.service.impl';\nimport { AXMIntegrationEvaluatorScopeProvider } from './features/shared/integration-evaluator-scope.provider';\nimport { integrationManagementRoutesFactory } from './features/integrations-page/integrations-page.routes';\nimport { integrationOAuthCallbackRoutes } from './features/oauth-callback/integration-oauth-callback.routes';\nimport { AXMIntegrationRefEntityModifier } from './features/widgets/integration-ref/integration-ref.entity-modifier';\nimport { AXMIntegrationRefPageComponentProvider } from './features/widgets/integration-ref/integration-ref-page-component.provider';\nimport { AXMIntegrationRefWidgetProvider } from './features/widgets/integration-ref/integration-ref-widget.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [CommonModule, AXPRuntimeModule],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: () => [...integrationManagementRoutesFactory(), ...integrationOAuthCallbackRoutes],\n },\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: IntegrationManagementManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMIntegrationManagementPermissionDefinitionProvider,\n multi: true,\n },\n \n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMIntegrationManagementMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMIntegrationManagementSettingProvider,\n multi: true,\n },\n {\n provide: AXP_INTEGRATION_DOMAIN_PROVIDER,\n useClass: AXMIntegrationLegacyDomainProvider,\n multi: true,\n },\n {\n provide: AXPIntegrationRuntimeService,\n useClass: AXMIntegrationRuntimeServiceImpl,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMIntegrationEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMIntegrationRefWidgetProvider,\n multi: true,\n },\n {\n provide: AXP_PAGE_COMPONENT_PROVIDER,\n useClass: AXMIntegrationRefPageComponentProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXMIntegrationRefEntityModifier,\n multi: true,\n },\n provideCommandSetups([\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionConnectWithCredentials,\n command: () =>\n import('./features/commands/connect-with-credentials.command').then((c) => c.ConnectWithCredentialsCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionDisconnect,\n command: () =>\n import('./features/commands/disconnect-connection.command').then((c) => c.DisconnectConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionDelete,\n command: () =>\n import('./features/commands/delete-connection.command').then((c) => c.DeleteConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionUpdate,\n command: () =>\n import('./features/commands/update-connection.command').then((c) => c.UpdateConnectionCommand),\n },\n {\n key: AXMIntegrationManagementCommandKeys.ConnectionValidate,\n command: () =>\n import('./features/commands/validate-connection.command').then((c) => c.ValidateConnectionCommand),\n },\n ]),\n provideQuerySetups([\n {\n key: AXMIntegrationManagementQueryKeys.DomainList,\n loader: () => import('./features/queries/list-domains.query').then((c) => c.ListDomainsQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ProviderList,\n loader: () => import('./features/queries/list-providers.query').then((c) => c.ListProvidersQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ProviderGet,\n loader: () => import('./features/queries/get-provider.query').then((c) => c.GetProviderQuery),\n },\n {\n key: AXMIntegrationManagementQueryKeys.ConnectionListMine,\n loader: () => import('./features/queries/list-my-connections.query').then((c) => c.ListMyConnectionsQuery),\n },\n ]),\n ],\n})\nexport class AXMIntegrationManagementModule {}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N"],"mappings":"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"}
|