@swf2es/desktop 0.1.23 → 0.1.24

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 (42) hide show
  1. package/dist/main/connections.d.ts +14 -2
  2. package/dist/main/connections.d.ts.map +1 -1
  3. package/dist/main/connections.js +44 -8
  4. package/dist/main/connections.js.map +1 -1
  5. package/dist/main/network.d.ts.map +1 -1
  6. package/dist/main/network.js +2 -1
  7. package/dist/main/network.js.map +1 -1
  8. package/dist/main/proxy.d.ts +16 -1
  9. package/dist/main/proxy.d.ts.map +1 -1
  10. package/dist/main/proxy.js +67 -12
  11. package/dist/main/proxy.js.map +1 -1
  12. package/dist/main/relay.d.ts +55 -0
  13. package/dist/main/relay.d.ts.map +1 -0
  14. package/dist/main/relay.js +140 -0
  15. package/dist/main/relay.js.map +1 -0
  16. package/dist/main/sockets.d.ts.map +1 -1
  17. package/dist/main/sockets.js +21 -5
  18. package/dist/main/sockets.js.map +1 -1
  19. package/dist/main/websockets.d.ts.map +1 -1
  20. package/dist/main/websockets.js +14 -4
  21. package/dist/main/websockets.js.map +1 -1
  22. package/dist/preload/preload.cjs +7 -6
  23. package/dist/preload/preload.cjs.map +1 -1
  24. package/dist/renderer/sockets.d.ts.map +1 -1
  25. package/dist/renderer/sockets.js +31 -21
  26. package/dist/renderer/sockets.js.map +1 -1
  27. package/dist/renderer/websockets.d.ts.map +1 -1
  28. package/dist/renderer/websockets.js +29 -19
  29. package/dist/renderer/websockets.js.map +1 -1
  30. package/dist/shared/api.d.ts +12 -4
  31. package/dist/shared/api.d.ts.map +1 -1
  32. package/package.json +7 -7
  33. package/src/main/connections.ts +55 -10
  34. package/src/main/network.ts +3 -1
  35. package/src/main/proxy.ts +87 -14
  36. package/src/main/relay.ts +169 -0
  37. package/src/main/sockets.ts +49 -29
  38. package/src/main/websockets.ts +17 -4
  39. package/src/preload/preload.cts +10 -8
  40. package/src/renderer/sockets.ts +30 -21
  41. package/src/renderer/websockets.ts +28 -19
  42. package/src/shared/api.ts +13 -4
