diff --git a/examples/workflow-theia/src/browser/diagram/workflow-diagram-configuration.ts b/examples/workflow-theia/src/browser/diagram/workflow-diagram-configuration.ts index 8223893..b6fa1f3 100644 --- a/examples/workflow-theia/src/browser/diagram/workflow-diagram-configuration.ts +++ b/examples/workflow-theia/src/browser/diagram/workflow-diagram-configuration.ts @@ -16,7 +16,7 @@ import 'sprotty-theia/css/theia-sprotty.css'; import { createWorkflowDiagramContainer } from '@eclipse-glsp-examples/workflow-glsp/lib'; -import { GLSPDiagramConfiguration } from '@eclipse-glsp/theia-integration'; +import { configureDiagramServer, GLSPDiagramConfiguration } from '@eclipse-glsp/theia-integration'; import { Container, injectable } from '@theia/core/shared/inversify'; import { WorkflowLanguage } from '../../common/workflow-language'; @@ -28,7 +28,7 @@ export class WorkflowDiagramConfiguration extends GLSPDiagramConfiguration { doCreateContainer(widgetId: string): Container { const container = createWorkflowDiagramContainer(widgetId); - this.configureDiagramServer(container, WorkflowDiagramServer); + configureDiagramServer(container, WorkflowDiagramServer); return container; } } diff --git a/examples/workflow-theia/src/browser/workflow-frontend-module.ts b/examples/workflow-theia/src/browser/workflow-frontend-module.ts index dec2239..f45eadc 100644 --- a/examples/workflow-theia/src/browser/workflow-frontend-module.ts +++ b/examples/workflow-theia/src/browser/workflow-frontend-module.ts @@ -13,7 +13,7 @@ * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { ContainerContext, GLSPTheiaFrontendModule } from '@eclipse-glsp/theia-integration'; +import { ContainerContext, GLSPClientContribution, GLSPTheiaFrontendModule } from '@eclipse-glsp/theia-integration'; import { CommandContribution, MenuContribution } from '@theia/core'; import { KeybindingContext, KeybindingContribution } from '@theia/core/lib/browser'; import { DiagramConfiguration } from 'sprotty-theia'; @@ -34,6 +34,7 @@ import { WorkflowTaskEditMenuContribution } from './diagram/workflow-task-editing-context-menu'; import { ExampleNavigationCommandContribution } from './external-navigation-example/external-navigation-example'; +import { WorkflowGLSPClientContribution } from './workflow-glsp-client-contribution'; export class WorkflowTheiaFrontendModule extends GLSPTheiaFrontendModule { protected enableCopyPaste = true; @@ -61,6 +62,10 @@ export class WorkflowTheiaFrontendModule extends GLSPTheiaFrontendModule { context.bind(CommandContribution).toService(WorkflowDiagramReadonlyViewContribution); } + bindGLSPClientContribution(context: ContainerContext): void { + context.bind(GLSPClientContribution).to(WorkflowGLSPClientContribution); + } + } export default new WorkflowTheiaFrontendModule(); diff --git a/examples/workflow-theia/src/browser/workflow-glsp-client-contribution.ts b/examples/workflow-theia/src/browser/workflow-glsp-client-contribution.ts new file mode 100644 index 0000000..e293b26 --- /dev/null +++ b/examples/workflow-theia/src/browser/workflow-glsp-client-contribution.ts @@ -0,0 +1,39 @@ +/******************************************************************************** + * Copyright (c) 2019-2021 EclipseSource 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 WITH Classpath-exception-2.0 + ********************************************************************************/ +import { Args } from '@eclipse-glsp/client'; +import { MaybePromise } from '@eclipse-glsp/protocol'; +import { BaseGLSPClientContribution } from '@eclipse-glsp/theia-integration/lib/browser'; +import { injectable } from '@theia/core/shared/inversify'; + +import { WorkflowLanguage } from '../common/workflow-language'; + +export interface WorkflowInitializeOptions { + timestamp: Date; + message: string; +} + +@injectable() +export class WorkflowGLSPClientContribution extends BaseGLSPClientContribution { + readonly id = WorkflowLanguage.contributionId; + readonly fileExtensions = WorkflowLanguage.fileExtensions; + + protected createInitializeOptions(): MaybePromise { + return { + ['timestamp']: new Date().toString(), + ['message']: 'Custom Options Available' + }; + } +} diff --git a/packages/theia-integration/src/browser/diagram/base-theia-glsp-connector.ts b/packages/theia-integration/src/browser/diagram/base-theia-glsp-connector.ts index 73dca55..56b8231 100644 --- a/packages/theia-integration/src/browser/diagram/base-theia-glsp-connector.ts +++ b/packages/theia-integration/src/browser/diagram/base-theia-glsp-connector.ts @@ -21,7 +21,7 @@ import { ServerMessageAction, ServerStatusAction } from '@eclipse-glsp/client'; -import { GLSPClient } from '@eclipse-glsp/protocol'; +import { GLSPClient, InitializeResult } from '@eclipse-glsp/protocol'; import { ContributionProvider, MessageService } from '@theia/core'; import { ConfirmDialog, WidgetManager } from '@theia/core/lib/browser'; import { Message, MessageType } from '@theia/core/lib/common'; @@ -76,11 +76,13 @@ export abstract class BaseTheiaGLSPConnector implements TheiaGLSPConnector { connect(diagramServer: TheiaDiagramServer): void { this.servers.set(diagramServer.clientId, diagramServer); + this.glspClient.then(client => client.initializeClientSession({ clientSessionId: diagramServer.clientId, diagramType: this.diagramType })); diagramServer.connect(this); } disconnect(diagramServer: TheiaDiagramServer): void { this.servers.delete(diagramServer.clientId); + this.glspClient.then(client => client.disposeClientSession({ clientSessionId: diagramServer.clientId })); diagramServer.disconnect(); } @@ -214,13 +216,17 @@ export abstract class BaseTheiaGLSPConnector implements TheiaGLSPConnector { } sendMessage(message: ActionMessage): void { - this.glspClientContribution.glspClient.then(client => client.sendActionMessage(message)); + this.glspClient.then(client => client.sendActionMessage(message)); } - getGLSPClient(): Promise { + get glspClient(): Promise { return this.glspClientContribution.glspClient; } + get initializeResult(): Promise { + return this.glspClientContribution.initializeResult; + } + onMessageReceived(message: ActionMessage): void { const diagramServer = this.servers.get(message.clientId); if (diagramServer) { diff --git a/packages/theia-integration/src/browser/diagram/glsp-diagram-configuration.ts b/packages/theia-integration/src/browser/diagram/glsp-diagram-configuration.ts index d03eb82..14830b2 100644 --- a/packages/theia-integration/src/browser/diagram/glsp-diagram-configuration.ts +++ b/packages/theia-integration/src/browser/diagram/glsp-diagram-configuration.ts @@ -47,6 +47,7 @@ export abstract class GLSPDiagramConfiguration implements DiagramConfiguration { createContainer(widgetId: string): Container { const container = this.doCreateContainer(widgetId); + this.initializeContainer(container); return container; } @@ -69,9 +70,11 @@ export abstract class GLSPDiagramConfiguration implements DiagramConfiguration { configureActionHandler(container, NavigateToExternalTargetAction.KIND, TheiaNavigateToExternalTargetHandler); } - protected configureDiagramServer(container: Container, server: { new(...args: any[]): T }): void { - container.bind(TYPES.ModelSource).to(server).inSingletonScope(); - container.bind(TheiaDiagramServer).toService(server); - } +} + +export function configureDiagramServer(container: Container, server: { new(...args: any[]): T }): void { + container.bind(server).toSelf().inSingletonScope(); + container.bind(TYPES.ModelSource).toService(server); + container.bind(TheiaDiagramServer).toService(server); } diff --git a/packages/theia-integration/src/browser/diagram/glsp-diagram-manager.ts b/packages/theia-integration/src/browser/diagram/glsp-diagram-manager.ts index c068ed4..f4d1a85 100644 --- a/packages/theia-integration/src/browser/diagram/glsp-diagram-manager.ts +++ b/packages/theia-integration/src/browser/diagram/glsp-diagram-manager.ts @@ -13,7 +13,7 @@ * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { EditMode, GLSPActionDispatcher } from '@eclipse-glsp/client'; +import { configureServerActions, EditMode, GLSPActionDispatcher } from '@eclipse-glsp/client'; import { ApplicationShell, FrontendApplicationContribution, @@ -81,8 +81,11 @@ export abstract class GLSPDiagramManager extends DiagramManager { protected _diagramConnector: TheiaGLSPConnector; @postConstruct() - protected initialize(): void { - this.connectorProvider(this.diagramType).then(connector => this._diagramConnector = connector); + protected async initialize(): Promise { + this._diagramConnector = await this.connectorProvider(this.diagramType); + if (!this._diagramConnector) { + throw new Error(`No diagram connector is registered for diagramType: ${this.diagramType}!`); + } } async doOpen(widget: DiagramWidget, options?: WidgetOpenerOptions): Promise { @@ -103,6 +106,8 @@ export abstract class GLSPDiagramManager extends DiagramManager { const widgetId = this.createWidgetId(options); const config = this.getDiagramConfiguration(options); const diContainer = config.createContainer(clientId); + const initializeResult = await this.diagramConnector.initializeResult; + await configureServerActions(initializeResult, this.diagramType, diContainer); const widget = new GLSPDiagramWidget(options, widgetId, diContainer, this.editorPreferences, this.theiaSelectionService, this.diagramConnector); widget.listenToFocusState(this.shell); return widget; @@ -138,7 +143,7 @@ export abstract class GLSPDiagramManager extends DiagramManager { return 0; } - get diagramConnector(): TheiaGLSPConnector | undefined { + get diagramConnector(): TheiaGLSPConnector { return this._diagramConnector; } diff --git a/packages/theia-integration/src/browser/diagram/glsp-diagram-widget.ts b/packages/theia-integration/src/browser/diagram/glsp-diagram-widget.ts index 03dea9f..71e0d40 100644 --- a/packages/theia-integration/src/browser/diagram/glsp-diagram-widget.ts +++ b/packages/theia-integration/src/browser/diagram/glsp-diagram-widget.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2019-2020 EclipseSource and others. + * Copyright (c) 2019-2021 EclipseSource 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 @@ -16,7 +16,6 @@ import { Args, DiagramServer, - DisposeClientSessionAction, EditorContextService, EnableToolPaletteAction, FocusStateChangedAction, @@ -24,7 +23,6 @@ import { GLSP_TYPES, IActionDispatcher, ICopyPasteHandler, - InitializeClientSessionAction, ModelSource, RequestModelAction, RequestTypeHintsAction, @@ -40,10 +38,11 @@ import { SelectionService } from '@theia/core/lib/common/selection-service'; import { Container } from '@theia/core/shared/inversify'; import { EditorPreferences } from '@theia/editor/lib/browser'; import { pickBy } from 'lodash'; -import { DiagramWidget, DiagramWidgetOptions, isDiagramWidgetContainer, TheiaSprottyConnector } from 'sprotty-theia'; +import { DiagramWidget, DiagramWidgetOptions, isDiagramWidgetContainer } from 'sprotty-theia'; import { GLSPWidgetOpenerOptions, GLSPWidgetOptions } from './glsp-diagram-manager'; import { DirtyStateNotifier, GLSPTheiaDiagramServer } from './glsp-theia-diagram-server'; +import { TheiaGLSPConnector } from './theia-glsp-connector'; export class GLSPDiagramWidget extends DiagramWidget implements SaveableSource { @@ -53,7 +52,7 @@ export class GLSPDiagramWidget extends DiagramWidget implements SaveableSource { protected requestModelOptions: Args; constructor(options: DiagramWidgetOptions & GLSPWidgetOpenerOptions, readonly widgetId: string, readonly diContainer: Container, - readonly editorPreferences: EditorPreferences, readonly theiaSelectionService: SelectionService, readonly connector?: TheiaSprottyConnector) { + readonly editorPreferences: EditorPreferences, readonly theiaSelectionService: SelectionService, readonly connector: TheiaGLSPConnector) { super(options, widgetId, diContainer, connector); this.saveable = new SaveableGLSPModelSource(this.actionDispatcher, this.diContainer.get(TYPES.ModelSource)); this.updateSaveable(); @@ -61,7 +60,6 @@ export class GLSPDiagramWidget extends DiagramWidget implements SaveableSource { const prefUpdater = editorPreferences.onPreferenceChanged(() => this.updateSaveable()); this.toDispose.push(prefUpdater); this.toDispose.push(this.saveable); - this.toDispose.push(Disposable.create(() => this.actionDispatcher.dispatch(new DisposeClientSessionAction(this.widgetId)))); } protected updateSaveable(): void { @@ -74,23 +72,27 @@ export class GLSPDiagramWidget extends DiagramWidget implements SaveableSource { if (modelSource instanceof DiagramServer) { modelSource.clientId = this.id; } - if (modelSource instanceof GLSPTheiaDiagramServer && this.connector) { + if (modelSource instanceof GLSPTheiaDiagramServer) { this.connector.connect(modelSource); } this.disposed.connect(() => { - if (modelSource instanceof GLSPTheiaDiagramServer && this.connector) { + if (modelSource instanceof GLSPTheiaDiagramServer) { this.connector.disconnect(modelSource); } }); - this.actionDispatcher.dispatch(new InitializeClientSessionAction(this.widgetId)); // Filter options to only contain defined primitive values const definedOptions: any = pickBy(this.options, v => v !== undefined && typeof v !== 'object'); this.requestModelOptions = { sourceUri: this.uri.path.toString(), ...definedOptions }; + + this.dispatchInitialActions(); + } + + protected dispatchInitialActions(): void { this.actionDispatcher.dispatch(new RequestModelAction(this.requestModelOptions)); this.actionDispatcher.dispatch(new RequestTypeHintsAction(this.options.diagramType)); this.actionDispatcher.dispatch(new EnableToolPaletteAction()); diff --git a/packages/theia-integration/src/browser/diagram/glsp-theia-diagram-server.ts b/packages/theia-integration/src/browser/diagram/glsp-theia-diagram-server.ts index cb5a158..ae672cc 100644 --- a/packages/theia-integration/src/browser/diagram/glsp-theia-diagram-server.ts +++ b/packages/theia-integration/src/browser/diagram/glsp-theia-diagram-server.ts @@ -26,32 +26,23 @@ import { SourceUriAware } from '@eclipse-glsp/client'; import { Emitter, Event } from '@theia/core/lib/common'; -import { inject, injectable, postConstruct } from '@theia/core/shared/inversify'; +import { injectable } from '@theia/core/shared/inversify'; import { TheiaDiagramServer } from 'sprotty-theia'; -import { TheiaGLSPConnector } from './theia-glsp-connector'; +import { isTheiaGLSPConnector, TheiaGLSPConnector } from './theia-glsp-connector'; const receivedFromServerProperty = '__receivedFromServer'; @injectable() export class GLSPTheiaDiagramServer extends TheiaDiagramServer implements DirtyStateNotifier, SourceUriAware { - @inject(TheiaGLSPConnector) protected readonly theiaConnector: TheiaGLSPConnector; - readonly dirtyStateChangeEmitter: Emitter = new Emitter(); protected dirtyState: DirtyState = { isDirty: false }; - @postConstruct() - protected postConstruct(): void { - this.connect(this.theiaConnector); - } - initialize(registry: ActionHandlerRegistry): void { - registry.register(SetDirtyStateAction.KIND, this); - registry.register(ServerMessageAction.KIND, this); - registry.register(ExportSvgAction.KIND, this); registerDefaultGLSPServerActions(registry, this); + registry.register(SetDirtyStateAction.KIND, this); } public getSourceURI(): string { @@ -97,9 +88,19 @@ export class GLSPTheiaDiagramServer extends TheiaDiagramServer implements DirtyS } protected handleServerMessageAction(status: ServerMessageAction): boolean { - this.theiaConnector.showMessage(this.clientId, status); + this.connector.showMessage(this.clientId, status); return false; } + + get connector(): TheiaGLSPConnector { + if (!this._connector) { + throw Error('TheiaDiagramServer is not connected.'); + } + if (!isTheiaGLSPConnector(this._connector)) { + throw new Error('Connector needs to be a instance of "TheiaGLSPConnector'); + } + return this._connector; + } } export class SetDirtyStateAction implements Action { static readonly KIND = 'setDirtyState'; diff --git a/packages/theia-integration/src/browser/diagram/theia-glsp-connector.ts b/packages/theia-integration/src/browser/diagram/theia-glsp-connector.ts index 4e1d658..f64b4a3 100644 --- a/packages/theia-integration/src/browser/diagram/theia-glsp-connector.ts +++ b/packages/theia-integration/src/browser/diagram/theia-glsp-connector.ts @@ -14,6 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ import { InstanceRegistry, ServerMessageAction } from '@eclipse-glsp/client'; +import { InitializeResult } from '@eclipse-glsp/protocol'; import { injectable, multiInject, optional } from '@theia/core/shared/inversify'; import { TheiaSprottyConnector } from 'sprotty-theia'; @@ -22,9 +23,16 @@ export const TheiaGLSPConnector = Symbol('TheiaGLSPConnector'); export interface TheiaGLSPConnector extends TheiaSprottyConnector { readonly diagramType: string; readonly diagramManagerId: string; + readonly initializeResult: Promise; showMessage(widgetId: string, action: ServerMessageAction): void; } +export function isTheiaGLSPConnector(connector?: TheiaSprottyConnector): connector is TheiaGLSPConnector { + return connector !== undefined && 'diagramType' in connector && typeof connector['diagramType'] === 'string' + && 'diagramManagerId' in connector && typeof connector['diagramManagerId'] === 'string' && + 'showMessage' in connector && typeof connector['showMessage'] === 'function'; +} + @injectable() export class TheiaGLSPConnectorRegistry extends InstanceRegistry { constructor(@multiInject(TheiaGLSPConnector) @optional() connectors: TheiaGLSPConnector[]) { diff --git a/packages/theia-integration/src/browser/glsp-client-contribution.ts b/packages/theia-integration/src/browser/glsp-client-contribution.ts index a523782..35f280a 100644 --- a/packages/theia-integration/src/browser/glsp-client-contribution.ts +++ b/packages/theia-integration/src/browser/glsp-client-contribution.ts @@ -20,18 +20,19 @@ import '../../css/tool-palette.css'; import { ApplicationIdProvider, + Args, ClientState, ConnectionProvider, GLSPClient, - InitializeParameters + InitializeParameters, + InitializeResult, + MaybePromise } from '@eclipse-glsp/protocol'; -import { Disposable, DisposableCollection, MaybePromise, MessageService } from '@theia/core'; +import { Disposable, DisposableCollection, MessageService } from '@theia/core'; import { FrontendApplication, WebSocketConnectionProvider } from '@theia/core/lib/browser'; -import { Deferred } from '@theia/core/lib/common/promise-util'; import { inject, injectable, multiInject } from '@theia/core/shared/inversify'; import { WorkspaceService } from '@theia/workspace/lib/browser'; import { DiagramManagerProvider } from 'sprotty-theia'; -import { MessageConnection } from 'vscode-jsonrpc'; import { GLSPContribution } from '../common'; import { TheiaJsonrpcGLSPClient } from './theia-jsonrpc-glsp-client'; @@ -40,6 +41,7 @@ export const GLSPClientContribution = Symbol.for('GLSPClientContribution'); export interface GLSPClientContribution extends GLSPContribution { readonly running: boolean; + readonly initializeResult: Promise; readonly glspClient: Promise; waitForActivation(app: FrontendApplication): Promise; activate(app: FrontendApplication): Disposable; @@ -55,8 +57,8 @@ export abstract class BaseGLSPClientContribution implements GLSPClientContributi protected resolveReady: (glspClient: GLSPClient) => void; protected ready: Promise; - protected deferredConnection = new Deferred(); protected readonly toDeactivate = new DisposableCollection(); + protected _initializeResult: InitializeResult | undefined; @inject(WorkspaceService) protected readonly workspaceService: WorkspaceService; @inject(MessageService) protected readonly messageService: MessageService; @@ -71,13 +73,21 @@ export abstract class BaseGLSPClientContribution implements GLSPClientContributi return this._glspClient ? Promise.resolve(this._glspClient) : this.ready; } + get initializeResult(): Promise { + return this.glspClient.then(_client => { + if (!this._initializeResult) { + throw new Error('Server is not yet initialized!'); + } + return this._initializeResult; + }); + } + waitForActivation(app: FrontendApplication): Promise { const activationPromises: Promise[] = []; const workspaceContains = this.workspaceContains; if (workspaceContains.length !== 0) { activationPromises.push(this.waitForItemInWorkspace()); } - activationPromises.push(this.waitForOpenDiagrams()); if (activationPromises.length !== 0) { return Promise.all([ this.ready, @@ -95,25 +105,11 @@ export abstract class BaseGLSPClientContribution implements GLSPClientContributi return this.ready; } - protected waitForOpenDiagrams(): Promise { - return Promise.race(this.diagramManagerProviders.map(diagramManagerProvider => diagramManagerProvider().then(diagramManager => new Promise(resolve => { - const disposable = diagramManager.onCreated(widget => { - disposable.dispose(); - resolve(); - }); - })))); - } - activate(): Disposable { if (this.toDeactivate.disposed) { - if (!this._glspClient) { - this._glspClient = this.createGLSPCLient(() => this.deferredConnection.promise); - } // eslint-disable-next-line @typescript-eslint/no-empty-function - const toStop = new DisposableCollection(Disposable.create(() => { })); // mark as not disposed - this.toDeactivate.push(toStop); - this.doActivate(this.toDeactivate) - .then(() => this.initialize()); + this.toDeactivate.push(new DisposableCollection(Disposable.create(() => { })));// mark as not disposed + this.doActivate(this.toDeactivate); } return this.toDeactivate; } @@ -122,42 +118,11 @@ export abstract class BaseGLSPClientContribution implements GLSPClientContributi this.toDeactivate.dispose(); } - protected async createInitializeParameters(): Promise { - const options = await this.createInitializeOptions(); - return { - applicationId: ApplicationIdProvider.get(), - options - }; - } - - protected createInitializeOptions(): MaybePromise { - return undefined; - } - - async initialize(): Promise { - const parameters = await this.createInitializeParameters(); - this.ready.then(client => client.initializeServer(parameters) - .then(success => { - if (!success) { - this.messageService.error(`Failed to initialize ${this.id} glsp server with ${JSON.stringify(parameters)}`, 'Retry') - .then(retry => { - if (retry) { - this.initialize(); - } - }); - } - }) - ); - } - protected async doActivate(toStop: DisposableCollection): Promise { try { this.connectionProvider.listen({ path: GLSPContribution.getPath(this), onConnection: messageConnection => { - this.deferredConnection.resolve(messageConnection); - messageConnection.onDispose(() => this.deferredConnection = new Deferred()); - if (toStop.disposed) { messageConnection.dispose(); return; @@ -181,14 +146,39 @@ export abstract class BaseGLSPClientContribution implements GLSPClientContributi get running(): boolean { return !this.toDeactivate.disposed && this._glspClient !== undefined - && this._glspClient.currentState() === ClientState.Running; + && this._glspClient.currentState === ClientState.Running; } protected async onWillStart(languageClient: GLSPClient): Promise { await languageClient.start(); + this._initializeResult = await this.initialize(languageClient); this.onReady(languageClient); } + protected async initialize(languageClient: GLSPClient): Promise { + try { + const parameters = await this.createInitializeParameters(); + return await languageClient.initializeServer(parameters); + } catch (error) { + const errorMsg = `Failed to initialize ${this.id} glsp server with: ${error}`; + this.messageService.error(errorMsg); + return Promise.reject(errorMsg); + } + } + + protected async createInitializeParameters(): Promise { + const args = await this.createInitializeOptions(); + return { + applicationId: ApplicationIdProvider.get(), + protocolVersion: GLSPClient.protocolVersion, + args + }; + } + + protected createInitializeOptions(): MaybePromise { + return undefined; + } + protected onReady(languageClient: GLSPClient): void { this._glspClient = languageClient; this.resolveReady(this._glspClient); diff --git a/packages/theia-integration/src/browser/glsp-theia-container-module.ts b/packages/theia-integration/src/browser/glsp-theia-container-module.ts index 3914c52..e5e4313 100644 --- a/packages/theia-integration/src/browser/glsp-theia-container-module.ts +++ b/packages/theia-integration/src/browser/glsp-theia-container-module.ts @@ -253,9 +253,9 @@ class ConfigurableGLSPDiagramManager extends GLSPDiagramManager { this.initialize(); } - protected initialize(): void { + protected async initialize(): Promise { if (this._diagramType) { - super.initialize(); + return super.initialize(); } } @@ -277,7 +277,7 @@ class ConfigurableGLSPDiagramManager extends GLSPDiagramManager { /** * Internal class that is used in {@link GLSPTheiaFrontendModule.bindGLSPClientContribution} to - * bind a default implementation for {@link GLSPClientContribution}. A custom {@link GLSPClientContribution} connector should + * bind a default implementation for {@link GLSPClientContribution}. A custom {@link GLSPClientContribution} should * never extend this class. Use {@link BaseGLSPClientContribution} instead. */ @injectable() @@ -296,6 +296,5 @@ class ConfigurableGLSPClientContribution extends BaseGLSPClientContribution { throw new Error(`A value for id has already been set. Cannot set new value'${value}'`); } this._id = value; - this.initialize(); } } diff --git a/yarn.lock b/yarn.lock index 5e5a8a3..9ec980b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -234,13 +234,13 @@ "@babel/types" "^7.14.5" "@babel/helpers@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" + integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== dependencies: "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" "@babel/highlight@^7.14.5": version "7.14.5" @@ -252,9 +252,9 @@ js-tokens "^4.0.0" "@babel/parser@^7.14.5", "@babel/parser@^7.15.0": - version "7.15.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.2.tgz#08d4ffcf90d211bf77e7cc7154c6f02d468d2b1d" - integrity sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" + integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": version "7.14.5" @@ -515,9 +515,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-block-scoping@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" + integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -842,9 +842,9 @@ esutils "^2.0.2" "@babel/runtime@^7.10.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" - integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" + integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== dependencies: regenerator-runtime "^0.13.4" @@ -857,7 +857,7 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.0": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== @@ -886,26 +886,26 @@ integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g== "@eclipse-glsp-examples/workflow-glsp@next": - version "0.9.0-next.884f860b" - resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-glsp/-/workflow-glsp-0.9.0-next.884f860b.tgz#158674db44cb87045aa5f92c074a8b9db0b3a29d" - integrity sha512-Zri2IcHts2dWyxxPC3hKA6L9G9j+1+qi5DGLzLS35Tq1c05IkNNPS/BYFLwMJPSkZJBDY0Kfy2j1gqpSiLuPgA== + version "0.9.0-next.45db2ab6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-glsp/-/workflow-glsp-0.9.0-next.45db2ab6.tgz#a32b9f3f1beec5f6d5da584cfd8a75c7223948b7" + integrity sha512-ca9dsVhCQPcWV4HCbxBtSwx2IWcrYhjNbCXEF4e7nJ52VLHogmcypZ3M90YtgSJjdOegeZ7kJJd1ipHUnPraXA== dependencies: - "@eclipse-glsp/client" "0.9.0-next.884f860b" + "@eclipse-glsp/client" "0.9.0-next.45db2ab6" balloon-css "^0.5.0" -"@eclipse-glsp/client@0.9.0-next.884f860b", "@eclipse-glsp/client@next": - version "0.9.0-next.884f860b" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/client/-/client-0.9.0-next.884f860b.tgz#0c8ba09b9c3bf919f32e167de0d35b1ab8469244" - integrity sha512-YtovG/2Ao52GAKFnFYytAe1N5t2c88Pk3Vx2/a2BqcrCNdlaFwFYZSvqCIM0mq/2bDo6Qavgmwvmt9zbBJ3ZiQ== +"@eclipse-glsp/client@0.9.0-next.45db2ab6", "@eclipse-glsp/client@next": + version "0.9.0-next.45db2ab6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/client/-/client-0.9.0-next.45db2ab6.tgz#d1a9b5bf4767add882d8b93d37944cb60a939723" + integrity sha512-QhC6c/leC1/Di1TfA6eOb9n0HYdvNruT27pYH2sCKqsLVIssFSl3VCbx8rvZ4NHKF3NCs9EwTV0EkufOghD7HA== dependencies: - "@eclipse-glsp/protocol" "0.9.0-next.884f860b" + "@eclipse-glsp/protocol" "0.9.0-next.45db2ab6" autocompleter "5.1.0" sprotty next -"@eclipse-glsp/protocol@0.9.0-next.884f860b": - version "0.9.0-next.884f860b" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/protocol/-/protocol-0.9.0-next.884f860b.tgz#871a2318363d1598807ad7ab53502c6295d11333" - integrity sha512-sDxaHtpdNpjd/xNs/lv7beWGM6USAoNNyoYn0pJ4MUzpKdFjV9DU+NzwI4n2nYCG4C7LEO1vFad2DA5ztZ2FMQ== +"@eclipse-glsp/protocol@0.9.0-next.45db2ab6": + version "0.9.0-next.45db2ab6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/protocol/-/protocol-0.9.0-next.45db2ab6.tgz#690f94f427536f90a2b5f896b1010b6b3990de93" + integrity sha512-NLNT4bQPAB5ruQiaMQzaJOvUa18RxrilBLtBSOTmsw5Rc39NTEN3JbMyYkrtErRVxJ1ygR3Cranzkf5AXkm2sg== dependencies: uuid "7.0.3" vscode-ws-jsonrpc "0.2.0" @@ -1682,9 +1682,9 @@ form-data "^3.0.0" "@types/node@*": - version "16.4.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.13.tgz#7dfd9c14661edc65cccd43a29eb454174642370d" - integrity sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg== + version "16.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61" + integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw== "@types/prop-types@*": version "15.7.4" @@ -1738,18 +1738,18 @@ "@types/react" "*" "@types/react@*": - version "17.0.16" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.16.tgz#056f40c45645761527baeb7d89d842a6abdf285a" - integrity sha512-3kCUiOOlQTwUUvjNFkbBTWMTxdTGybz/PfjCw9JmaRGcEDBQh+nGMg7/E9P2rklhJuYVd25IYLNcvqgSPCPksg== + version "17.0.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.18.tgz#4109cbbd901be9582e5e39e3d77acd7b66bb7fbe" + integrity sha512-YTLgu7oS5zvSqq49X5Iue5oAbVGhgPc5Au29SJC4VeE17V6gASoOxVkUDy9pXFMRFxCWCD9fLeweNFizo3UzOg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/react@^16", "@types/react@^16.8.0": - version "16.14.12" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.12.tgz#1e38e2114e568f6541f88628a207f72630ee161f" - integrity sha512-7nOJgNsRbARhZhvwPm7cnzahtzEi5VJ9OvcQk8ExEEb1t+zaFklwLVkJz7G1kfxX4X/mDa/icTmzE0vTmqsqBg== + version "16.14.13" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.13.tgz#14f77c75ea581fa632907440dfda23b3c6ab24c9" + integrity sha512-KznsRYfqPmbcA5pMxc4mYQ7UgsJa2tAgKE2YwEmY5xKaTVZXLAY/ImBohyQHnEoIjxIJR+Um4FmaEYDr3q3zlg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2235,9 +2235,9 @@ envinfo "^7.7.3" "@webpack-cli/serve@^1.4.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.1.tgz#b5fde2f0f79c1e120307c415a4c1d5eb15a6f278" - integrity sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec" + integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -3003,14 +3003,14 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30001249" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001249.tgz#8f48ece6ecbce05937be13a9dbdf2205a4af335e" - integrity sha512-d9KjzkO9akYPACo7kyBwEm/qZgylsSVT4jxnTWY+CMstEtbsUu4kevHh1dZTS5RzaRdPG64m2uoD7pJkZtfNoQ== + version "1.0.30001251" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001251.tgz#ae1952b08980f916a8fa47a2a5207910c319e44d" + integrity sha512-qZcXjfDu3lwN6LJMpG0qI2Oz0IGpyXh5exkSeWOc3/I7dZBshplxOcRXGtcFIBTr6bCeBxvgQRxwkKTJOr6d1w== caniuse-lite@^1.0.30001248: - version "1.0.30001249" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz#90a330057f8ff75bfe97a94d047d5e14fabb2ee8" - integrity sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw== + version "1.0.30001251" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz#6853a606ec50893115db660f82c094d18f096d85" + integrity sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A== capture-stack-trace@^1.0.0: version "1.0.1" @@ -3333,9 +3333,9 @@ color@^0.11.0: color-string "^0.3.0" colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" + integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== colormin@^1.0.5: version "1.1.2" @@ -4192,9 +4192,9 @@ dom-helpers@^5.1.3: csstype "^3.0.2" dompurify@^2.2.9: - version "2.3.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.0.tgz#07bb39515e491588e5756b1d3e8375b5964814e2" - integrity sha512-VV5C6Kr53YVHGOBKO/F86OYX6/iLTw2yVSI721gKetxpHCK/V5TaLEf9ODjRgl1KLSWRMY6cUhAbv/c+IUnwQw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.1.tgz#a47059ca21fd1212d3c8f71fdea6943b8bfbdf6a" + integrity sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw== dot-prop@^3.0.0: version "3.0.0" @@ -4277,9 +4277,9 @@ electron-rebuild@^1.8.6: yargs "^14.2.0" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.793: - version "1.3.801" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.801.tgz#f41c588e408ad1a4f794f91f38aa94a89c492f51" - integrity sha512-xapG8ekC+IAHtJrGBMQSImNuN+dm+zl7UP1YbhvTkwQn8zf/yYuoxfTSAEiJ9VDD+kjvXaAhNDPSxJ+VImtAJA== + version "1.3.806" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz#21502100f11aead6c501d1cd7f2504f16c936642" + integrity sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA== emoji-regex@^7.0.1: version "7.0.3" @@ -4418,9 +4418,9 @@ escape-string-regexp@^2.0.0: integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== eslint-import-resolver-node@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz#939bbb0f74e179e757ca87f7a4a890dabed18ac4" - integrity sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg== + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: debug "^3.2.7" resolve "^1.20.0" @@ -5846,9 +5846,11 @@ is-arrayish@^0.2.1: integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-bigint@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.3.tgz#fc9d9e364210480675653ddaea0518528d49a581" - integrity sha512-ZU538ajmYJmzysE5yU4Y7uIrPQ2j704u+hXFiIPQExpqzzUbpe5jCPdTfmz7jXRxZdvjY3KZ3ZNenoXQovX+Dg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -7243,9 +7245,9 @@ node-gyp@^6.0.1: which "^1.3.1" node-releases@^1.1.73: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + version "1.1.74" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.74.tgz#e5866488080ebaa70a93b91144ccde06f3c3463e" + integrity sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw== noop-logger@^0.1.1: version "0.1.1" @@ -8080,9 +8082,9 @@ prebuild-install@^5.2.4: which-pm-runs "^1.0.0" prebuild-install@^6.0.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.3.tgz#8ea1f9d7386a0b30f7ef20247e36f8b2b82825a2" - integrity sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q== + version "6.1.4" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" + integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -9226,9 +9228,9 @@ sprotty-theia@next: sprotty next sprotty@next: - version "0.10.0-next.69a773d" - resolved "https://registry.yarnpkg.com/sprotty/-/sprotty-0.10.0-next.69a773d.tgz#0018aefeacaaa592958bf421ca5b4bc733c0d05b" - integrity sha512-a91mjEa7y+ITHPX9UmfzLluLQES4njOw36+dAY8p2i+2GITWpVhJAXrqJksRkhqaX1oYm/4lP8/vfnld1KCFQA== + version "0.10.0-next.6b6f109" + resolved "https://registry.yarnpkg.com/sprotty/-/sprotty-0.10.0-next.6b6f109.tgz#fe74f31935f4413ffecc2ba39dc831adde7cc7ed" + integrity sha512-WxA5EhQmr50cYGFC3D3BS9+QhGfKrGVEv9yAwy1ePycN8c4UxKD530aNNTyKxbMNe/Ffr9DzmIW1T7uRtNVcFQ== dependencies: autocompleter "5.1.0" file-saver "2.0.2" @@ -9592,9 +9594,9 @@ tar-stream@^1.1.2, tar-stream@^1.5.2: xtend "^4.0.0" tar@^4.4.12: - version "4.4.16" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.16.tgz#4a48b3c025e77d9d0c788f038a09b91c594d326d" - integrity sha512-gOVUT/KWPkGFZQmCRDVFNUWBl7niIo/PRR7lzrIqtZpit+st54lGROuVjc6zEQM9FhH+dJfQIl+9F0k8GNXg5g== + version "4.4.17" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.17.tgz#44be5e3fa8353ee1d11db3b1401561223a5c3985" + integrity sha512-q7OwXq6NTdcYIa+k58nEMV3j1euhDhGCs/VRw9ymx/PbH0jtIM2+VTgDE/BW3rbLkrBUXs5fzEKgic5oUciu7g== dependencies: chownr "^1.1.4" fs-minipass "^1.2.7"