@tui-sandbox/library 10.5.1 → 10.6.1
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/CHANGELOG.md +14 -0
- package/dist/browser/assets/index-BYvynUT_.css +32 -0
- package/dist/browser/assets/index-NiH4zpUV.js +9 -0
- package/dist/browser/index.html +2 -2
- package/dist/src/browser/neovim-client.d.ts +16 -1
- package/dist/src/browser/neovim-client.js.map +1 -1
- package/dist/src/client/terminal-config.d.ts +13 -0
- package/dist/src/client/terminal-config.js +21 -0
- package/dist/src/client/terminal-config.js.map +1 -0
- package/dist/src/client/terminal-terminal-client.d.ts +4 -2
- package/dist/src/client/terminal-terminal-client.js +18 -6
- package/dist/src/client/terminal-terminal-client.js.map +1 -1
- package/dist/src/client/websocket-client.d.ts +2 -2
- package/dist/src/client/websocket-client.js +3 -3
- package/dist/src/client/websocket-client.js.map +1 -1
- package/dist/src/server/applications/neovim/NeovimApplication.js +5 -2
- package/dist/src/server/applications/neovim/NeovimApplication.js.map +1 -1
- package/dist/src/server/cypress-support/contents.js +15 -3
- package/dist/src/server/cypress-support/contents.js.map +1 -1
- package/dist/src/server/types.d.ts +11 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/browser/neovim-client.ts +19 -2
- package/src/client/terminal-config.ts +25 -0
- package/src/client/terminal-terminal-client.ts +23 -8
- package/src/client/websocket-client.ts +4 -4
- package/src/server/applications/neovim/NeovimApplication.ts +4 -3
- package/src/server/cypress-support/contents.ts +15 -3
- package/src/server/types.ts +12 -0
- package/dist/browser/assets/index-CO9qJUD3.js +0 -9
- package/dist/browser/assets/index-D6fBrqAi.css +0 -32
package/dist/browser/index.html
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<title>tui-sandbox integration tests</title>
|
|
6
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
6
|
+
<script type="module" crossorigin src="/assets/index-NiH4zpUV.js"></script>
|
|
7
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BYvynUT_.css">
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<div id="app"></div>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Terminal } from "@xterm/xterm";
|
|
2
|
+
import type { TuiTerminalApi } from "../client/websocket-client.js";
|
|
1
3
|
import type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput } from "../server/applications/neovim/neovimRouter.js";
|
|
2
4
|
import type { StartTerminalGenericArguments } from "../server/applications/terminal/TerminalTestApplication.js";
|
|
3
5
|
import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
|
|
@@ -12,10 +14,23 @@ export type GenericNeovimBrowserApi = {
|
|
|
12
14
|
declare global {
|
|
13
15
|
interface Window {
|
|
14
16
|
startNeovim(startArguments?: StartNeovimGenericArguments): Promise<GenericNeovimBrowserApi>;
|
|
15
|
-
startTerminalApplication(args:
|
|
17
|
+
startTerminalApplication(args: StartTerminalBrowserArguments): Promise<GenericTerminalBrowserApi>;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
export type GenericTerminalBrowserApi = {
|
|
19
21
|
dir: TestDirectory;
|
|
20
22
|
runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
|
|
21
23
|
};
|
|
24
|
+
export type BrowserTerminalSettings = {
|
|
25
|
+
configureTerminal?: (term: {
|
|
26
|
+
terminal: Terminal;
|
|
27
|
+
api: TuiTerminalApi;
|
|
28
|
+
recipes: {
|
|
29
|
+
supportDA1: () => void;
|
|
30
|
+
};
|
|
31
|
+
}) => void;
|
|
32
|
+
};
|
|
33
|
+
export type StartTerminalBrowserArguments = {
|
|
34
|
+
serverSettings: StartTerminalGenericArguments;
|
|
35
|
+
browserSettings: BrowserTerminalSettings;
|
|
36
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neovim-client.js","sourceRoot":"","sources":["../../../src/browser/neovim-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"neovim-client.js","sourceRoot":"","sources":["../../../src/browser/neovim-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAgB9E,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAElD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAc,MAAM,CAAC,CAAA;AACvD,IAAI,CAAC,GAAG,EAAE,CAAC;IACT,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzC,CAAC;AAED,qEAAqE;AACrE,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAA;AAClE,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAA;AAUtE,+CAA+C;AAC/C,MAAM,CAAC,WAAW,GAAG,KAAK,WAAW,SAAuC;IAC1E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,CAAA;IACjC,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QAC7C,8BAA8B,EAAE,SAAS,EAAE,8BAA8B;QACzE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,kBAAkB;QACnD,0BAA0B,EAAE,SAAS,EAAE,0BAA0B,IAAI,EAAE;KACxE,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAA4B;QAChD,uBAAuB,CAAC,KAAiC;YACvD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QACD,UAAU,CAAC,KAAK;YACd,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC;QACD,cAAc,CAAC,KAAK;YAClB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;QACD,YAAY,CAAC,KAAK;YAChB,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;QACD,GAAG,EAAE,aAAa;KACnB,CAAA;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AA6BD,+CAA+C;AAC/C,MAAM,CAAC,wBAAwB,GAAG,KAAK,WACrC,IAAmC;IAEnC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,CAAA;IACrC,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAEnE,MAAM,kBAAkB,GAA8B;QACpD,GAAG,EAAE,aAAa;QAClB,uBAAuB,CAAC,KAAK;YAC3B,OAAO,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC;KACF,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Terminal } from "@xterm/xterm";
|
|
2
|
+
import type { TuiTerminalApi } from "./websocket-client.js";
|
|
3
|
+
/** DA1—Primary Device Attributes
|
|
4
|
+
* In this DA exchange, the host asks for the terminal's architectural class and basic attributes.
|
|
5
|
+
* https://vt100.net/docs/vt510-rm/DA1.html
|
|
6
|
+
*
|
|
7
|
+
* Terminal Response
|
|
8
|
+
* The terminal responds by sending its architectural class and basic
|
|
9
|
+
* attributes to the host. This response depends on the terminal's current
|
|
10
|
+
* operating VT level.
|
|
11
|
+
*/
|
|
12
|
+
export declare function supportDA1(terminal: Terminal, api: TuiTerminalApi): void;
|
|
13
|
+
export type FakeDA1Response = "[?1;2c";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** DA1—Primary Device Attributes
|
|
2
|
+
* In this DA exchange, the host asks for the terminal's architectural class and basic attributes.
|
|
3
|
+
* https://vt100.net/docs/vt510-rm/DA1.html
|
|
4
|
+
*
|
|
5
|
+
* Terminal Response
|
|
6
|
+
* The terminal responds by sending its architectural class and basic
|
|
7
|
+
* attributes to the host. This response depends on the terminal's current
|
|
8
|
+
* operating VT level.
|
|
9
|
+
*/
|
|
10
|
+
export function supportDA1(terminal, api) {
|
|
11
|
+
// Register a CSI handler for the 'c' command (ESC [ c)
|
|
12
|
+
terminal.parser.registerCsiHandler({ final: "c" }, () => {
|
|
13
|
+
// Emit a fake DA1 response: ESC [ ? 1 ; 2 c
|
|
14
|
+
api.onKeyPress({
|
|
15
|
+
key: "\x1b" + "[?1;2c",
|
|
16
|
+
domEvent: new KeyboardEvent("keydown", { key: "Escape" }),
|
|
17
|
+
});
|
|
18
|
+
return true; // prevent default handling
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=terminal-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-config.js","sourceRoot":"","sources":["../../../src/client/terminal-config.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,GAAmB;IAChE,uDAAuD;IACvD,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE;QACtD,4CAA4C;QAC5C,GAAG,CAAC,UAAU,CAAC;YACb,GAAG,EAAE,MAAM,GAAI,QAAmC;YAClD,QAAQ,EAAE,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;SAC1D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA,CAAC,2BAA2B;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import "@xterm/xterm/css/xterm.css";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StartTerminalBrowserArguments } from "../browser/neovim-client.js";
|
|
3
3
|
import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
|
|
4
4
|
import type { BlockingShellCommandOutput, TestDirectory } from "../server/types.js";
|
|
5
5
|
import "./style.css";
|
|
6
|
+
import type { TuiTerminalApi } from "./websocket-client.js";
|
|
6
7
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
7
8
|
* connection to the server side terminal application api. */
|
|
8
9
|
export declare class TerminalTerminalClient {
|
|
@@ -10,7 +11,8 @@ export declare class TerminalTerminalClient {
|
|
|
10
11
|
private readonly tabId;
|
|
11
12
|
private readonly terminal;
|
|
12
13
|
private readonly trpc;
|
|
14
|
+
terminalApi: TuiTerminalApi;
|
|
13
15
|
constructor(app: HTMLElement);
|
|
14
|
-
startTerminalApplication(args:
|
|
16
|
+
startTerminalApplication(args: StartTerminalBrowserArguments): Promise<TestDirectory>;
|
|
15
17
|
runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
|
|
16
18
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createTRPCClient, httpBatchLink, httpSubscriptionLink, splitLink } from "@trpc/client";
|
|
2
2
|
import "@xterm/xterm/css/xterm.css";
|
|
3
3
|
import "./style.css";
|
|
4
|
+
import { supportDA1 } from "./terminal-config.js";
|
|
4
5
|
import { getTabId, startTerminal } from "./websocket-client.js";
|
|
5
6
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
6
7
|
* connection to the server side terminal application api. */
|
|
@@ -9,6 +10,7 @@ export class TerminalTerminalClient {
|
|
|
9
10
|
tabId;
|
|
10
11
|
terminal;
|
|
11
12
|
trpc;
|
|
13
|
+
terminalApi;
|
|
12
14
|
constructor(app) {
|
|
13
15
|
const trpc = createTRPCClient({
|
|
14
16
|
links: [
|
|
@@ -26,7 +28,7 @@ export class TerminalTerminalClient {
|
|
|
26
28
|
this.trpc = trpc;
|
|
27
29
|
this.tabId = getTabId();
|
|
28
30
|
const tabId = this.tabId;
|
|
29
|
-
|
|
31
|
+
this.terminalApi = {
|
|
30
32
|
onMouseEvent(data) {
|
|
31
33
|
void trpc.terminal.sendStdin.mutate({ tabId, data }).catch((error) => {
|
|
32
34
|
console.error(`Error sending mouse event`, error);
|
|
@@ -35,10 +37,11 @@ export class TerminalTerminalClient {
|
|
|
35
37
|
onKeyPress(event) {
|
|
36
38
|
void trpc.terminal.sendStdin.mutate({ tabId, data: event.key });
|
|
37
39
|
},
|
|
38
|
-
}
|
|
40
|
+
};
|
|
41
|
+
const terminal = startTerminal(app, this.terminalApi);
|
|
39
42
|
this.terminal = terminal;
|
|
40
|
-
// start listening to
|
|
41
|
-
//
|
|
43
|
+
// start listening to stdout - this will take some (short) amount of time
|
|
44
|
+
// to complete
|
|
42
45
|
this.ready = new Promise(resolve => {
|
|
43
46
|
console.log("Subscribing to stdout");
|
|
44
47
|
trpc.terminal.onStdout.subscribe({ client: tabId }, {
|
|
@@ -56,11 +59,20 @@ export class TerminalTerminalClient {
|
|
|
56
59
|
}
|
|
57
60
|
async startTerminalApplication(args) {
|
|
58
61
|
await this.ready;
|
|
62
|
+
args.browserSettings.configureTerminal?.({
|
|
63
|
+
terminal: this.terminal,
|
|
64
|
+
api: this.terminalApi,
|
|
65
|
+
recipes: {
|
|
66
|
+
supportDA1: () => {
|
|
67
|
+
supportDA1(this.terminal, this.terminalApi);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
});
|
|
59
71
|
const testDirectory = await this.trpc.terminal.start.mutate({
|
|
60
72
|
tabId: this.tabId,
|
|
61
73
|
startTerminalArguments: {
|
|
62
|
-
additionalEnvironmentVariables: args.additionalEnvironmentVariables,
|
|
63
|
-
commandToRun: args.commandToRun,
|
|
74
|
+
additionalEnvironmentVariables: args.serverSettings.additionalEnvironmentVariables,
|
|
75
|
+
commandToRun: args.serverSettings.commandToRun,
|
|
64
76
|
terminalDimensions: {
|
|
65
77
|
cols: this.terminal.cols,
|
|
66
78
|
rows: this.terminal.rows,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-terminal-client.js","sourceRoot":"","sources":["../../../src/client/terminal-terminal-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE/F,OAAO,4BAA4B,CAAA;AAKnC,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE/D;6DAC6D;AAC7D,MAAM,OAAO,sBAAsB;IAChB,KAAK,CAAe;IACpB,KAAK,CAAmB;IACxB,QAAQ,CAAU;IAClB,IAAI,CAAgD;
|
|
1
|
+
{"version":3,"file":"terminal-terminal-client.js","sourceRoot":"","sources":["../../../src/client/terminal-terminal-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,14 @@ import { Terminal } from "@xterm/xterm";
|
|
|
2
2
|
import "@xterm/xterm/css/xterm.css";
|
|
3
3
|
import type { TabId } from "../server/utilities/tabId.ts";
|
|
4
4
|
import "./style.css";
|
|
5
|
-
export type
|
|
5
|
+
export type TuiTerminalApi = {
|
|
6
6
|
onMouseEvent: (data: string) => void;
|
|
7
7
|
onKeyPress: (event: {
|
|
8
8
|
key: string;
|
|
9
9
|
domEvent: KeyboardEvent;
|
|
10
10
|
}) => void;
|
|
11
11
|
};
|
|
12
|
-
export declare function startTerminal(app: HTMLElement,
|
|
12
|
+
export declare function startTerminal(app: HTMLElement, api: TuiTerminalApi): Terminal;
|
|
13
13
|
/** An identifier unique to a browser tab, so that each tab can have its own
|
|
14
14
|
* unique session that persists across page reloads. */
|
|
15
15
|
export declare function getTabId(): TabId;
|
|
@@ -5,7 +5,7 @@ import "@xterm/xterm/css/xterm.css";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import "./style.css";
|
|
7
7
|
import { validateMouseEvent } from "./validateMouseEvent.js";
|
|
8
|
-
export function startTerminal(app,
|
|
8
|
+
export function startTerminal(app, api) {
|
|
9
9
|
const terminal = new Terminal({
|
|
10
10
|
cursorBlink: false,
|
|
11
11
|
convertEol: true,
|
|
@@ -50,11 +50,11 @@ export function startTerminal(app, options) {
|
|
|
50
50
|
}
|
|
51
51
|
const mouseEvent = validateMouseEvent(data);
|
|
52
52
|
if (mouseEvent) {
|
|
53
|
-
|
|
53
|
+
api.onMouseEvent(mouseEvent);
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
terminal.onKey(event => {
|
|
57
|
-
|
|
57
|
+
api.onKeyPress(event);
|
|
58
58
|
});
|
|
59
59
|
return terminal;
|
|
60
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../../src/client/websocket-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,4BAA4B,CAAA;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAM5D,MAAM,UAAU,aAAa,CAAC,GAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../../src/client/websocket-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,12 +103,15 @@ export class NeovimApplication {
|
|
|
103
103
|
exec(`rm -rf ${this.state.testDirectory.rootPathAbsolute}`);
|
|
104
104
|
try {
|
|
105
105
|
await access(this.state.socketPath);
|
|
106
|
-
|
|
106
|
+
console.warn(`Socket file ${this.state.socketPath} should have been removed by neovim when it exited.`);
|
|
107
|
+
return;
|
|
107
108
|
}
|
|
108
109
|
catch (e) {
|
|
109
110
|
// all good
|
|
110
111
|
}
|
|
111
|
-
|
|
112
|
+
finally {
|
|
113
|
+
this.state = undefined;
|
|
114
|
+
}
|
|
112
115
|
}
|
|
113
116
|
}
|
|
114
117
|
//# sourceMappingURL=NeovimApplication.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeovimApplication.js","sourceRoot":"","sources":["../../../../../src/server/applications/neovim/NeovimApplication.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NeovimApplication.js","sourceRoot":"","sources":["../../../../../src/server/applications/neovim/NeovimApplication.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,YAAY,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAA;AAE5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAoEjE,MAAM,OAAO,iBAAiB;IAKT;IACD;IALX,KAAK,CAA6B;IACzB,MAAM,CAAc;IAEpC,YACmB,mBAA2B,EAC5B,cAA2C,IAAI,2BAA2B,EAAE;QAD3E,wBAAmB,GAAnB,mBAAmB,CAAQ;QAC5B,gBAAW,GAAX,WAAW,CAAiE;QAE5F,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAA;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,uBAAuB,CAClC,aAA4B,EAC5B,SAAsC,EACtC,kBAAsC;QAEtC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;QACjC,MAAM,CACJ,IAAI,CAAC,KAAK,KAAK,SAAS,EACxB,kGAAkG,CACnG,CAAA;QAED,MAAM,eAAe,GAAa,EAAE,CAAA;QAEpC,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC;YACzC,KAAK,MAAM,YAAY,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC;gBAChE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAA;gBAC1F,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACjG,CAAC;gBAED,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;gBAClC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;YAC1E,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,0DAA0D;YAC1D,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;gBAChE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1B,qDAAqD;YACrD,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAClC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;YACjD,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClC,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,GAAG,MAAM,EAAE,4BAA4B,EAAE,EAAE,CAAA;QAC9D,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAE1B,MAAM,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,8BAA8B,CAAC,CAAA;YACjG,OAAO,mBAAmB,CAAC,KAAK,CAAC;gBAC/B,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,eAAe;gBAErB,GAAG,EAAE,IAAI,CAAC,mBAAmB;gBAC7B,GAAG,EAAE,GAAG;gBACR,UAAU,EAAE,kBAAkB;gBAE9B,gBAAgB,CAAC,IAAI;oBACnB,IAAqB,CAAA;oBACrB,MAAM,CAAC,IAAI,CAAC,QAAwC,EAAE,IAAI,CAAC,CAAA;gBAC7D,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAA;QAC9C,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,gFAAgF,CAAC,CAAA;QAEjH,IAAI,CAAC,KAAK,GAAG;YACX,aAAa;YACb,UAAU;YACV,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC;SACrC,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;IACxD,CAAC;IAEM,uBAAuB,CAC5B,aAA4B,EAC5B,8BAAuD;QAEvD,OAAO;YACL,GAAG,OAAO,CAAC,GAAG;YACd,IAAI,EAAE,aAAa,CAAC,gBAAgB;YAEpC,sEAAsE;YACtE,wCAAwC;YACxC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAChE,uEAAuE;YACvE,iEAAiE;YACjE,aAAa;YACb,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC;YAExE,GAAG,8BAA8B;SACkB,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;QAE7C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;QAEvB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAE3D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,UAAU,qDAAqD,CAAC,CAAA;YACvG,OAAM;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACxB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -9,10 +9,12 @@ export async function createCypressSupportFileContents() {
|
|
|
9
9
|
// This file is autogenerated by tui-sandbox. Do not edit it directly.
|
|
10
10
|
//
|
|
11
11
|
import type {
|
|
12
|
+
BrowserTerminalSettings,
|
|
12
13
|
GenericNeovimBrowserApi,
|
|
13
14
|
GenericTerminalBrowserApi,
|
|
14
15
|
} from "@tui-sandbox/library/dist/src/browser/neovim-client"
|
|
15
16
|
import type {
|
|
17
|
+
AllKeys,
|
|
16
18
|
BlockingShellCommandOutput,
|
|
17
19
|
RunExCommandOutput,
|
|
18
20
|
RunLuaCodeOutput,
|
|
@@ -129,9 +131,17 @@ Cypress.Commands.add("nvim_isRunning", () => {
|
|
|
129
131
|
})
|
|
130
132
|
})
|
|
131
133
|
|
|
132
|
-
Cypress.Commands.add("startTerminalApplication", (args: StartTerminalGenericArguments) => {
|
|
134
|
+
Cypress.Commands.add("startTerminalApplication", (args: StartTerminalGenericArguments & BrowserTerminalSettings) => {
|
|
133
135
|
cy.window().then(async win => {
|
|
134
|
-
const terminal: GenericTerminalBrowserApi = await win.startTerminalApplication(
|
|
136
|
+
const terminal: GenericTerminalBrowserApi = await win.startTerminalApplication({
|
|
137
|
+
serverSettings: {
|
|
138
|
+
commandToRun: args.commandToRun,
|
|
139
|
+
additionalEnvironmentVariables: args.additionalEnvironmentVariables,
|
|
140
|
+
} satisfies AllKeys<StartTerminalGenericArguments>,
|
|
141
|
+
browserSettings: {
|
|
142
|
+
configureTerminal: args.configureTerminal,
|
|
143
|
+
} satisfies AllKeys<BrowserTerminalSettings>,
|
|
144
|
+
})
|
|
135
145
|
|
|
136
146
|
Cypress.Commands.addAll({
|
|
137
147
|
terminal_runBlockingShellCommand: terminal.runBlockingShellCommand,
|
|
@@ -175,7 +185,9 @@ declare global {
|
|
|
175
185
|
namespace Cypress {
|
|
176
186
|
interface Chainable {
|
|
177
187
|
startNeovim(args?: MyStartNeovimServerArguments): Chainable<NeovimContext>
|
|
178
|
-
startTerminalApplication(
|
|
188
|
+
startTerminalApplication(
|
|
189
|
+
args: StartTerminalGenericArguments & BrowserTerminalSettings
|
|
190
|
+
): Chainable<TerminalTestApplicationContext>
|
|
179
191
|
|
|
180
192
|
/** Types text into the terminal, making the terminal application receive
|
|
181
193
|
* the keystrokes as input. Requires neovim to be running. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contents.js","sourceRoot":"","sources":["../../../../src/server/cypress-support/contents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEjD,MAAM,CAAC,KAAK,UAAU,gCAAgC;IACpD,uEAAuE;IACvE,2BAA2B;IAC3B,IAAI,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"contents.js","sourceRoot":"","sources":["../../../../src/server/cypress-support/contents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEjD,MAAM,CAAC,KAAK,UAAU,gCAAgC;IACpD,uEAAuE;IACvE,2BAA2B;IAC3B,IAAI,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoOZ,CAAA;IAEC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAA;IAC/C,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;IAE/D,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -45,3 +45,14 @@ export type RunLuaCodeOutput = {
|
|
|
45
45
|
export type RunExCommandOutput = {
|
|
46
46
|
value?: string;
|
|
47
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Require all of an object's keys to be set explicitly. This is useful for
|
|
50
|
+
* readability: writing all the keys makes their presence explicit. They could
|
|
51
|
+
* also be added via a spread operator (...obj), but in that case the following
|
|
52
|
+
* cases are unclear:
|
|
53
|
+
*
|
|
54
|
+
* - extra keys might be included because TypeScript does not check for them
|
|
55
|
+
* - if the target object type has optional keys, they might be missing. In
|
|
56
|
+
* this case, they will never get set
|
|
57
|
+
**/
|
|
58
|
+
export type AllKeys<T extends Record<never, never>> = Record<keyof T, unknown>;
|