function initialize()

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"));
                    }