@@ -0,0 +1,55 @@
1
+ /** Each connection's events, by its id, in the order they came. */
2
+ export type Batch<E> = [id: number, event: E][];
3
+ /**
4
+ * A batch that holds this many bytes goes at once, not when it would: a
5
+ * busy socket is not kept from its page, and neither the main process nor
6
+ * one message grows past it by more than a read.
7
+ */
8
+ export declare const FLUSH_AT: number;
9
+ /**
10
+ * The least time between two batches, in milliseconds. The first event
11
+ * after a quiet spell goes at the end of its turn, so that a request's
12
+ * answer waits for nothing; what follows within the window waits for its
13
+ * end, and goes with the rest that came by then. Socket reads that cost
14
+ * little come many to a millisecond, each with a few bytes: a turn's
15
+ * batch alone left one message for most of them. On Windows the timer
16
+ * may wait for the system's resolution, about 16 ms: docs/architecture/
17
+ * desktop.md says why that does.
18
+ */
19
+ export declare const WINDOW = 1;
20
+ export declare class Relay<E> {
21
+ private readonly send;
22
+ private readonly flushAt;
23
+ private batch;
24
+ private size;
25
+ /** Each connection's bytes, while nothing else of it has come after them in the batch. */
26
+ private readonly joining;
27
+ private readonly window;
28
+ private immediate;
29
+ private timer;
30
+ /** When the last batch went, by performance.now(). */
31
+ private sent;
32
+ /** `send` takes each batch, never an empty one. */
33
+ constructor(send: (batch: Batch<E>) => void, flushAt?: number, window?: number);
34
+ /** `event` for `id`, after whatever came for it before; `size` of its bytes count to FLUSH_AT. */
35
+ push(id: number, event: E, size?: number): void;
36
+ /**
37
+ * Bytes read for `id`, which it no longer holds: one event, as `wrap`
38
+ * makes it, with the bytes read for it before them in this batch.
39
+ */
40
+ bytes(id: number, chunk: Uint8Array, wrap: (bytes: Uint8Array) => E): void;
41
+ /** Send what is gathered now. */
42
+ flush(): void;
43
+ /** Forget what is gathered: its page is gone, and the next numbers its connections from 1. */
44
+ drop(): void;
45
+ private added;
46
+ private readonly flushing;
47
+ private unschedule;
48
+ /**
49
+ * `id`'s bytes as one event, the chunks joined where there are more than
50
+ * one: a second copy of theirs, but one event for the SWF rather than one
51
+ * for each read, which costs it far more than the copy.
52
+ */
53
+ private seal;
54
+ }
55
+ //# sourceMappingURL=relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/main/relay.ts"],"names":[],"mappings":"AAOA,mEAAmE;AACnE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,QAAa,CAAC;AAEnC;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,IAAI,CAAC;AAUxB,qBAAa,KAAK,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,IAAI,CAAK;IACjB,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,KAAK,CAA8C;IAC3D,sDAAsD;IACtD,OAAO,CAAC,IAAI,CAA4B;IAExC,mDAAmD;IACnD,YAAY,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,SAAW,EAAE,MAAM,SAAS,EAI/E;IAED,kGAAkG;IAClG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,SAAI,GAAG,IAAI,CAIzC;IAED;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,GAAG,IAAI,CAWzE;IAED,iCAAiC;IACjC,KAAK,IAAI,IAAI,CAeZ;IAED,8FAA8F;IAC9F,IAAI,IAAI,IAAI,CAKX;IAED,OAAO,CAAC,KAAK;IAmBb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAIvB;IAEF,OAAO,CAAC,UAAU;IAYlB;;;;OAIG;IACH,OAAO,CAAC,IAAI;CAmBb"}
@@ -0,0 +1,140 @@
1
+ // What a page's connections say to it, gathered into one IPC message a
2
+ // millisecond at most: each message is serialized, posted and run as a
3
+ // task of the page's on its own, so a socket read or a WebSocket message
4
+ // apiece cost a page with busy connections tens of thousands a second.
5
+ // Apart from Electron so that node runs it in the tests
6
+ // (tests/desktop/relay.test.ts).
7
+ /**
8
+ * A batch that holds this many bytes goes at once, not when it would: a
9
+ * busy socket is not kept from its page, and neither the main process nor
10
+ * one message grows past it by more than a read.
11
+ */
12
+ export const FLUSH_AT = 256 * 1024;
13
+ /**
14
+ * The least time between two batches, in milliseconds. The first event
15
+ * after a quiet spell goes at the end of its turn, so that a request's
16
+ * answer waits for nothing; what follows within the window waits for its
17
+ * end, and goes with the rest that came by then. Socket reads that cost
18
+ * little come many to a millisecond, each with a few bytes: a turn's
19
+ * batch alone left one message for most of them. On Windows the timer
20
+ * may wait for the system's resolution, about 16 ms: docs/architecture/
21
+ * desktop.md says why that does.
22
+ */
23
+ export const WINDOW = 1;
24
+ export class Relay {
25
+ send;
26
+ flushAt;
27
+ batch = [];
28
+ size = 0;
29
+ /** Each connection's bytes, while nothing else of it has come after them in the batch. */
30
+ joining = new Map();
31
+ window;
32
+ immediate = null;
33
+ timer = null;
34
+ /** When the last batch went, by performance.now(). */
35
+ sent = Number.NEGATIVE_INFINITY;
36
+ /** `send` takes each batch, never an empty one. */
37
+ constructor(send, flushAt = FLUSH_AT, window = WINDOW) {
38
+ this.send = send;
39
+ this.flushAt = flushAt;
40
+ this.window = window;
41
+ }
42
+ /** `event` for `id`, after whatever came for it before; `size` of its bytes count to FLUSH_AT. */
43
+ push(id, event, size = 0) {
44
+ this.seal(id);
45
+ this.batch.push([id, event]);
46
+ this.added(size);
47
+ }
48
+ /**
49
+ * Bytes read for `id`, which it no longer holds: one event, as `wrap`
50
+ * makes it, with the bytes read for it before them in this batch.
51
+ */
52
+ bytes(id, chunk, wrap) {
53
+ const joining = this.joining.get(id);
54
+ if (joining) {
55
+ joining.chunks.push(chunk);
56
+ joining.length += chunk.length;
57
+ }
58
+ else {
59
+ this.joining.set(id, { at: this.batch.length, chunks: [chunk], length: chunk.length, wrap });
60
+ this.batch.push([id, wrap(chunk)]);
61
+ }
62
+ this.added(chunk.length);
63
+ }
64
+ /** Send what is gathered now. */
65
+ flush() {
66
+ this.unschedule();
67
+ if (this.batch.length === 0) {
68
+ return;
69
+ }
70
+ for (const id of this.joining.keys()) {
71
+ this.seal(id);
72
+ }
73
+ const batch = this.batch;
74
+ this.batch = [];
75
+ this.size = 0;
76
+ this.sent = performance.now();
77
+ this.send(batch);
78
+ }
79
+ /** Forget what is gathered: its page is gone, and the next numbers its connections from 1. */
80
+ drop() {
81
+ this.unschedule();
82
+ this.batch = [];
83
+ this.size = 0;
84
+ this.joining.clear();
85
+ }
86
+ added(size) {
87
+ this.size += size;
88
+ if (this.size >= this.flushAt) {
89
+ this.flush();
90
+ return;
91
+ }
92
+ if (this.immediate || this.timer) {
93
+ return;
94
+ }
95
+ const wait = this.sent + this.window - performance.now();
96
+ if (wait > 0) {
97
+ this.timer = setTimeout(this.flushing, wait);
98
+ }
99
+ else {
100
+ this.immediate = setImmediate(this.flushing);
101
+ }
102
+ }
103
+ flushing = () => {
104
+ this.immediate = null;
105
+ this.timer = null;
106
+ this.flush();
107
+ };
108
+ unschedule() {
109
+ if (this.immediate) {
110
+ clearImmediate(this.immediate);
111
+ this.immediate = null;
112
+ }
113
+ if (this.timer) {
114
+ clearTimeout(this.timer);
115
+ this.timer = null;
116
+ }
117
+ }
118
+ /**
119
+ * `id`'s bytes as one event, the chunks joined where there are more than
120
+ * one: a second copy of theirs, but one event for the SWF rather than one
121
+ * for each read, which costs it far more than the copy.
122
+ */
123
+ seal(id) {
124
+ const joining = this.joining.get(id);
125
+ if (!joining) {
126
+ return;
127
+ }
128
+ this.joining.delete(id);
129
+ if (joining.chunks.length > 1) {
130
+ const bytes = new Uint8Array(joining.length);
131
+ let offset = 0;
132
+ for (let i = 0; i < joining.chunks.length; i++) {
133
+ bytes.set(joining.chunks[i], offset);
134
+ offset += joining.chunks[i].length;
135
+ }
136
+ this.batch[joining.at][1] = joining.wrap(bytes);
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/main/relay.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,kBAAkB,CAAC;AAGtF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EACzC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,EAC5E,GAAG,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAW,EAC3C,IAAI,UAAQ,EACZ,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CA8EN"}
1
+ {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,kBAAkB,CAAC;AAMtF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EACzC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,EAC5E,GAAG,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAW,EAC3C,IAAI,UAAQ,EACZ,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CA4FN"}
@@ -1,9 +1,13 @@
1
1
  // flash.net.Socket's TCP connections, made here for the page, which has
2
2
  // no network of its own beyond fetch, and carried over IPC. Each page's
3
- // connections (connections.ts) close as it navigates, reloads or goes.
3
+ // connections (connections.ts) close as it navigates, reloads or goes, and
4
+ // their events go to it gathered, a message a millisecond at most
5
+ // (relay.ts).
4
6
  import { ipcMain } from "electron";
5
7
  import { Connections, validEndpoint } from "./connections.js";
6
8
  import { socketDataLine, socketLine } from "./netlog.js";
9
+ import { Relay } from "./relay.js";
10
+ const dataEvent = (bytes) => ({ type: "data", bytes });
7
11
  /**
8
12
  * Carry socket messages from pages that `trusted` accepts, each connection
9
13
  * made only as `permit` allows it, to the address it gives where it gives
@@ -19,6 +23,11 @@ export function bridgeSockets(trusted, permit, log = null, data = false, options
19
23
  if (known) {
20
24
  return known;
21
25
  }
26
+ const relay = new Relay((batch) => {
27
+ if (!contents.isDestroyed()) {
28
+ contents.send("socket:events", batch);
29
+ }
30
+ });
22
31
  const connections = new Connections((id, event) => {
23
32
  if (log && event.type !== "data") {
24
33
  log(socketLine(id, event.type === "error" ? `error: ${event.message}` : event.type));
@@ -26,26 +35,33 @@ export function bridgeSockets(trusted, permit, log = null, data = false, options
26
35
  else if (log && data && event.type === "data") {
27
36
  log(socketDataLine(id, false, event.bytes));
28
37
  }
29
- if (!contents.isDestroyed()) {
30
- contents.send("socket:event", id, event);
38
+ if (event.type === "data") {
39
+ relay.bytes(id, event.bytes, dataEvent);
40
+ }
41
+ else {
42
+ relay.push(id, event);
31
43
  }
32
44
  }, options);
33
45
  pages.set(contents, connections);
34
46
  contents.on("did-start-navigation", (details) => {
35
47
  if (details.isMainFrame && !details.isSameDocument) {
36
48
  connections.closeAll();
49
+ relay.drop();
37
50
  }
38
51
  });
39
52
  contents.once("destroyed", () => {
40
53
  connections.closeAll();
54
+ relay.drop();
41
55
  pages.delete(contents);
42
56
  });
43
57
  return connections;
44
58
  };
45
- ipcMain.on("socket:connect", (event, id, host, port) => {
59
+ ipcMain.on("socket:connect", (event, id, host, port, asked) => {
46
60
  if (!trusted(event) || typeof id !== "number") {
47
61
  return;
48
62
  }
63
+ // At once unless the SWF set tcpNoDelay to false (connections.ts).
64
+ const noDelay = asked !== false;
49
65
  const connections = connectionsOf(event.sender);
50
66
  if (!validEndpoint(host, port)) {
51
67
  connections.refuse(id);
@@ -62,7 +78,7 @@ export function bridgeSockets(trusted, permit, log = null, data = false, options
62
78
  const via = allowed && options.proxy ? " via proxy" : "";
63
79
  log?.(socketLine(id, `${allowed ? "connecting to" : "refused"} ${host}:${port}${via}`));
64
80
  if (allowed) {
65
- connections.connect(id, host, port, allowed.address);
81
+ connections.connect(id, host, port, allowed.address, noDelay);
66
82
  }
67
83
  else {
68
84
  connections.refuse(id);
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/main/sockets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"websockets.d.ts","sourceRoot":"","sources":["../../src/main/websockets.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;AAExE,OAAO,EACL,KAAK,MAAM,EAIZ,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EACzC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAW,EAC3C,IAAI,UAAQ,EACZ,GAAG,SAAK,GACP,IAAI,CAwFN"}
1
+ {"version":3,"file":"websockets.d.ts","sourceRoot":"","sources":["../../src/main/websockets.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,UAAU,CAAC;AAIxE,OAAO,EACL,KAAK,MAAM,EAIZ,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,EACzC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAW,EAC3C,IAAI,UAAQ,EACZ,GAAG,SAAK,GACP,IAAI,CA6FN"}
@@ -1,10 +1,15 @@
1
1
  // air.net.WebSocket's connections, made here for the page, which has no
2
2
  // network of its own, and carried over IPC as flash.net.Socket's are
3
3
  // (sockets.ts). Each page's connections (websocket-connections.ts) close
4
- // as it navigates, reloads or goes.
4
+ // as it navigates, reloads or goes, and their events go to it gathered,
5
+ // a message a millisecond at most (relay.ts), each message an event of its
6
+ // own.
5
7
  import { ipcMain } from "electron";
6
8
  import { webSocketDataLine, webSocketLine } from "./netlog.js";
9
+ import { Relay } from "./relay.js";
7
10
  import { validProtocols, validWebSocketUrl, WebSocketConnections, } from "./websocket-connections.js";
11
+ /** About what a message takes to send: a string's UTF-16 is two bytes a unit. */
12
+ const messageSize = (data) => typeof data === "string" ? data.length * 2 : data.length;
8
13
  /**
9
14
  * Carry WebSocket messages from pages that `trusted` accepts, each
10
15
  * connection made only where `permit` allows its URL, with `open` if
@@ -20,6 +25,11 @@ export function bridgeWebSockets(trusted, permit, open, log = null, data = false
20
25
  if (known) {
21
26
  return known;
22
27
  }
28
+ const relay = new Relay((batch) => {
29
+ if (!contents.isDestroyed()) {
30
+ contents.send("websocket:events", batch);
31
+ }
32
+ });
23
33
  const connections = new WebSocketConnections((id, event) => {
24
34
  if (log) {
25
35
  switch (event.type) {
@@ -39,18 +49,18 @@ export function bridgeWebSockets(trusted, permit, open, log = null, data = false
39
49
  break;
40
50
  }
41
51
  }
42
- if (!contents.isDestroyed()) {
43
- contents.send("websocket:event", id, event);
44
- }
52
+ relay.push(id, event, event.type === "message" ? messageSize(event.data) : 0);
45
53
  }, open);
46
54
  pages.set(contents, connections);
47
55
  contents.on("did-start-navigation", (details) => {
48
56
  if (details.isMainFrame && !details.isSameDocument) {
49
57
  connections.closeAll();
58
+ relay.drop();
50
59
  }
51
60
  });
52
61
  contents.once("destroyed", () => {
53
62
  connections.closeAll();
63
+ relay.drop();
54
64
  pages.delete(contents);
55
65
  });
56
66
  return connections;
@@ -1 +1 @@
1
- {"version":3,"file":"websockets.js","sourceRoot":"","sources":["../../src/main/websockets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websockets.js","sourceRoot":"","sources":["../../src/main/websockets.ts"],"names":[],"mappings":"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"}
@@ -34,15 +34,16 @@ const api = {
34
34
  openDropped: (file) => ipcRenderer.send("desktop:open-path", webUtils.getPathForFile(file)),
35
35
  chooseLibrary: (name) => ipcRenderer.send("desktop:choose-library", name),
36
36
  sockets: {
37
- connect: (host, port) => {
37
+ connect: (host, port, noDelay) => {
38
38
  const id = nextSocket++;
39
- ipcRenderer.send("socket:connect", id, String(host), Number(port));
39
+ const asked = typeof noDelay === "boolean" ? noDelay : undefined;
40
+ ipcRenderer.send("socket:connect", id, String(host), Number(port), asked);
40
41
  return id;
41
42
  },
42
43
  send: (id, bytes) => ipcRenderer.send("socket:send", id, bytes),
43
44
  close: (id) => ipcRenderer.send("socket:close", id),
44
- onEvent: (listener) => {
45
- ipcRenderer.on("socket:event", (_event, id, event) => listener(id, event));
45
+ onEvents: (listener) => {
46
+ ipcRenderer.on("socket:events", (_event, events) => listener(events));
46
47
  },
47
48
  },
48
49
  webSockets: {
@@ -53,8 +54,8 @@ const api = {
53
54
  },
54
55
  send: (id, data) => ipcRenderer.send("websocket:send", id, data),
55
56
  close: (id, code) => ipcRenderer.send("websocket:close", id, code),
56
- onEvent: (listener) => {
57
- ipcRenderer.on("websocket:event", (_event, id, event) => listener(id, event));
57
+ onEvents: (listener) => {
58
+ ipcRenderer.on("websocket:events", (_event, events) => listener(events));
58
59
  },
59
60
  },
60
61
  network: {
@@ -1 +1 @@
1
- {"version":3,"file":"preload.cjs","sourceRoot":"","sources":["../../src/preload/preload.cts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preload.cjs","sourceRoot":"","sources":["../../src/preload/preload.cts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/renderer/sockets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAoCnE"}
1
+ {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/renderer/sockets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CA6CnE"}
@@ -1,30 +1,40 @@
1
1
  export function shellSocketHost(sockets) {
2
2
  // Until its close, which the shell sends after an error and after a close asked for.
3
3
  const open = new Map();
4
- sockets.onEvent((id, event) => {
5
- const events = open.get(id);
6
- if (!events) {
7
- return;
8
- }
9
- switch (event.type) {
10
- case "open":
11
- events.open(event);
12
- break;
13
- case "data":
14
- events.data(event.bytes);
15
- break;
16
- case "error":
17
- events.error(event.message);
18
- break;
19
- case "close":
20
- open.delete(id);
21
- events.close();
22
- break;
4
+ // A batch is one task: its events go to their connections in one loop.
5
+ sockets.onEvents((batch) => {
6
+ for (let i = 0; i < batch.length; i++) {
7
+ const [id, event] = batch[i];
8
+ const events = open.get(id);
9
+ if (!events) {
10
+ continue;
11
+ }
12
+ // One that throws leaves the rest to run, as when each came in a message of its own.
13
+ try {
14
+ switch (event.type) {
15
+ case "open":
16
+ events.open(event);
17
+ break;
18
+ case "data":
19
+ events.data(event.bytes);
20
+ break;
21
+ case "error":
22
+ events.error(event.message);
23
+ break;
24
+ case "close":
25
+ open.delete(id);
26
+ events.close();
27
+ break;
28
+ }
29
+ }
30
+ catch (error) {
31
+ reportError(error);
32
+ }
23
33
  }
24
34
  });
25
35
  return {
26
- connect(host, port, events) {
27
- const id = sockets.connect(host, port);
36
+ connect(host, port, events, options) {
37
+ const id = sockets.connect(host, port, options?.noDelay);
28
38
  open.set(id, events);
29
39
  return {
30
40
  send: (bytes) => sockets.send(id, bytes),
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/renderer/sockets.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,qFAAqF;IACrF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;YACxB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;gBACxC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/renderer/sockets.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,qFAAqF;IACrF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,qFAAqF;YACrF,IAAI,CAAC;gBACH,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM;wBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,MAAM;oBACR,KAAK,MAAM;wBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACzB,MAAM;oBACR,KAAK,OAAO;wBACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,OAAO;wBACV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAChB,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;YACjC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;gBACxC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"websockets.d.ts","sourceRoot":"","sources":["../../src/renderer/websockets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,aAAa,CAoC/E"}
1
+ {"version":3,"file":"websockets.d.ts","sourceRoot":"","sources":["../../src/renderer/websockets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,aAAa,CA6C/E"}
@@ -1,25 +1,35 @@
1
1
  export function shellWebSocketHost(webSockets) {
2
2
  // Until its close, which the shell sends after a failure too.
3
3
  const open = new Map();
4
- webSockets.onEvent((id, event) => {
5
- const events = open.get(id);
6
- if (!events) {
7
- return;
8
- }
9
- switch (event.type) {
10
- case "open":
11
- events.open(event.protocol);
12
- break;
13
- case "message":
14
- events.message(event.data);
15
- break;
16
- case "error":
17
- events.error();
18
- break;
19
- case "close":
20
- open.delete(id);
21
- events.close(event.code);
22
- break;
4
+ // A batch is one task: its events, a message each, go to their connections in one loop.
5
+ webSockets.onEvents((batch) => {
6
+ for (let i = 0; i < batch.length; i++) {
7
+ const [id, event] = batch[i];
8
+ const events = open.get(id);
9
+ if (!events) {
10
+ continue;
11
+ }
12
+ // One that throws leaves the rest to run, as when each came in a message of its own.
13
+ try {
14
+ switch (event.type) {
15
+ case "open":
16
+ events.open(event.protocol);
17
+ break;
18
+ case "message":
19
+ events.message(event.data);
20
+ break;
21
+ case "error":
22
+ events.error();
23
+ break;
24
+ case "close":
25
+ open.delete(id);
26
+ events.close(event.code);
27
+ break;
28
+ }
29
+ }
30
+ catch (error) {
31
+ reportError(error);
32
+ }
23
33
  }
24
34
  });
25
35
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"websockets.js","sourceRoot":"","sources":["../../src/renderer/websockets.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,kBAAkB,CAAC,UAA6B;IAC9D,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM;YAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;gBACzC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;aAC5C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"websockets.js","sourceRoot":"","sources":["../../src/renderer/websockets.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,kBAAkB,CAAC,UAA6B;IAC9D,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,wFAAwF;IACxF,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,qFAAqF;YACrF,IAAI,CAAC;gBACH,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM;wBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,SAAS;wBACZ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3B,MAAM;oBACR,KAAK,OAAO;wBACV,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,MAAM;oBACR,KAAK,OAAO;wBACV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAChB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACzB,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM;YAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;gBACzC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;aAC5C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}