@hydranium/conformance 1.0.0-next.28 → 1.0.0-next.280
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.
- package/README.md +79 -74
- package/lib/conformance-suite.js +1 -1
- package/lib/data/index.d.ts +37 -13
- package/lib/data/index.d.ts.map +1 -1
- package/lib/data/index.js +839 -34
- package/lib/data/index.js.map +1 -1
- package/lib/glsp/index.d.ts +24 -4
- package/lib/glsp/index.d.ts.map +1 -1
- package/lib/glsp/index.js +34 -2
- package/lib/glsp/index.js.map +1 -1
- package/lib/glsp/node/index.d.ts +64 -0
- package/lib/glsp/node/index.d.ts.map +1 -0
- package/lib/glsp/node/index.js +195 -0
- package/lib/glsp/node/index.js.map +1 -0
- package/lib/jest/index.js +3 -3
- package/lib/jest/index.js.map +1 -1
- package/lib/lsp/index.d.ts +23 -3
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +69 -3
- package/lib/lsp/index.js.map +1 -1
- package/lib/model.d.ts +131 -8
- package/lib/model.d.ts.map +1 -1
- package/lib/model.js.map +1 -1
- package/lib/vitest/index.js +3 -3
- package/lib/vitest/index.js.map +1 -1
- package/package.json +32 -45
- package/src/conformance-suite.ts +1 -1
- package/src/data/index.ts +1067 -47
- package/src/glsp/index.ts +64 -6
- package/src/glsp/node/index.ts +274 -0
- package/src/jest/index.ts +3 -3
- package/src/lsp/index.ts +110 -7
- package/src/model.ts +134 -8
- package/src/vitest/index.ts +3 -3
package/lib/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
|
package/lib/glsp/index.d.ts
CHANGED
|
@@ -20,7 +20,12 @@ export interface GlspConformanceDriver<TAction> extends Harness {
|
|
|
20
20
|
start(): Promise<void>;
|
|
21
21
|
/** Send an action to the server. Fire-and-forget (GLSP `process` is `void`). */
|
|
22
22
|
dispatch(action: TAction): void;
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Resolve with the next action whose `kind` matches and that arrived after
|
|
25
|
+
* the last {@link dispatch}, or since `start` before any; reject on timeout.
|
|
26
|
+
* Only after the dispatch, so an action an earlier step sent cannot pass for
|
|
27
|
+
* the answer to this one.
|
|
28
|
+
*/
|
|
24
29
|
nextAction<T extends TAction = TAction>(kind: string, timeoutMs?: number): Promise<T>;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
@@ -43,7 +48,18 @@ export interface GlspCreateOperationSpec<TAction, TDriver extends GlspConformanc
|
|
|
43
48
|
* loaded.
|
|
44
49
|
*/
|
|
45
50
|
readonly action: (driver: TDriver) => TAction;
|
|
46
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The action kind the server settles the operation with (e.g. a
|
|
53
|
+
* re-`RequestBounds` for client-laid-out diagrams).
|
|
54
|
+
*
|
|
55
|
+
* The kit also waits for the operation's receipt: GLSP's
|
|
56
|
+
* `OperationActionHandler` submits every operation that ran with reason
|
|
57
|
+
* `'operation'`, and `ModelSubmissionHandler` ends that submission with a
|
|
58
|
+
* `setDirtyState` carrying it. A declined operation sends none,
|
|
59
|
+
* so an action of this kind from something else, such as a late submission
|
|
60
|
+
* of the load, cannot pass for the operation's. The driver's session must
|
|
61
|
+
* receive `setDirtyState`.
|
|
62
|
+
*/
|
|
47
63
|
readonly expectedResponseKind: string;
|
|
48
64
|
/**
|
|
49
65
|
* Returns whether the source model gained the element — the adopter reads its
|
|
@@ -59,8 +75,12 @@ export interface GlspCreateOperationSpec<TAction, TDriver extends GlspConformanc
|
|
|
59
75
|
* fixture to its input document, so a fixture whose input was MUTATED by an
|
|
60
76
|
* earlier check silently expects the wrong number. Give each check pristine
|
|
61
77
|
* input, or take the delta route above.
|
|
78
|
+
*
|
|
79
|
+
* May answer asynchronously. It runs once the response kind has arrived, and
|
|
80
|
+
* a write observed from another process, a `workspace/applyEdit` say, can
|
|
81
|
+
* arrive after that.
|
|
62
82
|
*/
|
|
63
|
-
readonly expectMutated: (driver: TDriver) => boolean
|
|
83
|
+
readonly expectMutated: (driver: TDriver) => boolean | Promise<boolean>;
|
|
64
84
|
}
|
|
65
85
|
/**
|
|
66
86
|
* Per-diagram-type GLSP fixture, generic over the adopter action type and the
|
|
@@ -109,7 +129,7 @@ export interface GlspConformanceOptions<TAction, TDriver extends GlspConformance
|
|
|
109
129
|
readonly connect: () => TDriver | Promise<TDriver>;
|
|
110
130
|
/** Per-diagram-type fixtures. */
|
|
111
131
|
readonly diagrams: ReadonlyArray<GlspFixture<TAction, TDriver>>;
|
|
112
|
-
/** Suite title override. Default `'conformance
|
|
132
|
+
/** Suite title override. Default `'glsp conformance'`. */
|
|
113
133
|
readonly suiteTitle?: string;
|
|
114
134
|
}
|
|
115
135
|
/**
|
package/lib/glsp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/glsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/glsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAsBlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB,CAAC,OAAO,CAAE,SAAQ,OAAO;IAC5D,uFAAuF;IACvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;;;;OAKG;IACH,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,OAAO,SAAS,qBAAqB,CAAC,OAAO,CAAC;IAC7F;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC9C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,OAAO,EAAE,OAAO,SAAS,qBAAqB,CAAC,OAAO,CAAC;IACjF;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC;IACrC,oGAAoG;IACpG,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,6HAA6H;IAC7H,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;IACzD,oEAAoE;IACpE,QAAQ,CAAC,eAAe,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACvE;AAED,wCAAwC;AACxC,MAAM,WAAW,sBAAsB,CAAC,OAAO,EAAE,OAAO,SAAS,qBAAqB,CAAC,OAAO,CAAC;IAC5F;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC/B;AAoCD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,SAAS,qBAAqB,CAAC,OAAO,CAAC,EACpF,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,GACjD,gBAAgB,EAAE,CAqEpB"}
|
package/lib/glsp/index.js
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* head, generic over the adopter's action type `TAction`. The kit imports NO
|
|
12
12
|
* `@eclipse-glsp/*` types: the FIXTURE supplies the native actions
|
|
13
13
|
* (`requestModel()`, `createOperation.action()`) and the kit matches responses
|
|
14
|
-
* by `kind` (a `string`) via the driver's `nextAction`.
|
|
14
|
+
* by `kind` (a `string`) via the driver's `nextAction`. The one field it reads
|
|
15
|
+
* beyond `kind` is the `reason` of the `setDirtyState` that is an operation's
|
|
16
|
+
* receipt.
|
|
15
17
|
*
|
|
16
18
|
* The driver port (`GlspConformanceDriver<TAction>`) is the minimal
|
|
17
19
|
* `start` / `dispatch` / `nextAction` surface that `@hydranium/glsp-server/
|
|
@@ -23,6 +25,35 @@
|
|
|
23
25
|
* its harness.
|
|
24
26
|
*/
|
|
25
27
|
import assert from 'node:assert/strict';
|
|
28
|
+
import { describeError } from '@hydranium/protocol';
|
|
29
|
+
/** GLSP's `SetDirtyStateAction.KIND`, named here because the kit imports no GLSP type. */
|
|
30
|
+
const SET_DIRTY_STATE_KIND = 'setDirtyState';
|
|
31
|
+
/** The reason GLSP's `OperationActionHandler` submits an operation that ran with, which its dirty state carries. */
|
|
32
|
+
const OPERATION_REASON = 'operation';
|
|
33
|
+
function isOperationReceipt(action) {
|
|
34
|
+
return typeof action === 'object' && action !== null && 'reason' in action && action.reason === OPERATION_REASON;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve once the operation's receipt arrives, passing over a dirty state
|
|
38
|
+
* with any other reason. Rejects with the wait's own failure, which may be a
|
|
39
|
+
* closed connection rather than a missing receipt.
|
|
40
|
+
*/
|
|
41
|
+
async function nextOperationReceipt(driver) {
|
|
42
|
+
for (;;) {
|
|
43
|
+
let dirtyState;
|
|
44
|
+
try {
|
|
45
|
+
dirtyState = await driver.nextAction(SET_DIRTY_STATE_KIND);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const reason = describeError(error);
|
|
49
|
+
throw new Error(`Waiting for the operation's receipt, a ${SET_DIRTY_STATE_KIND} with reason '${OPERATION_REASON}', failed: ${reason}. ` +
|
|
50
|
+
`If none arrived in time, either no operation ran or the session does not declare ${SET_DIRTY_STATE_KIND}.`, { cause: error });
|
|
51
|
+
}
|
|
52
|
+
if (isOperationReceipt(dirtyState)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
26
57
|
/**
|
|
27
58
|
* Build the GLSP check battery — per diagram type: `start()` resolves;
|
|
28
59
|
* `RequestModel` responds with the expected kind (+ optional `expectResponse`
|
|
@@ -78,8 +109,9 @@ export function buildGlspChecks(options) {
|
|
|
78
109
|
driver.dispatch(diagram.requestModel());
|
|
79
110
|
await driver.nextAction(diagram.expectedResponseKind);
|
|
80
111
|
driver.dispatch(operation.action(driver));
|
|
112
|
+
await nextOperationReceipt(driver);
|
|
81
113
|
await driver.nextAction(operation.expectedResponseKind);
|
|
82
|
-
assert.ok(operation.expectMutated(driver), 'expectMutated was false — the create operation did not mutate the source model');
|
|
114
|
+
assert.ok(await operation.expectMutated(driver), 'expectMutated was false — the create operation did not mutate the source model');
|
|
83
115
|
}
|
|
84
116
|
finally {
|
|
85
117
|
driver.dispose();
|
package/lib/glsp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/glsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/glsp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import type { GlspConformanceDriver } from '../index.js';
|
|
10
|
+
/** Configuration for {@link connectGlspSocketDriver}. */
|
|
11
|
+
export interface GlspSocketDriverOptions<TAction extends {
|
|
12
|
+
readonly kind: string;
|
|
13
|
+
} = {
|
|
14
|
+
readonly kind: string;
|
|
15
|
+
}> {
|
|
16
|
+
readonly port: number;
|
|
17
|
+
/** Defaults to `127.0.0.1`. */
|
|
18
|
+
readonly host?: string;
|
|
19
|
+
/** The diagram type the client session is opened for. */
|
|
20
|
+
readonly diagramType: string;
|
|
21
|
+
/**
|
|
22
|
+
* The action kinds this client handles, which the server routes back to it.
|
|
23
|
+
* Declare every kind the server sends during the checks: one it sends that
|
|
24
|
+
* neither side handles fails the server's dispatch, and the session gets a
|
|
25
|
+
* rejected request or an error message instead.
|
|
26
|
+
*/
|
|
27
|
+
readonly clientActionKinds: readonly string[];
|
|
28
|
+
/** Defaults to a fresh id per driver, so drivers sharing one server never share a session. */
|
|
29
|
+
readonly clientSessionId?: string;
|
|
30
|
+
readonly applicationId?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The GLSP protocol version announced in `initialize`. The server refuses
|
|
33
|
+
* `initialize` unless it equals its own, so a server on a newer protocol
|
|
34
|
+
* needs this. Defaults to `1.0.0`.
|
|
35
|
+
*/
|
|
36
|
+
readonly protocolVersion?: string;
|
|
37
|
+
/**
|
|
38
|
+
* The client's reply to a received action, sent back to the server, or
|
|
39
|
+
* `undefined` for none. A server that lays out on the client finishes a
|
|
40
|
+
* `requestModel` only once its `requestBounds` is answered with
|
|
41
|
+
* `computedBounds`, so a load without this stops half way. A reply is not a
|
|
42
|
+
* dispatch, as the GLSP client's own is an automatic answer to the server,
|
|
43
|
+
* so it leaves the point `nextAction` matches from where it was. A throw
|
|
44
|
+
* fails every pending and later wait with it.
|
|
45
|
+
*/
|
|
46
|
+
readonly respond?: (action: TAction) => TAction | undefined;
|
|
47
|
+
/** Default bound for {@link GlspConformanceDriver.nextAction}, and the bound on the TCP connect and on each `start()` request. */
|
|
48
|
+
readonly timeoutMs?: number;
|
|
49
|
+
}
|
|
50
|
+
/** A {@link GlspConformanceDriver} over a socket, with the actions it received. */
|
|
51
|
+
export interface GlspSocketDriver<TAction extends {
|
|
52
|
+
readonly kind: string;
|
|
53
|
+
}> extends GlspConformanceDriver<TAction> {
|
|
54
|
+
/** Every action the server sent to this session, in arrival order; append-only. */
|
|
55
|
+
readonly actions: ReadonlyArray<TAction>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Open a TCP connection to a GLSP server and wrap it as a driver. The session is
|
|
59
|
+
* not initialised until the kit calls `start()`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function connectGlspSocketDriver<TAction extends {
|
|
62
|
+
readonly kind: string;
|
|
63
|
+
}>(options: GlspSocketDriverOptions<TAction>): Promise<GlspSocketDriver<TAction>>;
|
|
64
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/glsp/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAclF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzD,yDAAyD;AACzD,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;IAC3G,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,SAAS,CAAC;IAC5D,kIAAkI;IAClI,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAE,SAAQ,qBAAqB,CAAC,OAAO,CAAC;IAChH,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC3C;AAgBD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpF,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAqJpC"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* The `@hydranium/conformance/glsp/node` subpath: a socket driver for the
|
|
11
|
+
* {@link GlspConformanceDriver} port, over a real TCP socket, for proving a
|
|
12
|
+
* deployed GLSP server rather than a container built in the test process.
|
|
13
|
+
*
|
|
14
|
+
* It speaks GLSP's JSON-RPC by method name, so like the rest of the kit it names
|
|
15
|
+
* no `@eclipse-glsp/*` type and the adopter's fixtures supply every action.
|
|
16
|
+
*/
|
|
17
|
+
import { randomUUID } from 'node:crypto';
|
|
18
|
+
import * as net from 'node:net';
|
|
19
|
+
import { createMessageConnection, SocketMessageReader, SocketMessageWriter } from 'vscode-jsonrpc/node';
|
|
20
|
+
const DEFAULT_PROTOCOL_VERSION = '1.0.0';
|
|
21
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
22
|
+
function isActionMessage(value) {
|
|
23
|
+
if (typeof value !== 'object' || value === null || !('clientId' in value) || !('action' in value)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const { action } = value;
|
|
27
|
+
return typeof action === 'object' && action !== null && 'kind' in action && typeof action.kind === 'string';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Open a TCP connection to a GLSP server and wrap it as a driver. The session is
|
|
31
|
+
* not initialised until the kit calls `start()`.
|
|
32
|
+
*/
|
|
33
|
+
export async function connectGlspSocketDriver(options) {
|
|
34
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
35
|
+
const clientSessionId = options.clientSessionId ?? `glsp-socket-${randomUUID()}`;
|
|
36
|
+
const socket = await openSocket(options.host ?? '127.0.0.1', options.port, timeoutMs);
|
|
37
|
+
const connection = createMessageConnection(new SocketMessageReader(socket), new SocketMessageWriter(socket), console);
|
|
38
|
+
const actions = [];
|
|
39
|
+
const send = (action) => {
|
|
40
|
+
// Fire-and-forget, so neither a closed connection, which throws here, nor
|
|
41
|
+
// a failed write reaches the caller; the wait that follows reports it.
|
|
42
|
+
try {
|
|
43
|
+
connection.sendNotification('process', { clientId: clientSessionId, action }).catch(() => undefined);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Already reported by the closed state every later wait reads.
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const consumed = new WeakSet();
|
|
50
|
+
// Where the last dispatch fell in `actions`; a wait matches only from here.
|
|
51
|
+
let dispatchedAt = 0;
|
|
52
|
+
const waiters = [];
|
|
53
|
+
// Why no awaited action can arrive any more, once something ended the session.
|
|
54
|
+
let ended;
|
|
55
|
+
// A wait still pending when the session ends fails at once, naming why,
|
|
56
|
+
// rather than at its timeout reading like a declined operation.
|
|
57
|
+
function end(reason, cause) {
|
|
58
|
+
ended ??= { reason, cause };
|
|
59
|
+
for (const waiter of waiters.splice(0)) {
|
|
60
|
+
waiter.fail(new Error(`${ended.reason} while waiting for '${waiter.kind}'`, { cause: ended.cause }));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const closedReason = `GLSP connection to session ${clientSessionId} closed`;
|
|
64
|
+
connection.onClose(() => end(closedReason));
|
|
65
|
+
connection.onNotification('process', (message) => {
|
|
66
|
+
if (!isActionMessage(message) || message.clientId !== clientSessionId) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// The fixture's own action type; the guard has checked the one field read here.
|
|
70
|
+
const action = message.action;
|
|
71
|
+
actions.push(action);
|
|
72
|
+
const index = waiters.findIndex(waiter => waiter.kind === action.kind);
|
|
73
|
+
if (index >= 0) {
|
|
74
|
+
const [waiter] = waiters.splice(index, 1);
|
|
75
|
+
consumed.add(action);
|
|
76
|
+
waiter.resolve(action);
|
|
77
|
+
}
|
|
78
|
+
// The connection only logs a handler's throw, so a fixture bug would
|
|
79
|
+
// otherwise surface as an unrelated wait timing out.
|
|
80
|
+
let reply;
|
|
81
|
+
try {
|
|
82
|
+
reply = options.respond?.(action);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
end(`respond threw on '${action.kind}' (${String(error)})`, error);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (reply) {
|
|
89
|
+
send(reply);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
connection.listen();
|
|
93
|
+
let disposed = false;
|
|
94
|
+
return {
|
|
95
|
+
actions,
|
|
96
|
+
async start() {
|
|
97
|
+
// Bounded, so a server that accepts the socket and never answers fails
|
|
98
|
+
// naming the request, when the runner's own timeout is the longer one.
|
|
99
|
+
await within(connection.sendRequest('initialize', {
|
|
100
|
+
applicationId: options.applicationId ?? 'hydranium-conformance',
|
|
101
|
+
protocolVersion: options.protocolVersion ?? DEFAULT_PROTOCOL_VERSION
|
|
102
|
+
}), timeoutMs, 'initialize');
|
|
103
|
+
await within(connection.sendRequest('initializeClientSession', {
|
|
104
|
+
clientSessionId,
|
|
105
|
+
diagramType: options.diagramType,
|
|
106
|
+
clientActionKinds: options.clientActionKinds
|
|
107
|
+
}), timeoutMs, 'initializeClientSession');
|
|
108
|
+
},
|
|
109
|
+
dispatch(action) {
|
|
110
|
+
dispatchedAt = actions.length;
|
|
111
|
+
send(action);
|
|
112
|
+
},
|
|
113
|
+
nextAction(kind, waitMs = timeoutMs) {
|
|
114
|
+
const existing = actions.find((action, index) => index >= dispatchedAt && action.kind === kind && !consumed.has(action));
|
|
115
|
+
if (existing) {
|
|
116
|
+
consumed.add(existing);
|
|
117
|
+
return Promise.resolve(existing);
|
|
118
|
+
}
|
|
119
|
+
if (ended) {
|
|
120
|
+
return Promise.reject(new Error(`${ended.reason}; no '${kind}' action can arrive`, { cause: ended.cause }));
|
|
121
|
+
}
|
|
122
|
+
return new Promise((resolve, reject) => {
|
|
123
|
+
const waiter = {
|
|
124
|
+
kind,
|
|
125
|
+
resolve: (action) => {
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
resolve(action);
|
|
128
|
+
},
|
|
129
|
+
fail: (error) => {
|
|
130
|
+
clearTimeout(timer);
|
|
131
|
+
reject(error);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const timer = setTimeout(() => {
|
|
135
|
+
const at = waiters.indexOf(waiter);
|
|
136
|
+
if (at >= 0) {
|
|
137
|
+
waiters.splice(at, 1);
|
|
138
|
+
}
|
|
139
|
+
// Naming what did arrive tells an operation the server declined
|
|
140
|
+
// (a status or nothing at all) apart from a transport that hangs,
|
|
141
|
+
// split at the last dispatch, before which no match counts.
|
|
142
|
+
const kindsIn = (from, to) => actions
|
|
143
|
+
.slice(from, to)
|
|
144
|
+
.map(action => action.kind)
|
|
145
|
+
.join(', ') || 'nothing';
|
|
146
|
+
const seen = dispatchedAt === 0
|
|
147
|
+
? `received: ${kindsIn(0)}`
|
|
148
|
+
: `received before the last dispatch, which a wait does not match: ${kindsIn(0, dispatchedAt)}; since: ${kindsIn(dispatchedAt)}`;
|
|
149
|
+
reject(new Error(`No '${kind}' action within ${waitMs}ms on session ${clientSessionId}; ${seen}`));
|
|
150
|
+
}, waitMs);
|
|
151
|
+
waiters.push(waiter);
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
dispose() {
|
|
155
|
+
if (disposed) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
disposed = true;
|
|
159
|
+
// A disposed connection fires no close event, so the waits end here.
|
|
160
|
+
end(closedReason);
|
|
161
|
+
connection.dispose();
|
|
162
|
+
socket.destroy();
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function within(request, timeoutMs, method) {
|
|
167
|
+
return new Promise((resolve, reject) => {
|
|
168
|
+
const timer = setTimeout(() => reject(new Error(`GLSP server did not answer '${method}' within ${timeoutMs}ms`)), timeoutMs);
|
|
169
|
+
request.then(value => {
|
|
170
|
+
clearTimeout(timer);
|
|
171
|
+
resolve(value);
|
|
172
|
+
}, (error) => {
|
|
173
|
+
clearTimeout(timer);
|
|
174
|
+
reject(error);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function openSocket(host, port, timeoutMs) {
|
|
179
|
+
return new Promise((resolve, reject) => {
|
|
180
|
+
const socket = net.createConnection({ host, port });
|
|
181
|
+
const timer = setTimeout(() => {
|
|
182
|
+
socket.destroy();
|
|
183
|
+
reject(new Error(`TCP connect to GLSP server at ${host}:${port} timed out after ${timeoutMs}ms`));
|
|
184
|
+
}, timeoutMs);
|
|
185
|
+
socket.once('connect', () => {
|
|
186
|
+
clearTimeout(timer);
|
|
187
|
+
resolve(socket);
|
|
188
|
+
});
|
|
189
|
+
socket.once('error', error => {
|
|
190
|
+
clearTimeout(timer);
|
|
191
|
+
reject(error);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/glsp/node/index.ts"],"names":[],"mappings":"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"}
|
package/lib/jest/index.js
CHANGED
|
@@ -38,7 +38,7 @@ const jestRunner = {
|
|
|
38
38
|
* grammar-bearing per language) and a ran-vs-skipped summary.
|
|
39
39
|
*/
|
|
40
40
|
export function runDataConformance(options) {
|
|
41
|
-
emitConformanceSuite(jestRunner, options.suiteTitle ?? '
|
|
41
|
+
emitConformanceSuite(jestRunner, options.suiteTitle ?? 'data-server conformance', buildDataChecks(options));
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Run the LSP conformance battery against an adopter's live server under Jest.
|
|
@@ -46,7 +46,7 @@ export function runDataConformance(options) {
|
|
|
46
46
|
* per language) and a ran-vs-skipped summary.
|
|
47
47
|
*/
|
|
48
48
|
export function runLspConformance(options) {
|
|
49
|
-
emitConformanceSuite(jestRunner, options.suiteTitle ?? 'conformance
|
|
49
|
+
emitConformanceSuite(jestRunner, options.suiteTitle ?? 'lsp conformance', buildLspChecks(options));
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* Run the GLSP conformance battery against an adopter's live diagram server
|
|
@@ -54,6 +54,6 @@ export function runLspConformance(options) {
|
|
|
54
54
|
* a ran-vs-skipped summary.
|
|
55
55
|
*/
|
|
56
56
|
export function runGlspConformance(options) {
|
|
57
|
-
emitConformanceSuite(jestRunner, options.suiteTitle ?? 'conformance
|
|
57
|
+
emitConformanceSuite(jestRunner, options.suiteTitle ?? 'glsp conformance', buildGlspChecks(options));
|
|
58
58
|
}
|
|
59
59
|
//# sourceMappingURL=index.js.map
|
package/lib/jest/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jest/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAA0B,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,eAAe,EAA+B,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,cAAc,EAA8B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAA2D,MAAM,kBAAkB,CAAC;AAc5G,8EAA8E;AAC9E,MAAM,UAAU,GAAsB;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;IAC5C,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAC/B,OAAuD;IAEvD,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jest/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAA0B,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,eAAe,EAA+B,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,cAAc,EAA8B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAA2D,MAAM,kBAAkB,CAAC;AAc5G,8EAA8E;AAC9E,MAAM,UAAU,GAAsB;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;IAC5C,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAC/B,OAAuD;IAEvD,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,yBAAyB,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA8B;IAC7D,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,iBAAiB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAC/B,OAAiD;IAEjD,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACxG,CAAC"}
|
package/lib/lsp/index.d.ts
CHANGED
|
@@ -6,9 +6,20 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
+
import type { Locale } from '@hydranium/protocol';
|
|
9
10
|
import type { Harness } from '@hydranium/protocol/testing';
|
|
10
11
|
import type { ConformanceCheck } from '../conformance-suite.js';
|
|
11
12
|
import { type LanguageFixture } from '../model.js';
|
|
13
|
+
/**
|
|
14
|
+
* Structural minimum of the `initialize` params the kit sends — only `locale`,
|
|
15
|
+
* which is the one field a check needs to vary.
|
|
16
|
+
*
|
|
17
|
+
* A real `InitializeParams` is assignable to this, so a driver typed against
|
|
18
|
+
* upstream's shape satisfies the port with no adapter.
|
|
19
|
+
*/
|
|
20
|
+
export interface LspConformanceInitializeParams {
|
|
21
|
+
readonly locale?: Locale;
|
|
22
|
+
}
|
|
12
23
|
/** Structural minimum of an LSP `InitializeResult` — only the baseline capabilities the kit asserts. */
|
|
13
24
|
export interface LspConformanceInitializeResult {
|
|
14
25
|
readonly capabilities: {
|
|
@@ -41,8 +52,17 @@ export interface LspConformanceDiagnostic {
|
|
|
41
52
|
* gives the kit the universal `dispose()` teardown.
|
|
42
53
|
*/
|
|
43
54
|
export interface LspConformanceDriver extends Harness {
|
|
44
|
-
/**
|
|
45
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Drive the `initialize` → `initialized` handshake; resolve with the
|
|
57
|
+
* (structurally-minimal) result.
|
|
58
|
+
*
|
|
59
|
+
* `params` is optional and every field in it is too, so a driver that ignores
|
|
60
|
+
* the argument entirely still satisfies this port — which is what keeps
|
|
61
|
+
* adding a field here from being a breaking change. `locale` is the reading
|
|
62
|
+
* user's language, declared by the client because only the client knows it;
|
|
63
|
+
* the render check below is the only caller that passes anything.
|
|
64
|
+
*/
|
|
65
|
+
initialize(params?: LspConformanceInitializeParams): Promise<LspConformanceInitializeResult>;
|
|
46
66
|
/** Send `didOpen` for `uri` with full `text` under `languageId`. */
|
|
47
67
|
openDocument(uri: string, text: string, languageId: string, version?: number): void;
|
|
48
68
|
/** Send `didChange` for `uri` as a single full-text replacement at `version`. */
|
|
@@ -68,7 +88,7 @@ export interface LspConformanceOptions {
|
|
|
68
88
|
readonly connect: () => LspConformanceDriver | Promise<LspConformanceDriver>;
|
|
69
89
|
/** Per-language fixtures; the grammar-bearing checks run once per language. */
|
|
70
90
|
readonly languages: ReadonlyArray<LanguageFixture>;
|
|
71
|
-
/** Suite title override. Default `'conformance
|
|
91
|
+
/** Suite title override. Default `'lsp conformance'`. */
|
|
72
92
|
readonly suiteTitle?: string;
|
|
73
93
|
}
|
|
74
94
|
/**
|