// ***************************************************************************** // Copyright (C) 2019 Red Hat, Inc. and others. // // This program and the accompanying materials are made available under the // terms of the Eclipse Public License v. 2.0 which is available at // http://www.eclipse.org/legal/epl-2.0. // // This Source Code may also be made available under the following Secondary // Licenses when the conditions for such availability set forth in the Eclipse // Public License v. 2.0 are satisfied: GNU General Public License, version 2 // with the GNU Classpath Exception which is available at // https://www.gnu.org/software/classpath/license.html. // // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 // ***************************************************************************** import { HostedPluginLogViewer } from './hosted-plugin-log-viewer'; import { HostedPluginManagerClient } from './hosted-plugin-manager-client'; import { HostedPluginInformer } from './hosted-plugin-informer'; import { bindHostedPluginPreferences } from '../common/hosted-plugin-preferences'; import { HostedPluginController } from './hosted-plugin-controller'; import { ContainerModule } from '@theia/core/shared/inversify'; import { FrontendApplicationContribution, WebSocketConnectionProvider } from '@theia/core/lib/browser'; import { HostedPluginFrontendContribution } from './hosted-plugin-frontend-contribution'; import { CommandContribution } from '@theia/core/lib/common/command'; import { PluginDevServer, pluginDevServicePath } from '../common/plugin-dev-protocol'; import { DebugContribution } from '@theia/debug/lib/browser/debug-contribution'; export default new ContainerModule((bind, unbind, isBound, rebind) => { bindHostedPluginPreferences(bind); bind(HostedPluginLogViewer).toSelf().inSingletonScope(); bind(HostedPluginManagerClient).toSelf().inSingletonScope(); bind(DebugContribution).toService(HostedPluginManagerClient); bind(FrontendApplicationContribution).to(HostedPluginInformer).inSingletonScope(); bind(FrontendApplicationContribution).to(HostedPluginController).inSingletonScope(); bind(HostedPluginFrontendContribution).toSelf().inSingletonScope(); bind(CommandContribution).toService(HostedPluginFrontendContribution); bind(PluginDevServer).toDynamicValue(ctx => { const connection = ctx.container.get(WebSocketConnectionProvider); return connection.createProxy(pluginDevServicePath); }).inSingletonScope(); });