@hydranium/glsp-client 1.0.0-next.376 → 1.0.0-next.379

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.
@@ -73,6 +73,12 @@ export declare class HydraniumGlspActionDispatcher extends GLSPActionDispatcher
73
73
  protected readonly settleEditsMs: number;
74
74
  /** The postponed actions a lifted block is dispatching a second time, counted when first sent. */
75
75
  protected redispatched: ReadonlySet<Action> | undefined;
76
+ /** The popup request whose answer may still show, until {@link trackPopupRequest} ends it. */
77
+ protected popupRequestId: string | undefined;
78
+ /** Starts the id given to a popup request, so only answers to those can be dropped as stale. */
79
+ protected readonly popupRequestPrefix: string;
80
+ /** What closes a shown popup in GLSP's hover module, so it ends a pending popup request too. */
81
+ protected readonly popupClosingKinds: ReadonlySet<string>;
76
82
  protected pairCounter: number;
77
83
  /** Pending requests keyed by requestId (for actions that carry one). */
78
84
  protected pendingById: Map<string, {
@@ -113,11 +119,36 @@ export declare class HydraniumGlspActionDispatcher extends GLSPActionDispatcher
113
119
  * reject's message alone, so a caller could not read what failed. The
114
120
  * accompanying test pins GLSP's body, whose timeout and request handling
115
121
  * this repeats.
122
+ *
123
+ * It also drops an answer {@link isStalePopupAnswer} calls stale. The check
124
+ * sits here because GLSP clears the `responseId` of an answer nobody awaits
125
+ * before any hover class sees it.
116
126
  */
117
127
  protected handleResponseAction(action: ResponseAction): Promise<void>;
118
128
  protected handleBlocked(action: Action, predicate: (action: Action) => boolean): Promise<void>;
119
129
  /** Whether `action` changes the model on the server: an operation, an undo or a redo. Widen it for an edit kind of your own. */
120
130
  protected isEdit(action: Action): boolean;
131
+ /**
132
+ * Whether `action` answers a popup request {@link trackPopupRequest} gave an
133
+ * id, once that request is no longer {@link popupRequestId}. GLSP's hover
134
+ * shows any answer, even one that comes after the pointer left, and the
135
+ * popup then stays open. Remove it once GLSP's hover pairs the answer
136
+ * itself. A test pins the hover, so a GLSP update that changes it fails.
137
+ */
138
+ protected isStalePopupAnswer(action: ResponseAction): boolean;
139
+ /**
140
+ * GLSP's hover sends a popup request without an id, and the server answers
141
+ * with one of its own that the client cannot match. So the id is given here,
142
+ * as `request` gives one, and the answer echoes it. A popup request replaces
143
+ * the one before, even one a `request` caller sends. A popup the client
144
+ * shows itself ends it, so a closed popup does: the close timer and Escape
145
+ * dispatch an empty popup, and GLSP's close handler does once one shows. An
146
+ * issue marker's popup ends it too, since it comes from the hover that would
147
+ * have sent the next request. The {@link popupClosingKinds} end it too,
148
+ * since they would have closed the popup had it shown, and its answer would
149
+ * show where the node no longer is.
150
+ */
151
+ protected trackPopupRequest(action: Action): void;
121
152
  /**
122
153
  * Count `action` if it is an edit the client sends, even one whose dispatch
123
154
  * failed, since it may have reached the server. One dispatched again counts
@@ -1 +1 @@
1
- {"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../src/action-dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../src/action-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -101,6 +101,18 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
101
101
  settleEditsMs = 30_000;
102
102
  /** The postponed actions a lifted block is dispatching a second time, counted when first sent. */
103
103
  redispatched;
104
+ /** The popup request whose answer may still show, until {@link trackPopupRequest} ends it. */
105
+ popupRequestId;
106
+ /** Starts the id given to a popup request, so only answers to those can be dropped as stale. */
107
+ popupRequestPrefix = 'popup_';
108
+ /** What closes a shown popup in GLSP's hover module, so it ends a pending popup request too. */
109
+ popupClosingKinds = new Set([
110
+ client_1.FitToScreenCommand.KIND,
111
+ client_1.CenterCommand.KIND,
112
+ client_1.SetViewportCommand.KIND,
113
+ client_1.MoveCommand.KIND,
114
+ client_1.FocusStateChangedAction.KIND
115
+ ]);
104
116
  pairCounter = 0;
105
117
  /** Pending requests keyed by requestId (for actions that carry one). */
106
118
  pendingById = new Map();
@@ -160,6 +172,7 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
160
172
  return (await this.clock.raceTimer(this.pendingEdits.whenSettled(), this.settleEditsMs)) !== protocol_1.TIMED_OUT;
161
173
  }
