@tui-sandbox/library 11.11.2 → 12.1.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.
- package/dist/browser/assets/index-BITC1TRH.js +9 -0
- package/dist/browser/assets/index-CYUPHpRk.css +1 -0
- package/dist/browser/index.html +2 -2
- package/dist/src/browser/neovim-client.d.ts +5 -0
- package/dist/src/browser/neovim-client.js +4 -0
- package/dist/src/browser/neovim-client.js.map +1 -1
- package/dist/src/client/clipboard.d.ts +18 -0
- package/dist/src/client/clipboard.js +19 -0
- package/dist/src/client/clipboard.js.map +1 -0
- package/dist/src/client/index.d.ts +2 -0
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/client/neovim-terminal-client.d.ts +2 -2
- package/dist/src/client/neovim-terminal-client.js +5 -2
- package/dist/src/client/neovim-terminal-client.js.map +1 -1
- package/dist/src/client/startTerminal.d.ts +2 -2
- package/dist/src/client/startTerminal.js +18 -15
- package/dist/src/client/startTerminal.js.map +1 -1
- package/dist/src/client/terminal-terminal-client.d.ts +3 -2
- package/dist/src/client/terminal-terminal-client.js +5 -1
- package/dist/src/client/terminal-terminal-client.js.map +1 -1
- package/dist/src/server/cypress-support/contents.js +38 -11
- package/dist/src/server/cypress-support/contents.js.map +1 -1
- package/dist/src/server/index.d.ts +4 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +35 -8
- package/CHANGELOG.md +0 -941
- package/dist/browser/assets/index-BQzArJW3.js +0 -9
- package/dist/browser/assets/index-hkmOP7rU.css +0 -1
- package/index.html +0 -11
- package/src/browser/neovim-client.ts +0 -126
- package/src/client/MyNeovimConfigModification.test.ts +0 -25
- package/src/client/MyNeovimConfigModification.ts +0 -8
- package/src/client/color-utilities.test.ts +0 -10
- package/src/client/color-utilities.ts +0 -9
- package/src/client/cypress-assertions.ts +0 -35
- package/src/client/index.ts +0 -4
- package/src/client/neovim-terminal-client.ts +0 -130
- package/src/client/public/DejaVuSansMNerdFontMono-Regular.ttf +0 -0
- package/src/client/startTerminal.ts +0 -97
- package/src/client/style.css +0 -32
- package/src/client/terminal-config.ts +0 -25
- package/src/client/terminal-terminal-client.ts +0 -106
- package/src/client/validateMouseEvent.ts +0 -22
- package/src/scripts/commands/commandRun.ts +0 -68
- package/src/scripts/commands/commandTuiNeovimExec.ts +0 -36
- package/src/scripts/commands/commandTuiNeovimPrepare.ts +0 -12
- package/src/scripts/commands/commandTuiStart.ts +0 -36
- package/src/scripts/parseArguments.test.ts +0 -28
- package/src/scripts/parseArguments.ts +0 -66
- package/src/scripts/resolveConfig.test.ts +0 -78
- package/src/scripts/resolveTuiConfig.ts +0 -65
- package/src/scripts/tui.ts +0 -77
- package/src/server/TestServer.ts +0 -73
- package/src/server/applications/neovim/NeovimApplication.ts +0 -236
- package/src/server/applications/neovim/NeovimJavascriptApiClient.test.ts +0 -48
- package/src/server/applications/neovim/NeovimJavascriptApiClient.ts +0 -68
- package/src/server/applications/neovim/api.ts +0 -257
- package/src/server/applications/neovim/environment/TempDirectory.ts +0 -18
- package/src/server/applications/neovim/environment/createTempDir.test.ts +0 -29
- package/src/server/applications/neovim/environment/createTempDir.ts +0 -91
- package/src/server/applications/neovim/neovimRouter.ts +0 -100
- package/src/server/applications/neovim/prepareNewTestDirectory.test.ts +0 -32
- package/src/server/applications/neovim/prepareNewTestDirectory.ts +0 -21
- package/src/server/applications/terminal/TerminalTestApplication.ts +0 -101
- package/src/server/applications/terminal/api.ts +0 -89
- package/src/server/applications/terminal/runBlockingShellCommand.test.ts +0 -41
- package/src/server/applications/terminal/runBlockingShellCommand.ts +0 -64
- package/src/server/applications/terminal/terminalRouter.ts +0 -47
- package/src/server/blockingCommandInputSchema.test.ts +0 -24
- package/src/server/blockingCommandInputSchema.ts +0 -27
- package/src/server/config.test.ts +0 -7
- package/src/server/config.ts +0 -18
- package/src/server/connection/trpc.ts +0 -3
- package/src/server/cypress-support/contents.ts +0 -245
- package/src/server/cypress-support/createCypressSupportFile.test.ts +0 -69
- package/src/server/cypress-support/createCypressSupportFile.ts +0 -56
- package/src/server/dirtree/index.test.ts +0 -352
- package/src/server/dirtree/index.ts +0 -144
- package/src/server/dirtree/json-to-zod.ts +0 -60
- package/src/server/index.ts +0 -6
- package/src/server/server.ts +0 -34
- package/src/server/types.ts +0 -98
- package/src/server/updateTestdirectorySchemaFile.test.ts +0 -49
- package/src/server/updateTestdirectorySchemaFile.ts +0 -71
- package/src/server/utilities/DisposableSingleApplication.test.ts +0 -92
- package/src/server/utilities/DisposableSingleApplication.ts +0 -49
- package/src/server/utilities/Lazy.ts +0 -16
- package/src/server/utilities/TerminalApplication.ts +0 -100
- package/src/server/utilities/generator.test.ts +0 -50
- package/src/server/utilities/generator.ts +0 -12
- package/src/server/utilities/tabId.ts +0 -4
- package/src/server/utilities/timeout.ts +0 -3
- package/src/server/utilities/timeoutable.ts +0 -19
- package/tsconfig.json +0 -31
- package/vite.config.js +0 -27
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}@font-face{font-family:DejaVuSansMNerdFontMono;src:url(/assets/DejaVuSansMNerdFontMono-Regular-CRJgiq0O.ttf);font-weight:400;font-style:normal}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background-color:#000}#app{width:100vw;height:100vh;display:flex}*{font-family:DejaVuSansMNerdFontMono,monospace}.xterm .xterm-viewport{overflow-y:hidden}body{margin:0;overflow:hidden}
|
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-BITC1TRH.js"></script>
|
|
7
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CYUPHpRk.css">
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<div id="app"></div>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Terminal } from "@xterm/xterm";
|
|
2
|
+
import "@xterm/xterm/css/xterm.css";
|
|
3
|
+
import type { InMemoryClipboard } from "../client/clipboard.js";
|
|
2
4
|
import type { TuiTerminalApi } from "../client/startTerminal.js";
|
|
5
|
+
import "../client/style.css";
|
|
3
6
|
import type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput, RunLuaFileClientInput } from "../server/applications/neovim/neovimRouter.js";
|
|
4
7
|
import type { StartTerminalGenericArguments } from "../server/applications/terminal/TerminalTestApplication.js";
|
|
5
8
|
import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
|
|
@@ -11,6 +14,7 @@ export type GenericNeovimBrowserApi = {
|
|
|
11
14
|
waitForLuaCode(input: PollLuaCodeClientInput): Promise<RunLuaCodeOutput>;
|
|
12
15
|
runExCommand(input: ExCommandClientInput): Promise<RunExCommandOutput>;
|
|
13
16
|
dir: TestDirectory;
|
|
17
|
+
clipboard: InMemoryClipboard;
|
|
14
18
|
};
|
|
15
19
|
declare global {
|
|
16
20
|
interface Window {
|
|
@@ -21,6 +25,7 @@ declare global {
|
|
|
21
25
|
export type GenericTerminalBrowserApi = {
|
|
22
26
|
dir: TestDirectory;
|
|
23
27
|
runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
|
|
28
|
+
clipboard: InMemoryClipboard;
|
|
24
29
|
};
|
|
25
30
|
export type BrowserTerminalSettings = {
|
|
26
31
|
configureTerminal?: (term: {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import "@xterm/xterm/css/xterm.css";
|
|
1
2
|
import { NeovimTerminalClient } from "../client/neovim-terminal-client.js";
|
|
3
|
+
import "../client/style.css";
|
|
2
4
|
import { TerminalTerminalClient } from "../client/terminal-terminal-client.js";
|
|
3
5
|
import { Lazy } from "../server/utilities/Lazy.js";
|
|
4
6
|
const app = document.querySelector("#app");
|
|
@@ -35,6 +37,7 @@ window.startNeovim = async function (startArgs) {
|
|
|
35
37
|
return neovim.runExCommand(input);
|
|
36
38
|
},
|
|
37
39
|
dir: testDirectory,
|
|
40
|
+
clipboard: neovim.clipboard,
|
|
38
41
|
};
|
|
39
42
|
return neovimBrowserApi;
|
|
40
43
|
};
|
|
@@ -47,6 +50,7 @@ window.startTerminalApplication = async function (args) {
|
|
|
47
50
|
runBlockingShellCommand(input) {
|
|
48
51
|
return terminal.runBlockingShellCommand(input);
|
|
49
52
|
},
|
|
53
|
+
clipboard: terminal.clipboard,
|
|
50
54
|
};
|
|
51
55
|
return terminalBrowserApi;
|
|
52
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neovim-client.js","sourceRoot":"","sources":["../../../src/browser/neovim-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAiB9E,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;
|
|
1
|
+
{"version":3,"file":"neovim-client.js","sourceRoot":"","sources":["../../../src/browser/neovim-client.ts"],"names":[],"mappings":"AACA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1E,OAAO,qBAAqB,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAiB9E,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;AAYtE,+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;QACvE,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS,EAAE,YAAY;KACS,CAAC,CAAA;IAEjD,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,MAAM,CAAC,KAAK;YACV,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,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;QAClB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAA;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AAyCD,+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;QACD,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClipboardSelectionType, IClipboardProvider } from "@xterm/addon-clipboard";
|
|
2
|
+
export type InMemoryClipboard = {
|
|
3
|
+
/**
|
|
4
|
+
* Get the system clipboard contents. This seems to be the default on osx. If
|
|
5
|
+
* you know what other systems use this by default, please open an issue or
|
|
6
|
+
* PR to enhance this documentation!
|
|
7
|
+
*/
|
|
8
|
+
system(): string;
|
|
9
|
+
/** Get the primary clipboard contents. */
|
|
10
|
+
primary(): string;
|
|
11
|
+
};
|
|
12
|
+
export declare class InMemoryClipboardProvider implements IClipboardProvider, InMemoryClipboard {
|
|
13
|
+
private clipboardContents;
|
|
14
|
+
system(): string;
|
|
15
|
+
primary(): string;
|
|
16
|
+
readText(selection: ClipboardSelectionType): Promise<string>;
|
|
17
|
+
writeText(selection: ClipboardSelectionType, text: string): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class InMemoryClipboardProvider {
|
|
2
|
+
clipboardContents = {
|
|
3
|
+
c: "", // SYSTEM
|
|
4
|
+
p: "", // PRIMARY
|
|
5
|
+
};
|
|
6
|
+
system() {
|
|
7
|
+
return this.clipboardContents.c;
|
|
8
|
+
}
|
|
9
|
+
primary() {
|
|
10
|
+
return this.clipboardContents.p;
|
|
11
|
+
}
|
|
12
|
+
async readText(selection) {
|
|
13
|
+
return this.clipboardContents[selection];
|
|
14
|
+
}
|
|
15
|
+
async writeText(selection, text) {
|
|
16
|
+
this.clipboardContents[selection] = text;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../src/client/clipboard.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,yBAAyB;IAC5B,iBAAiB,GAA2C;QAClE,CAAC,EAAE,EAAE,EAAE,SAAS;QAChB,CAAC,EAAE,EAAE,EAAE,UAAU;KAClB,CAAA;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACjC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiC,EAAE,IAAY;QAC7D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export type { InMemoryClipboard } from "./clipboard.js";
|
|
1
2
|
export { rgbify } from "./color-utilities.js";
|
|
2
3
|
export { textIsVisibleWithBackgroundColor, textIsVisibleWithColor } from "./cypress-assertions.js";
|
|
4
|
+
export type { MyNeovimConfigModification } from "./MyNeovimConfigModification.ts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import "@xterm/xterm/css/xterm.css";
|
|
2
1
|
import type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput, RunLuaFileClientInput } from "../server/applications/neovim/neovimRouter.js";
|
|
3
2
|
import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
|
|
4
3
|
import type { BlockingShellCommandOutput, RunExCommandOutput, RunLuaCodeOutput, StartNeovimGenericArguments, TestDirectory } from "../server/types.js";
|
|
5
|
-
import "./
|
|
4
|
+
import type { InMemoryClipboard } from "./clipboard.js";
|
|
6
5
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
7
6
|
* connection to the server side terminal application api. */
|
|
8
7
|
export declare class NeovimTerminalClient {
|
|
@@ -10,6 +9,7 @@ export declare class NeovimTerminalClient {
|
|
|
10
9
|
private readonly tabId;
|
|
11
10
|
private readonly terminal;
|
|
12
11
|
private readonly trpc;
|
|
12
|
+
readonly clipboard: InMemoryClipboard;
|
|
13
13
|
constructor(app: HTMLElement);
|
|
14
14
|
startNeovim(args: StartNeovimGenericArguments): Promise<TestDirectory>;
|
|
15
15
|
runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createTRPCClient, httpBatchLink, httpSubscriptionLink, splitLink } from "@trpc/client";
|
|
2
|
-
import "
|
|
2
|
+
import { InMemoryClipboardProvider } from "./clipboard.js";
|
|
3
3
|
import { getTabId, startTerminal } from "./startTerminal.js";
|
|
4
|
-
import "./style.css";
|
|
5
4
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
6
5
|
* connection to the server side terminal application api. */
|
|
7
6
|
export class NeovimTerminalClient {
|
|
@@ -9,6 +8,7 @@ export class NeovimTerminalClient {
|
|
|
9
8
|
tabId;
|
|
10
9
|
terminal;
|
|
11
10
|
trpc;
|
|
11
|
+
clipboard;
|
|
12
12
|
constructor(app) {
|
|
13
13
|
const trpc = createTRPCClient({
|
|
14
14
|
links: [
|
|
@@ -26,6 +26,7 @@ export class NeovimTerminalClient {
|
|
|
26
26
|
this.trpc = trpc;
|
|
27
27
|
this.tabId = getTabId();
|
|
28
28
|
const tabId = this.tabId;
|
|
29
|
+
const clipboard = new InMemoryClipboardProvider();
|
|
29
30
|
const terminal = startTerminal(app, {
|
|
30
31
|
onMouseEvent(data) {
|
|
31
32
|
void trpc.neovim.sendStdin.mutate({ tabId, data }).catch((error) => {
|
|
@@ -35,7 +36,9 @@ export class NeovimTerminalClient {
|
|
|
35
36
|
onKeyPress(event) {
|
|
36
37
|
void trpc.neovim.sendStdin.mutate({ tabId, data: event.key });
|
|
37
38
|
},
|
|
39
|
+
clipboard,
|
|
38
40
|
});
|
|
41
|
+
this.clipboard = clipboard;
|
|
39
42
|
this.terminal = terminal;
|
|
40
43
|
// start listening to Neovim stdout - this will take some (short) amount of
|
|
41
44
|
// time to complete
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neovim-terminal-client.js","sourceRoot":"","sources":["../../../src/client/neovim-terminal-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"neovim-terminal-client.js","sourceRoot":"","sources":["../../../src/client/neovim-terminal-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAkB/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE5D;6DAC6D;AAC7D,MAAM,OAAO,oBAAoB;IACd,KAAK,CAAe;IACpB,KAAK,CAAmB;IACxB,QAAQ,CAAU;IAClB,IAAI,CAAgD;IACrD,SAAS,CAAmB;IAE5C,YAAY,GAAgB;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAY;YACvC,KAAK,EAAE;gBACL,SAAS,CAAC;oBACR,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc;oBACzD,IAAI,EAAE,oBAAoB,CAAC;wBACzB,GAAG,EAAE,OAAO;qBACb,CAAC;oBACF,KAAK,EAAE,aAAa,CAAC;wBACnB,GAAG,EAAE,OAAO;qBACb,CAAC;iBACH,CAAC;aACH;SACF,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAEhB,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,MAAM,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAA;QACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE;YAClC,YAAY,CAAC,IAAY;gBACvB,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBAC1E,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;gBACnD,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,UAAU,CAAC,KAAK;gBACd,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;YAC/D,CAAC;YACD,SAAS;SACV,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,2EAA2E;QAC3E,mBAAmB;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAC5B,EAAE,MAAM,EAAE,KAAK,EAAE,EACjB;gBACE,SAAS;oBACP,OAAO,EAAE,CAAA;gBACX,CAAC;gBACD,MAAM,CAAC,IAAY;oBACjB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACtB,CAAC;gBACD,OAAO,CAAC,GAAY;oBAClB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;gBAClD,CAAC;aACF,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,IAAiC;QACxD,MAAM,IAAI,CAAC,KAAK,CAAA;QAEhB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACxD,oBAAoB,EAAE;gBACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,8BAA8B,EAAE,IAAI,CAAC,8BAA8B;gBACnE,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;gBAC3D,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;aACzB;YACD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAA;QAEF,OAAO,aAAa,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,KAAiC;QACpE,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACzF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAyB;QAC/C,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5E,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAA4B;QAC9C,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YAC1C,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,eAAe,KAAK,CAAC,OAAO,IAAI;SAC1C,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,KAA6B;QACvD,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAChF,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAA2B;QACnD,MAAM,IAAI,CAAC,KAAK,CAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9E,CAAC;CACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Terminal } from "@xterm/xterm";
|
|
2
|
-
import "@xterm/xterm/css/xterm.css";
|
|
3
2
|
import type { TabId } from "../server/utilities/tabId.ts";
|
|
4
|
-
import "./
|
|
3
|
+
import type { InMemoryClipboardProvider } from "./clipboard.js";
|
|
5
4
|
export type TuiTerminalApi = {
|
|
6
5
|
onMouseEvent: (data: string) => void;
|
|
7
6
|
onKeyPress: (event: {
|
|
8
7
|
key: string;
|
|
9
8
|
domEvent: KeyboardEvent;
|
|
10
9
|
}) => void;
|
|
10
|
+
clipboard: InMemoryClipboardProvider;
|
|
11
11
|
};
|
|
12
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
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { flavors } from "@catppuccin/palette";
|
|
2
|
+
import { ClipboardAddon } from "@xterm/addon-clipboard";
|
|
2
3
|
import { FitAddon } from "@xterm/addon-fit";
|
|
3
4
|
import { Unicode11Addon } from "@xterm/addon-unicode11";
|
|
4
5
|
import { Terminal } from "@xterm/xterm";
|
|
5
|
-
import "@xterm/xterm/css/xterm.css";
|
|
6
6
|
import * as z from "zod";
|
|
7
|
-
import "./style.css";
|
|
8
7
|
import { validateMouseEvent } from "./validateMouseEvent.js";
|
|
9
8
|
export function startTerminal(app, api) {
|
|
10
9
|
const terminal = new Terminal({
|
|
@@ -32,20 +31,24 @@ export function startTerminal(app, api) {
|
|
|
32
31
|
white: colors.text.hex,
|
|
33
32
|
yellow: colors.yellow.hex,
|
|
34
33
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
window.addEventListener("resize", () => {
|
|
34
|
+
{
|
|
35
|
+
// The FitAddon makes the terminal fit the size of the container, the entire
|
|
36
|
+
// page in this case
|
|
37
|
+
const fitAddon = new FitAddon();
|
|
38
|
+
terminal.loadAddon(fitAddon);
|
|
39
|
+
// The Unicode11Addon fixes emoji rendering issues. Without it, emoji are
|
|
40
|
+
// displayed as truncated (partial) images.
|
|
41
|
+
const unicode11Addon = new Unicode11Addon();
|
|
42
|
+
terminal.loadAddon(unicode11Addon);
|
|
43
|
+
terminal.unicode.activeVersion = "11";
|
|
44
|
+
terminal.open(app);
|
|
47
45
|
fitAddon.fit();
|
|
48
|
-
|
|
46
|
+
window.addEventListener("resize", () => {
|
|
47
|
+
fitAddon.fit();
|
|
48
|
+
});
|
|
49
|
+
const clipboardAddon = new ClipboardAddon(undefined, api.clipboard);
|
|
50
|
+
terminal.loadAddon(clipboardAddon);
|
|
51
|
+
}
|
|
49
52
|
terminal.onData(data => {
|
|
50
53
|
data;
|
|
51
54
|
// Send mouse clicks to the terminal application
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startTerminal.js","sourceRoot":"","sources":["../../../src/client/startTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"startTerminal.js","sourceRoot":"","sources":["../../../src/client/startTerminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "@xterm/xterm/css/xterm.css";
|
|
2
1
|
import type { StartTerminalBrowserArguments } from "../browser/neovim-client.js";
|
|
3
2
|
import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
|
|
4
3
|
import type { BlockingShellCommandOutput, ServerTestDirectory } from "../server/types.js";
|
|
4
|
+
import type { InMemoryClipboard } from "./clipboard.js";
|
|
5
5
|
import type { TuiTerminalApi } from "./startTerminal.js";
|
|
6
6
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
7
7
|
* connection to the server side terminal application api. */
|
|
@@ -10,7 +10,8 @@ export declare class TerminalTerminalClient {
|
|
|
10
10
|
private readonly tabId;
|
|
11
11
|
private readonly terminal;
|
|
12
12
|
private readonly trpc;
|
|
13
|
-
|
|
13
|
+
readonly clipboard: InMemoryClipboard;
|
|
14
|
+
readonly terminalApi: TuiTerminalApi;
|
|
14
15
|
constructor(app: HTMLElement);
|
|
15
16
|
startTerminalApplication(args: StartTerminalBrowserArguments): Promise<ServerTestDirectory>;
|
|
16
17
|
runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createTRPCClient, httpBatchLink, httpSubscriptionLink, splitLink } from "@trpc/client";
|
|
2
|
-
import "
|
|
2
|
+
import { InMemoryClipboardProvider } from "./clipboard.js";
|
|
3
3
|
import { getTabId, startTerminal } from "./startTerminal.js";
|
|
4
4
|
import { supportDA1 } from "./terminal-config.js";
|
|
5
5
|
/** Manages the terminal state in the browser as well as the (browser's)
|
|
@@ -9,6 +9,7 @@ export class TerminalTerminalClient {
|
|
|
9
9
|
tabId;
|
|
10
10
|
terminal;
|
|
11
11
|
trpc;
|
|
12
|
+
clipboard;
|
|
12
13
|
terminalApi;
|
|
13
14
|
constructor(app) {
|
|
14
15
|
const trpc = createTRPCClient({
|
|
@@ -27,6 +28,7 @@ export class TerminalTerminalClient {
|
|
|
27
28
|
this.trpc = trpc;
|
|
28
29
|
this.tabId = getTabId();
|
|
29
30
|
const tabId = this.tabId;
|
|
31
|
+
const clipboard = new InMemoryClipboardProvider();
|
|
30
32
|
this.terminalApi = {
|
|
31
33
|
onMouseEvent(data) {
|
|
32
34
|
void trpc.terminal.sendStdin.mutate({ tabId, data }).catch((error) => {
|
|
@@ -36,7 +38,9 @@ export class TerminalTerminalClient {
|
|
|
36
38
|
onKeyPress(event) {
|
|
37
39
|
void trpc.terminal.sendStdin.mutate({ tabId, data: event.key });
|
|
38
40
|
},
|
|
41
|
+
clipboard,
|
|
39
42
|
};
|
|
43
|
+
this.clipboard = clipboard;
|
|
40
44
|
const terminal = startTerminal(app, this.terminalApi);
|
|
41
45
|
this.terminal = terminal;
|
|
42
46
|
// start listening to stdout - this will take some (short) amount of time
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"terminal-terminal-client.js","sourceRoot":"","sources":["../../../src/client/terminal-terminal-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,24 +12,22 @@ import type {
|
|
|
12
12
|
BrowserTerminalSettings,
|
|
13
13
|
GenericNeovimBrowserApi,
|
|
14
14
|
GenericTerminalBrowserApi,
|
|
15
|
-
} from "@tui-sandbox/library/
|
|
15
|
+
} from "@tui-sandbox/library/browser/neovim-client.js"
|
|
16
|
+
import type { MyNeovimConfigModification } from "@tui-sandbox/library/client"
|
|
16
17
|
import type {
|
|
17
18
|
AllKeys,
|
|
19
|
+
BlockingCommandClientInput,
|
|
18
20
|
BlockingShellCommandOutput,
|
|
19
|
-
RunExCommandOutput,
|
|
20
|
-
RunLuaCodeOutput,
|
|
21
|
-
StartNeovimGenericArguments,
|
|
22
|
-
TestDirectory,
|
|
23
|
-
} from "@tui-sandbox/library/dist/src/server/types"
|
|
24
|
-
import type { MyNeovimConfigModification } from "@tui-sandbox/library/src/client/MyNeovimConfigModification"
|
|
25
|
-
import type {
|
|
26
21
|
ExCommandClientInput,
|
|
27
22
|
LuaCodeClientInput,
|
|
28
23
|
PollLuaCodeClientInput,
|
|
24
|
+
RunExCommandOutput,
|
|
25
|
+
RunLuaCodeOutput,
|
|
29
26
|
RunLuaFileClientInput,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
StartNeovimGenericArguments,
|
|
28
|
+
StartTerminalGenericArguments,
|
|
29
|
+
TestDirectory,
|
|
30
|
+
} from "@tui-sandbox/library/server"
|
|
33
31
|
import type { OverrideProperties } from "type-fest"
|
|
34
32
|
import type { MyNeovimAppName, MyTestDirectory, MyTestDirectoryFile } from "../../MyTestDirectory"
|
|
35
33
|
|
|
@@ -44,6 +42,12 @@ export type TerminalTestApplicationContext = {
|
|
|
44
42
|
|
|
45
43
|
/** The test directory, providing type-safe access to its file and directory structure */
|
|
46
44
|
dir: TestDirectory<MyTestDirectory>
|
|
45
|
+
|
|
46
|
+
/** Access to the clipboard of the terminal */
|
|
47
|
+
clipboard: {
|
|
48
|
+
system(): Cypress.Chainable<string>
|
|
49
|
+
primary(): Cypress.Chainable<string>
|
|
50
|
+
}
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
/** The api that can be used in tests after a Neovim instance has been started. */
|
|
@@ -84,6 +88,12 @@ export type NeovimContext = {
|
|
|
84
88
|
|
|
85
89
|
/** The test directory, providing type-safe access to its file and directory structure */
|
|
86
90
|
dir: TestDirectory<MyTestDirectory>
|
|
91
|
+
|
|
92
|
+
/** Access to the clipboard of the terminal */
|
|
93
|
+
clipboard: {
|
|
94
|
+
system(): Cypress.Chainable<string>
|
|
95
|
+
primary(): Cypress.Chainable<string>
|
|
96
|
+
}
|
|
87
97
|
}
|
|
88
98
|
|
|
89
99
|
/** Arguments for starting the neovim server. They are built based on your test
|
|
@@ -135,6 +145,15 @@ Cypress.Commands.add("startNeovim", (startArguments?: MyStartNeovimServerArgumen
|
|
|
135
145
|
cy.typeIntoTerminal(text, options)
|
|
136
146
|
},
|
|
137
147
|
dir: underlyingNeovim.dir as TestDirectory<MyTestDirectory>,
|
|
148
|
+
|
|
149
|
+
clipboard: {
|
|
150
|
+
primary() {
|
|
151
|
+
return cy.then(() => underlyingNeovim.clipboard.primary())
|
|
152
|
+
},
|
|
153
|
+
system() {
|
|
154
|
+
return cy.then(() => underlyingNeovim.clipboard.system())
|
|
155
|
+
},
|
|
156
|
+
},
|
|
138
157
|
}
|
|
139
158
|
|
|
140
159
|
return api
|
|
@@ -171,6 +190,14 @@ Cypress.Commands.add("startTerminalApplication", (args: StartTerminalGenericArgu
|
|
|
171
190
|
typeIntoTerminal(text, options) {
|
|
172
191
|
cy.typeIntoTerminal(text, options)
|
|
173
192
|
},
|
|
193
|
+
clipboard: {
|
|
194
|
+
primary() {
|
|
195
|
+
return cy.then(() => terminal.clipboard.primary())
|
|
196
|
+
},
|
|
197
|
+
system() {
|
|
198
|
+
return cy.then(() => terminal.clipboard.system())
|
|
199
|
+
},
|
|
200
|
+
},
|
|
174
201
|
}
|
|
175
202
|
|
|
176
203
|
return api
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiQZ,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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
export type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput, RunLuaFileClientInput, } from "./applications/neovim/neovimRouter.ts";
|
|
2
|
+
export type { StartTerminalGenericArguments } from "./applications/terminal/TerminalTestApplication.ts";
|
|
3
|
+
export type { BlockingCommandClientInput } from "./blockingCommandInputSchema.ts";
|
|
1
4
|
export { startTestServer } from "./server.js";
|
|
5
|
+
export type { AllKeys, BlockingShellCommandOutput, RunExCommandOutput, RunLuaCodeOutput, StartNeovimGenericArguments, TestDirectory, } from "./types.ts";
|
|
2
6
|
export { updateTestdirectorySchemaFile } from "./updateTestdirectorySchemaFile.js";
|
|
3
7
|
export type { TestServerConfig } from "./updateTestdirectorySchemaFile.js";
|
|
4
8
|
export { Lazy } from "./utilities/Lazy.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAU9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAElF,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA"}
|