UNPKG

@eclipse-emfcloud/model-service-theia

Version:
76 lines 4.32 kB
"use strict"; // ***************************************************************************** // Copyright (C) 2023-2024 STMicroelectronics. // // 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: MIT License which is // available at https://opensource.org/licenses/MIT. // // SPDX-License-Identifier: EPL-2.0 OR MIT // ***************************************************************************** Object.defineProperty(exports, "__esModule", { value: true }); const model_service_1 = require("@eclipse-emfcloud/model-service"); const core_1 = require("@theia/core"); const inversify_1 = require("@theia/core/shared/inversify"); const common_1 = require("../common"); const model_hub_tracker_1 = require("../common/model-hub-tracker"); const model_accessor_bus_server_1 = require("./model-accessor-bus-server"); const model_hub_lifecycle_contribution_1 = require("./model-hub-lifecycle-contribution"); const model_hub_manager_1 = require("./model-hub-manager"); const model_hub_provider_1 = require("./model-hub-provider"); const model_hub_server_1 = require("./model-hub-server"); const model_service_contribution_1 = require("./model-service-contribution"); (0, inversify_1.decorate)((0, inversify_1.injectable)(), model_service_1.AbstractModelServiceContribution); exports.default = new inversify_1.ContainerModule((bind) => { bind(model_hub_manager_1.DefaultModelHubManager).toSelf().inSingletonScope(); bind(model_hub_manager_1.ModelHubManager).toService(model_hub_manager_1.DefaultModelHubManager); bind(model_hub_tracker_1.ModelHubTracker).toService(model_hub_manager_1.DefaultModelHubManager); bind(model_hub_manager_1.ModelServiceContributionFactory).toFactory(({ container }) => { return () => container.isBound(model_service_contribution_1.ModelServiceContribution) ? container.getAll(model_service_contribution_1.ModelServiceContribution) : []; }); bind(model_hub_provider_1.ModelHubProvider).toProvider(({ container }) => { return async (context) => { const modelHubManager = container.get(model_hub_manager_1.ModelHubManager); return modelHubManager.provideModelHub(context); }; }); // This binding only works in containers (usually child containers) // that have the required ModelHubContext binding. // Note that this binding is not a singleton because // - it would be hoisted to the parent container and so // become the only hub that can ever be injected and // - the singleton ModelHubManager already implements // an effective singleton hub per context bind(common_1.ModelHub).toDynamicValue(({ container }) => { const boundContext = container.get(common_1.ModelHubContext); const modelHubManager = container.get(model_hub_manager_1.ModelHubManager); const modelHub = modelHubManager.getModelHub(boundContext); modelHubManager.initializeContext(boundContext); return modelHub; }); bind(model_hub_server_1.ModelHubServer).toSelf().inSingletonScope(); bind(core_1.ConnectionHandler) .toDynamicValue(({ container }) => new core_1.RpcConnectionHandler(common_1.ModelHubProtocolServicePath, (client) => { const server = container.get(model_hub_server_1.ModelHubServer); server.setClient(client); return server; })) .inSingletonScope(); bind(model_accessor_bus_server_1.ModelAccessorBusServer).toSelf().inSingletonScope(); bind(core_1.ConnectionHandler) .toDynamicValue(({ container }) => new core_1.RpcConnectionHandler(common_1.ModelAccessorBusProtocolServicePath, (client) => { const server = container.get(model_accessor_bus_server_1.ModelAccessorBusServer); server.setClient(client); return server; })) .inSingletonScope(); (0, core_1.bindContributionProvider)(bind, model_hub_lifecycle_contribution_1.ModelHubLifecycleContribution); }); //# sourceMappingURL=backend-module.js.map