@tui-sandbox/library 12.2.4 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
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-BiCHXrmL.js"></script>
6
+ <script type="module" crossorigin src="/assets/index-Hg3KfzVr.js"></script>
7
7
  <link rel="stylesheet" crossorigin href="/assets/index-BibnzQaA.css">
8
8
  </head>
9
9
  <body>
@@ -7,6 +7,7 @@ import type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput,
7
7
  import type { StartTerminalGenericArguments } from "../server/applications/terminal/TerminalTestApplication.js";
8
8
  import type { BlockingCommandClientInput } from "../server/blockingCommandInputSchema.js";
9
9
  import type { BlockingShellCommandOutput, RunExCommandOutput, RunLuaCodeOutput, StartNeovimGenericArguments, TestDirectory } from "../server/types.js";
10
+ import { Lazy } from "../server/utilities/Lazy.js";
10
11
  export type GenericNeovimBrowserApi = {
11
12
  runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
12
13
  runLuaCode(input: LuaCodeClientInput): Promise<RunLuaCodeOutput>;
@@ -15,6 +16,7 @@ export type GenericNeovimBrowserApi = {
15
16
  runExCommand(input: ExCommandClientInput): Promise<RunExCommandOutput>;
16
17
  dir: TestDirectory;
17
18
  clipboard: InMemoryClipboard;
19
+ title: Lazy<string>;
18
20
  };
19
21
  declare global {
20
22
  interface Window {
@@ -26,6 +28,7 @@ export type GenericTerminalBrowserApi = {
26
28
  dir: TestDirectory;
27
29
  runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
28
30
  clipboard: InMemoryClipboard;
31
+ title: Lazy<string>;
29
32
  };
30
33
  export type BrowserTerminalSettings = {
31
34
  configureTerminal?: (term: {
@@ -8,11 +8,11 @@ if (!app) {
8
8
  throw new Error("No app element found");
9
9
  }
10
10
  // limitation: right now only one client can be used in the same test
11
- const neovimClient = new Lazy(() => new NeovimTerminalClient(app));
12
- const terminalClient = new Lazy(() => new TerminalTerminalClient(app));
11
+ const neovimClient = new Lazy(() => NeovimTerminalClient.create(app));
12
+ const terminalClient = new Lazy(() => TerminalTerminalClient.create(app));
13
13
  /** Entrypoint for the test runner (cypress) */
14
14
  window.startNeovim = async function (startArgs) {
15
- const neovim = neovimClient.get();
15
+ const neovim = await neovimClient.get();
16
16
  const testDirectory = await neovim.startNeovim({
17
17
  additionalEnvironmentVariables: startArgs?.additionalEnvironmentVariables,
18
18
  filename: startArgs?.filename ?? "initial-file.txt",
@@ -38,19 +38,21 @@ window.startNeovim = async function (startArgs) {
38
38
  },
39
39
  dir: testDirectory,
40
40
  clipboard: neovim.clipboard,
41
+ title: neovim.terminalApi.title,
41
42
  };
42
43
  return neovimBrowserApi;
43
44
  };
44
45
  /** Entrypoint for the test runner (cypress) */
45
46
  window.startTerminalApplication = async function (args) {
46
- const terminal = terminalClient.get();
47
+ const terminal = await terminalClient.get();
47
48
  const testDirectory = await terminal.startTerminalApplication(args);
48
49
  const terminalBrowserApi = {
49
50
  dir: testDirectory,
50
51
  runBlockingShellCommand(input) {
51
52
  return terminal.runBlockingShellCommand(input);
52
53
  },
53
- clipboard: terminal.clipboard,
54
+ clipboard: terminal.terminalApi.clipboard,
55
+ title: terminal.terminalApi.title,
54
56
  };
55
57
  return terminalBrowserApi;
56
58
  };
@@ -1 +1 @@
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,4CAA4C,CAAA;AAEjF,OAAO,qBAAqB,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AAiBvF,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"}
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,4CAA4C,CAAA;AAEjF,OAAO,qBAAqB,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AAiBvF,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,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AACrE,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAazE,+CAA+C;AAC/C,MAAM,CAAC,WAAW,GAAG,KAAK,WAAW,SAAuC;IAC1E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAA;IACvC,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;QAC3B,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;KAChC,CAAA;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AA0CD,+CAA+C;AAC/C,MAAM,CAAC,wBAAwB,GAAG,KAAK,WACrC,IAAmC;IAEnC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,CAAA;IAC3C,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,WAAW,CAAC,SAAS;QACzC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK;KAClC,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA"}
@@ -1,17 +1,24 @@
1
+ import { createTRPCClient } from "@trpc/client";
2
+ import type { Terminal } from "@xterm/xterm";
1
3
  import type { ExCommandClientInput, LuaCodeClientInput, PollLuaCodeClientInput, RunLuaFileClientInput } from "../..//server/applications/neovim/neovimRouter.js";
4
+ import type { AppRouter } from "../..//server/server.js";
2
5
  import type { BlockingShellCommandOutput, RunExCommandOutput, RunLuaCodeOutput, StartNeovimGenericArguments, TestDirectory } from "../..//server/types.js";
3
6
  import type { BlockingCommandClientInput } from "../../server/blockingCommandInputSchema.js";
7
+ import type { TabId } from "../../server/utilities/tabId.js";
8
+ import { BatchedAsyncQueue, type TerminalInputEvent } from "../BatchedAsyncQueue.js";
4
9
  import type { InMemoryClipboard } from "../clipboard.js";
10
+ import { type TuiTerminalApi } from "../startTerminal.js";
5
11
  /** Manages the terminal state in the browser as well as the (browser's)
6
12
  * connection to the server side terminal application api. */
7
13
  export declare class NeovimTerminalClient {
8
- private readonly ready;
9
14
  private readonly tabId;
10
15
  private readonly terminal;
11
16
  private readonly trpc;
12
17
  readonly clipboard: InMemoryClipboard;
13
18
  private readonly inputQueue;
14
- constructor(app: HTMLElement);
19
+ readonly terminalApi: TuiTerminalApi;
20
+ constructor(tabId: TabId, terminal: Terminal, trpc: ReturnType<typeof createTRPCClient<AppRouter>>, clipboard: InMemoryClipboard, inputQueue: BatchedAsyncQueue<TerminalInputEvent>, terminalApi: TuiTerminalApi);
21
+ static create(app: HTMLElement): Promise<NeovimTerminalClient>;
15
22
  startNeovim(args: StartNeovimGenericArguments): Promise<TestDirectory>;
16
23
  runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
17
24
  runLuaCode(input: LuaCodeClientInput): Promise<RunLuaCodeOutput>;
@@ -1,64 +1,65 @@
1
1
  import { createTRPCClient, httpBatchLink, httpSubscriptionLink, splitLink } from "@trpc/client";
2
+ import { Lazy } from "../../server/utilities/Lazy.js";
2
3
  import { BatchedAsyncQueue } from "../BatchedAsyncQueue.js";
3
4
  import { InMemoryClipboardProvider } from "../clipboard.js";
4
5
  import { getTabId, startTerminal } from "../startTerminal.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. */
7
8
  export class NeovimTerminalClient {
8
- ready;
9
9
  tabId;
10
10
  terminal;
11
11
  trpc;
12
12
  clipboard;
13
13
  inputQueue;
14
- constructor(app) {
14
+ terminalApi;
15
+ constructor(tabId, terminal, trpc, clipboard, inputQueue, terminalApi) {
16
+ this.tabId = tabId;
17
+ this.terminal = terminal;
18
+ this.trpc = trpc;
19
+ this.clipboard = clipboard;
20
+ this.inputQueue = inputQueue;
21
+ this.terminalApi = terminalApi;
22
+ }
23
+ static async create(app) {
15
24
  const trpc = createTRPCClient({
16
25
  links: [
17
26
  splitLink({
18
27
  condition: operation => operation.type === "subscription",
19
- true: httpSubscriptionLink({
20
- url: "/trpc",
21
- }),
22
- false: httpBatchLink({
23
- url: "/trpc",
24
- }),
28
+ true: httpSubscriptionLink({ url: "/trpc" }),
29
+ false: httpBatchLink({ url: "/trpc" }),
25
30
  }),
26
31
  ],
27
32
  });
28
- this.trpc = trpc;
29
- this.tabId = getTabId();
30
- const tabId = this.tabId;
31
- {
32
- const controller = new AbortController();
33
- window.addEventListener("pagehide", () => {
34
- controller.abort();
35
- });
36
- this.inputQueue = new BatchedAsyncQueue(async (events) => {
37
- const keys = events.join("");
38
- await trpc.neovim.sendStdin.mutate({ tabId: this.tabId, data: keys });
39
- }, controller.signal);
40
- }
33
+ const tabId = getTabId();
34
+ const controller = new AbortController();
35
+ window.addEventListener("pagehide", () => {
36
+ controller.abort();
37
+ });
38
+ const inputQueue = new BatchedAsyncQueue(async (events) => {
39
+ const keys = events.join("");
40
+ await trpc.neovim.sendStdin.mutate({ tabId, data: keys });
41
+ }, controller.signal);
41
42
  const clipboard = new InMemoryClipboardProvider();
42
- const terminal = startTerminal(app, {
43
+ const terminalApi = {
43
44
  onMouseEvent: (data) => {
44
- this.inputQueue.enqueue(data);
45
+ inputQueue.enqueue(data);
45
46
  },
46
47
  onKeyPress: (event) => {
47
- this.inputQueue.enqueue(event.key);
48
+ inputQueue.enqueue(event.key);
48
49
  },
49
50
  clipboard,
50
- });
51
- this.clipboard = clipboard;
52
- this.terminal = terminal;
51
+ title: new Lazy(() => "title not set yet"),
52
+ };
53
+ const terminal = startTerminal(app, terminalApi);
53
54
  // start listening to Neovim stdout - this will take some (short) amount of
54
55
  // time to complete
55
- this.ready = new Promise(resolve => {
56
+ await new Promise(resolve => {
56
57
  console.log("Subscribing to stdout");
57
58
  trpc.neovim.onStdout.subscribe({ client: tabId }, {
58
59
  onStarted() {
59
60
  resolve();
60
61
  },
61
- onData(data) {
62
+ onData: (data) => {
62
63
  terminal.write(data);
63
64
  },
64
65
  onError(err) {
@@ -66,9 +67,9 @@ export class NeovimTerminalClient {
66
67
  },
67
68
  });
68
69
  });
70
+ return new NeovimTerminalClient(tabId, terminal, trpc, clipboard, inputQueue, terminalApi);
69
71
  }
70
72
  async startNeovim(args) {
71
- await this.ready;
72
73
  const testDirectory = await this.trpc.neovim.start.mutate({
73
74
  startNeovimArguments: {
74
75
  filename: args.filename,
@@ -86,15 +87,12 @@ export class NeovimTerminalClient {
86
87
  return testDirectory;
87
88
  }
88
89
  async runBlockingShellCommand(input) {
89
- await this.ready;
90
90
  return this.trpc.neovim.runBlockingShellCommand.mutate({ ...input, tabId: this.tabId });
91
91
  }
92
92
  async runLuaCode(input) {
93
- await this.ready;
94
93
  return this.trpc.neovim.runLuaCode.mutate({ ...input, tabId: this.tabId });
95
94
  }
96
95
  async doFile(input) {
97
- await this.ready;
98
96
  return this.trpc.neovim.runExCommand.mutate({
99
97
  ...input,
100
98
  tabId: this.tabId,
@@ -102,11 +100,9 @@ export class NeovimTerminalClient {
102
100
  });
103
101
  }
104
102
  async waitForLuaCode(input) {
105
- await this.ready;
106
103
  return this.trpc.neovim.waitForLuaCode.mutate({ ...input, tabId: this.tabId });
107
104
  }
108
105
  async runExCommand(input) {
109
- await this.ready;
110
106
  return this.trpc.neovim.runExCommand.mutate({ ...input, tabId: this.tabId });
111
107
  }
112
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"neovim-terminal-client.js","sourceRoot":"","sources":["../../../../src/client/neovim/neovim-terminal-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neovim-terminal-client.js","sourceRoot":"","sources":["../../../../src/client/neovim/neovim-terminal-client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Terminal } from "@xterm/xterm";
2
+ import type { Lazy } from "../server/index.js";
2
3
  import type { TabId } from "../server/utilities/tabId.ts";
3
4
  import type { InMemoryClipboardProvider } from "./clipboard.js";
4
5
  export type TuiTerminalApi = {
@@ -8,6 +9,7 @@ export type TuiTerminalApi = {
8
9
  domEvent: KeyboardEvent;
9
10
  }) => void;
10
11
  clipboard: InMemoryClipboardProvider;
12
+ title: Lazy<string>;
11
13
  };
12
14
  export declare function startTerminal(app: HTMLElement, api: TuiTerminalApi): Terminal;
13
15
  /** An identifier unique to a browser tab, so that each tab can have its own
@@ -12,6 +12,9 @@ export function startTerminal(app, api) {
12
12
  convertEol: true,
13
13
  fontSize: 13,
14
14
  });
15
+ terminal.onTitleChange(title => {
16
+ api.title.set(title);
17
+ });
15
18
  const colors = flavors.macchiato.colors;
16
19
  terminal.options.theme = {
17
20
  background: colors.base.hex,
@@ -1 +1 @@
1
- {"version":3,"file":"startTerminal.js","sourceRoot":"","sources":["../../../src/client/startTerminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startTerminal.js","sourceRoot":"","sources":["../../../src/client/startTerminal.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,22 @@
1
+ import { createTRPCClient } from "@trpc/client";
2
+ import type { Terminal } from "@xterm/xterm";
1
3
  import type { StartTerminalBrowserArguments } from "../../browser/neovim-client.js";
2
4
  import type { BlockingCommandClientInput } from "../../server/blockingCommandInputSchema.js";
5
+ import type { AppRouter } from "../../server/server.js";
3
6
  import type { BlockingShellCommandOutput, ServerTestDirectory } from "../../server/types.js";
4
- import type { InMemoryClipboard } from "../clipboard.js";
7
+ import type { TabId } from "../../server/utilities/tabId.js";
8
+ import { BatchedAsyncQueue, type TerminalInputEvent } from "../BatchedAsyncQueue.js";
5
9
  import type { TuiTerminalApi } from "../startTerminal.js";
6
10
  /** Manages the terminal state in the browser as well as the (browser's)
7
11
  * connection to the server side terminal application api. */
8
12
  export declare class TerminalTerminalClient {
9
- private readonly ready;
10
13
  private readonly tabId;
11
14
  private readonly terminal;
12
15
  private readonly trpc;
13
16
  private readonly inputQueue;
14
- readonly clipboard: InMemoryClipboard;
15
17
  readonly terminalApi: TuiTerminalApi;
16
- constructor(app: HTMLElement);
18
+ constructor(tabId: TabId, terminal: Terminal, trpc: ReturnType<typeof createTRPCClient<AppRouter>>, inputQueue: BatchedAsyncQueue<TerminalInputEvent>, terminalApi: TuiTerminalApi);
19
+ static create(app: HTMLElement): Promise<TerminalTerminalClient>;
17
20
  startTerminalApplication(args: StartTerminalBrowserArguments): Promise<ServerTestDirectory>;
18
21
  runBlockingShellCommand(input: BlockingCommandClientInput): Promise<BlockingShellCommandOutput>;
19
22
  }
@@ -1,4 +1,5 @@
1
1
  import { createTRPCClient, httpBatchLink, httpSubscriptionLink, splitLink } from "@trpc/client";
2
+ import { Lazy } from "../../server/utilities/Lazy.js";
2
3
  import { BatchedAsyncQueue } from "../BatchedAsyncQueue.js";
3
4
  import { InMemoryClipboardProvider } from "../clipboard.js";
4
5
  import { getTabId, startTerminal } from "../startTerminal.js";
@@ -6,14 +7,19 @@ import { supportDA1 } from "./terminal-config.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 class TerminalTerminalClient {
9
- ready;
10
10
  tabId;
11
11
  terminal;
12
12
  trpc;
13
13
  inputQueue;
14
- clipboard;
15
14
  terminalApi;
16
- constructor(app) {
15
+ constructor(tabId, terminal, trpc, inputQueue, terminalApi) {
16
+ this.tabId = tabId;
17
+ this.terminal = terminal;
18
+ this.trpc = trpc;
19
+ this.inputQueue = inputQueue;
20
+ this.terminalApi = terminalApi;
21
+ }
22
+ static async create(app) {
17
23
  const trpc = createTRPCClient({
18
24
  links: [
19
25
  splitLink({
@@ -27,41 +33,36 @@ export class TerminalTerminalClient {
27
33
  }),
28
34
  ],
29
35
  });
30
- this.trpc = trpc;
31
- this.tabId = getTabId();
32
- const tabId = this.tabId;
33
- {
34
- const controller = new AbortController();
35
- window.addEventListener("pagehide", () => {
36
- controller.abort();
37
- });
38
- this.inputQueue = new BatchedAsyncQueue(async (events) => {
39
- const keys = events.join("");
40
- await trpc.terminal.sendStdin.mutate({ tabId: this.tabId, data: keys });
41
- }, controller.signal);
42
- }
36
+ const tabId = getTabId();
37
+ const controller = new AbortController();
38
+ window.addEventListener("pagehide", () => {
39
+ controller.abort();
40
+ });
41
+ const inputQueue = new BatchedAsyncQueue(async (events) => {
42
+ const keys = events.join("");
43
+ await trpc.terminal.sendStdin.mutate({ tabId, data: keys });
44
+ }, controller.signal);
43
45
  const clipboard = new InMemoryClipboardProvider();
44
- this.terminalApi = {
46
+ const terminalApi = {
45
47
  onMouseEvent: (data) => {
46
- this.inputQueue.enqueue(data);
48
+ inputQueue.enqueue(data);
47
49
  },
48
50
  onKeyPress: (event) => {
49
- this.inputQueue.enqueue(event.key);
51
+ inputQueue.enqueue(event.key);
50
52
  },
51
53
  clipboard,
54
+ title: new Lazy(() => "title not set yet"),
52
55
  };
53
- this.clipboard = clipboard;
54
- const terminal = startTerminal(app, this.terminalApi);
55
- this.terminal = terminal;
56
+ const terminal = startTerminal(app, terminalApi);
56
57
  // start listening to stdout - this will take some (short) amount of time
57
58
  // to complete
58
- this.ready = new Promise(resolve => {
59
+ await new Promise(resolve => {
59
60
  console.log("Subscribing to stdout");
60
61
  trpc.terminal.onStdout.subscribe({ client: tabId }, {
61
62
  onStarted() {
62
63
  resolve();
63
64
  },
64
- onData(data) {
65
+ onData: (data) => {
65
66
  terminal.write(data);
66
67
  },
67
68
  onError(err) {
@@ -69,9 +70,9 @@ export class TerminalTerminalClient {
69
70
  },
70
71
  });
71
72
  });
73
+ return new TerminalTerminalClient(tabId, terminal, trpc, inputQueue, terminalApi);
72
74
  }
73
75
  async startTerminalApplication(args) {
74
- await this.ready;
75
76
  args.browserSettings.configureTerminal?.({
76
77
  terminal: this.terminal,
77
78
  api: this.terminalApi,
@@ -96,7 +97,6 @@ export class TerminalTerminalClient {
96
97
  return testDirectory;
97
98
  }
98
99
  async runBlockingShellCommand(input) {
99
- await this.ready;
100
100
  return this.trpc.terminal.runBlockingShellCommand.mutate({ ...input, tabId: this.tabId });
101
101
  }
102
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-terminal-client.js","sourceRoot":"","sources":["../../../../src/client/terminal/terminal-terminal-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-terminal-client.js","sourceRoot":"","sources":["../../../../src/client/terminal/terminal-terminal-client.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,10 @@ export type TerminalTestApplicationContext = {
48
48
  system(): Cypress.Chainable<string>
49
49
  primary(): Cypress.Chainable<string>
50
50
  }
51
+
52
+ title: {
53
+ current(): Cypress.Chainable<string>
54
+ }
51
55
  }
52
56
 
53
57
  /** The api that can be used in tests after a Neovim instance has been started. */
@@ -94,6 +98,10 @@ export type NeovimContext = {
94
98
  system(): Cypress.Chainable<string>
95
99
  primary(): Cypress.Chainable<string>
96
100
  }
101
+
102
+ title: {
103
+ current(): Cypress.Chainable<string>
104
+ }
97
105
  }
98
106
 
99
107
  /** Arguments for starting the neovim server. They are built based on your test
@@ -154,6 +162,10 @@ Cypress.Commands.add("startNeovim", (startArguments?: MyStartNeovimServerArgumen
154
162
  return cy.then(() => underlyingNeovim.clipboard.system())
155
163
  },
156
164
  },
165
+
166
+ title: {
167
+ current: () => cy.then(() => underlyingNeovim.title.get()),
168
+ },
157
169
  }
158
170
 
159
171
  return api
@@ -191,12 +203,11 @@ Cypress.Commands.add("startTerminalApplication", (args: StartTerminalGenericArgu
191
203
  cy.typeIntoTerminal(text, options)
192
204
  },
193
205
  clipboard: {
194
- primary() {
195
- return cy.then(() => terminal.clipboard.primary())
196
- },
197
- system() {
198
- return cy.then(() => terminal.clipboard.system())
199
- },
206
+ primary: () => cy.then(() => terminal.clipboard.primary()),
207
+ system: () => cy.then(() => terminal.clipboard.system()),
208
+ },
209
+ title: {
210
+ current: () => cy.then(() => terminal.title.get()),
200
211
  },
201
212
  }
202
213
 
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4QZ,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"}
@@ -81,6 +81,7 @@ describe("dirtree", () => {
81
81
  name: z.literal("don't_crash_when_modification_contains_unescaped_characters\\".lua"),
82
82
  type: z.literal("file"),
83
83
  }),
84
+ "set_terminal_title.lua": z.object({ name: z.literal("set_terminal_title.lua"), type: z.literal("file") }),
84
85
  subdir: z.object({
85
86
  name: z.literal("subdir/"),
86
87
  type: z.literal("directory"),
@@ -177,6 +178,7 @@ describe("dirtree", () => {
177
178
  "config-modifications/add_command_to_count_open_buffers.lua",
178
179
  "config-modifications/add_command_to_update_buffer_after_timeout.lua",
179
180
  "config-modifications/don't_crash_when_modification_contains_unescaped_characters\\".lua",
181
+ "config-modifications/set_terminal_title.lua",
180
182
  "config-modifications/subdir/subdir-modification.lua",
181
183
  "config-modifications/subdir",
182
184
  "config-modifications",
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/server/dirtree/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/server/dirtree/index.test.ts"],"names":[],"mappings":"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"}