@eclipse-emfcloud/modelserver-theia
Version:
## Typescript Client API
68 lines • 3.32 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelServerFrontendContribution = void 0;
const promise_util_1 = require("@theia/core/lib/common/promise-util");
const inversify_1 = require("@theia/core/shared/inversify");
const browser_1 = require("@theia/workspace/lib/browser");
const urijs_1 = __importDefault(require("urijs"));
const common_1 = require("../common");
let ModelServerFrontendContribution = class ModelServerFrontendContribution {
configure(_app) {
return this.setup();
}
async setup() {
this.workspaceService.onWorkspaceChanged(async (workspace) => {
if (workspace[0] && workspace[0].resource) {
const workspaceRoot = new urijs_1.default(workspace[0].resource.toString());
const uiSchemaFolder = workspaceRoot.clone().segment('.ui-schemas');
const serverLoaded = await this.waitForReady();
if (serverLoaded) {
console.log('Model Server ready');
await this.modelServerClient.configureServer({ workspaceRoot, uiSchemaFolder });
}
else {
console.error('Model Server failed to load');
}
}
});
}
async waitForReady(ms = 1000, numberOfTries = 20) {
let available = false;
while (!available && numberOfTries > 0) {
available = await this.modelServerClient.ping().catch(async (e) => {
console.log('Model Server not ready yet: ' + e);
return false;
});
if (!available) {
await (0, promise_util_1.timeout)(ms);
}
numberOfTries--;
}
return available;
}
};
__decorate([
(0, inversify_1.inject)(browser_1.WorkspaceService),
__metadata("design:type", browser_1.WorkspaceService)
], ModelServerFrontendContribution.prototype, "workspaceService", void 0);
__decorate([
(0, inversify_1.inject)(common_1.TheiaModelServerClientV2),
__metadata("design:type", Object)
], ModelServerFrontendContribution.prototype, "modelServerClient", void 0);
ModelServerFrontendContribution = __decorate([
(0, inversify_1.injectable)()
], ModelServerFrontendContribution);
exports.ModelServerFrontendContribution = ModelServerFrontendContribution;
//# sourceMappingURL=model-server-frontend-contribution.js.map