@eclipse-glsp/vscode-integration-webview 2.3.0-next.91 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -20,6 +20,7 @@ export interface WebviewGlspClientOptions extends GLSPClient.Options {
|
|
|
20
20
|
messenger?: Messenger;
|
|
21
21
|
}
|
|
22
22
|
export declare const ActionMessageNotification: NotificationType<ActionMessage>;
|
|
23
|
+
export declare const ClientStateChangeNotification: NotificationType<ClientState>;
|
|
23
24
|
export declare const StartRequest: RequestType<undefined, void>;
|
|
24
25
|
export declare const InitializeServerRequest: RequestType<InitializeParameters, InitializeResult>;
|
|
25
26
|
export declare const InitializeClientSessionRequest: RequestType<InitializeClientSessionParameters, void>;
|
|
@@ -36,6 +37,8 @@ export declare class WebviewGlspClient implements GLSPClient, Disposable {
|
|
|
36
37
|
protected messenger: Messenger;
|
|
37
38
|
protected toDispose: DisposableCollection;
|
|
38
39
|
protected onActionMessageEmitter: Emitter<ActionMessage<Action>>;
|
|
40
|
+
protected onCurrentStateChangedEmitter: Emitter<ClientState>;
|
|
41
|
+
get onCurrentStateChanged(): Event<ClientState>;
|
|
39
42
|
protected _currentState: ClientState;
|
|
40
43
|
get currentState(): ClientState;
|
|
41
44
|
protected _initializeResult?: InitializeResult;
|
|
@@ -43,6 +46,7 @@ export declare class WebviewGlspClient implements GLSPClient, Disposable {
|
|
|
43
46
|
protected onServerInitializedEmitter: Emitter<InitializeResult>;
|
|
44
47
|
get onServerInitialized(): Event<InitializeResult>;
|
|
45
48
|
constructor(options: WebviewGlspClientOptions);
|
|
49
|
+
protected updateState(state: ClientState): void;
|
|
46
50
|
start(): Promise<void>;
|
|
47
51
|
initializeServer(params: InitializeParameters): Promise<InitializeResult>;
|
|
48
52
|
initializeClientSession(params: InitializeClientSessionParameters): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-glsp-client.d.ts","sourceRoot":"","sources":["../src/webview-glsp-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EACH,MAAM,EACN,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,OAAO,EACP,KAAK,EACL,UAAU,EACV,iCAAiC,EACjC,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAkB,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,wBAAyB,SAAQ,UAAU,CAAC,OAAO;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,CAAC,aAAa,CAA+B,CAAC;AACtG,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAuB,CAAC;AAC9E,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,oBAAoB,EAAE,gBAAgB,CAAkC,CAAC;AAC3H,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,iCAAiC,EAAE,IAAI,CAAyC,CAAC;AAC1I,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,8BAA8B,EAAE,IAAI,CAAsC,CAAC;AACjI,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,CAAC,IAAI,CAAgC,CAAC;AAC/F,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAsB,CAAC;AAC5E;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU,EAAE,UAAU;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,sBAAsB,iCAAgC;IAEhE,SAAS,CAAC,aAAa,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"webview-glsp-client.d.ts","sourceRoot":"","sources":["../src/webview-glsp-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EACH,MAAM,EACN,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,OAAO,EACP,KAAK,EACL,UAAU,EACV,iCAAiC,EACjC,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAkB,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,wBAAyB,SAAQ,UAAU,CAAC,OAAO;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,CAAC,aAAa,CAA+B,CAAC;AACtG,eAAO,MAAM,6BAA6B,EAAE,gBAAgB,CAAC,WAAW,CAAyC,CAAC;AAClH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAuB,CAAC;AAC9E,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,oBAAoB,EAAE,gBAAgB,CAAkC,CAAC;AAC3H,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,iCAAiC,EAAE,IAAI,CAAyC,CAAC;AAC1I,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,8BAA8B,EAAE,IAAI,CAAsC,CAAC;AACjI,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,CAAC,IAAI,CAAgC,CAAC;AAC/F,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAsB,CAAC;AAC5E;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU,EAAE,UAAU;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,sBAAsB,iCAAgC;IAEhE,SAAS,CAAC,4BAA4B,uBAA8B;IACpE,IAAI,qBAAqB,IAAI,KAAK,CAAC,WAAW,CAAC,CAE9C;IAED,SAAS,CAAC,aAAa,EAAE,WAAW,CAAuB;IAE3D,IAAI,YAAY,IAAI,WAAW,CAE9B;IAED,SAAS,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAC/C,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAEnD;IAED,SAAS,CAAC,0BAA0B,4BAAmC;IACvE,IAAI,mBAAmB,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAEjD;gBAEW,OAAO,EAAE,wBAAwB;IAQ7C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAOzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU/E,uBAAuB,CAAC,MAAM,EAAE,iCAAiC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjF,oBAAoB,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,cAAc,IAAI,IAAI;IAIhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IAIvD,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,UAAU;IAI1D,OAAO,IAAI,IAAI;CAGlB"}
|
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
16
|
********************************************************************************/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.WebviewGlspClient = exports.StopRequest = exports.ShutdownServerNotification = exports.DisposeClientSessionRequest = exports.InitializeClientSessionRequest = exports.InitializeServerRequest = exports.StartRequest = exports.ActionMessageNotification = void 0;
|
|
18
|
+
exports.WebviewGlspClient = exports.StopRequest = exports.ShutdownServerNotification = exports.DisposeClientSessionRequest = exports.InitializeClientSessionRequest = exports.InitializeServerRequest = exports.StartRequest = exports.ClientStateChangeNotification = exports.ActionMessageNotification = void 0;
|
|
19
19
|
const client_1 = require("@eclipse-glsp/client");
|
|
20
20
|
const vscode_messenger_common_1 = require("vscode-messenger-common");
|
|
21
21
|
const vscode_messenger_webview_1 = require("vscode-messenger-webview");
|
|
22
22
|
exports.ActionMessageNotification = { method: 'actionMessage' };
|
|
23
|
+
exports.ClientStateChangeNotification = { method: 'notifyClientStateChange' };
|
|
23
24
|
exports.StartRequest = { method: 'start' };
|
|
24
25
|
exports.InitializeServerRequest = { method: 'initializeServer' };
|
|
25
26
|
exports.InitializeClientSessionRequest = { method: 'initializeClientSession' };
|
|
@@ -32,6 +33,9 @@ exports.StopRequest = { method: 'stop' };
|
|
|
32
33
|
* via the vscode-messenger protocol
|
|
33
34
|
*/
|
|
34
35
|
class WebviewGlspClient {
|
|
36
|
+
get onCurrentStateChanged() {
|
|
37
|
+
return this.onCurrentStateChangedEmitter.event;
|
|
38
|
+
}
|
|
35
39
|
get currentState() {
|
|
36
40
|
return this._currentState;
|
|
37
41
|
}
|
|
@@ -45,22 +49,28 @@ class WebviewGlspClient {
|
|
|
45
49
|
var _a;
|
|
46
50
|
this.toDispose = new client_1.DisposableCollection();
|
|
47
51
|
this.onActionMessageEmitter = new client_1.Emitter();
|
|
48
|
-
this.
|
|
52
|
+
this.onCurrentStateChangedEmitter = new client_1.Emitter();
|
|
53
|
+
this._currentState = client_1.ClientState.Initial;
|
|
49
54
|
this.onServerInitializedEmitter = new client_1.Emitter();
|
|
50
55
|
this.id = options.id;
|
|
51
56
|
this.messenger = (_a = options.messenger) !== null && _a !== void 0 ? _a : new vscode_messenger_webview_1.Messenger();
|
|
52
|
-
this.toDispose.push(this.onActionMessageEmitter, this.onServerInitializedEmitter);
|
|
57
|
+
this.toDispose.push(this.onActionMessageEmitter, this.onServerInitializedEmitter, this.onCurrentStateChangedEmitter);
|
|
53
58
|
this.messenger.onNotification(exports.ActionMessageNotification, msg => this.onActionMessageEmitter.fire(msg));
|
|
59
|
+
this.messenger.onNotification(exports.ClientStateChangeNotification, state => this.updateState(state));
|
|
60
|
+
}
|
|
61
|
+
updateState(state) {
|
|
62
|
+
if (this._currentState !== state) {
|
|
63
|
+
this._currentState = state;
|
|
64
|
+
this.onCurrentStateChangedEmitter.fire(this._currentState);
|
|
65
|
+
}
|
|
54
66
|
}
|
|
55
67
|
async start() {
|
|
56
68
|
try {
|
|
57
|
-
this._currentState = client_1.ClientState.Starting;
|
|
58
69
|
await this.messenger.sendRequest(exports.StartRequest, vscode_messenger_common_1.HOST_EXTENSION);
|
|
59
|
-
this._currentState = client_1.ClientState.Running;
|
|
60
70
|
}
|
|
61
71
|
catch (error) {
|
|
62
72
|
console.error('Failed to start connection to server', error);
|
|
63
|
-
this.
|
|
73
|
+
this.updateState(client_1.ClientState.StartFailed);
|
|
64
74
|
}
|
|
65
75
|
}
|
|
66
76
|
async initializeServer(params) {
|
|
@@ -82,12 +92,10 @@ class WebviewGlspClient {
|
|
|
82
92
|
this.messenger.sendNotification(exports.ShutdownServerNotification, vscode_messenger_common_1.HOST_EXTENSION);
|
|
83
93
|
}
|
|
84
94
|
async stop() {
|
|
85
|
-
if (this.
|
|
95
|
+
if (this.currentState === client_1.ClientState.Stopped) {
|
|
86
96
|
return;
|
|
87
97
|
}
|
|
88
|
-
this._currentState = client_1.ClientState.Stopping;
|
|
89
98
|
await this.messenger.sendRequest(exports.StopRequest, vscode_messenger_common_1.HOST_EXTENSION);
|
|
90
|
-
this._currentState = client_1.ClientState.Stopped;
|
|
91
99
|
}
|
|
92
100
|
sendActionMessage(message) {
|
|
93
101
|
this.messenger.sendNotification(exports.ActionMessageNotification, vscode_messenger_common_1.HOST_EXTENSION, message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-glsp-client.js","sourceRoot":"","sources":["../src/webview-glsp-client.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAc8B;AAC9B,qEAAwF;AACxF,uEAAqD;AAMxC,QAAA,yBAAyB,GAAoC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACzF,QAAA,YAAY,GAAiC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACjE,QAAA,uBAAuB,GAAwD,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AAC9G,QAAA,8BAA8B,GAAyD,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;AAC7H,QAAA,2BAA2B,GAAsD,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;AACpH,QAAA,0BAA0B,GAA2B,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAClF,QAAA,WAAW,GAAiC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5E;;;;GAIG;AACH,MAAa,iBAAiB;IAO1B,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAGD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;IACjD,CAAC;IAED,YAAY,OAAiC;;
|
|
1
|
+
{"version":3,"file":"webview-glsp-client.js","sourceRoot":"","sources":["../src/webview-glsp-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/vscode-integration-webview",
|
|
3
|
-
"version": "2.3.0
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Integration of a GLSP diagram in a VS Code extensions (WebView part)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vscode",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"watch": "tsc -w"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@eclipse-glsp/client": "
|
|
44
|
+
"@eclipse-glsp/client": "2.3.0",
|
|
45
45
|
"vscode-messenger-webview": "^0.4.5"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "8e825f1517ee9f97de84db903ea76f2fe664df73"
|
|
54
54
|
}
|
|
@@ -37,6 +37,7 @@ export interface WebviewGlspClientOptions extends GLSPClient.Options {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export const ActionMessageNotification: NotificationType<ActionMessage> = { method: 'actionMessage' };
|
|
40
|
+
export const ClientStateChangeNotification: NotificationType<ClientState> = { method: 'notifyClientStateChange' };
|
|
40
41
|
export const StartRequest: RequestType<undefined, void> = { method: 'start' };
|
|
41
42
|
export const InitializeServerRequest: RequestType<InitializeParameters, InitializeResult> = { method: 'initializeServer' };
|
|
42
43
|
export const InitializeClientSessionRequest: RequestType<InitializeClientSessionParameters, void> = { method: 'initializeClientSession' };
|
|
@@ -54,7 +55,13 @@ export class WebviewGlspClient implements GLSPClient, Disposable {
|
|
|
54
55
|
protected toDispose = new DisposableCollection();
|
|
55
56
|
protected onActionMessageEmitter = new Emitter<ActionMessage>();
|
|
56
57
|
|
|
57
|
-
protected
|
|
58
|
+
protected onCurrentStateChangedEmitter = new Emitter<ClientState>();
|
|
59
|
+
get onCurrentStateChanged(): Event<ClientState> {
|
|
60
|
+
return this.onCurrentStateChangedEmitter.event;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected _currentState: ClientState = ClientState.Initial;
|
|
64
|
+
|
|
58
65
|
get currentState(): ClientState {
|
|
59
66
|
return this._currentState;
|
|
60
67
|
}
|
|
@@ -72,18 +79,24 @@ export class WebviewGlspClient implements GLSPClient, Disposable {
|
|
|
72
79
|
constructor(options: WebviewGlspClientOptions) {
|
|
73
80
|
this.id = options.id;
|
|
74
81
|
this.messenger = options.messenger ?? new Messenger();
|
|
75
|
-
this.toDispose.push(this.onActionMessageEmitter, this.onServerInitializedEmitter);
|
|
76
|
-
this.messenger.onNotification
|
|
82
|
+
this.toDispose.push(this.onActionMessageEmitter, this.onServerInitializedEmitter, this.onCurrentStateChangedEmitter);
|
|
83
|
+
this.messenger.onNotification(ActionMessageNotification, msg => this.onActionMessageEmitter.fire(msg));
|
|
84
|
+
this.messenger.onNotification(ClientStateChangeNotification, state => this.updateState(state));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
protected updateState(state: ClientState): void {
|
|
88
|
+
if (this._currentState !== state) {
|
|
89
|
+
this._currentState = state;
|
|
90
|
+
this.onCurrentStateChangedEmitter.fire(this._currentState);
|
|
91
|
+
}
|
|
77
92
|
}
|
|
78
93
|
|
|
79
94
|
async start(): Promise<void> {
|
|
80
95
|
try {
|
|
81
|
-
this._currentState = ClientState.Starting;
|
|
82
96
|
await this.messenger.sendRequest(StartRequest, HOST_EXTENSION);
|
|
83
|
-
this._currentState = ClientState.Running;
|
|
84
97
|
} catch (error) {
|
|
85
98
|
console.error('Failed to start connection to server', error);
|
|
86
|
-
this.
|
|
99
|
+
this.updateState(ClientState.StartFailed);
|
|
87
100
|
}
|
|
88
101
|
}
|
|
89
102
|
|
|
@@ -110,12 +123,10 @@ export class WebviewGlspClient implements GLSPClient, Disposable {
|
|
|
110
123
|
}
|
|
111
124
|
|
|
112
125
|
async stop(): Promise<void> {
|
|
113
|
-
if (this.
|
|
126
|
+
if (this.currentState === ClientState.Stopped) {
|
|
114
127
|
return;
|
|
115
128
|
}
|
|
116
|
-
this._currentState = ClientState.Stopping;
|
|
117
129
|
await this.messenger.sendRequest(StopRequest, HOST_EXTENSION);
|
|
118
|
-
this._currentState = ClientState.Stopped;
|
|
119
130
|
}
|
|
120
131
|
|
|
121
132
|
sendActionMessage(message: ActionMessage<Action>): void {
|