in src/utils/logic-app/designerUtils.ts [362:727]
function initialize(options, analyticsContextData) {
const config = {
apiOperationsPath: \`/providers/Microsoft.Web/locations/\${options.location}/apiOperations\`,
connectionsPath: "/providers/Microsoft.Web/connections",
connectionProvidersPath: \`/providers/Microsoft.Web/locations/\${options.location}/managedApis\`,
gatewaysPath: "/providers/Microsoft.Web/connectionGateways"
};
const urlService = new designercore.LogicAppsUrlService({
baseUrl: options.baseUrl,
config,
integrationAccountId: options.integrationAccountId,
location: options.location,
resourceGroup: options.resourceGroup,
subscriptionId: options.subscriptionId
});
const apiManagementServiceFactory = analytics => {
return new designercore.LogicAppsApiManagementService({
analytics,
apiVersion: options.apiManagementApiVersion,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
locale: $locale,
subscriptionId: options.subscriptionId
});
};
const hostServiceFactory = () => ({
openWindow(url) {
vscode.postMessage({
command: "OpenWindow",
url
});
return Promise.resolve(true);
}
});
const analyticsServiceFactory = version => {
const telemetryBaseUrl = options.telemetryBaseUrl || options.baseUrl;
const telemetryVersion = options.telemetryVersion || options.emaApiVersion;
const settings = {
analyticsServiceUri: \`\${telemetryBaseUrl}/providers/Internal.Telemetry/collect?api-version=\${telemetryVersion}\`,
getAccessToken: getArmAccessToken
};
const contextData = analyticsContextData || {};
contextData.host = window.location.host;
contextData.hostVersion = options.extensionVersion;
contextData.designerVersion = version;
const analyticsService = new designercore.AnalyticsService(settings, contextData);
analyticsService.startPublish();
return analyticsService;
}
const iseSupported = !!options.featureFlags && !!options.featureFlags.enableintegrationserviceenvironment;
const connectionParameterEditorServiceFactory = analytics => {
return new designercore.LogicAppsConnectionParameterEditorService({
analytics,
apiVersion: "2016-06-01",
apiVersionForArm: "2019-05-01",
apiVersionForWeb: "2018-03-01-preview",
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
getTenantId() {
return ${tenantId !== undefined ? JSON.stringify(tenantId) : "undefined"};
},
locale: $locale,
location: options.location,
subscriptionId: options.subscriptionId
});
};
const connectionServiceFactory = analytics => {
return new designercore.LogicAppsConnectionService({
analytics,
apiVersion: options.connectionApiVersion,
apiVersionForConnection: iseSupported ? options.integrationServiceEnvironmentApiVersion : options.connectionApiVersion,
apiVersionForCustomConnector: iseSupported ? options.integrationServiceEnvironmentApiVersion : options.connectionApiVersion,
apiVersionForGateways: options.connectionApiVersion,
apiVersionForIseManagedConnector: iseSupported ? options.integrationServiceEnvironmentApiVersion : options.connectionApiVersion,
apiVersionForSharedManagedConnector: iseSupported ? options.integrationServiceEnvironmentApiVersion : options.connectionApiVersion,
baseUrl: options.baseUrl,
batchApiVersion: options.batchApiVersion,
getAccessToken: getArmAccessToken,
integrationServiceEnvironmentId: options.integrationServiceEnvironmentId,
isIntegrationServiceEnvironmentSupported: iseSupported,
oauthService,
locale: $locale,
location: options.location,
urlService
});
};
const connectionConfigurationServiceFactory = analytics => {
return new designercore.LogicAppsConnectionConfigurationService({
analytics,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
locale: $locale,
serviceConfigs: {
"sql": {
serverTemplate: "{0}.database.windows.net"
}
},
subscriptionId: options.subscriptionId
});
};
const identityServiceFactory = analytics => {
return new designercore.LogicAppsIdentityService({
analytics,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
currentTenantId: ${tenantId !== undefined ? JSON.stringify(tenantId) : "undefined"},
apiVersion: options.armApiVersion
});
};
const builtInTypeServiceFactory = (analytics, schemaVersion) => {
const options = {
httpManagedServiceIdentitySupported: true,
openApiConnection: false,
showScopeActions: true,
showVariableActions: true
};
return new designercore.LogicAppsBuiltInTypeService(schemaVersion, options);
};
const functionServiceFactory = analytics => {
return new designercore.LogicAppsFunctionService({
analytics,
apiVersion: options.azureFunctionApiVersion,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
locale: $locale,
urlService
});
};
const operationManifestServiceFactory = () => {
return new designercore.LogicAppsOperationManifestService();
};
const userFeedbackServiceFactory = () => {
return {
getUserFeedbackConfiguration() {
return {
STATIC_RESULT: {
feedbackLink: "https://aka.ms/staticresultforum",
showRating: true
}
};
}
}
};
const workflowServiceFactory = analytics => {
return new designercore.LogicAppsWorkflowService({
analytics,
apiVersion: options.emaApiVersion,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
locale: $locale,
urlService
});
};
const promotedConnectorsForActions = iseSupported && options.integrationServiceEnvironmentId
? [
"connectionProviders/control",
"connectionProviders/http",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/servicebus\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/servicebus\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sql\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/sql\`,
"connectionProviders/function",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/office365\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/office365\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azureblob\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/azureblob\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/cognitiveservicestextanalytics\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/cognitiveservicestextanalytics\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/keyvault\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/keyvault\`,
"builtin/as2",
"builtin/rosettanet"
]
: [
"connectionProviders/control",
"connectionProviders/http",
"builtin/code",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/servicebus\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sql\`,
"connectionProviders/function",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/office365\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azureblob\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/cognitiveservicestextanalytics\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/keyvault\`,
"builtin/as2",
"builtin/rosettanet"
];
const promotedConnectorsForTriggers = iseSupported && options.integrationServiceEnvironmentId
? [
"connectionProviders/request",
"connectionProviders/schedule",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/servicebus\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/servicebus\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/twitter\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/twitter\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/office365\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/office365\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sharepointonline\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/sharepointonline\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/ftp\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/ftp\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/dynamicscrmonline\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/dynamicscrmonline\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sftp\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/sftp\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/salesforce\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/salesforce\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/rss\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/rss\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/onedrive\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/onedrive\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azureeventgrid\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/azureeventgrid\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azurequeues\`,
\`\${options.integrationServiceEnvironmentId}/managedApis/azurequeues\`
]
: [
"connectionProviders/request",
"connectionProviders/schedule",
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/servicebus\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/twitter\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/office365\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sharepointonline\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/ftp\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/dynamicscrmonline\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/sftp\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/salesforce\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/rss\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/onedrive\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azureeventgrid\`,
\`/subscriptions/\${options.subscriptionId}/providers/Microsoft.Web/locations/\${options.location}/managedApis/azurequeues\`
];
const featuresToEnable = {
ALLOW_EMPTY_DEFINITION: true,
AUTO_CASTING_IN_PARAMETER_FIELD_TIP: true,
COLLAPSE_ALL_CARDS: true,
CONCURRENCY: true,
DEBOUNCE_EMIT_CHANGE: true,
DISABLE_AUTO_FOCUS_PARAMETERS: true,
DISABLE_TOKEN_PICKER_COMPACT_MODE: true,
ENABLE_ENVIRONMENT_BADGE: false, // TODO(joechung): Enable when ISE is supported in Visual Studio Code.
EXCLUDE_AUTHENTICATION: true,
FX_TOKEN: true,
FX_TOKEN_FOR_CONDITION: true,
HTML_EDITOR: true,
HIDE_PANEL_MODE_UI: true,
NEW_CONDITION_RULES_BUILDER: true,
NEW_RECOMMENDATION_CARD_WITH_FOR_YOU: true,
NEW_RECOMMENDATION_CARD_WITH_MODULES: true,
NEW_SCHEMA_EDITOR: true,
RAW_MODE: true,
SHOW_CONNECTION_NAME: true,
SHOW_PARENT_OBJECT_FOR_OUTPUTS: true,
SHOW_TOKENS_FOR_FOREACH: false, // TODO(joechung): Enable when the designer enables this in public cloud production.
SHOW_TRIGGER_RECURRENCE: true,
STATIC_RESULT: true,
SUPPORT_OBFUSCATION: true,
SUPPORT_PAN_AND_ZOOM: ${!canvasMode},
SUPPORT_PANEL_MODE: ${canvasMode},
SUPPORT_PEEK: true,
SUPPRESS_WORKFLOW_HEADERS_ON_RESPONSE: true,
TOKEN_COPY_PASTE: true,
TOPOLOGY_RENDER: true,
USE_CONNECTION_CONFIGURATION_SERVICE: true,
USE_DICTIONARY_EDITOR: true,
USE_EDITOR_INPUT: true,
USE_NEW_EXPRESSION_PARSER: true,
USE_TEXT_EDITOR: true
};
const recommendationServiceFactory = (analytics, schemaVersion) => {
return new designercore.LogicAppsSmartRecommendationService({
analytics,
apiVersion: options.integrationServiceEnvironmentApiVersion,
apiVersionForApiManagement: options.apiManagementApiVersion,
apiVersionForApiOperations: options.integrationServiceEnvironmentApiVersion,
apiVersionForCustomConnector: options.integrationServiceEnvironmentApiVersion,
apiVersionForLogicApps: options.integrationServiceEnvironmentApiVersion,
apiVersionForManagedConnector: options.integrationServiceEnvironmentApiVersion,
apiVersionForWeb: options.azureFunctionApiVersion,
baseUrl: options.baseUrl,
getAccessToken: getArmAccessToken,
hideCustomConnectors: options.hideCustomConnectors,
integrationServiceEnvironmentId: options.integrationServiceEnvironmentId,
isIntegrationServiceEnvironmentSupported: iseSupported,
locale: $locale,
location: options.location,
promotedConnectorsForActions,
promotedConnectorsForTriggers,
promotedOperationsForActions: [
"connectionProviders/request"
],
resourceGroup: options.resourceGroup,
resourceId: analyticsContextData.resourceData.resourceId,
schemaVersion,
subscription: options.subscriptionId,
smartRecommendationServiceOptions: {
getMruKey: () => \`\${options.subscriptionId}/${userId !== undefined ? userId : "undefined"}\`,
recommendOperationGroupsPath: \`/subscriptions/\${options.subscriptionId}/resourceGroups/\${options.resourceGroup}/providers/Microsoft.Logic/locations/\${options.location}/workflows/\${options.logicAppName}/recommendOperationGroups\`
}
});
};
const flowConfigurationOptions = {
analyticsServiceFactory,
apiManagementServiceFactory,
apiVersion: options.emaApiVersion,
azureFunctionsApiVersion: options.azureFunctionApiVersion,
baseUrl: options.baseUrl,
batchApiVersion: options.batchApiVersion,
builtInTypeServiceFactory,
connectionConfigurationServiceFactory: connectionConfigurationServiceFactory,
connectionGatewayApiVersion: options.connectionGatewayApiVersion,
connectionParameterEditorServiceFactory,
connectionServiceFactory,
dynamicCallApiVersion: options.connectionApiVersion, // Service in the designer side uses connections api to make proxy call for dynamic content.
features: featuresToEnable,
functionServiceFactory,
getArmAccessToken,
getRuntimeAccessToken: getArmAccessToken,
host: window.location.host,
hostEnvironment: designercore.Host.LogicApps,
hostServiceFactory,
hostVersion: options.extensionVersion,
identityServiceFactory,
locale: $locale,
oauthService,
operationManifestServiceFactory,
prefetchedData: {
connectionProviders: !!options.connectionProviders ? JSON.parse(options.connectionProviders) : undefined
},
recommendationServiceFactory,
startTelemetryPublish: false,
telemetryBaseUrl: options.telemetryBaseUrl,
telemetryVersion: options.telemetryVersion,
urlService,
userFeedbackServiceFactory,
workflowServiceFactory
};
disposeDesigner();
designer = window.designer = new designercore.Designer(flowConfigurationOptions, document.getElementById("designer"));
}