162
174
  dispatch(action) {
175
+ this.trackPopupRequest(action);
163
176
  if (this.loggedKinds.has(action.kind)) {
164
177
  this.logAction(action);
165
178
  }
@@ -174,9 +187,17 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
174
187
  * reject's message alone, so a caller could not read what failed. The
175
188
  * accompanying test pins GLSP's body, whose timeout and request handling
176
189
  * this repeats.
190
+ *
191
+ * It also drops an answer {@link isStalePopupAnswer} calls stale. The check
192
+ * sits here because GLSP clears the `responseId` of an answer nobody awaits
193
+ * before any hover class sees it.
177
194
  */
178
195
  async handleResponseAction(action) {
179
196
  const request = this.requests.get(action.responseId);
197
+ if (!request && this.isStalePopupAnswer(action)) {
198
+ this.logger.log(this, 'Dropping a popup answer to a request that was replaced or closed', action);
199
+ return;
200
+ }
180
201
  if (!request || !client_1.RejectAction.is(action) || action.detail === undefined) {
181
202
  return super.handleResponseAction(action);
182
203
  }
@@ -210,6 +231,42 @@ let HydraniumGlspActionDispatcher = class HydraniumGlspActionDispatcher extends
210
231
  isEdit(action) {
211
232
  return client_1.Operation.is(action) || client_1.UndoAction.is(action) || client_1.RedoAction.is(action);
212
233
  }
234
+ /**
235
+ * Whether `action` answers a popup request {@link trackPopupRequest} gave an
236
+ * id, once that request is no longer {@link popupRequestId}. GLSP's hover
237
+ * shows any answer, even one that comes after the pointer left, and the
238
+ * popup then stays open. Remove it once GLSP's hover pairs the answer
239
+ * itself. A test pins the hover, so a GLSP update that changes it fails.
240
+ */
241
+ isStalePopupAnswer(action) {
242
+ return (client_1.SetPopupModelAction.is(action) &&
243
+ action.responseId.startsWith(this.popupRequestPrefix) &&
244
+ action.responseId !== this.popupRequestId);
245
+ }
246
+ /**
247
+ * GLSP's hover sends a popup request without an id, and the server answers
248
+ * with one of its own that the client cannot match. So the id is given here,
249
+ * as `request` gives one, and the answer echoes it. A popup request replaces
250
+ * the one before, even one a `request` caller sends. A popup the client
251
+ * shows itself ends it, so a closed popup does: the close timer and Escape
252
+ * dispatch an empty popup, and GLSP's close handler does once one shows. An
253
+ * issue marker's popup ends it too, since it comes from the hover that would
254
+ * have sent the next request. The {@link popupClosingKinds} end it too,
255
+ * since they would have closed the popup had it shown, and its answer would
256
+ * show where the node no longer is.
257
+ */
258
+ trackPopupRequest(action) {
259
+ if (client_1.RequestPopupModelAction.is(action)) {
260
+ action.requestId ||= this.popupRequestPrefix + client_1.RequestAction.generateRequestId();
261
+ this.popupRequestId = action.requestId;
262
+ }
263
+ else if ((client_1.SetPopupModelAction.is(action) && !action.responseId) || this.popupClosingKinds.has(action.kind)) {
264
+ // With a close delay longer than the open delay, the close of the node the pointer left ends
265
+ // the next node's request and drops its answer. Telling the two apart needs a rebound hover
266
+ // listener that tags its own close, a second seam to keep in step with GLSP's hover.
267
+ this.popupRequestId = undefined;
268
+ }
269
+ }
213
270
  /**
214
271
  * Count `action` if it is an edit the client sends, even one whose dispatch
215
272
  * failed, since it may have reached the server. One dispatched again counts
@@ -1 +1 @@
1
- {"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../src/action-dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../src/action-dispatcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/glsp-client",
3
- "version": "1.0.0-next.376",
3
+ "version": "1.0.0-next.379",
4
4
  "description": "Host-neutral client classes for GLSP heads built on @hydranium/glsp-server, the binder that mounts them in a Theia frontend, a VS Code webview or a plain browser page, the one call that mounts a diagram in a page, and the edge whose labels keep finite bounds without bendpoints.",
5
5
  "keywords": [
6
6
  "diagram",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "devDependencies": {
61
61
  "@eclipse-glsp/client": "2.8.0",
62
- "@hydranium/protocol": "1.0.0-next.376",
62
+ "@hydranium/protocol": "1.0.0-next.379",
63
63
  "@types/node": "^22.0.0",
64
64
  "inversify": "6.2.2",
65
65
  "reflect-metadata": "0.2.2",
@@ -69,7 +69,7 @@
69
69
  },
70
70
  "peerDependencies": {
71
71
  "@eclipse-glsp/client": "^2.7.0",
72
- "@hydranium/protocol": "1.0.0-next.376",
72
+ "@hydranium/protocol": "1.0.0-next.379",
73
73
  "inversify": "^6.1.3",
74
74
  "snabbdom": "~3.5.1"
75
75
  },
@@ -9,12 +9,16 @@
9
9
 
10
10
  import {
11
11
  type Action,
12
+ CenterCommand,
12
13
  CheckEdgeResultAction,
13
14
  ComputedBoundsAction,
15
+ FitToScreenCommand,
16
+ FocusStateChangedAction,
14
17
  GLSPActionDispatcher,
15
18
  GLSPModelSource,
16
19
  LocalComputedBoundsAction,
17
20
  MessageAction,
21
+ MoveCommand,
18
22
  Operation,
19
23
  RedoAction,
20
24
  RejectAction,
@@ -23,6 +27,7 @@ import {
23
27
  RequestCheckEdgeAction,
24
28
  RequestContextActions,
25
29
  RequestModelAction,
30
+ RequestPopupModelAction,
26
31
  RequestTypeHintsAction,
27
32
  ResponseAction,
28
33
  ServerAction,
@@ -30,7 +35,9 @@ import {
30
35
  SetEditModeAction,
31
36
  SetMarkersAction,
32
37
  SetModelAction,
38
+ SetPopupModelAction,
33
39
  SetTypeHintsAction,
40
+ SetViewportCommand,
34
41
  StatusAction,
35
42
  UndoAction,
36
43
  UpdateModelAction
@@ -142,6 +149,18 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
142
149
  protected readonly settleEditsMs: number = 30_000;
143
150
  /** The postponed actions a lifted block is dispatching a second time, counted when first sent. */
144
151
  protected redispatched: ReadonlySet<Action> | undefined;
152
+ /** The popup request whose answer may still show, until {@link trackPopupRequest} ends it. */
153
+ protected popupRequestId: string | undefined;
154
+ /** Starts the id given to a popup request, so only answers to those can be dropped as stale. */
155
+ protected readonly popupRequestPrefix: string = 'popup_';
156
+ /** What closes a shown popup in GLSP's hover module, so it ends a pending popup request too. */
157
+ protected readonly popupClosingKinds: ReadonlySet<string> = new Set([
158
+ FitToScreenCommand.KIND,
159
+ CenterCommand.KIND,
160
+ SetViewportCommand.KIND,
161
+ MoveCommand.KIND,
162
+ FocusStateChangedAction.KIND
163
+ ]);
145
164
 
146
165
  protected pairCounter = 0;
147
166
  /** Pending requests keyed by requestId (for actions that carry one). */
@@ -207,6 +226,7 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
207
226
  }
208
227
 
209
228
  override dispatch(action: Action): Promise<void> {
229
+ this.trackPopupRequest(action);
210
230
  if (this.loggedKinds.has(action.kind)) {
211
231
  this.logAction(action);
212
232
  }
@@ -222,9 +242,17 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
222
242
  * reject's message alone, so a caller could not read what failed. The
223
243
  * accompanying test pins GLSP's body, whose timeout and request handling
224
244
  * this repeats.
245
+ *
246
+ * It also drops an answer {@link isStalePopupAnswer} calls stale. The check
247
+ * sits here because GLSP clears the `responseId` of an answer nobody awaits
248
+ * before any hover class sees it.
225
249
  */
226
250
  protected override async handleResponseAction(action: ResponseAction): Promise<void> {
227
251
  const request = this.requests.get(action.responseId);
252
+ if (!request && this.isStalePopupAnswer(action)) {
253
+ this.logger.log(this, 'Dropping a popup answer to a request that was replaced or closed', action);
254
+ return;
255
+ }
228
256
  if (!request || !RejectAction.is(action) || action.detail === undefined) {
229
257
  return super.handleResponseAction(action);
230
258
  }
@@ -260,6 +288,45 @@ export class HydraniumGlspActionDispatcher extends GLSPActionDispatcher {
260
288
  return Operation.is(action) || UndoAction.is(action) || RedoAction.is(action);
261
289
  }
262
290
 
291
+ /**
292
+ * Whether `action` answers a popup request {@link trackPopupRequest} gave an
293
+ * id, once that request is no longer {@link popupRequestId}. GLSP's hover
294
+ * shows any answer, even one that comes after the pointer left, and the
295
+ * popup then stays open. Remove it once GLSP's hover pairs the answer
296
+ * itself. A test pins the hover, so a GLSP update that changes it fails.
297
+ */
298
+ protected isStalePopupAnswer(action: ResponseAction): boolean {
299
+ return (
300
+ SetPopupModelAction.is(action) &&
301
+ action.responseId.startsWith(this.popupRequestPrefix) &&
302
+ action.responseId !== this.popupRequestId
303
+ );
304
+ }
305
+
306
+ /**
307
+ * GLSP's hover sends a popup request without an id, and the server answers
308
+ * with one of its own that the client cannot match. So the id is given here,
309
+ * as `request` gives one, and the answer echoes it. A popup request replaces
310
+ * the one before, even one a `request` caller sends. A popup the client
311
+ * shows itself ends it, so a closed popup does: the close timer and Escape
312
+ * dispatch an empty popup, and GLSP's close handler does once one shows. An
313
+ * issue marker's popup ends it too, since it comes from the hover that would
314
+ * have sent the next request. The {@link popupClosingKinds} end it too,
315
+ * since they would have closed the popup had it shown, and its answer would
316
+ * show where the node no longer is.
317
+ */
318
+ protected trackPopupRequest(action: Action): void {
319
+ if (RequestPopupModelAction.is(action)) {
320
+ action.requestId ||= this.popupRequestPrefix + RequestAction.generateRequestId();
321
+ this.popupRequestId = action.requestId;
322
+ } else if ((SetPopupModelAction.is(action) && !action.responseId) || this.popupClosingKinds.has(action.kind)) {
323
+ // With a close delay longer than the open delay, the close of the node the pointer left ends
324
+ // the next node's request and drops its answer. Telling the two apart needs a rebound hover
325
+ // listener that tags its own close, a second seam to keep in step with GLSP's hover.
326
+ this.popupRequestId = undefined;
327
+ }
328
+ }
329
+
263
330
  /**
264
331
  * Count `action` if it is an edit the client sends, even one whose dispatch
265
332
  * failed, since it may have reached the server. One dispatched again counts