@tui-sandbox/library 2.0.2 → 2.2.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/src/client/neovim-client.d.ts +2 -1
  3. package/dist/src/client/neovim-client.js +12 -3
  4. package/dist/src/server/TestServer.d.ts +1 -1
  5. package/dist/src/server/TestServer.js +15 -24
  6. package/dist/src/server/connection/trpc.d.ts +7 -15
  7. package/dist/src/server/connection/trpc.js +0 -3
  8. package/dist/src/server/neovim/NeovimApplication.d.ts +3 -2
  9. package/dist/src/server/neovim/NeovimApplication.js +21 -13
  10. package/dist/src/server/neovim/environment/createTempDir.test.js +1 -0
  11. package/dist/src/server/neovim/index.d.ts +1 -2
  12. package/dist/src/server/neovim/index.js +15 -21
  13. package/dist/src/server/server.d.ts +8 -7
  14. package/dist/src/server/server.js +9 -3
  15. package/dist/src/server/server.test.d.ts +1 -0
  16. package/dist/src/server/server.test.js +23 -0
  17. package/dist/src/server/updateTestdirectorySchemaFile.d.ts +2 -1
  18. package/dist/src/server/updateTestdirectorySchemaFile.js +4 -0
  19. package/dist/src/server/updateTestdirectorySchemaFile.test.d.ts +1 -0
  20. package/dist/src/server/updateTestdirectorySchemaFile.test.js +34 -0
  21. package/dist/src/server/utilities/DisposableSingleApplication.d.ts +6 -8
  22. package/dist/src/server/utilities/DisposableSingleApplication.js +9 -9
  23. package/dist/src/server/utilities/DisposableSingleApplication.test.d.ts +1 -0
  24. package/dist/src/server/utilities/DisposableSingleApplication.test.js +55 -0
  25. package/dist/src/server/utilities/TerminalApplication.d.ts +2 -1
  26. package/dist/src/server/utilities/applicationAvailable.d.ts +1 -0
  27. package/dist/src/server/utilities/applicationAvailable.js +4 -0
  28. package/dist/src/server/utilities/applicationAvailable.test.d.ts +1 -0
  29. package/dist/src/server/utilities/applicationAvailable.test.js +12 -0
  30. package/dist/src/server/utilities/generator.d.ts +2 -0
  31. package/dist/src/server/utilities/generator.js +8 -0
  32. package/dist/src/server/utilities/generator.test.d.ts +1 -0
  33. package/dist/src/server/utilities/generator.test.js +41 -0
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/dist/vitest.config.d.ts +2 -0
  36. package/dist/vitest.config.js +8 -0
  37. package/package.json +13 -10
  38. package/src/client/neovim-client.ts +14 -4
  39. package/src/server/TestServer.ts +17 -25
  40. package/src/server/connection/trpc.ts +1 -15
  41. package/src/server/neovim/NeovimApplication.ts +24 -14
  42. package/src/server/neovim/environment/createTempDir.test.ts +2 -0
  43. package/src/server/neovim/index.ts +25 -27
  44. package/src/server/server.test.ts +34 -0
  45. package/src/server/server.ts +11 -4
  46. package/src/server/updateTestdirectorySchemaFile.test.ts +43 -0
  47. package/src/server/updateTestdirectorySchemaFile.ts +7 -2
  48. package/src/server/utilities/DisposableSingleApplication.test.ts +70 -0
  49. package/src/server/utilities/DisposableSingleApplication.ts +17 -12
  50. package/src/server/utilities/TerminalApplication.ts +2 -1
  51. package/src/server/utilities/applicationAvailable.test.ts +14 -0
  52. package/src/server/utilities/applicationAvailable.ts +5 -0
  53. package/src/server/utilities/generator.test.ts +49 -0
  54. package/src/server/utilities/generator.ts +13 -0
  55. package/tsconfig.json +2 -2
  56. package/vitest.config.ts +9 -0
@@ -0,0 +1,49 @@
1
+ import { EventEmitter } from "stream"
2
+ import { convertEventEmitterToAsyncGenerator } from "./generator"
3
+
4
+ describe("when a listener is attached", () => {
5
+ it("forwards events from an EventEmitter to an async generator", async () => {
6
+ const eventEmitter = new EventEmitter()
7
+ const generator = convertEventEmitterToAsyncGenerator(eventEmitter, "test")
8
+
9
+ {
10
+ const promise = generator.next()
11
+ eventEmitter.emit("test", "message")
12
+
13
+ expect(await promise).toMatchInlineSnapshot(`
14
+ {
15
+ "done": false,
16
+ "value": "message",
17
+ }
18
+ `)
19
+
20
+ const promise2 = generator.next()
21
+ eventEmitter.emit("test", "message2")
22
+
23
+ expect(await promise2).toMatchInlineSnapshot(`
24
+ {
25
+ "done": false,
26
+ "value": "message2",
27
+ }
28
+ `)
29
+ }
30
+ })
31
+ })
32
+
33
+ describe("when no listener is attached, messages are lost permanently", () => {
34
+ it("does not resend lost events after a subscriber attaches", async () => {
35
+ const eventEmitter = new EventEmitter()
36
+ eventEmitter.emit("test", "this message should be lost")
37
+
38
+ const generator = convertEventEmitterToAsyncGenerator(eventEmitter, "test")
39
+ const promise = generator.next()
40
+ eventEmitter.emit("test", "new message that will be received")
41
+
42
+ expect(await promise).toMatchInlineSnapshot(`
43
+ {
44
+ "done": false,
45
+ "value": "new message that will be received",
46
+ }
47
+ `)
48
+ })
49
+ })
@@ -0,0 +1,13 @@
1
+ import type EventEmitter from "events"
2
+
3
+ export async function* convertEventEmitterToAsyncGenerator(
4
+ emitter: EventEmitter,
5
+ eventName: string
6
+ ): AsyncGenerator<string, void, unknown> {
7
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
8
+ while (true) {
9
+ yield await new Promise(resolve => {
10
+ emitter.once(eventName, resolve)
11
+ })
12
+ }
13
+ }
package/tsconfig.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "esModuleInterop": true,
12
12
  "outDir": "dist",
13
13
  "lib": ["ES2023", "ESNext.Disposable"],
14
- "types": ["node"],
14
+ "types": ["node", "vitest/globals"],
15
15
  "composite": true,
16
16
 
17
17
  /* Linting */
@@ -21,5 +21,5 @@
21
21
  "noFallthroughCasesInSwitch": true
22
22
  },
23
23
 
24
- "include": ["./src/"]
24
+ "include": ["./src/", "./vitest.config.ts"]
25
25
  }
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from "vitest/config"
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true, // This will make describe, it, etc. available globally
6
+ environment: "node",
7
+ mockReset: true,
8
+ },
9
+ })