From 7f35735bb113c1797e751e36569a1c2332a73fe8 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:06:08 -0800 Subject: [PATCH 01/14] Add built-in/custom connector checks using `HostService` --- libs/designer-ui/src/lib/connections/index.ts | 12 ++++++++++++ .../designer-client-services/src/lib/host.ts | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 libs/designer-ui/src/lib/connections/index.ts diff --git a/libs/designer-ui/src/lib/connections/index.ts b/libs/designer-ui/src/lib/connections/index.ts new file mode 100644 index 00000000000..ed66e2d0228 --- /dev/null +++ b/libs/designer-ui/src/lib/connections/index.ts @@ -0,0 +1,12 @@ +import { HostService } from "@microsoft/designer-client-services-logic-apps"; +import { isBuiltInConnector, isCustomConnector } from "@microsoft/utils-logic-apps"; + +export const isDesignerBuiltInConnector: typeof isBuiltInConnector = (connectorId) => { + const isBuiltInConnectorFn = HostService()?.isBuiltInConnector ?? isBuiltInConnector; + return isBuiltInConnectorFn(connectorId); +}; + +export const isDesignerCustomConnector: typeof isCustomConnector = (connectorId) => { + const isCustomConnectorFn = HostService()?.isCustomConnector ?? isCustomConnector; + return isCustomConnectorFn(connectorId); +}; \ No newline at end of file diff --git a/libs/services/designer-client-services/src/lib/host.ts b/libs/services/designer-client-services/src/lib/host.ts index abb947b0e78..986c58c0d9e 100644 --- a/libs/services/designer-client-services/src/lib/host.ts +++ b/libs/services/designer-client-services/src/lib/host.ts @@ -8,6 +8,8 @@ export type ContentType = (typeof ContentType)[keyof typeof ContentType]; export interface IHostService { fetchAndDisplayContent(title: string, url: string, type: ContentType): void; + isBuiltInConnector?(connectorId: string): boolean; + isCustomConnector?(connectorId: string): boolean; openWorkflowParametersBlade?(): void; openConnectionResource?(connectionId: string): void; } From 3de229c1a788738a5542e1a81e81c3e76e46bd25 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:06:26 -0800 Subject: [PATCH 02/14] Convert usages of `is*Connector` to `isDesigner*Connector` --- .../src/lib/connectorsummarycard/index.tsx | 5 +++-- libs/designer-ui/src/lib/index.ts | 1 + .../lib/panel/recommendationpanel/searchResult.tsx | 4 ++-- libs/designer-ui/src/lib/utils/utils.ts | 6 +++--- .../allConnections/connectorConnectionsCard.tsx | 6 +++--- .../src/lib/ui/panel/recommendation/browseView.tsx | 11 ++++++----- .../src/lib/ui/panel/recommendation/searchView.tsx | 12 +++++++----- 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx index 7f40f16fb37..731465bc5a8 100644 --- a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx +++ b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx @@ -1,6 +1,7 @@ +import { isDesignerBuiltInConnector } from '../connections'; import { InfoDot } from '../infoDot'; import { Text, css } from '@fluentui/react'; -import { fallbackConnectorIconUrl, isBuiltInConnector } from '@microsoft/logic-apps-shared'; +import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; import { useCallback } from 'react'; export interface ConnectorSummaryCardProps { @@ -25,7 +26,7 @@ export const ConnectorSummaryCard = (props: ConnectorSummaryCardProps) => { return {connectorName}; }, [connectorName, iconUrl, isCard]); - const isBuiltIn = isBuiltInConnector(id); + const isBuiltIn = isDesignerBuiltInConnector(id); const Content = () => ( <> diff --git a/libs/designer-ui/src/lib/index.ts b/libs/designer-ui/src/lib/index.ts index 9fe4f1620fd..671bb8ee3bc 100644 --- a/libs/designer-ui/src/lib/index.ts +++ b/libs/designer-ui/src/lib/index.ts @@ -19,6 +19,7 @@ export * from './checkbox'; // export * from './colorizer' export * from './code'; export * from './combobox'; +export * from './connections'; export { default as UIConstants } from './constants'; export * from './html'; // export * from './conditioncontrol'; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx index be3f2ee305b..835b0eccca7 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx @@ -1,5 +1,6 @@ import NoResultsSvg from '../../../assets/search/noResults.svg'; import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; +import { isDesignerBuiltInConnector } from '../../connections'; import { getConnectorCategoryString } from '../../utils'; import type { OperationActionData } from './interfaces'; import { OperationSearchCard } from './operationSearchCard'; @@ -7,7 +8,6 @@ import { OperationSearchGroup } from './operationSearchGroup'; import { List, Text } from '@fluentui/react'; import { Spinner } from '@fluentui/react-components'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; -import { isBuiltInConnector } from '@microsoft/logic-apps-shared'; import type { PropsWithChildren } from 'react'; import React, { useMemo } from 'react'; import { useIntl } from 'react-intl'; @@ -142,7 +142,7 @@ export const OperationActionDataFromOperation = (operation: DiscoveryOperation { description: 'Custom category name text', }); - return isBuiltInConnector(connectorId) ? builtInText : isCustomConnector(connectorId) ? customText : azureText; + return isDesignerBuiltInConnector(connectorId) ? builtInText : isDesignerCustomConnector(connectorId) ? customText : azureText; }; export const convertUIElementNameToAutomationId = (uiElementName: string): string => { diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 5fc323eb880..4b05f694611 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -1,8 +1,8 @@ import { useAllConnectionErrors } from '../../../../core'; import { ConnectionEntry } from './connectionEntry'; import { Text, AccordionHeader, AccordionPanel, Spinner, Badge } from '@fluentui/react-components'; -import { getConnectorCategoryString } from '@microsoft/designer-ui'; -import { fallbackConnectorIconUrl, isBuiltInConnector } from '@microsoft/logic-apps-shared'; +import { getConnectorCategoryString, isDesignerBuiltInConnector } from '@microsoft/designer-ui'; +import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; export interface ConnectorConnectionsCardProps { @@ -24,7 +24,7 @@ export const ConnectorConnectionsCard: React.FC = disconnectedNodes = [], isLoading = false, }) => { - const isBuiltIn = isBuiltInConnector(connectorId); + const isBuiltIn = isDesignerBuiltInConnector(connectorId); const category = getConnectorCategoryString(connectorId); const allErrors = useAllConnectionErrors(); diff --git a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx index c9fa25ab77b..55fdbbff8e1 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx @@ -1,15 +1,16 @@ import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } from '../../../core/queries/browse'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService } from '@microsoft/designer-client-services-logic-apps'; -import { BrowseGrid } from '@microsoft/designer-ui'; -import { isBuiltInConnector, type Connector, isCustomConnector, cleanConnectorId } from '@microsoft/logic-apps-shared'; +import { BrowseGrid, isDesignerBuiltInConnector, isDesignerCustomConnector } from '@microsoft/designer-ui'; +import { type Connector, cleanConnectorId } from '@microsoft/logic-apps-shared'; import { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; const defaultFilterConnector = (connector: Connector, runtimeFilter: string): boolean => { - if (runtimeFilter === 'inapp' && !isBuiltInConnector(connector.id)) return false; - else if (runtimeFilter === 'custom' && !isCustomConnector(connector.id)) return false; - else if (runtimeFilter === 'shared') if (isBuiltInConnector(connector.id) || isCustomConnector(connector.id)) return false; + if (runtimeFilter === 'inapp' && !isDesignerBuiltInConnector(connector.id)) return false; + else if (runtimeFilter === 'custom' && !isDesignerCustomConnector(connector.id)) return false; + else if (runtimeFilter === 'shared') + if (isDesignerBuiltInConnector(connector.id) || isDesignerCustomConnector(connector.id)) return false; return true; }; diff --git a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx index 23d969e613d..e66ece17bb4 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx @@ -1,9 +1,8 @@ import type { AppDispatch } from '../../../core'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService, type ISearchService } from '@microsoft/designer-client-services-logic-apps'; -import { SearchResultsGrid } from '@microsoft/designer-ui'; +import { SearchResultsGrid, isDesignerBuiltInConnector, isDesignerCustomConnector } from '@microsoft/designer-ui'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; -import { isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; import { useDebouncedEffect } from '@react-hookz/web'; import Fuse from 'fuse.js'; import React, { useEffect, useState } from 'react'; @@ -127,10 +126,13 @@ class DefaultSearchOperationsService implements Pick { if (runtimeFilter) { - if (runtimeFilter === 'inapp' && !isBuiltInConnector(searchResult.item.properties.api.id)) return false; - else if (runtimeFilter === 'custom' && !isCustomConnector(searchResult.item.properties.api.id)) return false; + if (runtimeFilter === 'inapp' && !isDesignerBuiltInConnector(searchResult.item.properties.api.id)) return false; + else if (runtimeFilter === 'custom' && !isDesignerCustomConnector(searchResult.item.properties.api.id)) return false; else if (runtimeFilter === 'shared') - if (isBuiltInConnector(searchResult.item.properties.api.id) || isCustomConnector(searchResult.item.properties.api.id)) + if ( + isDesignerBuiltInConnector(searchResult.item.properties.api.id) || + isDesignerCustomConnector(searchResult.item.properties.api.id) + ) return false; } From db32ea200f649eb20aec6275b19c3be456e6d70a Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 12:13:55 -0800 Subject: [PATCH 03/14] Fix `logic-apps-shared` import --- libs/designer-ui/src/lib/connections/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/designer-ui/src/lib/connections/index.ts b/libs/designer-ui/src/lib/connections/index.ts index ed66e2d0228..5cc4331b8b8 100644 --- a/libs/designer-ui/src/lib/connections/index.ts +++ b/libs/designer-ui/src/lib/connections/index.ts @@ -1,5 +1,5 @@ -import { HostService } from "@microsoft/designer-client-services-logic-apps"; -import { isBuiltInConnector, isCustomConnector } from "@microsoft/utils-logic-apps"; +import { HostService } from '@microsoft/designer-client-services-logic-apps'; +import { isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; export const isDesignerBuiltInConnector: typeof isBuiltInConnector = (connectorId) => { const isBuiltInConnectorFn = HostService()?.isBuiltInConnector ?? isBuiltInConnector; @@ -9,4 +9,4 @@ export const isDesignerBuiltInConnector: typeof isBuiltInConnector = (connectorI export const isDesignerCustomConnector: typeof isCustomConnector = (connectorId) => { const isCustomConnectorFn = HostService()?.isCustomConnector ?? isCustomConnector; return isCustomConnectorFn(connectorId); -}; \ No newline at end of file +}; From c926c6cfe4339d50601f0a627283ac4dd7fb2d05 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:53:08 -0800 Subject: [PATCH 04/14] Allow passing `OperationApi | Connector` to connector checks --- libs/designer-ui/src/lib/connections/index.ts | 12 ------- .../src/lib/connectors/connectorPredicates.ts | 23 +++++++++++++ .../src/lib/connectors/connectorProperties.ts | 33 +++++++++++++++++++ libs/designer-ui/src/lib/connectors/index.ts | 2 ++ .../src/lib/connectorsummarycard/index.tsx | 22 ++++++------- libs/designer-ui/src/lib/index.ts | 2 +- .../recommendationpanel/browseResults.tsx | 7 +--- .../operationSearchGroup/index.tsx | 12 ++----- .../recommendationpanel/searchResult.tsx | 6 ++-- libs/designer-ui/src/lib/utils/utils.ts | 7 ++-- .../src/lib/core/actions/bjsworkflow/add.ts | 8 ++--- .../core/actions/bjsworkflow/initialize.ts | 12 +++---- libs/designer/src/lib/core/index.ts | 2 +- libs/designer/src/lib/core/utils/card.ts | 20 ++--------- libs/designer/src/lib/core/utils/outputs.ts | 15 +++++---- .../src/lib/core/utils/swagger/operation.ts | 13 +++++--- .../allConnections/allConnections.tsx | 12 ++----- .../connectorConnectionsCard.tsx | 23 ++++++++----- .../createConnectionWrapper.tsx | 3 +- .../selectConnection/selectConnection.tsx | 3 +- .../ui/panel/recommendation/browseView.tsx | 9 +++-- .../ui/panel/recommendation/searchView.tsx | 12 +++---- .../src/utils/src/lib/helpers/connections.ts | 10 +++--- .../src/lib/base/connection.ts | 6 ++-- .../designer-client-services/src/lib/host.ts | 7 ++-- .../src/lib/staticresultschema/index.ts | 16 ++++----- 26 files changed, 161 insertions(+), 136 deletions(-) delete mode 100644 libs/designer-ui/src/lib/connections/index.ts create mode 100644 libs/designer-ui/src/lib/connectors/connectorPredicates.ts create mode 100644 libs/designer-ui/src/lib/connectors/connectorProperties.ts create mode 100644 libs/designer-ui/src/lib/connectors/index.ts diff --git a/libs/designer-ui/src/lib/connections/index.ts b/libs/designer-ui/src/lib/connections/index.ts deleted file mode 100644 index 5cc4331b8b8..00000000000 --- a/libs/designer-ui/src/lib/connections/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HostService } from '@microsoft/designer-client-services-logic-apps'; -import { isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; - -export const isDesignerBuiltInConnector: typeof isBuiltInConnector = (connectorId) => { - const isBuiltInConnectorFn = HostService()?.isBuiltInConnector ?? isBuiltInConnector; - return isBuiltInConnectorFn(connectorId); -}; - -export const isDesignerCustomConnector: typeof isCustomConnector = (connectorId) => { - const isCustomConnectorFn = HostService()?.isCustomConnector ?? isCustomConnector; - return isCustomConnectorFn(connectorId); -}; diff --git a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts new file mode 100644 index 00000000000..88220a13d24 --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts @@ -0,0 +1,23 @@ +import type { IsConnectorFn } from '@microsoft/designer-client-services-logic-apps'; +import { HostService } from '@microsoft/designer-client-services-logic-apps'; +import { isBuiltInConnectorId, isCustomConnectorId, isString } from '@microsoft/logic-apps-shared'; + +export const isBuiltInConnector: IsConnectorFn = (connector) => { + const hostIsBuiltInConnectorFn = HostService()?.isBuiltInConnector; + if (hostIsBuiltInConnectorFn) { + return hostIsBuiltInConnectorFn(connector); + } + + const connectorId = isString(connector) ? connector : connector.id; + return isBuiltInConnectorId(connectorId); +}; + +export const isCustomConnector: IsConnectorFn = (connector) => { + const hostIsCustomConnectorFn = HostService()?.isCustomConnector; + if (hostIsCustomConnectorFn) { + return hostIsCustomConnectorFn(connector); + } + + const connectorId = isString(connector) ? connector : connector.id; + return isCustomConnectorId(connectorId); +}; diff --git a/libs/designer-ui/src/lib/connectors/connectorProperties.ts b/libs/designer-ui/src/lib/connectors/connectorProperties.ts new file mode 100644 index 00000000000..ae0b2626044 --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/connectorProperties.ts @@ -0,0 +1,33 @@ +import type { Connector, ConnectorProperty, OperationApi } from '@microsoft/logic-apps-shared'; +import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; + +export const getBrandColorFromConnector = (connector: Connector | OperationApi | undefined): string => { + return getFlatConnectorData(connector)?.brandColor ?? '#000000'; +}; + +export const getDisplayNameFromConnector = (connector: Connector | OperationApi | undefined): string => { + return getFlatConnectorData(connector)?.displayName ?? ''; +}; + +export const getDescriptionFromConnector = (connector: Connector | OperationApi | undefined): string => { + const connectorData = getFlatConnectorData(connector); + return connectorData.description ?? connectorData.generalInformation?.description ?? ''; +}; + +export const getIconUriFromConnector = (connector: Connector | OperationApi | undefined): string => { + const connectorData = getFlatConnectorData(connector); + const iconUrl = connectorData.iconUrl ?? connectorData.iconUri ?? connectorData.generalInformation?.iconUrl; + return fallbackConnectorIconUrl(iconUrl); +}; + +const getFlatConnectorData = (connector: Connector | OperationApi | undefined): Partial => { + if (!connector) { + return {}; + } + + if ('properties' in connector) { + return { id: connector.id, ...connector.properties }; + } + + return connector; +}; diff --git a/libs/designer-ui/src/lib/connectors/index.ts b/libs/designer-ui/src/lib/connectors/index.ts new file mode 100644 index 00000000000..1c84603965c --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/index.ts @@ -0,0 +1,2 @@ +export * from './connectorPredicates'; +export * from './connectorProperties'; diff --git a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx index 731465bc5a8..09e7730ad9a 100644 --- a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx +++ b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx @@ -1,32 +1,32 @@ -import { isDesignerBuiltInConnector } from '../connections'; +import { getDescriptionFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, isBuiltInConnector } from '../connectors'; import { InfoDot } from '../infoDot'; import { Text, css } from '@fluentui/react'; -import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; import { useCallback } from 'react'; export interface ConnectorSummaryCardProps { - id: string; - connectorName: string; + connector: Connector | OperationApi; displayRuntimeInfo: boolean; - description?: string; - iconUrl: string; - brandColor?: string; category: string; onClick?: (id: string) => void; isCard?: boolean; } export const ConnectorSummaryCard = (props: ConnectorSummaryCardProps) => { - const { id, connectorName, description, iconUrl, category, onClick, isCard = true, displayRuntimeInfo } = props; + const { connector, category, onClick, isCard = true, displayRuntimeInfo } = props; + const { id } = connector; + + const connectorName = getDisplayNameFromConnector(connector); + const description = getDescriptionFromConnector(connector); + const iconUrl = getIconUriFromConnector(connector); const handleClick = () => onClick?.(id); const ConnectorImage = useCallback(() => { - const src = fallbackConnectorIconUrl(iconUrl); - return {connectorName}; + return {connectorName}; }, [connectorName, iconUrl, isCard]); - const isBuiltIn = isDesignerBuiltInConnector(id); + const isBuiltIn = isBuiltInConnector(connector); const Content = () => ( <> diff --git a/libs/designer-ui/src/lib/index.ts b/libs/designer-ui/src/lib/index.ts index 671bb8ee3bc..7d038804466 100644 --- a/libs/designer-ui/src/lib/index.ts +++ b/libs/designer-ui/src/lib/index.ts @@ -19,7 +19,7 @@ export * from './checkbox'; // export * from './colorizer' export * from './code'; export * from './combobox'; -export * from './connections'; +export * from './connectors'; export { default as UIConstants } from './constants'; export * from './html'; // export * from './conditioncontrol'; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx index 279743b9c80..0c13d4fefe7 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx @@ -30,17 +30,12 @@ export const BrowseGrid = (props: BrowseGridProps) => { const onRenderCell = useCallback( (connector?: Connector, _index?: number) => { if (!connector) return; - const { displayName, description, iconUri, brandColor, generalInformation } = connector.properties; return (
{ const { operationApi, operationActionsData, onConnectorClick, onOperationClick, displayRuntimeInfo } = props; - const { id, displayName, description, iconUri } = operationApi; + const { id } = operationApi; const intl = useIntl(); @@ -29,15 +29,7 @@ export const OperationSearchGroup = (props: OperationSearchGroupProps) => { return (
- + onConnectorClick(id)}> {seeMoreText} diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx index 835b0eccca7..05d1e47cf00 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx @@ -1,6 +1,6 @@ import NoResultsSvg from '../../../assets/search/noResults.svg'; import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; -import { isDesignerBuiltInConnector } from '../../connections'; +import { isBuiltInConnector } from '../../connectors'; import { getConnectorCategoryString } from '../../utils'; import type { OperationActionData } from './interfaces'; import { OperationSearchCard } from './operationSearchCard'; @@ -140,9 +140,9 @@ export const OperationActionDataFromOperation = (operation: DiscoveryOperation(data: Record, filter: (_key: string, .reduce((res: any, [key, value]: any) => ({ ...res, [key]: value }), {}); }; -export const getConnectorCategoryString = (connectorId: string): string => { +export const getConnectorCategoryString = (connector: Connector | OperationApi | string): string => { const intl = getIntl(); const builtInText = intl.formatMessage({ defaultMessage: 'In App', @@ -363,7 +364,7 @@ export const getConnectorCategoryString = (connectorId: string): string => { description: 'Custom category name text', }); - return isDesignerBuiltInConnector(connectorId) ? builtInText : isDesignerCustomConnector(connectorId) ? customText : azureText; + return isBuiltInConnector(connector) ? builtInText : isCustomConnector(connector) ? customText : azureText; }; export const convertUIElementNameToAutomationId = (uiElementName: string): string => { diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts index 3bcbc284fd8..187be0bed79 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts @@ -13,7 +13,7 @@ import { initializeTokensAndVariables } from '../../state/tokens/tokensSlice'; import type { WorkflowState } from '../../state/workflow/workflowInterfaces'; import { addNode, setFocusNode } from '../../state/workflow/workflowSlice'; import type { AppDispatch, RootState } from '../../store'; -import { getBrandColorFromConnector, getBrandColorFromManifest, getIconUriFromConnector, getIconUriFromManifest } from '../../utils/card'; +import { getBrandColorFromManifest, getIconUriFromManifest } from '../../utils/card'; import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; import { updateDynamicDataInNode } from '../../utils/parameters/helper'; import { getInputParametersFromSwagger, getOutputParametersFromSwagger } from '../../utils/swagger/operation'; @@ -30,16 +30,16 @@ import type { NodeDataWithOperationMetadata } from './operationdeserializer'; import type { Settings } from './settings'; import { getOperationSettings, getSplitOnValue } from './settings'; import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; -import type { SwaggerParser } from '@microsoft/logic-apps-shared'; -import { ManifestParser } from '@microsoft/logic-apps-shared'; +import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; import type { + SwaggerParser, Connector, DiscoveryOperation, DiscoveryResultTypes, OperationManifest, SomeKindOfAzureOperationDiscovery, } from '@microsoft/logic-apps-shared'; -import { equals, getRecordEntry } from '@microsoft/logic-apps-shared'; +import { ManifestParser, equals, getRecordEntry } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { batch } from 'react-redux'; diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts index eed8c64ffc6..8eb1d7040d0 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts @@ -11,7 +11,6 @@ import { WorkflowKind } from '../../state/workflow/workflowInterfaces'; import type { WorkflowParameterDefinition } from '../../state/workflowparameters/workflowparametersSlice'; import { initializeParameters } from '../../state/workflowparameters/workflowparametersSlice'; import type { RootState } from '../../store'; -import { getBrandColorFromConnector, getIconUriFromConnector } from '../../utils/card'; import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; import { getSplitOnOptions, getUpdatedManifestForSchemaDependency, getUpdatedManifestForSplitOn, toOutputInfo } from '../../utils/outputs'; import { @@ -46,10 +45,9 @@ import { FunctionService, ApiManagementService, } from '@microsoft/designer-client-services-logic-apps'; -import type { OutputToken, ParameterInfo } from '@microsoft/designer-ui'; -import { getIntl } from '@microsoft/logic-apps-shared'; -import type { SchemaProperty, InputParameter, SwaggerParser, OutputParameter } from '@microsoft/logic-apps-shared'; +import { getBrandColorFromConnector, getIconUriFromConnector, type OutputToken, type ParameterInfo } from '@microsoft/designer-ui'; import { + getIntl, isDynamicListExtension, isDynamicPropertiesExtension, isDynamicSchemaExtension, @@ -59,8 +57,6 @@ import { DynamicSchemaType, ManifestParser, PropertyName, -} from '@microsoft/logic-apps-shared'; -import { CustomSwaggerServiceNames, UnsupportedException, clone, @@ -70,6 +66,10 @@ import { getObjectPropertyValue, } from '@microsoft/logic-apps-shared'; import type { + SchemaProperty, + InputParameter, + SwaggerParser, + OutputParameter, CustomSwaggerServiceDetails, OperationInfo, OperationManifest, diff --git a/libs/designer/src/lib/core/index.ts b/libs/designer/src/lib/core/index.ts index 34f57d9b42d..f9410c439a3 100644 --- a/libs/designer/src/lib/core/index.ts +++ b/libs/designer/src/lib/core/index.ts @@ -27,4 +27,4 @@ export { getOutputTokenSections, getExpressionTokenSections } from './utils/toke export { getTriggerNodeId } from './utils/graph'; export { updateParameterValidation } from './state/operation/operationMetadataSlice'; export { updateWorkflowParameters } from './actions/bjsworkflow/initialize'; -export { getBrandColorFromManifest, getIconUriFromManifest, getBrandColorFromConnector, getIconUriFromConnector } from './utils/card'; +export { getBrandColorFromManifest, getIconUriFromManifest } from './utils/card'; diff --git a/libs/designer/src/lib/core/utils/card.ts b/libs/designer/src/lib/core/utils/card.ts index 6e45b7de98b..fbfe2969ec6 100644 --- a/libs/designer/src/lib/core/utils/card.ts +++ b/libs/designer/src/lib/core/utils/card.ts @@ -1,5 +1,5 @@ -import type { Connector, OperationManifest } from '@microsoft/logic-apps-shared'; -import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; +import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; +import type { OperationManifest } from '@microsoft/utils-logic-apps'; export function getBrandColorFromManifest(manifest: OperationManifest): string { return manifest.properties?.brandColor ?? getBrandColorFromConnector(manifest.properties?.connector); @@ -8,19 +8,3 @@ export function getBrandColorFromManifest(manifest: OperationManifest): string { export function getIconUriFromManifest(manifest: OperationManifest): string { return manifest.properties?.iconUri ?? getIconUriFromConnector(manifest.properties?.connector); } - -export function getBrandColorFromConnector(connector: Connector | undefined): string { - if (!connector) return '#000000'; - const { - properties: { brandColor, metadata }, - } = connector; - return brandColor ?? metadata?.brandColor ?? '#000000'; -} - -export function getIconUriFromConnector(connector: Connector | undefined): string { - if (!connector) return ''; - const { - properties: { iconUrl, iconUri, generalInformation }, - } = connector; - return fallbackConnectorIconUrl(iconUrl ?? iconUri ?? generalInformation?.iconUrl); -} diff --git a/libs/designer/src/lib/core/utils/outputs.ts b/libs/designer/src/lib/core/utils/outputs.ts index b2c27223b64..3458940b192 100644 --- a/libs/designer/src/lib/core/utils/outputs.ts +++ b/libs/designer/src/lib/core/utils/outputs.ts @@ -15,7 +15,6 @@ import { import { addDynamicTokens } from '../state/tokens/tokensSlice'; import type { WorkflowKind } from '../state/workflow/workflowInterfaces'; import type { WorkflowParameterDefinition } from '../state/workflowparameters/workflowparametersSlice'; -import { getBrandColorFromConnector, getIconUriFromConnector } from './card'; import { getTokenExpressionValueForManifestBasedOperation } from './loops'; import { getDynamicOutputsFromSchema, getDynamicSchema } from './parameters/dynamicdata'; import { @@ -26,8 +25,12 @@ import { } from './parameters/helper'; import { convertOutputsToTokens, getTokenTitle } from './tokens'; import { OperationManifestService } from '@microsoft/designer-client-services-logic-apps'; -import { generateSchemaFromJsonString, ValueSegmentType } from '@microsoft/designer-ui'; -import { getIntl } from '@microsoft/logic-apps-shared'; +import { + generateSchemaFromJsonString, + getBrandColorFromConnector, + getIconUriFromConnector, + ValueSegmentType, +} from '@microsoft/designer-ui'; import type { Expression, ExpressionFunction, @@ -35,9 +38,12 @@ import type { OutputParameter, OutputParameters, OpenApiSchema, + OpenAPIV2, + OperationManifest, } from '@microsoft/logic-apps-shared'; import { create, + getIntl, OutputKeys, OutputSource, ExpressionParser, @@ -45,9 +51,6 @@ import { isTemplateExpression, isFunction, isStringLiteral, -} from '@microsoft/logic-apps-shared'; -import type { OpenAPIV2, OperationManifest } from '@microsoft/logic-apps-shared'; -import { ConnectionReferenceKeyFormat, getObjectPropertyValue, safeSetObjectPropertyValue, diff --git a/libs/designer/src/lib/core/utils/swagger/operation.ts b/libs/designer/src/lib/core/utils/swagger/operation.ts index af0e1406962..55c0dc917fa 100644 --- a/libs/designer/src/lib/core/utils/swagger/operation.ts +++ b/libs/designer/src/lib/core/utils/swagger/operation.ts @@ -16,7 +16,6 @@ import type { DependencyInfo, NodeInputs, NodeOperation, OutputInfo } from '../. import { ErrorLevel, updateErrorDetails, DynamicLoadStatus, initializeOperationInfo } from '../../state/operation/operationMetadataSlice'; import { addResultSchema } from '../../state/staticresultschema/staticresultsSlice'; import type { WorkflowKind } from '../../state/workflow/workflowInterfaces'; -import { getBrandColorFromConnector, getIconUriFromConnector } from '../card'; import { toOutputInfo, updateOutputsForBatchingTrigger } from '../outputs'; import { addRecurrenceParametersInGroup, @@ -29,16 +28,22 @@ import { } from '../parameters/helper'; import { loadInputValuesFromDefinition } from './inputsbuilder'; import { LogEntryLevel, LoggerService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; -import type { LAOperation, OutputParameter, SwaggerParser } from '@microsoft/logic-apps-shared'; +import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; +import type { LAOperation, OutputParameter, SwaggerParser, LogicAppsV2, OperationInfo } from '@microsoft/logic-apps-shared'; import { create, isDynamicSchemaExtension, ParameterLocations, removeConnectionPrefix, isTemplateExpression, + copyArray, + map, + RecurrenceType, + equals, + parsePathnameAndQueryKeyFromUri, + startsWith, + unmap, } from '@microsoft/logic-apps-shared'; -import type { LogicAppsV2, OperationInfo } from '@microsoft/logic-apps-shared'; -import { copyArray, map, RecurrenceType, equals, parsePathnameAndQueryKeyFromUri, startsWith, unmap } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; interface OperationInputInfo { diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx index 5622fb7751a..51d40fba6f3 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx @@ -1,10 +1,4 @@ -import { - type RootState, - useConnectionMapping, - useConnectionRefs, - getIconUriFromConnector, - getBrandColorFromConnector, -} from '../../../../core'; +import { type RootState, useConnectionMapping, useConnectionRefs } from '../../../../core'; import { useConnector } from '../../../../core/state/connection/connectionSelector'; import { ConnectorConnectionsCard } from './connectorConnectionsCard'; import { Accordion, AccordionItem, type AccordionToggleEventHandler } from '@fluentui/react-components'; @@ -93,9 +87,7 @@ const ConnectorCardWrapper = ({ apiId, connectionRefs, disconnectedNodes }: Conn diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 4b05f694611..1c6f9debb6b 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -1,15 +1,20 @@ import { useAllConnectionErrors } from '../../../../core'; import { ConnectionEntry } from './connectionEntry'; import { Text, AccordionHeader, AccordionPanel, Spinner, Badge } from '@fluentui/react-components'; -import { getConnectorCategoryString, isDesignerBuiltInConnector } from '@microsoft/designer-ui'; +import { + getBrandColorFromConnector, + getConnectorCategoryString, + getDisplayNameFromConnector, + getIconUriFromConnector, + isBuiltInConnector, +} from '@microsoft/designer-ui'; +import type { Connector } from '@microsoft/logic-apps-shared'; import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; export interface ConnectorConnectionsCardProps { connectorId: string; - title: string; - brandColor?: string; - iconUri?: string; + connector: Connector | undefined; connectionRefs?: Record; disconnectedNodes?: string[]; isLoading?: boolean; @@ -17,14 +22,16 @@ export interface ConnectorConnectionsCardProps { export const ConnectorConnectionsCard: React.FC = ({ connectorId, - title, - brandColor, - iconUri, + connector, connectionRefs = {}, disconnectedNodes = [], isLoading = false, }) => { - const isBuiltIn = isDesignerBuiltInConnector(connectorId); + const title = getDisplayNameFromConnector(connector) ?? connectorId; + const iconUri = getIconUriFromConnector(connector); + const brandColor = getBrandColorFromConnector(connector); + + const isBuiltIn = isBuiltInConnector(connectorId); const category = getConnectorCategoryString(connectorId); const allErrors = useAllConnectionErrors(); diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx index a8da35fdcdf..08a0ce5439e 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx @@ -1,6 +1,6 @@ import constants from '../../../../common/constants'; import type { AppDispatch, RootState } from '../../../../core'; -import { getIconUriFromConnector, useOperationInfo, useSelectedNodeId, useSelectedNodeIds } from '../../../../core'; +import { useOperationInfo, useSelectedNodeId, useSelectedNodeIds } from '../../../../core'; import type { ConnectionPayload } from '../../../../core/actions/bjsworkflow/connections'; import { getConnectionMetadata, @@ -29,6 +29,7 @@ import { CreateConnection } from './createConnection'; import { Spinner } from '@fluentui/react-components'; import type { ConnectionCreationInfo, ConnectionParametersMetadata } from '@microsoft/designer-client-services-logic-apps'; import { ConnectionService, LogEntryLevel, LoggerService, WorkflowService } from '@microsoft/designer-client-services-logic-apps'; +import { getIconUriFromConnector } from '@microsoft/designer-ui'; import { getRecordEntry, safeSetObjectPropertyValue, diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx index 6202304d05e..286c75a12dd 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx @@ -1,4 +1,4 @@ -import { type AppDispatch, getIconUriFromConnector } from '../../../../core'; +import { type AppDispatch } from '../../../../core'; import { updateNodeConnection } from '../../../../core/actions/bjsworkflow/connections'; import { useConnectionsForConnector } from '../../../../core/queries/connections'; import { useNodeConnectionId, useConnectorByNodeId } from '../../../../core/state/connection/connectionSelector'; @@ -10,6 +10,7 @@ import { ConnectionTable } from './connectionTable'; import { MessageBar, MessageBarType } from '@fluentui/react'; import { Body1Strong, Button, Divider, Spinner } from '@fluentui/react-components'; import { ConnectionService } from '@microsoft/designer-client-services-logic-apps'; +import { getIconUriFromConnector } from '@microsoft/designer-ui'; import { type Connection, type Connector } from '@microsoft/logic-apps-shared'; import { useCallback, useEffect, useMemo } from 'react'; import { useIntl } from 'react-intl'; diff --git a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx index 55fdbbff8e1..f3eaa17036d 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx @@ -1,16 +1,15 @@ import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } from '../../../core/queries/browse'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService } from '@microsoft/designer-client-services-logic-apps'; -import { BrowseGrid, isDesignerBuiltInConnector, isDesignerCustomConnector } from '@microsoft/designer-ui'; +import { BrowseGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; import { type Connector, cleanConnectorId } from '@microsoft/logic-apps-shared'; import { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; const defaultFilterConnector = (connector: Connector, runtimeFilter: string): boolean => { - if (runtimeFilter === 'inapp' && !isDesignerBuiltInConnector(connector.id)) return false; - else if (runtimeFilter === 'custom' && !isDesignerCustomConnector(connector.id)) return false; - else if (runtimeFilter === 'shared') - if (isDesignerBuiltInConnector(connector.id) || isDesignerCustomConnector(connector.id)) return false; + if (runtimeFilter === 'inapp' && !isBuiltInConnector(connector)) return false; + else if (runtimeFilter === 'custom' && !isCustomConnector(connector)) return false; + else if (runtimeFilter === 'shared') if (isBuiltInConnector(connector) || isCustomConnector(connector)) return false; return true; }; diff --git a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx index e66ece17bb4..08af3b0a610 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx @@ -1,7 +1,7 @@ import type { AppDispatch } from '../../../core'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService, type ISearchService } from '@microsoft/designer-client-services-logic-apps'; -import { SearchResultsGrid, isDesignerBuiltInConnector, isDesignerCustomConnector } from '@microsoft/designer-ui'; +import { SearchResultsGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; import { useDebouncedEffect } from '@react-hookz/web'; import Fuse from 'fuse.js'; @@ -126,14 +126,10 @@ class DefaultSearchOperationsService implements Pick { if (runtimeFilter) { - if (runtimeFilter === 'inapp' && !isDesignerBuiltInConnector(searchResult.item.properties.api.id)) return false; - else if (runtimeFilter === 'custom' && !isDesignerCustomConnector(searchResult.item.properties.api.id)) return false; + if (runtimeFilter === 'inapp' && !isBuiltInConnector(searchResult.item.properties.api)) return false; + else if (runtimeFilter === 'custom' && !isCustomConnector(searchResult.item.properties.api)) return false; else if (runtimeFilter === 'shared') - if ( - isDesignerBuiltInConnector(searchResult.item.properties.api.id) || - isDesignerCustomConnector(searchResult.item.properties.api.id) - ) - return false; + if (isBuiltInConnector(searchResult.item.properties.api) || isCustomConnector(searchResult.item.properties.api)) return false; } if (actionType) { diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts index ce82b8376ad..18f450401ca 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts @@ -11,14 +11,14 @@ export function isArmResourceId(resourceId: string): boolean { return resourceId ? resourceId.startsWith('/subscriptions/') : false; } -export const isBuiltInConnector = (connectorId: string) => { +export const isBuiltInConnectorId = (connectorId: string) => { if (connectorsShownAsAzure.includes(connectorId)) return false; return !isArmResourceId(connectorId); }; export const getConnectorName = (connectorId: string): string => connectorId?.split('/').at(-1) ?? ''; -export const isCustomConnector = (connectorId: string) => { +export const isCustomConnectorId = (connectorId: string) => { // Note: connectorId format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Web/customApis/{connector} const fields = connectorId.split('/'); if (fields.length !== 9) return false; @@ -32,7 +32,7 @@ export const isCustomConnector = (connectorId: string) => { return true; }; -export const isManagedConnector = (connectorId: string) => { +export const isManagedConnectorId = (connectorId: string) => { // Note: connectorId format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Logic/integrationServiceEnvironments/{ise}/managedApis/{connector} const fields = connectorId.split('/'); if (fields.length !== 11) return false; @@ -47,7 +47,7 @@ export const isManagedConnector = (connectorId: string) => { return true; }; -export const isSharedManagedConnector = (connectorId: string) => { +export const isSharedManagedConnectorId = (connectorId: string) => { // Note: connectorId format: /subscriptions/{sub}/providers/Microsoft.Web/locations/{location}/managedApis/{connector} const fields = connectorId.split('/'); if (fields.length !== 9) return false; @@ -61,7 +61,7 @@ export const isSharedManagedConnector = (connectorId: string) => { return true; }; -export const isSharedManagedConnectorFromPApps = (connectorId: string) => { +export const isSharedManagedConnectorIdFromPApps = (connectorId: string) => { // Note: connectorId format: /providers/Microsoft.PowerApps/apis/{connector} const fields = connectorId.split('/'); if (fields.length !== 5) return false; diff --git a/libs/services/designer-client-services/src/lib/base/connection.ts b/libs/services/designer-client-services/src/lib/base/connection.ts index aadd9f2c2a5..ee604a5415b 100644 --- a/libs/services/designer-client-services/src/lib/base/connection.ts +++ b/libs/services/designer-client-services/src/lib/base/connection.ts @@ -8,10 +8,9 @@ import type { ConnectorWithSwagger, } from '../connection'; import type { HttpRequestOptions, IHttpClient, QueryParameters } from '../httpClient'; -import { SwaggerParser } from '@microsoft/logic-apps-shared'; import type { Connection, Connector, OpenAPIV2 } from '@microsoft/logic-apps-shared'; import { - isCustomConnector, + isCustomConnectorId, getUniqueName, HTTP_METHODS, UserErrorCode, @@ -19,6 +18,7 @@ import { isArmResourceId, ArgumentException, equals, + SwaggerParser, } from '@microsoft/logic-apps-shared'; export interface ApiHubServiceDetails { @@ -252,7 +252,7 @@ export abstract class BaseConnectionService implements IConnectionService { protected async getConnectionsForConnector(connectorId: string): Promise { if (isArmResourceId(connectorId)) { // Right now there isn't a name $filter for custom connections, so we need to filter them manually - if (isCustomConnector(connectorId)) { + if (isCustomConnectorId(connectorId)) { const { location, apiVersion, httpClient } = this.options; const response = await httpClient.get({ uri: `${this._subscriptionResourceGroupWebUrl}/connections`, diff --git a/libs/services/designer-client-services/src/lib/host.ts b/libs/services/designer-client-services/src/lib/host.ts index 986c58c0d9e..9c2ee66ff1c 100644 --- a/libs/services/designer-client-services/src/lib/host.ts +++ b/libs/services/designer-client-services/src/lib/host.ts @@ -1,3 +1,4 @@ +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; import { AssertionErrorCode, AssertionException } from '@microsoft/logic-apps-shared'; export const ContentType = { @@ -6,10 +7,12 @@ export const ContentType = { } as const; export type ContentType = (typeof ContentType)[keyof typeof ContentType]; +export type IsConnectorFn = (connector: OperationApi | Connector | string) => boolean; + export interface IHostService { fetchAndDisplayContent(title: string, url: string, type: ContentType): void; - isBuiltInConnector?(connectorId: string): boolean; - isCustomConnector?(connectorId: string): boolean; + isBuiltInConnector?: IsConnectorFn; + isCustomConnector?: IsConnectorFn; openWorkflowParametersBlade?(): void; openConnectionResource?(connectionId: string): void; } diff --git a/libs/services/designer-client-services/src/lib/staticresultschema/index.ts b/libs/services/designer-client-services/src/lib/staticresultschema/index.ts index c735f5c2555..35f03265e40 100644 --- a/libs/services/designer-client-services/src/lib/staticresultschema/index.ts +++ b/libs/services/designer-client-services/src/lib/staticresultschema/index.ts @@ -22,10 +22,10 @@ import { ParseJsonStaticResultSchema } from './schemas/parseJson'; import { QueryStaticResultSchema } from './schemas/query'; import type { ManifestParser, SwaggerParser } from '@microsoft/logic-apps-shared'; import { - isCustomConnector, - isManagedConnector, - isSharedManagedConnectorFromPApps, - isSharedManagedConnector, + isCustomConnectorId, + isManagedConnectorId, + isSharedManagedConnectorIdFromPApps, + isSharedManagedConnectorId, } from '@microsoft/logic-apps-shared'; /** @@ -76,10 +76,10 @@ export class StaticResultSchemaService implements IStaticResultSchemaService { break; default: if ( - (isSharedManagedConnector(connectorId) || - isSharedManagedConnectorFromPApps(connectorId) || - isCustomConnector(connectorId) || - isManagedConnector(connectorId)) && + (isSharedManagedConnectorId(connectorId) || + isSharedManagedConnectorIdFromPApps(connectorId) || + isCustomConnectorId(connectorId) || + isManagedConnectorId(connectorId)) && parser ) { return getStaticResultSchemaForAPIConnector(operationId, parser); From 0631c11f2b1eaf2e9cf1a1f9b03184363b0b318f Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:15:39 -0800 Subject: [PATCH 05/14] Fix some controls still using connector ID --- .../src/lib/connectors/connectorPredicates.ts | 13 ++++--- .../src/lib/connectors/connectorProperties.ts | 37 ++++++++++--------- .../recommendationpanel/browseResults.tsx | 4 +- .../operationSearchGroup/index.tsx | 2 +- .../connectorConnectionsCard.tsx | 4 +- .../designer-client-services/src/lib/host.ts | 4 +- 6 files changed, 34 insertions(+), 30 deletions(-) diff --git a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts index 88220a13d24..d115c1ac76c 100644 --- a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts +++ b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts @@ -1,21 +1,24 @@ -import type { IsConnectorFn } from '@microsoft/designer-client-services-logic-apps'; import { HostService } from '@microsoft/designer-client-services-logic-apps'; +import type { Connector, OperationApi} from '@microsoft/logic-apps-shared'; import { isBuiltInConnectorId, isCustomConnectorId, isString } from '@microsoft/logic-apps-shared'; +import { getAllConnectorProperties } from './connectorProperties'; -export const isBuiltInConnector: IsConnectorFn = (connector) => { +export const isBuiltInConnector = (connector: Connector | OperationApi | string): boolean => { const hostIsBuiltInConnectorFn = HostService()?.isBuiltInConnector; if (hostIsBuiltInConnectorFn) { - return hostIsBuiltInConnectorFn(connector); + const connectorParameter = isString(connector) ? connector : getAllConnectorProperties(connector); + return hostIsBuiltInConnectorFn(connectorParameter); } const connectorId = isString(connector) ? connector : connector.id; return isBuiltInConnectorId(connectorId); }; -export const isCustomConnector: IsConnectorFn = (connector) => { +export const isCustomConnector = (connector: Connector | OperationApi | string): boolean => { const hostIsCustomConnectorFn = HostService()?.isCustomConnector; if (hostIsCustomConnectorFn) { - return hostIsCustomConnectorFn(connector); + const connectorParameter = isString(connector) ? connector : getAllConnectorProperties(connector); + return hostIsCustomConnectorFn(connectorParameter); } const connectorId = isString(connector) ? connector : connector.id; diff --git a/libs/designer-ui/src/lib/connectors/connectorProperties.ts b/libs/designer-ui/src/lib/connectors/connectorProperties.ts index ae0b2626044..541d58b1148 100644 --- a/libs/designer-ui/src/lib/connectors/connectorProperties.ts +++ b/libs/designer-ui/src/lib/connectors/connectorProperties.ts @@ -1,33 +1,34 @@ import type { Connector, ConnectorProperty, OperationApi } from '@microsoft/logic-apps-shared'; import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; -export const getBrandColorFromConnector = (connector: Connector | OperationApi | undefined): string => { - return getFlatConnectorData(connector)?.brandColor ?? '#000000'; +export const getAllConnectorProperties = (connector: Connector | OperationApi | undefined): Partial => { + if (!connector) { + return {}; + } + + if ('properties' in connector) { + return { id: connector.id, ...connector.properties }; + } + + return connector; }; -export const getDisplayNameFromConnector = (connector: Connector | OperationApi | undefined): string => { - return getFlatConnectorData(connector)?.displayName ?? ''; +export const getBrandColorFromConnector = (connector: Connector | OperationApi | undefined): string => { + console.log(connector, getAllConnectorProperties(connector), getAllConnectorProperties(connector)?.brandColor); + return getAllConnectorProperties(connector)?.brandColor ?? '#000000'; }; export const getDescriptionFromConnector = (connector: Connector | OperationApi | undefined): string => { - const connectorData = getFlatConnectorData(connector); + const connectorData = getAllConnectorProperties(connector); return connectorData.description ?? connectorData.generalInformation?.description ?? ''; }; +export const getDisplayNameFromConnector = (connector: Connector | OperationApi | undefined): string => { + return getAllConnectorProperties(connector)?.displayName ?? ''; +}; + export const getIconUriFromConnector = (connector: Connector | OperationApi | undefined): string => { - const connectorData = getFlatConnectorData(connector); + const connectorData = getAllConnectorProperties(connector); const iconUrl = connectorData.iconUrl ?? connectorData.iconUri ?? connectorData.generalInformation?.iconUrl; return fallbackConnectorIconUrl(iconUrl); }; - -const getFlatConnectorData = (connector: Connector | OperationApi | undefined): Partial => { - if (!connector) { - return {}; - } - - if ('properties' in connector) { - return { id: connector.id, ...connector.properties }; - } - - return connector; -}; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx index 0c13d4fefe7..eb4760349ee 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/browseResults.tsx @@ -35,9 +35,9 @@ export const BrowseGrid = (props: BrowseGridProps) => {
diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/operationSearchGroup/index.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/operationSearchGroup/index.tsx index e5cf0237ee3..4030879c4e0 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/operationSearchGroup/index.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/operationSearchGroup/index.tsx @@ -20,7 +20,7 @@ export const OperationSearchGroup = (props: OperationSearchGroupProps) => { const intl = useIntl(); - const category = getConnectorCategoryString(id); + const category = getConnectorCategoryString(operationApi); const seeMoreText = intl.formatMessage({ defaultMessage: 'See more', diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 1c6f9debb6b..eb1b9be63c9 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -31,8 +31,8 @@ export const ConnectorConnectionsCard: React.FC = const iconUri = getIconUriFromConnector(connector); const brandColor = getBrandColorFromConnector(connector); - const isBuiltIn = isBuiltInConnector(connectorId); - const category = getConnectorCategoryString(connectorId); + const isBuiltIn = isBuiltInConnector(connector ?? connectorId); + const category = getConnectorCategoryString(connector ?? connectorId); const allErrors = useAllConnectionErrors(); const hasErrors = useMemo(() => { diff --git a/libs/services/designer-client-services/src/lib/host.ts b/libs/services/designer-client-services/src/lib/host.ts index 9c2ee66ff1c..18c19125fc7 100644 --- a/libs/services/designer-client-services/src/lib/host.ts +++ b/libs/services/designer-client-services/src/lib/host.ts @@ -1,4 +1,4 @@ -import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; +import type { ConnectorProperty, OperationApi } from '@microsoft/logic-apps-shared'; import { AssertionErrorCode, AssertionException } from '@microsoft/logic-apps-shared'; export const ContentType = { @@ -7,7 +7,7 @@ export const ContentType = { } as const; export type ContentType = (typeof ContentType)[keyof typeof ContentType]; -export type IsConnectorFn = (connector: OperationApi | Connector | string) => boolean; +type IsConnectorFn = (connector: Partial | string) => boolean; export interface IHostService { fetchAndDisplayContent(title: string, url: string, type: ContentType): void; From 854b5ff42e9a86401b949e11080b55a4620e2dbb Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:15:59 -0800 Subject: [PATCH 06/14] Permit known `isBuiltIn` and `isCustomApi` fields on `OperationApi` --- .../src/utils/src/lib/models/operationDiscoveryResults.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/logic-apps-shared/src/utils/src/lib/models/operationDiscoveryResults.ts b/libs/logic-apps-shared/src/utils/src/lib/models/operationDiscoveryResults.ts index 36d1c5bde8a..a301bd909d9 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/models/operationDiscoveryResults.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/models/operationDiscoveryResults.ts @@ -10,6 +10,8 @@ export interface OperationApi { iconUri: string; category?: 'Standard'; // could be consumption too id: string; + isBuiltIn?: boolean; + isCustomApi?: boolean; location?: string; name?: string; tier?: string; From 0fd489f0a63015ebbfc94212a04d98096f6ea35e Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:29:24 -0800 Subject: [PATCH 07/14] Add tests for new `connections/*` fns --- .../__test__/connectorPredicates.spec.tsx | 70 +++++++ .../__test__/connectorProperties.spec.tsx | 188 ++++++++++++++++++ .../src/lib/connectors/connectorProperties.ts | 1 - 3 files changed, 258 insertions(+), 1 deletion(-) create mode 100644 libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx create mode 100644 libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx diff --git a/libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx b/libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx new file mode 100644 index 00000000000..5abbb40256f --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx @@ -0,0 +1,70 @@ +import { isBuiltInConnector } from '../index'; +import * as DesignerClientServices from '@microsoft/designer-client-services-logic-apps'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; + +const getMinimalHostService = (): DesignerClientServices.IHostService => ({ + fetchAndDisplayContent: jest.fn(), +}); + +describe('lib/connectors/connectorProperties', () => { + afterEach(() => { + jest.restoreAllMocks(); + }); + + describe('isBuiltInConnector', () => { + describe('works with no host service callbacks using', () => { + test('string input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(getMinimalHostService); + + expect(isBuiltInConnector('/builtin/Terminate')).toBe(true); + expect(isBuiltInConnector('/subscriptions/special/builtin/format')).toBe(false); + }); + + test('Connector input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(getMinimalHostService); + + expect(isBuiltInConnector({ id: '/builtin/Terminate' } as Connector)).toBe(true); + expect(isBuiltInConnector({ id: '/subscriptions/special/builtin/format' } as Connector)).toBe(false); + }); + + test('OperationApi input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(getMinimalHostService); + + expect(isBuiltInConnector({ id: '/builtin/Terminate' } as OperationApi)).toBe(true); + expect(isBuiltInConnector({ id: '/subscriptions/special/builtin/format' } as OperationApi)).toBe(false); + }); + }); + + describe('works with host service callback using', () => { + test('string input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(() => ({ + ...getMinimalHostService(), + isBuiltInConnector: jest.fn().mockImplementation((value: string) => value === '/subscriptions/special/builtin/format'), + })); + + expect(isBuiltInConnector('/builtin/Terminate')).toBe(false); + expect(isBuiltInConnector('/subscriptions/special/builtin/format')).toBe(true); + }); + + test('Connector input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(() => ({ + ...getMinimalHostService(), + isBuiltInConnector: jest.fn().mockImplementation((value: Connector) => value.id === '/subscriptions/special/builtin/format'), + })); + + expect(isBuiltInConnector({ id: '/builtin/Terminate' } as Connector)).toBe(false); + expect(isBuiltInConnector({ id: '/subscriptions/special/builtin/format' } as Connector)).toBe(true); + }); + + test('OperationApi input', () => { + jest.spyOn(DesignerClientServices, 'HostService').mockImplementation(() => ({ + ...getMinimalHostService(), + isBuiltInConnector: jest.fn().mockImplementation((value: OperationApi) => value.id === '/subscriptions/special/builtin/format'), + })); + + expect(isBuiltInConnector({ id: '/builtin/Terminate' } as OperationApi)).toBe(false); + expect(isBuiltInConnector({ id: '/subscriptions/special/builtin/format' } as OperationApi)).toBe(true); + }); + }); + }); +}); diff --git a/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx b/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx new file mode 100644 index 00000000000..657d6dc25e7 --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx @@ -0,0 +1,188 @@ +import { + getAllConnectorProperties, + getBrandColorFromConnector, + getDescriptionFromConnector, + getDisplayNameFromConnector, + getIconUriFromConnector, +} from '../index'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; + +describe('lib/connectors/connectorProperties', () => { + describe('getAllConnectorProperties', () => { + test('works for a Connector', () => { + const connector = { + id: '/connector/id', + properties: { + brandColor: 'red', + }, + } as Connector; + expect(getAllConnectorProperties(connector)).toEqual({ + brandColor: 'red', + id: '/connector/id', + }); + }); + + test('works for an OperationApi', () => { + const connector = { + brandColor: 'red', + id: '/connector/id', + } as OperationApi; + expect(getAllConnectorProperties(connector)).toEqual({ + brandColor: 'red', + id: '/connector/id', + }); + }); + + test('works for undefined', () => { + expect(getAllConnectorProperties(undefined)).toEqual({}); + }); + }); + + describe('getBrandColorFromConnector', () => { + test('works for a Connector', () => { + const connector = { + properties: { + brandColor: 'red', + }, + } as Connector; + expect(getBrandColorFromConnector(connector)).toBe('red'); + }); + + test('works for an OperationApi', () => { + const connector = { + brandColor: 'red', + } as OperationApi; + expect(getBrandColorFromConnector(connector)).toBe('red'); + }); + + test('works for undefined', () => { + expect(getBrandColorFromConnector(undefined)).toBe('#000000'); + }); + }); + + describe('getDescriptionFromConnector', () => { + describe('works for a Connector with', () => { + test('standard field only', () => { + const connector = { + properties: { + description: 'My connector', + }, + } as Connector; + expect(getDescriptionFromConnector(connector)).toBe('My connector'); + }); + + test('general information only', () => { + const connector = { + properties: { + generalInformation: { + description: 'My connector', + }, + }, + } as Connector; + expect(getDescriptionFromConnector(connector)).toBe('My connector'); + }); + + test('general information and standard field', () => { + const connector = { + properties: { + description: 'My connector 1', + generalInformation: { + description: 'My connector 2', + }, + }, + } as Connector; + expect(getDescriptionFromConnector(connector)).toBe('My connector 1'); + }); + }); + + test('works for an OperationApi', () => { + const connector = { + description: 'My connector', + } as OperationApi; + expect(getDescriptionFromConnector(connector)).toBe('My connector'); + }); + + test('works for undefined', () => { + expect(getDescriptionFromConnector(undefined)).toBe(''); + }); + }); + + describe('getDisplayNameFromConnector', () => { + test('works for a Connector', () => { + const connector = { + properties: { + displayName: 'My connector', + }, + } as Connector; + expect(getDisplayNameFromConnector(connector)).toBe('My connector'); + }); + + test('works for an OperationApi', () => { + const connector = { + displayName: 'My connector', + } as OperationApi; + expect(getDisplayNameFromConnector(connector)).toBe('My connector'); + }); + + test('works for undefined', () => { + expect(getDisplayNameFromConnector(undefined)).toBe(''); + }); + }); + + describe('getIconUriFromConnector', () => { + describe('works for a Connector with', () => { + test('standard iconUrl field only', () => { + const connector = { + properties: { + iconUrl: 'https://example.com/icon.png', + }, + } as Connector; + expect(getIconUriFromConnector(connector)).toBe('https://example.com/icon.png'); + }); + + test('standard iconUri only', () => { + const connector = { + properties: { + iconUri: 'https://example.com/icon.png', + }, + } as Connector; + expect(getIconUriFromConnector(connector)).toBe('https://example.com/icon.png'); + }); + + test('general information only', () => { + const connector = { + properties: { + generalInformation: { + iconUrl: 'https://example.com/icon.png', + }, + }, + } as Connector; + expect(getIconUriFromConnector(connector)).toBe('https://example.com/icon.png'); + }); + + test('general information and standard fields', () => { + const connector = { + properties: { + iconUri: 'https://example.com/icon1.png', + iconUrl: 'https://example.com/icon2.png', + generalInformation: { + iconUrl: 'https://example.com/icon3.png', + }, + }, + } as Connector; + expect(getIconUriFromConnector(connector)).toBe('https://example.com/icon2.png'); + }); + }); + + test('works for an OperationApi', () => { + const connector = { + description: 'https://example.com/icon.png', + } as OperationApi; + expect(getDescriptionFromConnector(connector)).toBe('https://example.com/icon.png'); + }); + + test('works for undefined', () => { + expect(getDescriptionFromConnector(undefined)).toBe(''); + }); + }); +}); diff --git a/libs/designer-ui/src/lib/connectors/connectorProperties.ts b/libs/designer-ui/src/lib/connectors/connectorProperties.ts index 541d58b1148..234a9ac92b0 100644 --- a/libs/designer-ui/src/lib/connectors/connectorProperties.ts +++ b/libs/designer-ui/src/lib/connectors/connectorProperties.ts @@ -14,7 +14,6 @@ export const getAllConnectorProperties = (connector: Connector | OperationApi | }; export const getBrandColorFromConnector = (connector: Connector | OperationApi | undefined): string => { - console.log(connector, getAllConnectorProperties(connector), getAllConnectorProperties(connector)?.brandColor); return getAllConnectorProperties(connector)?.brandColor ?? '#000000'; }; From f3d58a9ed3c6419b37fc0da4086ad1d5521f553d Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:41:50 -0800 Subject: [PATCH 08/14] Clean up imports --- .../src/lib/connectors/connectorPredicates.ts | 4 +- libs/designer-ui/src/lib/utils/utils.ts | 2 +- .../src/lib/core/actions/bjsworkflow/add.ts | 6 +-- .../core/actions/bjsworkflow/initialize.ts | 52 +++++++++---------- libs/designer/src/lib/core/utils/card.ts | 2 +- libs/designer/src/lib/core/utils/outputs.ts | 36 ++++++------- .../src/lib/core/utils/swagger/operation.ts | 16 +++--- .../allConnections/allConnections.tsx | 2 +- .../connectorConnectionsCard.tsx | 2 +- .../createConnectionWrapper.tsx | 4 +- .../selectConnection/selectConnection.tsx | 2 +- .../ui/panel/recommendation/browseView.tsx | 2 +- .../src/utils/src/lib/helpers/connections.ts | 2 +- .../src/lib/base/connection.ts | 12 ++--- .../src/lib/staticresultschema/index.ts | 2 +- 15 files changed, 73 insertions(+), 73 deletions(-) diff --git a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts index d115c1ac76c..314f962906a 100644 --- a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts +++ b/libs/designer-ui/src/lib/connectors/connectorPredicates.ts @@ -1,7 +1,7 @@ +import { getAllConnectorProperties } from './connectorProperties'; import { HostService } from '@microsoft/designer-client-services-logic-apps'; -import type { Connector, OperationApi} from '@microsoft/logic-apps-shared'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; import { isBuiltInConnectorId, isCustomConnectorId, isString } from '@microsoft/logic-apps-shared'; -import { getAllConnectorProperties } from './connectorProperties'; export const isBuiltInConnector = (connector: Connector | OperationApi | string): boolean => { const hostIsBuiltInConnectorFn = HostService()?.isBuiltInConnector; diff --git a/libs/designer-ui/src/lib/utils/utils.ts b/libs/designer-ui/src/lib/utils/utils.ts index 1cf45456487..d94fb86b1c1 100644 --- a/libs/designer-ui/src/lib/utils/utils.ts +++ b/libs/designer-ui/src/lib/utils/utils.ts @@ -1,7 +1,7 @@ import { isBuiltInConnector, isCustomConnector } from '../connectors'; import Constants from '../constants'; import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { getIntl, equals } from '@microsoft/logic-apps-shared'; +import { equals, getIntl } from '@microsoft/logic-apps-shared'; /** * Returns a string with a duration, possibly abbreviated, e.g., 15s or 15 second(s) diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts index 187be0bed79..939906df56c 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts @@ -17,8 +17,8 @@ import { getBrandColorFromManifest, getIconUriFromManifest } from '../../utils/c import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; import { updateDynamicDataInNode } from '../../utils/parameters/helper'; import { getInputParametersFromSwagger, getOutputParametersFromSwagger } from '../../utils/swagger/operation'; -import { getTokenNodeIds, getBuiltInTokens, convertOutputsToTokens } from '../../utils/tokens'; -import { setVariableMetadata, getVariableDeclarations, getAllVariables } from '../../utils/variables'; +import { convertOutputsToTokens, getBuiltInTokens, getTokenNodeIds } from '../../utils/tokens'; +import { getAllVariables, getVariableDeclarations, setVariableMetadata } from '../../utils/variables'; import { isConnectionRequiredForOperation, updateNodeConnection } from './connections'; import { getInputParametersFromManifest, @@ -32,12 +32,12 @@ import { getOperationSettings, getSplitOnValue } from './settings'; import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; import type { - SwaggerParser, Connector, DiscoveryOperation, DiscoveryResultTypes, OperationManifest, SomeKindOfAzureOperationDiscovery, + SwaggerParser, } from '@microsoft/logic-apps-shared'; import { ManifestParser, equals, getRecordEntry } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts index 8eb1d7040d0..125b4e2ba8a 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts @@ -4,7 +4,7 @@ import type { WorkflowNode } from '../../parsers/models/workflowNode'; import { getConnectorWithSwagger, getSwaggerFromEndpoint } from '../../queries/connections'; import { getOperationManifest } from '../../queries/operation'; import type { DependencyInfo, NodeInputs, NodeOperation, NodeOutputs, OutputInfo } from '../../state/operation/operationMetadataSlice'; -import { updateNodeSettings, updateNodeParameters, DynamicLoadStatus, updateOutputs } from '../../state/operation/operationMetadataSlice'; +import { DynamicLoadStatus, updateNodeParameters, updateNodeSettings, updateOutputs } from '../../state/operation/operationMetadataSlice'; import type { UpdateUpstreamNodesPayload } from '../../state/tokens/tokensSlice'; import { updateTokens, updateUpstreamNodes } from '../../state/tokens/tokensSlice'; import { WorkflowKind } from '../../state/workflow/workflowInterfaces'; @@ -14,6 +14,7 @@ import type { RootState } from '../../store'; import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; import { getSplitOnOptions, getUpdatedManifestForSchemaDependency, getUpdatedManifestForSplitOn, toOutputInfo } from '../../utils/outputs'; import { + ParameterGroupKeys, addRecurrenceParametersInGroup, getAllInputParameters, getDependentParameters, @@ -21,7 +22,6 @@ import { getParameterFromName, getParametersSortedByVisibility, loadParameterValuesArrayFromDefault, - ParameterGroupKeys, toParameterInfoMap, updateParameterWithValues, } from '../../utils/parameters/helper'; @@ -32,48 +32,48 @@ import type { NodeInputsWithDependencies, NodeOutputsWithDependencies } from './ import type { Settings } from './settings'; import type { IConnectionService, + IOAuthService, IOperationManifestService, ISearchService, - IOAuthService, IWorkflowService, } from '@microsoft/designer-client-services-logic-apps'; import { - WorkflowService, - LoggerService, + ApiManagementService, + FunctionService, LogEntryLevel, + LoggerService, OperationManifestService, - FunctionService, - ApiManagementService, + WorkflowService, } from '@microsoft/designer-client-services-logic-apps'; import { getBrandColorFromConnector, getIconUriFromConnector, type OutputToken, type ParameterInfo } from '@microsoft/designer-ui'; +import type { + CustomSwaggerServiceDetails, + InputParameter, + OperationInfo, + OperationManifest, + OperationManifestProperties, + OutputParameter, + SchemaProperty, + SwaggerParser, +} from '@microsoft/logic-apps-shared'; import { + ConnectionReferenceKeyFormat, + CustomSwaggerServiceNames, + DynamicSchemaType, + ManifestParser, + PropertyName, + UnsupportedException, + clone, + equals, getIntl, + getObjectPropertyValue, isDynamicListExtension, isDynamicPropertiesExtension, isDynamicSchemaExtension, isDynamicTreeExtension, isLegacyDynamicValuesExtension, isLegacyDynamicValuesTreeExtension, - DynamicSchemaType, - ManifestParser, - PropertyName, - CustomSwaggerServiceNames, - UnsupportedException, - clone, - equals, - ConnectionReferenceKeyFormat, unmap, - getObjectPropertyValue, -} from '@microsoft/logic-apps-shared'; -import type { - SchemaProperty, - InputParameter, - SwaggerParser, - OutputParameter, - CustomSwaggerServiceDetails, - OperationInfo, - OperationManifest, - OperationManifestProperties, } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; diff --git a/libs/designer/src/lib/core/utils/card.ts b/libs/designer/src/lib/core/utils/card.ts index fbfe2969ec6..36da0873818 100644 --- a/libs/designer/src/lib/core/utils/card.ts +++ b/libs/designer/src/lib/core/utils/card.ts @@ -1,5 +1,5 @@ import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; -import type { OperationManifest } from '@microsoft/utils-logic-apps'; +import type { OperationManifest } from '@microsoft/logic-apps-shared'; export function getBrandColorFromManifest(manifest: OperationManifest): string { return manifest.properties?.brandColor ?? getBrandColorFromConnector(manifest.properties?.connector); diff --git a/libs/designer/src/lib/core/utils/outputs.ts b/libs/designer/src/lib/core/utils/outputs.ts index 3458940b192..a065e22a585 100644 --- a/libs/designer/src/lib/core/utils/outputs.ts +++ b/libs/designer/src/lib/core/utils/outputs.ts @@ -7,9 +7,9 @@ import { getOperationManifest } from '../queries/operation'; import type { DependencyInfo, NodeInputs, NodeOperation, NodeOutputs, OutputInfo } from '../state/operation/operationMetadataSlice'; import { ErrorLevel, - updateErrorDetails, - clearDynamicOutputs, addDynamicOutputs, + clearDynamicOutputs, + updateErrorDetails, updateExisitingInputTokenTitles, } from '../state/operation/operationMetadataSlice'; import { addDynamicTokens } from '../state/tokens/tokensSlice'; @@ -26,40 +26,40 @@ import { import { convertOutputsToTokens, getTokenTitle } from './tokens'; import { OperationManifestService } from '@microsoft/designer-client-services-logic-apps'; import { + ValueSegmentType, generateSchemaFromJsonString, getBrandColorFromConnector, getIconUriFromConnector, - ValueSegmentType, } from '@microsoft/designer-ui'; import type { Expression, ExpressionFunction, ExpressionLiteral, - OutputParameter, - OutputParameters, - OpenApiSchema, OpenAPIV2, + OpenApiSchema, OperationManifest, + OutputParameter, + OutputParameters, } from '@microsoft/logic-apps-shared'; import { - create, - getIntl, - OutputKeys, - OutputSource, + AssertionErrorCode, + AssertionException, + ConnectionReferenceKeyFormat, ExpressionParser, ExtensionProperties, - isTemplateExpression, + OutputKeys, + OutputSource, + clone, + create, + equals, + getIntl, + getObjectPropertyValue, isFunction, isStringLiteral, - ConnectionReferenceKeyFormat, - getObjectPropertyValue, + isTemplateExpression, + parseErrorMessage, safeSetObjectPropertyValue, unmap, - AssertionErrorCode, - AssertionException, - clone, - equals, - parseErrorMessage, } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; diff --git a/libs/designer/src/lib/core/utils/swagger/operation.ts b/libs/designer/src/lib/core/utils/swagger/operation.ts index 55c0dc917fa..0c139674b30 100644 --- a/libs/designer/src/lib/core/utils/swagger/operation.ts +++ b/libs/designer/src/lib/core/utils/swagger/operation.ts @@ -13,34 +13,34 @@ import type { import { getOperationSettings } from '../../actions/bjsworkflow/settings'; import { getConnectorWithSwagger } from '../../queries/connections'; import type { DependencyInfo, NodeInputs, NodeOperation, OutputInfo } from '../../state/operation/operationMetadataSlice'; -import { ErrorLevel, updateErrorDetails, DynamicLoadStatus, initializeOperationInfo } from '../../state/operation/operationMetadataSlice'; +import { DynamicLoadStatus, ErrorLevel, initializeOperationInfo, updateErrorDetails } from '../../state/operation/operationMetadataSlice'; import { addResultSchema } from '../../state/staticresultschema/staticresultsSlice'; import type { WorkflowKind } from '../../state/workflow/workflowInterfaces'; import { toOutputInfo, updateOutputsForBatchingTrigger } from '../outputs'; import { + ParameterGroupKeys, addRecurrenceParametersInGroup, getDependentParameters, getParametersSortedByVisibility, loadParameterValuesFromDefault, - ParameterGroupKeys, toParameterInfoMap, updateParameterWithValues, } from '../parameters/helper'; import { loadInputValuesFromDefinition } from './inputsbuilder'; import { LogEntryLevel, LoggerService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; -import type { LAOperation, OutputParameter, SwaggerParser, LogicAppsV2, OperationInfo } from '@microsoft/logic-apps-shared'; +import type { LAOperation, LogicAppsV2, OperationInfo, OutputParameter, SwaggerParser } from '@microsoft/logic-apps-shared'; import { + ParameterLocations, + RecurrenceType, + copyArray, create, + equals, isDynamicSchemaExtension, - ParameterLocations, - removeConnectionPrefix, isTemplateExpression, - copyArray, map, - RecurrenceType, - equals, parsePathnameAndQueryKeyFromUri, + removeConnectionPrefix, startsWith, unmap, } from '@microsoft/logic-apps-shared'; diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx index 51d40fba6f3..7bfca49e6e0 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/allConnections.tsx @@ -1,4 +1,4 @@ -import { type RootState, useConnectionMapping, useConnectionRefs } from '../../../../core'; +import { useConnectionMapping, useConnectionRefs, type RootState } from '../../../../core'; import { useConnector } from '../../../../core/state/connection/connectionSelector'; import { ConnectorConnectionsCard } from './connectorConnectionsCard'; import { Accordion, AccordionItem, type AccordionToggleEventHandler } from '@fluentui/react-components'; diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index eb1b9be63c9..5efa06b4433 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -1,6 +1,6 @@ import { useAllConnectionErrors } from '../../../../core'; import { ConnectionEntry } from './connectionEntry'; -import { Text, AccordionHeader, AccordionPanel, Spinner, Badge } from '@fluentui/react-components'; +import { AccordionHeader, AccordionPanel, Badge, Spinner, Text } from '@fluentui/react-components'; import { getBrandColorFromConnector, getConnectorCategoryString, diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx index 08a0ce5439e..6baad221553 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx @@ -3,11 +3,11 @@ import type { AppDispatch, RootState } from '../../../../core'; import { useOperationInfo, useSelectedNodeId, useSelectedNodeIds } from '../../../../core'; import type { ConnectionPayload } from '../../../../core/actions/bjsworkflow/connections'; import { + getApiHubAuthentication, getConnectionMetadata, getConnectionProperties, - getApiHubAuthentication, - updateNodeConnection, needsOAuth, + updateNodeConnection, } from '../../../../core/actions/bjsworkflow/connections'; import { getUniqueConnectionName } from '../../../../core/queries/connections'; import { diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx index 286c75a12dd..ac583877460 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx @@ -1,7 +1,7 @@ import { type AppDispatch } from '../../../../core'; import { updateNodeConnection } from '../../../../core/actions/bjsworkflow/connections'; import { useConnectionsForConnector } from '../../../../core/queries/connections'; -import { useNodeConnectionId, useConnectorByNodeId } from '../../../../core/state/connection/connectionSelector'; +import { useConnectorByNodeId, useNodeConnectionId } from '../../../../core/state/connection/connectionSelector'; import { useIsXrmConnectionReferenceMode } from '../../../../core/state/designerOptions/designerOptionsSelectors'; import { useReferencePanelMode, useSelectedNodeIds } from '../../../../core/state/panel/panelSelectors'; import { openPanel, setIsCreatingConnection } from '../../../../core/state/panel/panelSlice'; diff --git a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx index f3eaa17036d..4edd3d2a8e1 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx @@ -2,7 +2,7 @@ import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } f import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService } from '@microsoft/designer-client-services-logic-apps'; import { BrowseGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; -import { type Connector, cleanConnectorId } from '@microsoft/logic-apps-shared'; +import { cleanConnectorId, type Connector } from '@microsoft/logic-apps-shared'; import { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts index 18f450401ca..a8f25c5d478 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connections.ts @@ -1,7 +1,7 @@ import type { Connection, ConnectionStatus, ManagedIdentity } from '../models'; import { ResourceIdentityType } from '../models'; +import type { ConnectionParameter, Connector } from '../models/connector'; import { ConnectionParameterTypes } from '../models/connector'; -import type { Connector, ConnectionParameter } from '../models/connector'; import { equals, hasProperty } from './functions'; import type { IntlShape } from 'react-intl'; diff --git a/libs/services/designer-client-services/src/lib/base/connection.ts b/libs/services/designer-client-services/src/lib/base/connection.ts index ee604a5415b..b26889529dc 100644 --- a/libs/services/designer-client-services/src/lib/base/connection.ts +++ b/libs/services/designer-client-services/src/lib/base/connection.ts @@ -3,22 +3,22 @@ import type { HttpResponse } from '../common/exceptions/service'; import type { ConnectionCreationInfo, ConnectionParametersMetadata, + ConnectorWithSwagger, CreateConnectionResult, IConnectionService, - ConnectorWithSwagger, } from '../connection'; import type { HttpRequestOptions, IHttpClient, QueryParameters } from '../httpClient'; import type { Connection, Connector, OpenAPIV2 } from '@microsoft/logic-apps-shared'; import { - isCustomConnectorId, - getUniqueName, + ArgumentException, HTTP_METHODS, + SwaggerParser, UserErrorCode, UserException, - isArmResourceId, - ArgumentException, equals, - SwaggerParser, + getUniqueName, + isArmResourceId, + isCustomConnectorId, } from '@microsoft/logic-apps-shared'; export interface ApiHubServiceDetails { diff --git a/libs/services/designer-client-services/src/lib/staticresultschema/index.ts b/libs/services/designer-client-services/src/lib/staticresultschema/index.ts index 35f03265e40..15ace5d7276 100644 --- a/libs/services/designer-client-services/src/lib/staticresultschema/index.ts +++ b/libs/services/designer-client-services/src/lib/staticresultschema/index.ts @@ -24,8 +24,8 @@ import type { ManifestParser, SwaggerParser } from '@microsoft/logic-apps-shared import { isCustomConnectorId, isManagedConnectorId, - isSharedManagedConnectorIdFromPApps, isSharedManagedConnectorId, + isSharedManagedConnectorIdFromPApps, } from '@microsoft/logic-apps-shared'; /** From 3c972d744c18f43df3c9f9f0eb90beb091c02eae Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Fri, 1 Mar 2024 18:00:09 -0800 Subject: [PATCH 09/14] Fix missing `metadata` field & add test for it --- .../__test__/connectorProperties.spec.tsx | 39 +++++++++++++++---- .../src/lib/connectors/connectorProperties.ts | 3 +- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx b/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx index 657d6dc25e7..2a3c7f056f9 100644 --- a/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx +++ b/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx @@ -39,13 +39,38 @@ describe('lib/connectors/connectorProperties', () => { }); describe('getBrandColorFromConnector', () => { - test('works for a Connector', () => { - const connector = { - properties: { - brandColor: 'red', - }, - } as Connector; - expect(getBrandColorFromConnector(connector)).toBe('red'); + describe('works for a Connector with', () => { + test('standard field only', () => { + const connector = { + properties: { + brandColor: 'red', + }, + } as Connector; + expect(getBrandColorFromConnector(connector)).toBe('red'); + }); + + test('metadata field only', () => { + const connector = { + properties: { + metadata: { + brandColor: 'red', + }, + }, + } as Connector; + expect(getBrandColorFromConnector(connector)).toBe('red'); + }); + + test('standard field and metadata field', () => { + const connector = { + properties: { + brandColor: 'red', + metadata: { + brandColor: 'blue', + }, + }, + } as Connector; + expect(getBrandColorFromConnector(connector)).toBe('red'); + }); }); test('works for an OperationApi', () => { diff --git a/libs/designer-ui/src/lib/connectors/connectorProperties.ts b/libs/designer-ui/src/lib/connectors/connectorProperties.ts index 234a9ac92b0..5b1f1f4fd4c 100644 --- a/libs/designer-ui/src/lib/connectors/connectorProperties.ts +++ b/libs/designer-ui/src/lib/connectors/connectorProperties.ts @@ -14,7 +14,8 @@ export const getAllConnectorProperties = (connector: Connector | OperationApi | }; export const getBrandColorFromConnector = (connector: Connector | OperationApi | undefined): string => { - return getAllConnectorProperties(connector)?.brandColor ?? '#000000'; + const connectorData = getAllConnectorProperties(connector); + return connectorData?.brandColor ?? connectorData.metadata?.brandColor ?? '#000000'; }; export const getDescriptionFromConnector = (connector: Connector | OperationApi | undefined): string => { From b60c4bf394ae9eb0d883c720ba23a568f723d947 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Mon, 4 Mar 2024 12:47:39 -0800 Subject: [PATCH 10/14] Move `connectors` helpers to `logic-apps-shared` --- .../src/lib/connectorsummarycard/index.tsx | 2 +- libs/designer-ui/src/lib/index.ts | 1 - .../recommendationpanel/searchResult.tsx | 2 +- libs/designer-ui/src/lib/utils/utils.ts | 3 +- .../src/lib/core/actions/bjsworkflow/add.ts | 33 +++++---- .../core/actions/bjsworkflow/initialize.ts | 68 ++++++++++--------- libs/designer/src/lib/core/utils/card.ts | 2 +- libs/designer/src/lib/core/utils/outputs.ts | 4 +- .../src/lib/core/utils/swagger/operation.ts | 3 +- .../connectorConnectionsCard.tsx | 10 +-- .../createConnectionWrapper.tsx | 2 +- .../selectConnection/selectConnection.tsx | 3 +- .../ui/panel/recommendation/browseView.tsx | 4 +- .../ui/panel/recommendation/searchView.tsx | 3 +- .../__test__/connectorPredicates.spec.tsx | 2 +- .../__test__/connectorProperties.spec.tsx | 2 +- .../connectors/connectorPredicates.ts | 5 +- .../connectors/connectorProperties.ts | 4 +- .../src/lib/helpers}/connectors/index.ts | 0 .../src/utils/src/lib/helpers/index.ts | 1 + 20 files changed, 81 insertions(+), 73 deletions(-) rename libs/{designer-ui/src/lib => logic-apps-shared/src/utils/src/lib/helpers}/connectors/__test__/connectorPredicates.spec.tsx (97%) rename libs/{designer-ui/src/lib => logic-apps-shared/src/utils/src/lib/helpers}/connectors/__test__/connectorProperties.spec.tsx (98%) rename libs/{designer-ui/src/lib => logic-apps-shared/src/utils/src/lib/helpers}/connectors/connectorPredicates.ts (86%) rename libs/{designer-ui/src/lib => logic-apps-shared/src/utils/src/lib/helpers}/connectors/connectorProperties.ts (92%) rename libs/{designer-ui/src/lib => logic-apps-shared/src/utils/src/lib/helpers}/connectors/index.ts (100%) diff --git a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx index 09e7730ad9a..0aff00eba08 100644 --- a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx +++ b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx @@ -1,7 +1,7 @@ -import { getDescriptionFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, isBuiltInConnector } from '../connectors'; import { InfoDot } from '../infoDot'; import { Text, css } from '@fluentui/react'; import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; +import { getDescriptionFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, isBuiltInConnector } from '@microsoft/logic-apps-shared'; import { useCallback } from 'react'; export interface ConnectorSummaryCardProps { diff --git a/libs/designer-ui/src/lib/index.ts b/libs/designer-ui/src/lib/index.ts index 7d038804466..9fe4f1620fd 100644 --- a/libs/designer-ui/src/lib/index.ts +++ b/libs/designer-ui/src/lib/index.ts @@ -19,7 +19,6 @@ export * from './checkbox'; // export * from './colorizer' export * from './code'; export * from './combobox'; -export * from './connectors'; export { default as UIConstants } from './constants'; export * from './html'; // export * from './conditioncontrol'; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx index 05d1e47cf00..de588f3d5e0 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx @@ -1,6 +1,5 @@ import NoResultsSvg from '../../../assets/search/noResults.svg'; import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; -import { isBuiltInConnector } from '../../connectors'; import { getConnectorCategoryString } from '../../utils'; import type { OperationActionData } from './interfaces'; import { OperationSearchCard } from './operationSearchCard'; @@ -8,6 +7,7 @@ import { OperationSearchGroup } from './operationSearchGroup'; import { List, Text } from '@fluentui/react'; import { Spinner } from '@fluentui/react-components'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; +import { isBuiltInConnector } from '@microsoft/logic-apps-shared'; import type { PropsWithChildren } from 'react'; import React, { useMemo } from 'react'; import { useIntl } from 'react-intl'; diff --git a/libs/designer-ui/src/lib/utils/utils.ts b/libs/designer-ui/src/lib/utils/utils.ts index d94fb86b1c1..decc989fde0 100644 --- a/libs/designer-ui/src/lib/utils/utils.ts +++ b/libs/designer-ui/src/lib/utils/utils.ts @@ -1,7 +1,6 @@ -import { isBuiltInConnector, isCustomConnector } from '../connectors'; import Constants from '../constants'; import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { equals, getIntl } from '@microsoft/logic-apps-shared'; +import { equals, getIntl, isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; /** * Returns a string with a duration, possibly abbreviated, e.g., 15s or 15 second(s) diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts index 939906df56c..f7bd95e5dca 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts @@ -1,3 +1,22 @@ +import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; +import type { + Connector, + DiscoveryOperation, + DiscoveryResultTypes, + OperationManifest, + SomeKindOfAzureOperationDiscovery, + SwaggerParser, +} from '@microsoft/logic-apps-shared'; +import { + ManifestParser, + equals, + getBrandColorFromConnector, + getIconUriFromConnector, + getRecordEntry, +} from '@microsoft/logic-apps-shared'; +import type { Dispatch } from '@reduxjs/toolkit'; +import { createAsyncThunk } from '@reduxjs/toolkit'; +import { batch } from 'react-redux'; import Constants from '../../../common/constants'; import type { WorkflowNode } from '../../parsers/models/workflowNode'; import { getConnectionsForConnector, getConnectorWithSwagger } from '../../queries/connections'; @@ -29,20 +48,6 @@ import { import type { NodeDataWithOperationMetadata } from './operationdeserializer'; import type { Settings } from './settings'; import { getOperationSettings, getSplitOnValue } from './settings'; -import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; -import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; -import type { - Connector, - DiscoveryOperation, - DiscoveryResultTypes, - OperationManifest, - SomeKindOfAzureOperationDiscovery, - SwaggerParser, -} from '@microsoft/logic-apps-shared'; -import { ManifestParser, equals, getRecordEntry } from '@microsoft/logic-apps-shared'; -import type { Dispatch } from '@reduxjs/toolkit'; -import { createAsyncThunk } from '@reduxjs/toolkit'; -import { batch } from 'react-redux'; type AddOperationPayload = { operation: DiscoveryOperation | undefined; diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts index 125b4e2ba8a..e63742ce799 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts @@ -1,35 +1,3 @@ -import Constants from '../../../common/constants'; -import { ImpersonationSource, type ConnectionReferences, type WorkflowParameter } from '../../../common/models/workflow'; -import type { WorkflowNode } from '../../parsers/models/workflowNode'; -import { getConnectorWithSwagger, getSwaggerFromEndpoint } from '../../queries/connections'; -import { getOperationManifest } from '../../queries/operation'; -import type { DependencyInfo, NodeInputs, NodeOperation, NodeOutputs, OutputInfo } from '../../state/operation/operationMetadataSlice'; -import { DynamicLoadStatus, updateNodeParameters, updateNodeSettings, updateOutputs } from '../../state/operation/operationMetadataSlice'; -import type { UpdateUpstreamNodesPayload } from '../../state/tokens/tokensSlice'; -import { updateTokens, updateUpstreamNodes } from '../../state/tokens/tokensSlice'; -import { WorkflowKind } from '../../state/workflow/workflowInterfaces'; -import type { WorkflowParameterDefinition } from '../../state/workflowparameters/workflowparametersSlice'; -import { initializeParameters } from '../../state/workflowparameters/workflowparametersSlice'; -import type { RootState } from '../../store'; -import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; -import { getSplitOnOptions, getUpdatedManifestForSchemaDependency, getUpdatedManifestForSplitOn, toOutputInfo } from '../../utils/outputs'; -import { - ParameterGroupKeys, - addRecurrenceParametersInGroup, - getAllInputParameters, - getDependentParameters, - getInputsValueFromDefinitionForManifest, - getParameterFromName, - getParametersSortedByVisibility, - loadParameterValuesArrayFromDefault, - toParameterInfoMap, - updateParameterWithValues, -} from '../../utils/parameters/helper'; -import { createLiteralValueSegment } from '../../utils/parameters/segment'; -import { getOutputParametersFromSwagger } from '../../utils/swagger/operation'; -import { convertOutputsToTokens, getBuiltInTokens, getTokenNodeIds } from '../../utils/tokens'; -import type { NodeInputsWithDependencies, NodeOutputsWithDependencies } from './operationdeserializer'; -import type { Settings } from './settings'; import type { IConnectionService, IOAuthService, @@ -45,7 +13,7 @@ import { OperationManifestService, WorkflowService, } from '@microsoft/designer-client-services-logic-apps'; -import { getBrandColorFromConnector, getIconUriFromConnector, type OutputToken, type ParameterInfo } from '@microsoft/designer-ui'; +import type { OutputToken, ParameterInfo } from '@microsoft/designer-ui'; import type { CustomSwaggerServiceDetails, InputParameter, @@ -65,6 +33,8 @@ import { UnsupportedException, clone, equals, + getBrandColorFromConnector, + getIconUriFromConnector, getIntl, getObjectPropertyValue, isDynamicListExtension, @@ -76,6 +46,38 @@ import { unmap, } from '@microsoft/logic-apps-shared'; import type { Dispatch } from '@reduxjs/toolkit'; +import Constants from '../../../common/constants'; +import { ImpersonationSource, type ConnectionReferences, type WorkflowParameter } from '../../../common/models/workflow'; +import type { WorkflowNode } from '../../parsers/models/workflowNode'; +import { getConnectorWithSwagger, getSwaggerFromEndpoint } from '../../queries/connections'; +import { getOperationManifest } from '../../queries/operation'; +import type { DependencyInfo, NodeInputs, NodeOperation, NodeOutputs, OutputInfo } from '../../state/operation/operationMetadataSlice'; +import { DynamicLoadStatus, updateNodeParameters, updateNodeSettings, updateOutputs } from '../../state/operation/operationMetadataSlice'; +import type { UpdateUpstreamNodesPayload } from '../../state/tokens/tokensSlice'; +import { updateTokens, updateUpstreamNodes } from '../../state/tokens/tokensSlice'; +import { WorkflowKind } from '../../state/workflow/workflowInterfaces'; +import type { WorkflowParameterDefinition } from '../../state/workflowparameters/workflowparametersSlice'; +import { initializeParameters } from '../../state/workflowparameters/workflowparametersSlice'; +import type { RootState } from '../../store'; +import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; +import { getSplitOnOptions, getUpdatedManifestForSchemaDependency, getUpdatedManifestForSplitOn, toOutputInfo } from '../../utils/outputs'; +import { + ParameterGroupKeys, + addRecurrenceParametersInGroup, + getAllInputParameters, + getDependentParameters, + getInputsValueFromDefinitionForManifest, + getParameterFromName, + getParametersSortedByVisibility, + loadParameterValuesArrayFromDefault, + toParameterInfoMap, + updateParameterWithValues, +} from '../../utils/parameters/helper'; +import { createLiteralValueSegment } from '../../utils/parameters/segment'; +import { getOutputParametersFromSwagger } from '../../utils/swagger/operation'; +import { convertOutputsToTokens, getBuiltInTokens, getTokenNodeIds } from '../../utils/tokens'; +import type { NodeInputsWithDependencies, NodeOutputsWithDependencies } from './operationdeserializer'; +import type { Settings } from './settings'; export interface ServiceOptions { connectionService: IConnectionService; diff --git a/libs/designer/src/lib/core/utils/card.ts b/libs/designer/src/lib/core/utils/card.ts index 36da0873818..d415fae688f 100644 --- a/libs/designer/src/lib/core/utils/card.ts +++ b/libs/designer/src/lib/core/utils/card.ts @@ -1,5 +1,5 @@ -import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; import type { OperationManifest } from '@microsoft/logic-apps-shared'; +import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/logic-apps-shared'; export function getBrandColorFromManifest(manifest: OperationManifest): string { return manifest.properties?.brandColor ?? getBrandColorFromConnector(manifest.properties?.connector); diff --git a/libs/designer/src/lib/core/utils/outputs.ts b/libs/designer/src/lib/core/utils/outputs.ts index a065e22a585..0b18e230f8d 100644 --- a/libs/designer/src/lib/core/utils/outputs.ts +++ b/libs/designer/src/lib/core/utils/outputs.ts @@ -28,8 +28,6 @@ import { OperationManifestService } from '@microsoft/designer-client-services-lo import { ValueSegmentType, generateSchemaFromJsonString, - getBrandColorFromConnector, - getIconUriFromConnector, } from '@microsoft/designer-ui'; import type { Expression, @@ -52,6 +50,8 @@ import { clone, create, equals, + getBrandColorFromConnector, + getIconUriFromConnector, getIntl, getObjectPropertyValue, isFunction, diff --git a/libs/designer/src/lib/core/utils/swagger/operation.ts b/libs/designer/src/lib/core/utils/swagger/operation.ts index 0c139674b30..32894ca9f88 100644 --- a/libs/designer/src/lib/core/utils/swagger/operation.ts +++ b/libs/designer/src/lib/core/utils/swagger/operation.ts @@ -28,7 +28,6 @@ import { } from '../parameters/helper'; import { loadInputValuesFromDefinition } from './inputsbuilder'; import { LogEntryLevel, LoggerService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; -import { getBrandColorFromConnector, getIconUriFromConnector } from '@microsoft/designer-ui'; import type { LAOperation, LogicAppsV2, OperationInfo, OutputParameter, SwaggerParser } from '@microsoft/logic-apps-shared'; import { ParameterLocations, @@ -36,6 +35,8 @@ import { copyArray, create, equals, + getBrandColorFromConnector, + getIconUriFromConnector, isDynamicSchemaExtension, isTemplateExpression, map, diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 5efa06b4433..08cb3fb816f 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -2,14 +2,14 @@ import { useAllConnectionErrors } from '../../../../core'; import { ConnectionEntry } from './connectionEntry'; import { AccordionHeader, AccordionPanel, Badge, Spinner, Text } from '@fluentui/react-components'; import { - getBrandColorFromConnector, getConnectorCategoryString, - getDisplayNameFromConnector, - getIconUriFromConnector, - isBuiltInConnector, } from '@microsoft/designer-ui'; import type { Connector } from '@microsoft/logic-apps-shared'; -import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; +import { fallbackConnectorIconUrl, + getBrandColorFromConnector, + getDisplayNameFromConnector, + getIconUriFromConnector, + isBuiltInConnector, } from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; export interface ConnectorConnectionsCardProps { diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx index 8ca5b184223..3c07756ecc9 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/createConnection/createConnectionWrapper.tsx @@ -29,8 +29,8 @@ import { CreateConnection } from './createConnection'; import { Spinner } from '@fluentui/react-components'; import type { ConnectionCreationInfo, ConnectionParametersMetadata } from '@microsoft/designer-client-services-logic-apps'; import { ConnectionService, LogEntryLevel, LoggerService, WorkflowService } from '@microsoft/designer-client-services-logic-apps'; -import { getIconUriFromConnector } from '@microsoft/designer-ui'; import { + getIconUriFromConnector, getRecordEntry, safeSetObjectPropertyValue, type Connection, diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx index ac583877460..8313648aea8 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/selectConnection/selectConnection.tsx @@ -10,8 +10,7 @@ import { ConnectionTable } from './connectionTable'; import { MessageBar, MessageBarType } from '@fluentui/react'; import { Body1Strong, Button, Divider, Spinner } from '@fluentui/react-components'; import { ConnectionService } from '@microsoft/designer-client-services-logic-apps'; -import { getIconUriFromConnector } from '@microsoft/designer-ui'; -import { type Connection, type Connector } from '@microsoft/logic-apps-shared'; +import { getIconUriFromConnector, type Connection, type Connector } from '@microsoft/logic-apps-shared'; import { useCallback, useEffect, useMemo } from 'react'; import { useIntl } from 'react-intl'; import { useDispatch } from 'react-redux'; diff --git a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx index 4edd3d2a8e1..29c61447ce0 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx @@ -1,8 +1,8 @@ import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } from '../../../core/queries/browse'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService } from '@microsoft/designer-client-services-logic-apps'; -import { BrowseGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; -import { cleanConnectorId, type Connector } from '@microsoft/logic-apps-shared'; +import { BrowseGrid } from '@microsoft/designer-ui'; +import { cleanConnectorId, isBuiltInConnector, isCustomConnector, type Connector } from '@microsoft/logic-apps-shared'; import { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; diff --git a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx index 08af3b0a610..2525ceb7ea7 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx @@ -1,8 +1,9 @@ import type { AppDispatch } from '../../../core'; import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService, type ISearchService } from '@microsoft/designer-client-services-logic-apps'; -import { SearchResultsGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; +import { SearchResultsGrid } from '@microsoft/designer-ui'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; +import { isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; import { useDebouncedEffect } from '@react-hookz/web'; import Fuse from 'fuse.js'; import React, { useEffect, useState } from 'react'; diff --git a/libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx similarity index 97% rename from libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx index 5abbb40256f..5578bf5448e 100644 --- a/libs/designer-ui/src/lib/connectors/__test__/connectorPredicates.spec.tsx +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx @@ -1,6 +1,6 @@ +import type { Connector, OperationApi } from '../../../models'; import { isBuiltInConnector } from '../index'; import * as DesignerClientServices from '@microsoft/designer-client-services-logic-apps'; -import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; const getMinimalHostService = (): DesignerClientServices.IHostService => ({ fetchAndDisplayContent: jest.fn(), diff --git a/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx similarity index 98% rename from libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx index 2a3c7f056f9..b89aee3dd84 100644 --- a/libs/designer-ui/src/lib/connectors/__test__/connectorProperties.spec.tsx +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx @@ -1,3 +1,4 @@ +import type { Connector, OperationApi } from '../../../models'; import { getAllConnectorProperties, getBrandColorFromConnector, @@ -5,7 +6,6 @@ import { getDisplayNameFromConnector, getIconUriFromConnector, } from '../index'; -import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; describe('lib/connectors/connectorProperties', () => { describe('getAllConnectorProperties', () => { diff --git a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts similarity index 86% rename from libs/designer-ui/src/lib/connectors/connectorPredicates.ts rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts index 314f962906a..05873a0caf7 100644 --- a/libs/designer-ui/src/lib/connectors/connectorPredicates.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts @@ -1,7 +1,8 @@ +import type { Connector, OperationApi } from '../../models'; +import { isBuiltInConnectorId, isCustomConnectorId } from '../connections'; +import { isString } from '../functions'; import { getAllConnectorProperties } from './connectorProperties'; import { HostService } from '@microsoft/designer-client-services-logic-apps'; -import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { isBuiltInConnectorId, isCustomConnectorId, isString } from '@microsoft/logic-apps-shared'; export const isBuiltInConnector = (connector: Connector | OperationApi | string): boolean => { const hostIsBuiltInConnectorFn = HostService()?.isBuiltInConnector; diff --git a/libs/designer-ui/src/lib/connectors/connectorProperties.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts similarity index 92% rename from libs/designer-ui/src/lib/connectors/connectorProperties.ts rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts index 5b1f1f4fd4c..ff3da1b9ce8 100644 --- a/libs/designer-ui/src/lib/connectors/connectorProperties.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts @@ -1,5 +1,5 @@ -import type { Connector, ConnectorProperty, OperationApi } from '@microsoft/logic-apps-shared'; -import { fallbackConnectorIconUrl } from '@microsoft/logic-apps-shared'; +import type { Connector, ConnectorProperty, OperationApi } from "../../models"; +import { fallbackConnectorIconUrl } from "../connections"; export const getAllConnectorProperties = (connector: Connector | OperationApi | undefined): Partial => { if (!connector) { diff --git a/libs/designer-ui/src/lib/connectors/index.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts similarity index 100% rename from libs/designer-ui/src/lib/connectors/index.ts rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/index.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/index.ts index ee2da4548da..17f110289b3 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/index.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/index.ts @@ -1,5 +1,6 @@ export * from './color'; export * from './connections'; +export * from './connectors'; export * from './functions'; export * from './guid'; export * from './stringFunctions'; From a9ce42f5677b0bc8dd1b9b8b2a0dd722bb02c6cb Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Mon, 4 Mar 2024 13:04:24 -0800 Subject: [PATCH 11/14] Clean up some imports --- libs/designer-ui/src/lib/authentication/index.tsx | 3 +-- libs/designer-ui/src/lib/authentication/util.ts | 3 +-- libs/designer-ui/src/lib/code/util.ts | 13 ++++++++++--- .../allConnections/connectorConnectionsCard.tsx | 6 ++++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/libs/designer-ui/src/lib/authentication/index.tsx b/libs/designer-ui/src/lib/authentication/index.tsx index 71510ef869f..684fb241571 100644 --- a/libs/designer-ui/src/lib/authentication/index.tsx +++ b/libs/designer-ui/src/lib/authentication/index.tsx @@ -12,9 +12,8 @@ import { MSIAuthentication } from './MSIAuth/MSIAuth'; import { RawAuthentication } from './RawAuth'; import { parseAuthEditor } from './util'; import type { IDropdownOption } from '@fluentui/react/lib/Dropdown'; -import { getIntl } from '@microsoft/logic-apps-shared'; import type { ManagedIdentity } from '@microsoft/logic-apps-shared'; -import { AssertionErrorCode, AssertionException, format } from '@microsoft/logic-apps-shared'; +import { getIntl, AssertionErrorCode, AssertionException, format } from '@microsoft/logic-apps-shared'; import { useUpdateEffect } from '@react-hookz/web'; import { useState } from 'react'; import { useIntl } from 'react-intl'; diff --git a/libs/designer-ui/src/lib/authentication/util.ts b/libs/designer-ui/src/lib/authentication/util.ts index fa758a1120d..0fa5c814efd 100644 --- a/libs/designer-ui/src/lib/authentication/util.ts +++ b/libs/designer-ui/src/lib/authentication/util.ts @@ -6,9 +6,8 @@ import { ValueSegmentType } from '../editor'; import { convertStringToSegments } from '../editor/base/utils/editorToSegment'; import { convertKeyValueItemToSegments } from '../editor/base/utils/keyvalueitem'; import { AuthenticationOAuthType } from './AADOAuth/AADOAuth'; -import { getIntl } from '@microsoft/logic-apps-shared'; import type { ManagedIdentity } from '@microsoft/logic-apps-shared'; -import { guid, equals, ResourceIdentityType } from '@microsoft/logic-apps-shared'; +import { getIntl, guid, equals, ResourceIdentityType } from '@microsoft/logic-apps-shared'; export interface AuthProperty { displayName: string; diff --git a/libs/designer-ui/src/lib/code/util.ts b/libs/designer-ui/src/lib/code/util.ts index f00a5d6a203..04b7bc6f0dc 100644 --- a/libs/designer-ui/src/lib/code/util.ts +++ b/libs/designer-ui/src/lib/code/util.ts @@ -1,9 +1,16 @@ import constants from '../constants'; import type { Token, ValueSegment } from '../editor'; import { TokenType } from '../editor'; -import { getIntl } from '@microsoft/logic-apps-shared'; -import { decodePropertySegment, OutputKeys } from '@microsoft/logic-apps-shared'; -import { ArgumentException, endsWith, equals, prettifyJsonString, UnsupportedException } from '@microsoft/logic-apps-shared'; +import { + ArgumentException, + OutputKeys, + UnsupportedException, + decodePropertySegment, + endsWith, + equals, + getIntl, + prettifyJsonString, +} from '@microsoft/logic-apps-shared'; const OperationCategory = { Actions: 'actions', diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 08cb3fb816f..9e70685ab47 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -5,11 +5,13 @@ import { getConnectorCategoryString, } from '@microsoft/designer-ui'; import type { Connector } from '@microsoft/logic-apps-shared'; -import { fallbackConnectorIconUrl, +import { + fallbackConnectorIconUrl, getBrandColorFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, - isBuiltInConnector, } from '@microsoft/logic-apps-shared'; + isBuiltInConnector, +} from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; export interface ConnectorConnectionsCardProps { From 4ae21dd608f060c0805b5a8178daa5d92b842da1 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Tue, 5 Mar 2024 15:44:40 -0800 Subject: [PATCH 12/14] Move some functions into logic-apps-shared --- .../lib/connectors/__test__/predicates.spec.tsx} | 6 +++--- libs/designer-ui/src/lib/connectors/index.ts | 1 + .../src/lib/connectors/predicates.ts} | 6 ++---- .../src/lib/connectorsummarycard/index.tsx | 5 +++-- libs/designer-ui/src/lib/index.ts | 1 + .../lib/panel/recommendationpanel/searchResult.tsx | 14 +++++++------- libs/designer-ui/src/lib/utils/utils.ts | 5 +++-- .../allConnections/connectorConnectionsCard.tsx | 6 +++--- .../src/lib/ui/panel/recommendation/browseView.tsx | 8 ++++---- .../src/lib/ui/panel/recommendation/searchView.tsx | 7 +++---- .../connectors.spec.tsx} | 4 ++-- .../connectorProperties.ts => connectors.ts} | 5 +++-- .../src/utils/src/lib/helpers/connectors/index.ts | 2 -- 13 files changed, 35 insertions(+), 35 deletions(-) rename libs/{logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx => designer-ui/src/lib/connectors/__test__/predicates.spec.tsx} (96%) create mode 100644 libs/designer-ui/src/lib/connectors/index.ts rename libs/{logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts => designer-ui/src/lib/connectors/predicates.ts} (80%) rename libs/logic-apps-shared/src/utils/src/lib/helpers/{connectors/__test__/connectorProperties.spec.tsx => __test__/connectors.spec.tsx} (98%) rename libs/logic-apps-shared/src/utils/src/lib/helpers/{connectors/connectorProperties.ts => connectors.ts} (94%) delete mode 100644 libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx b/libs/designer-ui/src/lib/connectors/__test__/predicates.spec.tsx similarity index 96% rename from libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx rename to libs/designer-ui/src/lib/connectors/__test__/predicates.spec.tsx index 5578bf5448e..bf7de6f4fe1 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorPredicates.spec.tsx +++ b/libs/designer-ui/src/lib/connectors/__test__/predicates.spec.tsx @@ -1,12 +1,12 @@ -import type { Connector, OperationApi } from '../../../models'; -import { isBuiltInConnector } from '../index'; import * as DesignerClientServices from '@microsoft/designer-client-services-logic-apps'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; +import { isBuiltInConnector } from '../index'; const getMinimalHostService = (): DesignerClientServices.IHostService => ({ fetchAndDisplayContent: jest.fn(), }); -describe('lib/connectors/connectorProperties', () => { +describe('lib/connectors', () => { afterEach(() => { jest.restoreAllMocks(); }); diff --git a/libs/designer-ui/src/lib/connectors/index.ts b/libs/designer-ui/src/lib/connectors/index.ts new file mode 100644 index 00000000000..42e836b675f --- /dev/null +++ b/libs/designer-ui/src/lib/connectors/index.ts @@ -0,0 +1 @@ +export * from './predicates'; \ No newline at end of file diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts b/libs/designer-ui/src/lib/connectors/predicates.ts similarity index 80% rename from libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts rename to libs/designer-ui/src/lib/connectors/predicates.ts index 05873a0caf7..fdab289fe38 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorPredicates.ts +++ b/libs/designer-ui/src/lib/connectors/predicates.ts @@ -1,8 +1,6 @@ -import type { Connector, OperationApi } from '../../models'; -import { isBuiltInConnectorId, isCustomConnectorId } from '../connections'; -import { isString } from '../functions'; -import { getAllConnectorProperties } from './connectorProperties'; import { HostService } from '@microsoft/designer-client-services-logic-apps'; +import type { Connector, OperationApi} from '@microsoft/logic-apps-shared'; +import { getAllConnectorProperties, isBuiltInConnectorId, isCustomConnectorId, isString } from '@microsoft/logic-apps-shared'; export const isBuiltInConnector = (connector: Connector | OperationApi | string): boolean => { const hostIsBuiltInConnectorFn = HostService()?.isBuiltInConnector; diff --git a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx index 0aff00eba08..9a95ec4bc63 100644 --- a/libs/designer-ui/src/lib/connectorsummarycard/index.tsx +++ b/libs/designer-ui/src/lib/connectorsummarycard/index.tsx @@ -1,8 +1,9 @@ -import { InfoDot } from '../infoDot'; import { Text, css } from '@fluentui/react'; import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { getDescriptionFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, isBuiltInConnector } from '@microsoft/logic-apps-shared'; +import { getDescriptionFromConnector, getDisplayNameFromConnector, getIconUriFromConnector } from '@microsoft/logic-apps-shared'; import { useCallback } from 'react'; +import { isBuiltInConnector } from '../connectors/predicates'; +import { InfoDot } from '../infoDot'; export interface ConnectorSummaryCardProps { connector: Connector | OperationApi; diff --git a/libs/designer-ui/src/lib/index.ts b/libs/designer-ui/src/lib/index.ts index 9fe4f1620fd..7d038804466 100644 --- a/libs/designer-ui/src/lib/index.ts +++ b/libs/designer-ui/src/lib/index.ts @@ -19,6 +19,7 @@ export * from './checkbox'; // export * from './colorizer' export * from './code'; export * from './combobox'; +export * from './connectors'; export { default as UIConstants } from './constants'; export * from './html'; // export * from './conditioncontrol'; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx index de588f3d5e0..6f0933956d1 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx @@ -1,16 +1,16 @@ -import NoResultsSvg from '../../../assets/search/noResults.svg'; -import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; -import { getConnectorCategoryString } from '../../utils'; -import type { OperationActionData } from './interfaces'; -import { OperationSearchCard } from './operationSearchCard'; -import { OperationSearchGroup } from './operationSearchGroup'; import { List, Text } from '@fluentui/react'; import { Spinner } from '@fluentui/react-components'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; -import { isBuiltInConnector } from '@microsoft/logic-apps-shared'; import type { PropsWithChildren } from 'react'; import React, { useMemo } from 'react'; import { useIntl } from 'react-intl'; +import NoResultsSvg from '../../../assets/search/noResults.svg'; +import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; +import { isBuiltInConnector } from '../../connectors'; +import { getConnectorCategoryString } from '../../utils'; +import type { OperationActionData } from './interfaces'; +import { OperationSearchCard } from './operationSearchCard'; +import { OperationSearchGroup } from './operationSearchGroup'; export type SearchResultsGridProps = { isLoadingMore: boolean; diff --git a/libs/designer-ui/src/lib/utils/utils.ts b/libs/designer-ui/src/lib/utils/utils.ts index decc989fde0..34955cc4149 100644 --- a/libs/designer-ui/src/lib/utils/utils.ts +++ b/libs/designer-ui/src/lib/utils/utils.ts @@ -1,6 +1,7 @@ -import Constants from '../constants'; import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { equals, getIntl, isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; +import { equals, getIntl } from '@microsoft/logic-apps-shared'; +import { isBuiltInConnector, isCustomConnector } from '../connectors'; +import Constants from '../constants'; /** * Returns a string with a duration, possibly abbreviated, e.g., 15s or 15 second(s) diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 9e70685ab47..202c1e682b8 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -1,8 +1,7 @@ -import { useAllConnectionErrors } from '../../../../core'; -import { ConnectionEntry } from './connectionEntry'; import { AccordionHeader, AccordionPanel, Badge, Spinner, Text } from '@fluentui/react-components'; import { getConnectorCategoryString, + isBuiltInConnector, } from '@microsoft/designer-ui'; import type { Connector } from '@microsoft/logic-apps-shared'; import { @@ -10,9 +9,10 @@ import { getBrandColorFromConnector, getDisplayNameFromConnector, getIconUriFromConnector, - isBuiltInConnector, } from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; +import { useAllConnectionErrors } from '../../../../core'; +import { ConnectionEntry } from './connectionEntry'; export interface ConnectorConnectionsCardProps { connectorId: string; diff --git a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx index 29c61447ce0..dfb7f442885 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/browseView.tsx @@ -1,10 +1,10 @@ -import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } from '../../../core/queries/browse'; -import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService } from '@microsoft/designer-client-services-logic-apps'; -import { BrowseGrid } from '@microsoft/designer-ui'; -import { cleanConnectorId, isBuiltInConnector, isCustomConnector, type Connector } from '@microsoft/logic-apps-shared'; +import { BrowseGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; +import { cleanConnectorId, type Connector } from '@microsoft/logic-apps-shared'; import { useCallback, useMemo } from 'react'; import { useDispatch } from 'react-redux'; +import { useAllApiIdsWithActions, useAllApiIdsWithTriggers, useAllConnectors } from '../../../core/queries/browse'; +import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; const defaultFilterConnector = (connector: Connector, runtimeFilter: string): boolean => { if (runtimeFilter === 'inapp' && !isBuiltInConnector(connector)) return false; diff --git a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx index 2525ceb7ea7..08515626599 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx @@ -1,13 +1,12 @@ -import type { AppDispatch } from '../../../core'; -import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService, type ISearchService } from '@microsoft/designer-client-services-logic-apps'; -import { SearchResultsGrid } from '@microsoft/designer-ui'; +import { SearchResultsGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; -import { isBuiltInConnector, isCustomConnector } from '@microsoft/logic-apps-shared'; import { useDebouncedEffect } from '@react-hookz/web'; import Fuse from 'fuse.js'; import React, { useEffect, useState } from 'react'; import { useDispatch } from 'react-redux'; +import type { AppDispatch } from '../../../core'; +import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; type SearchViewProps = { searchTerm: string; diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx b/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx similarity index 98% rename from libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx rename to libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx index b89aee3dd84..edfbb0aa4f3 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/__test__/connectorProperties.spec.tsx +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx @@ -1,4 +1,4 @@ -import type { Connector, OperationApi } from '../../../models'; +import { Connector, OperationApi } from '../../models'; import { getAllConnectorProperties, getBrandColorFromConnector, @@ -7,7 +7,7 @@ import { getIconUriFromConnector, } from '../index'; -describe('lib/connectors/connectorProperties', () => { +describe('utils/src/lib/helpers/connectors', () => { describe('getAllConnectorProperties', () => { test('works for a Connector', () => { const connector = { diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts similarity index 94% rename from libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts rename to libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts index ff3da1b9ce8..e85a32f7018 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/connectorProperties.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts @@ -1,5 +1,6 @@ -import type { Connector, ConnectorProperty, OperationApi } from "../../models"; -import { fallbackConnectorIconUrl } from "../connections"; +import type { Connector, ConnectorProperty, OperationApi } from "../models"; +import { fallbackConnectorIconUrl } from "./connections"; + export const getAllConnectorProperties = (connector: Connector | OperationApi | undefined): Partial => { if (!connector) { diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts deleted file mode 100644 index 1c84603965c..00000000000 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './connectorPredicates'; -export * from './connectorProperties'; From e727889170503f267c8a3eaf66e1d82c02f4ae10 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:00:21 -0800 Subject: [PATCH 13/14] Fix some import merge conflicts --- libs/designer/src/lib/core/utils/swagger/operation.ts | 1 + .../src/utils/src/lib/helpers/__test__/connectors.spec.tsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/designer/src/lib/core/utils/swagger/operation.ts b/libs/designer/src/lib/core/utils/swagger/operation.ts index a69a65b0c36..32894ca9f88 100644 --- a/libs/designer/src/lib/core/utils/swagger/operation.ts +++ b/libs/designer/src/lib/core/utils/swagger/operation.ts @@ -41,6 +41,7 @@ import { isTemplateExpression, map, parsePathnameAndQueryKeyFromUri, + removeConnectionPrefix, startsWith, unmap, } from '@microsoft/logic-apps-shared'; diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx b/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx index edfbb0aa4f3..c1a450959a4 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/__test__/connectors.spec.tsx @@ -1,4 +1,4 @@ -import { Connector, OperationApi } from '../../models'; +import type { Connector, OperationApi } from '../../models'; import { getAllConnectorProperties, getBrandColorFromConnector, From c8d5ee0ddca9d88e89e10e841ff53707cd677c29 Mon Sep 17 00:00:00 2001 From: ek <1350074+ek68794998@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:29:12 -0800 Subject: [PATCH 14/14] Fix a bunch of unnecessary import changes --- .../src/lib/authentication/index.tsx | 2 +- .../recommendationpanel/searchResult.tsx | 12 +-- libs/designer-ui/src/lib/utils/utils.ts | 4 +- .../src/lib/core/actions/bjsworkflow/add.ts | 32 +++--- .../core/actions/bjsworkflow/initialize.ts | 100 +++++++++--------- .../connectorConnectionsCard.tsx | 9 +- .../ui/panel/recommendation/searchView.tsx | 4 +- .../src/utils/src/lib/helpers/connectors.ts | 5 +- 8 files changed, 79 insertions(+), 89 deletions(-) diff --git a/libs/designer-ui/src/lib/authentication/index.tsx b/libs/designer-ui/src/lib/authentication/index.tsx index 16db07a506c..7828c7fb517 100644 --- a/libs/designer-ui/src/lib/authentication/index.tsx +++ b/libs/designer-ui/src/lib/authentication/index.tsx @@ -12,8 +12,8 @@ import { MSIAuthentication } from './MSIAuth/MSIAuth'; import { RawAuthentication } from './RawAuth'; import { parseAuthEditor } from './util'; import type { IDropdownOption } from '@fluentui/react/lib/Dropdown'; -import type { ManagedIdentity } from '@microsoft/logic-apps-shared'; import { AssertionErrorCode, AssertionException, format, getIntl } from '@microsoft/logic-apps-shared'; +import type { ManagedIdentity } from '@microsoft/logic-apps-shared'; import { useUpdateEffect } from '@react-hookz/web'; import { useState } from 'react'; import { useIntl } from 'react-intl'; diff --git a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx index 6f0933956d1..05d1e47cf00 100644 --- a/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx +++ b/libs/designer-ui/src/lib/panel/recommendationpanel/searchResult.tsx @@ -1,9 +1,3 @@ -import { List, Text } from '@fluentui/react'; -import { Spinner } from '@fluentui/react-components'; -import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; -import type { PropsWithChildren } from 'react'; -import React, { useMemo } from 'react'; -import { useIntl } from 'react-intl'; import NoResultsSvg from '../../../assets/search/noResults.svg'; import { AriaSearchResultsAlert } from '../../ariaSearchResults/ariaSearchResultsAlert'; import { isBuiltInConnector } from '../../connectors'; @@ -11,6 +5,12 @@ import { getConnectorCategoryString } from '../../utils'; import type { OperationActionData } from './interfaces'; import { OperationSearchCard } from './operationSearchCard'; import { OperationSearchGroup } from './operationSearchGroup'; +import { List, Text } from '@fluentui/react'; +import { Spinner } from '@fluentui/react-components'; +import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; +import type { PropsWithChildren } from 'react'; +import React, { useMemo } from 'react'; +import { useIntl } from 'react-intl'; export type SearchResultsGridProps = { isLoadingMore: boolean; diff --git a/libs/designer-ui/src/lib/utils/utils.ts b/libs/designer-ui/src/lib/utils/utils.ts index 34955cc4149..d94fb86b1c1 100644 --- a/libs/designer-ui/src/lib/utils/utils.ts +++ b/libs/designer-ui/src/lib/utils/utils.ts @@ -1,7 +1,7 @@ -import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; -import { equals, getIntl } from '@microsoft/logic-apps-shared'; import { isBuiltInConnector, isCustomConnector } from '../connectors'; import Constants from '../constants'; +import type { Connector, OperationApi } from '@microsoft/logic-apps-shared'; +import { equals, getIntl } from '@microsoft/logic-apps-shared'; /** * Returns a string with a duration, possibly abbreviated, e.g., 15s or 15 second(s) diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts index f7bd95e5dca..437276c6f03 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/add.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/add.ts @@ -1,22 +1,3 @@ -import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; -import type { - Connector, - DiscoveryOperation, - DiscoveryResultTypes, - OperationManifest, - SomeKindOfAzureOperationDiscovery, - SwaggerParser, -} from '@microsoft/logic-apps-shared'; -import { - ManifestParser, - equals, - getBrandColorFromConnector, - getIconUriFromConnector, - getRecordEntry, -} from '@microsoft/logic-apps-shared'; -import type { Dispatch } from '@reduxjs/toolkit'; -import { createAsyncThunk } from '@reduxjs/toolkit'; -import { batch } from 'react-redux'; import Constants from '../../../common/constants'; import type { WorkflowNode } from '../../parsers/models/workflowNode'; import { getConnectionsForConnector, getConnectorWithSwagger } from '../../queries/connections'; @@ -48,6 +29,19 @@ import { import type { NodeDataWithOperationMetadata } from './operationdeserializer'; import type { Settings } from './settings'; import { getOperationSettings, getSplitOnValue } from './settings'; +import { ConnectionService, OperationManifestService, StaticResultService } from '@microsoft/designer-client-services-logic-apps'; +import type { + Connector, + DiscoveryOperation, + DiscoveryResultTypes, + OperationManifest, + SomeKindOfAzureOperationDiscovery, + SwaggerParser, +} from '@microsoft/logic-apps-shared'; +import { ManifestParser, equals, getBrandColorFromConnector, getIconUriFromConnector, getRecordEntry } from '@microsoft/logic-apps-shared'; +import type { Dispatch } from '@reduxjs/toolkit'; +import { createAsyncThunk } from '@reduxjs/toolkit'; +import { batch } from 'react-redux'; type AddOperationPayload = { operation: DiscoveryOperation | undefined; diff --git a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts index e63742ce799..ea55ab481ea 100644 --- a/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts +++ b/libs/designer/src/lib/core/actions/bjsworkflow/initialize.ts @@ -1,58 +1,10 @@ -import type { - IConnectionService, - IOAuthService, - IOperationManifestService, - ISearchService, - IWorkflowService, -} from '@microsoft/designer-client-services-logic-apps'; -import { - ApiManagementService, - FunctionService, - LogEntryLevel, - LoggerService, - OperationManifestService, - WorkflowService, -} from '@microsoft/designer-client-services-logic-apps'; -import type { OutputToken, ParameterInfo } from '@microsoft/designer-ui'; -import type { - CustomSwaggerServiceDetails, - InputParameter, - OperationInfo, - OperationManifest, - OperationManifestProperties, - OutputParameter, - SchemaProperty, - SwaggerParser, -} from '@microsoft/logic-apps-shared'; -import { - ConnectionReferenceKeyFormat, - CustomSwaggerServiceNames, - DynamicSchemaType, - ManifestParser, - PropertyName, - UnsupportedException, - clone, - equals, - getBrandColorFromConnector, - getIconUriFromConnector, - getIntl, - getObjectPropertyValue, - isDynamicListExtension, - isDynamicPropertiesExtension, - isDynamicSchemaExtension, - isDynamicTreeExtension, - isLegacyDynamicValuesExtension, - isLegacyDynamicValuesTreeExtension, - unmap, -} from '@microsoft/logic-apps-shared'; -import type { Dispatch } from '@reduxjs/toolkit'; import Constants from '../../../common/constants'; import { ImpersonationSource, type ConnectionReferences, type WorkflowParameter } from '../../../common/models/workflow'; import type { WorkflowNode } from '../../parsers/models/workflowNode'; import { getConnectorWithSwagger, getSwaggerFromEndpoint } from '../../queries/connections'; import { getOperationManifest } from '../../queries/operation'; import type { DependencyInfo, NodeInputs, NodeOperation, NodeOutputs, OutputInfo } from '../../state/operation/operationMetadataSlice'; -import { DynamicLoadStatus, updateNodeParameters, updateNodeSettings, updateOutputs } from '../../state/operation/operationMetadataSlice'; +import { updateNodeSettings, updateNodeParameters, DynamicLoadStatus, updateOutputs } from '../../state/operation/operationMetadataSlice'; import type { UpdateUpstreamNodesPayload } from '../../state/tokens/tokensSlice'; import { updateTokens, updateUpstreamNodes } from '../../state/tokens/tokensSlice'; import { WorkflowKind } from '../../state/workflow/workflowInterfaces'; @@ -62,7 +14,6 @@ import type { RootState } from '../../store'; import { getTriggerNodeId, isRootNodeInGraph } from '../../utils/graph'; import { getSplitOnOptions, getUpdatedManifestForSchemaDependency, getUpdatedManifestForSplitOn, toOutputInfo } from '../../utils/outputs'; import { - ParameterGroupKeys, addRecurrenceParametersInGroup, getAllInputParameters, getDependentParameters, @@ -70,6 +21,7 @@ import { getParameterFromName, getParametersSortedByVisibility, loadParameterValuesArrayFromDefault, + ParameterGroupKeys, toParameterInfoMap, updateParameterWithValues, } from '../../utils/parameters/helper'; @@ -78,6 +30,54 @@ import { getOutputParametersFromSwagger } from '../../utils/swagger/operation'; import { convertOutputsToTokens, getBuiltInTokens, getTokenNodeIds } from '../../utils/tokens'; import type { NodeInputsWithDependencies, NodeOutputsWithDependencies } from './operationdeserializer'; import type { Settings } from './settings'; +import type { + IConnectionService, + IOperationManifestService, + ISearchService, + IOAuthService, + IWorkflowService, +} from '@microsoft/designer-client-services-logic-apps'; +import { + WorkflowService, + LoggerService, + LogEntryLevel, + OperationManifestService, + FunctionService, + ApiManagementService, +} from '@microsoft/designer-client-services-logic-apps'; +import type { OutputToken, ParameterInfo } from '@microsoft/designer-ui'; +import { + clone, + ConnectionReferenceKeyFormat, + CustomSwaggerServiceNames, + DynamicSchemaType, + equals, + getBrandColorFromConnector, + getIconUriFromConnector, + getIntl, + getObjectPropertyValue, + isDynamicListExtension, + isDynamicPropertiesExtension, + isDynamicSchemaExtension, + isDynamicTreeExtension, + isLegacyDynamicValuesExtension, + isLegacyDynamicValuesTreeExtension, + ManifestParser, + PropertyName, + unmap, + UnsupportedException, +} from '@microsoft/logic-apps-shared'; +import type { + CustomSwaggerServiceDetails, + InputParameter, + OperationInfo, + OperationManifest, + OperationManifestProperties, + OutputParameter, + SchemaProperty, + SwaggerParser, +} from '@microsoft/logic-apps-shared'; +import type { Dispatch } from '@reduxjs/toolkit'; export interface ServiceOptions { connectionService: IConnectionService; diff --git a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx index 202c1e682b8..dfb8a1d3dd3 100644 --- a/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx +++ b/libs/designer/src/lib/ui/panel/connectionsPanel/allConnections/connectorConnectionsCard.tsx @@ -1,8 +1,7 @@ +import { useAllConnectionErrors } from '../../../../core'; +import { ConnectionEntry } from './connectionEntry'; import { AccordionHeader, AccordionPanel, Badge, Spinner, Text } from '@fluentui/react-components'; -import { - getConnectorCategoryString, - isBuiltInConnector, -} from '@microsoft/designer-ui'; +import { getConnectorCategoryString, isBuiltInConnector } from '@microsoft/designer-ui'; import type { Connector } from '@microsoft/logic-apps-shared'; import { fallbackConnectorIconUrl, @@ -11,8 +10,6 @@ import { getIconUriFromConnector, } from '@microsoft/logic-apps-shared'; import { useMemo } from 'react'; -import { useAllConnectionErrors } from '../../../../core'; -import { ConnectionEntry } from './connectionEntry'; export interface ConnectorConnectionsCardProps { connectorId: string; diff --git a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx index 08515626599..08af3b0a610 100644 --- a/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx +++ b/libs/designer/src/lib/ui/panel/recommendation/searchView.tsx @@ -1,3 +1,5 @@ +import type { AppDispatch } from '../../../core'; +import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; import { SearchService, type ISearchService } from '@microsoft/designer-client-services-logic-apps'; import { SearchResultsGrid, isBuiltInConnector, isCustomConnector } from '@microsoft/designer-ui'; import type { DiscoveryOpArray, DiscoveryOperation, DiscoveryResultTypes } from '@microsoft/logic-apps-shared'; @@ -5,8 +7,6 @@ import { useDebouncedEffect } from '@react-hookz/web'; import Fuse from 'fuse.js'; import React, { useEffect, useState } from 'react'; import { useDispatch } from 'react-redux'; -import type { AppDispatch } from '../../../core'; -import { selectOperationGroupId } from '../../../core/state/panel/panelSlice'; type SearchViewProps = { searchTerm: string; diff --git a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts index e85a32f7018..21dfb5e97e7 100644 --- a/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts +++ b/libs/logic-apps-shared/src/utils/src/lib/helpers/connectors.ts @@ -1,6 +1,5 @@ -import type { Connector, ConnectorProperty, OperationApi } from "../models"; -import { fallbackConnectorIconUrl } from "./connections"; - +import type { Connector, ConnectorProperty, OperationApi } from '../models'; +import { fallbackConnectorIconUrl } from './connections'; export const getAllConnectorProperties = (connector: Connector | OperationApi | undefined): Partial => { if (!connector) {