green-screen-proxy 1.0.2 → 1.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/controller.d.ts +36 -0
- package/dist/controller.d.ts.map +1 -0
- package/dist/controller.js +144 -0
- package/dist/controller.js.map +1 -0
- package/dist/protocols/tn5250-handler.d.ts +24 -1
- package/dist/protocols/tn5250-handler.d.ts.map +1 -1
- package/dist/protocols/tn5250-handler.js +251 -16
- package/dist/protocols/tn5250-handler.js.map +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +2 -4
- package/dist/routes.js.map +1 -1
- package/dist/session.d.ts +2 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +2 -2
- package/dist/session.js.map +1 -1
- package/dist/tn5250/connection.d.ts +2 -1
- package/dist/tn5250/connection.d.ts.map +1 -1
- package/dist/tn5250/connection.js +5 -3
- package/dist/tn5250/connection.js.map +1 -1
- package/dist/tn5250/constants.d.ts +15 -0
- package/dist/tn5250/constants.d.ts.map +1 -1
- package/dist/tn5250/constants.js +18 -0
- package/dist/tn5250/constants.js.map +1 -1
- package/dist/tn5250/encoder.d.ts +11 -0
- package/dist/tn5250/encoder.d.ts.map +1 -1
- package/dist/tn5250/encoder.js +107 -5
- package/dist/tn5250/encoder.js.map +1 -1
- package/dist/tn5250/parser.d.ts +64 -6
- package/dist/tn5250/parser.d.ts.map +1 -1
- package/dist/tn5250/parser.js +582 -139
- package/dist/tn5250/parser.js.map +1 -1
- package/dist/tn5250/screen.d.ts +93 -0
- package/dist/tn5250/screen.d.ts.map +1 -1
- package/dist/tn5250/screen.js +283 -12
- package/dist/tn5250/screen.js.map +1 -1
- package/dist/websocket.d.ts +0 -3
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +123 -139
- package/dist/websocket.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ProtocolHandler } from './protocols/index.js';
|
|
2
|
+
import type { ProtocolType, ScreenData } from './protocols/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Shared session controller that handles the WebSocket message protocol
|
|
5
|
+
* (connect, text, key, disconnect) for a single terminal session.
|
|
6
|
+
*
|
|
7
|
+
* Used by both the local proxy (websocket.ts) and the Cloudflare Worker.
|
|
8
|
+
* Platform-specific concerns (multi-session management, rate limiting,
|
|
9
|
+
* idle timers, host validation) stay in each consumer.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SessionController {
|
|
12
|
+
handler: ProtocolHandler | null;
|
|
13
|
+
connected: boolean;
|
|
14
|
+
private send;
|
|
15
|
+
constructor(send: (msg: object) => void);
|
|
16
|
+
/**
|
|
17
|
+
* Connect to a host and optionally auto-sign-in.
|
|
18
|
+
* Returns the session's ProtocolHandler for event binding by the caller.
|
|
19
|
+
*/
|
|
20
|
+
handleConnect(opts: {
|
|
21
|
+
host: string;
|
|
22
|
+
port?: number;
|
|
23
|
+
protocol?: ProtocolType;
|
|
24
|
+
username?: string;
|
|
25
|
+
password?: string;
|
|
26
|
+
sessionId: string;
|
|
27
|
+
terminalType?: string;
|
|
28
|
+
}): Promise<ProtocolHandler>;
|
|
29
|
+
handleText(text: string): void;
|
|
30
|
+
handleKey(key: string): Promise<void>;
|
|
31
|
+
handleSetCursor(row: number, col: number): void;
|
|
32
|
+
handleDisconnect(): void;
|
|
33
|
+
getScreenData(): ScreenData | null;
|
|
34
|
+
private waitForScreen;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAiB,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,OAAO,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAwB;gBAExB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAIvC;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4C5B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C3C,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAY/C,gBAAgB,IAAI,IAAI;IASxB,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,OAAO,CAAC,aAAa;CAUtB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { createProtocolHandler, TN5250Handler } from './protocols/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shared session controller that handles the WebSocket message protocol
|
|
4
|
+
* (connect, text, key, disconnect) for a single terminal session.
|
|
5
|
+
*
|
|
6
|
+
* Used by both the local proxy (websocket.ts) and the Cloudflare Worker.
|
|
7
|
+
* Platform-specific concerns (multi-session management, rate limiting,
|
|
8
|
+
* idle timers, host validation) stay in each consumer.
|
|
9
|
+
*/
|
|
10
|
+
export class SessionController {
|
|
11
|
+
handler = null;
|
|
12
|
+
connected = false;
|
|
13
|
+
send;
|
|
14
|
+
constructor(send) {
|
|
15
|
+
this.send = send;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Connect to a host and optionally auto-sign-in.
|
|
19
|
+
* Returns the session's ProtocolHandler for event binding by the caller.
|
|
20
|
+
*/
|
|
21
|
+
async handleConnect(opts) {
|
|
22
|
+
if (this.handler) {
|
|
23
|
+
this.handler.destroy();
|
|
24
|
+
this.handler = null;
|
|
25
|
+
this.connected = false;
|
|
26
|
+
}
|
|
27
|
+
const { host, port = 23, protocol = 'tn5250', username, password, sessionId, terminalType } = opts;
|
|
28
|
+
this.handler = createProtocolHandler(protocol);
|
|
29
|
+
this.send({ type: 'status', data: { connected: false, status: 'connecting', protocol, host } });
|
|
30
|
+
// Bind protocol events → WebSocket messages
|
|
31
|
+
this.handler.on('screenChange', (data) => {
|
|
32
|
+
this.send({ type: 'screen', data });
|
|
33
|
+
});
|
|
34
|
+
this.handler.on('disconnected', () => {
|
|
35
|
+
this.connected = false;
|
|
36
|
+
this.send({ type: 'status', data: { connected: false, status: 'disconnected', protocol, host } });
|
|
37
|
+
});
|
|
38
|
+
this.handler.on('error', (err) => {
|
|
39
|
+
this.send({ type: 'error', message: err.message });
|
|
40
|
+
this.send({ type: 'status', data: { connected: false, status: 'error', protocol, host, error: err.message } });
|
|
41
|
+
});
|
|
42
|
+
await this.handler.connect(host, port, terminalType ? { terminalType } : undefined);
|
|
43
|
+
this.connected = true;
|
|
44
|
+
this.send({ type: 'status', data: { connected: true, status: 'connected', protocol, host } });
|
|
45
|
+
// Auto-sign-in if credentials provided and handler supports it
|
|
46
|
+
if (username && password && this.handler instanceof TN5250Handler) {
|
|
47
|
+
const screen = await this.handler.performAutoSignIn(username, password);
|
|
48
|
+
if (screen) {
|
|
49
|
+
this.send({ type: 'screen', data: screen });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const screen = await this.waitForScreen(5000);
|
|
54
|
+
this.send({ type: 'screen', data: screen });
|
|
55
|
+
}
|
|
56
|
+
this.send({ type: 'connected', sessionId });
|
|
57
|
+
return this.handler;
|
|
58
|
+
}
|
|
59
|
+
handleText(text) {
|
|
60
|
+
if (!this.handler || !this.connected) {
|
|
61
|
+
this.send({ type: 'error', message: 'Not connected' });
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.handler.sendText(text);
|
|
65
|
+
this.send({ type: 'screen', data: this.handler.getScreenData() });
|
|
66
|
+
}
|
|
67
|
+
async handleKey(key) {
|
|
68
|
+
if (!this.handler || !this.connected) {
|
|
69
|
+
this.send({ type: 'error', message: 'Not connected' });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const ok = this.handler.sendKey(key);
|
|
73
|
+
if (!ok) {
|
|
74
|
+
this.send({ type: 'error', message: `Unknown key: ${key}` });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Local operations — respond immediately without waiting for host
|
|
78
|
+
const localKeys = [
|
|
79
|
+
'Tab', 'Backtab', 'TAB', 'BACKTAB',
|
|
80
|
+
'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',
|
|
81
|
+
'LEFT', 'RIGHT', 'UP', 'DOWN',
|
|
82
|
+
'Home', 'HOME', 'End', 'END',
|
|
83
|
+
'Backspace', 'BACKSPACE', 'Delete', 'DELETE',
|
|
84
|
+
'Insert', 'INSERT',
|
|
85
|
+
'Reset', 'RESET',
|
|
86
|
+
'FieldExit', 'FIELD_EXIT', 'FIELDEXIT',
|
|
87
|
+
];
|
|
88
|
+
if (localKeys.includes(key)) {
|
|
89
|
+
// Local buffer-modifying ops need full screen; cursor-only ops don't
|
|
90
|
+
const bufferOps = ['Backspace', 'BACKSPACE', 'Delete', 'DELETE',
|
|
91
|
+
'Insert', 'INSERT',
|
|
92
|
+
'Reset', 'RESET',
|
|
93
|
+
'FieldExit', 'FIELD_EXIT', 'FIELDEXIT'];
|
|
94
|
+
if (bufferOps.includes(key)) {
|
|
95
|
+
this.send({ type: 'screen', data: this.handler.getScreenData() });
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Cursor-only movement — send lightweight response
|
|
99
|
+
const sd = this.handler.getScreenData();
|
|
100
|
+
this.send({ type: 'cursor', data: { cursor_row: sd.cursor_row, cursor_col: sd.cursor_col } });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
await this.waitForScreen(3000);
|
|
105
|
+
this.send({ type: 'screen', data: this.handler.getScreenData() });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
handleSetCursor(row, col) {
|
|
109
|
+
if (!this.handler || !this.connected) {
|
|
110
|
+
this.send({ type: 'error', message: 'Not connected' });
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (this.handler instanceof TN5250Handler) {
|
|
114
|
+
this.handler.setCursor(row, col);
|
|
115
|
+
}
|
|
116
|
+
const sd = this.handler.getScreenData();
|
|
117
|
+
this.send({ type: 'cursor', data: { cursor_row: sd.cursor_row, cursor_col: sd.cursor_col } });
|
|
118
|
+
}
|
|
119
|
+
handleDisconnect() {
|
|
120
|
+
if (this.handler) {
|
|
121
|
+
this.handler.destroy();
|
|
122
|
+
this.handler = null;
|
|
123
|
+
}
|
|
124
|
+
this.connected = false;
|
|
125
|
+
this.send({ type: 'status', data: { connected: false, status: 'disconnected' } });
|
|
126
|
+
}
|
|
127
|
+
getScreenData() {
|
|
128
|
+
return this.handler?.getScreenData() ?? null;
|
|
129
|
+
}
|
|
130
|
+
waitForScreen(timeoutMs) {
|
|
131
|
+
return new Promise((resolve) => {
|
|
132
|
+
if (!this.handler) {
|
|
133
|
+
resolve(null);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const timer = setTimeout(() => resolve(this.handler.getScreenData()), timeoutMs);
|
|
137
|
+
this.handler.once('screenChange', (data) => {
|
|
138
|
+
clearTimeout(timer);
|
|
139
|
+
resolve(data);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,11 +16,18 @@ export declare class TN5250Handler extends ProtocolHandler {
|
|
|
16
16
|
readonly encoder: TN5250Encoder;
|
|
17
17
|
constructor();
|
|
18
18
|
get isConnected(): boolean;
|
|
19
|
-
connect(host: string, port: number,
|
|
19
|
+
connect(host: string, port: number, options?: ProtocolOptions): Promise<void>;
|
|
20
20
|
disconnect(): void;
|
|
21
21
|
getScreenData(): ScreenData;
|
|
22
22
|
sendText(text: string): boolean;
|
|
23
23
|
sendKey(keyName: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Delete character at current cursor position within a field.
|
|
26
|
+
* Shifts all characters to the right of cursor one position left.
|
|
27
|
+
* Pads the end of the field with a space. Marks field as modified.
|
|
28
|
+
* Per lib5250 dbuffer.c:693-737 (dbuffer_del).
|
|
29
|
+
*/
|
|
30
|
+
private deleteCharAtCursor;
|
|
24
31
|
private normalizeKeyName;
|
|
25
32
|
/**
|
|
26
33
|
* Fill the first two input fields (username, password) and press Enter.
|
|
@@ -43,6 +50,22 @@ export declare class TN5250Handler extends ProtocolHandler {
|
|
|
43
50
|
*/
|
|
44
51
|
restoreFields(): void;
|
|
45
52
|
private isFieldEmpty;
|
|
53
|
+
/**
|
|
54
|
+
* Full auto-sign-in flow: wait for sign-in fields, fill credentials,
|
|
55
|
+
* submit, wait for confirmation screen, and restore field values.
|
|
56
|
+
* Returns the final screen data, or null if sign-in fields weren't found.
|
|
57
|
+
*/
|
|
58
|
+
performAutoSignIn(username: string, password: string): Promise<ScreenData | null>;
|
|
59
|
+
/** Wait for the next screenChange event (or timeout with current screen). */
|
|
60
|
+
private waitForScreen;
|
|
61
|
+
/** Wait until the screen has at least `minFields` input fields, or timeout. */
|
|
62
|
+
private waitForScreenWithFields;
|
|
63
|
+
/**
|
|
64
|
+
* Set cursor position (for click-to-position). Validates the target is
|
|
65
|
+
* inside an input field; if not, finds the nearest input field.
|
|
66
|
+
* Returns true if the cursor was repositioned.
|
|
67
|
+
*/
|
|
68
|
+
setCursor(row: number, col: number): boolean;
|
|
46
69
|
sendRaw(data: Buffer): void;
|
|
47
70
|
destroy(): void;
|
|
48
71
|
private onRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tn5250-handler.d.ts","sourceRoot":"","sources":["../../src/protocols/tn5250-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAY,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tn5250-handler.d.ts","sourceRoot":"","sources":["../../src/protocols/tn5250-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAY,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAChD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAY;IAE3C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;;IAchC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnF,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,UAAU;IAI3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAsJjC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,gBAAgB;IAcxB;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAmDvD,iEAAiE;IACjE,OAAO,CAAC,WAAW,CAA6E;IAEhG;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAerB,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASvF,6EAA6E;IAC7E,OAAO,CAAC,aAAa;IAUrB,+EAA+E;IAC/E,OAAO,CAAC,uBAAuB;IAuB/B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAyC5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,QAAQ;CAuBjB"}
|
|
@@ -3,6 +3,7 @@ import { TN5250Connection } from '../tn5250/connection.js';
|
|
|
3
3
|
import { ScreenBuffer } from '../tn5250/screen.js';
|
|
4
4
|
import { TN5250Parser } from '../tn5250/parser.js';
|
|
5
5
|
import { TN5250Encoder } from '../tn5250/encoder.js';
|
|
6
|
+
import { TERMINAL_TYPE, TERMINAL_TYPE_WIDE, TERMINAL_DIMENSIONS } from '../tn5250/constants.js';
|
|
6
7
|
/**
|
|
7
8
|
* TN5250 protocol handler — implements the ProtocolHandler interface
|
|
8
9
|
* for IBM i (AS/400) TN5250 terminal connections.
|
|
@@ -26,8 +27,18 @@ export class TN5250Handler extends ProtocolHandler {
|
|
|
26
27
|
get isConnected() {
|
|
27
28
|
return this.connection.isConnected;
|
|
28
29
|
}
|
|
29
|
-
async connect(host, port,
|
|
30
|
-
|
|
30
|
+
async connect(host, port, options) {
|
|
31
|
+
// Resolve terminal type from options
|
|
32
|
+
let termType = options?.terminalType || TERMINAL_TYPE;
|
|
33
|
+
if (!options?.terminalType && options?.cols && options.cols > 80) {
|
|
34
|
+
termType = TERMINAL_TYPE_WIDE;
|
|
35
|
+
}
|
|
36
|
+
// Resize screen buffer if dimensions differ from default
|
|
37
|
+
const dims = TERMINAL_DIMENSIONS[termType] || TERMINAL_DIMENSIONS[TERMINAL_TYPE];
|
|
38
|
+
if (dims.rows !== this.screen.rows || dims.cols !== this.screen.cols) {
|
|
39
|
+
this.screen.resize(dims.rows, dims.cols);
|
|
40
|
+
}
|
|
41
|
+
await this.connection.connect(host, port, termType);
|
|
31
42
|
}
|
|
32
43
|
disconnect() {
|
|
33
44
|
this.connection.disconnect();
|
|
@@ -42,32 +53,113 @@ export class TN5250Handler extends ProtocolHandler {
|
|
|
42
53
|
// Normalize key names: frontend sends uppercase (ENTER, TAB) but
|
|
43
54
|
// KEY_TO_AID uses mixed case (Enter, PageUp). Handle both.
|
|
44
55
|
const normalizedKey = this.normalizeKeyName(keyName);
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
|
|
56
|
+
// Arrow keys: local cursor movement within input fields.
|
|
57
|
+
// Left/Right: move within current field, stop at field boundaries.
|
|
58
|
+
// Up/Down: move to previous/next input field.
|
|
59
|
+
if (normalizedKey === 'ArrowLeft' || normalizedKey === 'ArrowRight' ||
|
|
60
|
+
normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowDown') {
|
|
61
|
+
const field = this.screen.getFieldAtCursor();
|
|
62
|
+
if (!field || !this.screen.isInputField(field))
|
|
63
|
+
return true; // no-op outside input
|
|
64
|
+
if (normalizedKey === 'ArrowLeft') {
|
|
65
|
+
if (this.screen.cursorCol > field.col) {
|
|
66
|
+
this.screen.cursorCol--;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (normalizedKey === 'ArrowRight') {
|
|
70
|
+
// Stop at end of data (last non-space char + 1), not end of field
|
|
71
|
+
const fieldStart = this.screen.offset(field.row, field.col);
|
|
72
|
+
let lastData = field.col;
|
|
73
|
+
for (let i = 0; i < field.length; i++) {
|
|
74
|
+
if (this.screen.buffer[fieldStart + i] !== ' ')
|
|
75
|
+
lastData = field.col + i + 1;
|
|
76
|
+
}
|
|
77
|
+
const rightLimit = Math.min(lastData, field.col + field.length - 1);
|
|
78
|
+
if (this.screen.cursorCol < rightLimit) {
|
|
79
|
+
this.screen.cursorCol++;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Up/Down: move to prev/next input field (reuse Tab/Backtab logic)
|
|
84
|
+
return this.sendKey(normalizedKey === 'ArrowUp' ? 'Backtab' : 'Tab');
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
// Backspace: move cursor left, delete character at new position (shift left)
|
|
89
|
+
// Per lib5250 display.c:1970-1997, 1385-1389
|
|
90
|
+
if (normalizedKey === 'Backspace') {
|
|
91
|
+
const field = this.screen.getFieldAtCursor();
|
|
92
|
+
if (!field || !this.screen.isInputField(field))
|
|
93
|
+
return true;
|
|
94
|
+
// If at start of field, don't go further
|
|
95
|
+
if (this.screen.cursorCol <= field.col)
|
|
96
|
+
return true;
|
|
97
|
+
// Move left
|
|
98
|
+
this.screen.cursorCol--;
|
|
99
|
+
// Delete character at cursor (shift remaining left, pad with space)
|
|
100
|
+
this.deleteCharAtCursor(field);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// Delete: delete character at cursor position (shift remaining left)
|
|
104
|
+
// Per lib5250 display.c:2221-2244, dbuffer.c:693-737
|
|
105
|
+
if (normalizedKey === 'Delete') {
|
|
106
|
+
const field = this.screen.getFieldAtCursor();
|
|
107
|
+
if (!field || !this.screen.isInputField(field))
|
|
108
|
+
return true;
|
|
109
|
+
this.deleteCharAtCursor(field);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
// Home: move cursor to start of current input field
|
|
113
|
+
if (normalizedKey === 'Home') {
|
|
114
|
+
const field = this.screen.getFieldAtCursor();
|
|
115
|
+
if (field && this.screen.isInputField(field)) {
|
|
116
|
+
this.screen.cursorCol = field.col;
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
// End: move cursor to end of data in current input field
|
|
121
|
+
if (normalizedKey === 'End') {
|
|
122
|
+
const field = this.screen.getFieldAtCursor();
|
|
123
|
+
if (field && this.screen.isInputField(field)) {
|
|
124
|
+
const start = this.screen.offset(field.row, field.col);
|
|
125
|
+
let lastData = field.col;
|
|
126
|
+
for (let i = 0; i < field.length; i++) {
|
|
127
|
+
if (this.screen.buffer[start + i] !== ' ')
|
|
128
|
+
lastData = field.col + i + 1;
|
|
129
|
+
}
|
|
130
|
+
this.screen.cursorCol = Math.min(lastData, field.col + field.length - 1);
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
// Tab/Backtab: move cursor to next/previous input field.
|
|
135
|
+
// Filter out UIM framework artifact fields that are technically non-bypass
|
|
136
|
+
// but not functional for user input (e.g. the selection field at (1,2) on
|
|
137
|
+
// the main menu produces "Type option number or command" error when used).
|
|
138
|
+
// Keep fields with native underscore/non-display (real interactive fields).
|
|
139
|
+
// Fall back to all input fields if none match the filter.
|
|
49
140
|
if (normalizedKey === 'Tab' || normalizedKey === 'Backtab') {
|
|
50
141
|
const allInputs = this.screen.fields
|
|
51
142
|
.filter(f => this.screen.isInputField(f))
|
|
52
143
|
.sort((a, b) => this.screen.offset(a.row, a.col) - this.screen.offset(b.row, b.col));
|
|
53
144
|
if (allInputs.length === 0)
|
|
54
145
|
return false;
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
146
|
+
// Exclude non-display fields (like UIM artifacts with rawAttr 0x27) —
|
|
147
|
+
// they appear as invisible input areas that produce errors when used.
|
|
148
|
+
// All other input fields (underscored, normal display, etc.) are kept.
|
|
149
|
+
const functional = allInputs.filter(f => !this.screen.hasNativeNonDisplay(f));
|
|
150
|
+
// If no fields have visible input indicators, use only the last input
|
|
151
|
+
// field (typically the command line). UIM artifact fields earlier in the
|
|
152
|
+
// list are not functional — typing in them produces errors.
|
|
153
|
+
const inputFields = functional.length > 0 ? functional
|
|
154
|
+
: [allInputs[allInputs.length - 1]];
|
|
61
155
|
const cursorPos = this.screen.offset(this.screen.cursorRow, this.screen.cursorCol);
|
|
62
156
|
if (normalizedKey === 'Tab') {
|
|
63
|
-
// Find the next input field after cursor
|
|
64
157
|
const next = inputFields.find(f => this.screen.offset(f.row, f.col) > cursorPos);
|
|
65
|
-
const target = next || inputFields[0];
|
|
158
|
+
const target = next || inputFields[0];
|
|
66
159
|
this.screen.cursorRow = target.row;
|
|
67
160
|
this.screen.cursorCol = target.col;
|
|
68
161
|
}
|
|
69
162
|
else {
|
|
70
|
-
// Backtab: find previous input field
|
|
71
163
|
const prev = [...inputFields].reverse().find(f => this.screen.offset(f.row, f.col) < cursorPos);
|
|
72
164
|
const target = prev || inputFields[inputFields.length - 1];
|
|
73
165
|
this.screen.cursorRow = target.row;
|
|
@@ -75,19 +167,61 @@ export class TN5250Handler extends ProtocolHandler {
|
|
|
75
167
|
}
|
|
76
168
|
return true;
|
|
77
169
|
}
|
|
170
|
+
// Field Exit: right-adjust field value, mark modified, advance to next field
|
|
171
|
+
if (normalizedKey === 'FieldExit') {
|
|
172
|
+
this.encoder.fieldExit();
|
|
173
|
+
return this.sendKey('Tab');
|
|
174
|
+
}
|
|
175
|
+
// Reset: clear keyboard lock and error line (client-side only, nothing sent to host)
|
|
176
|
+
if (normalizedKey === 'Reset') {
|
|
177
|
+
this.screen.keyboardLocked = false;
|
|
178
|
+
this.screen.clearErrorLine();
|
|
179
|
+
if (this.screen.savedCursorBeforeError) {
|
|
180
|
+
this.screen.cursorRow = this.screen.savedCursorBeforeError.row;
|
|
181
|
+
this.screen.cursorCol = this.screen.savedCursorBeforeError.col;
|
|
182
|
+
this.screen.savedCursorBeforeError = null;
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
// Insert: toggle insert/overwrite mode (client-side only)
|
|
187
|
+
if (normalizedKey === 'Insert') {
|
|
188
|
+
this.screen.insertMode = !this.screen.insertMode;
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
78
191
|
const response = this.encoder.buildAidResponse(normalizedKey);
|
|
79
192
|
if (!response)
|
|
80
193
|
return false;
|
|
81
194
|
this.connection.sendRaw(response);
|
|
82
195
|
return true;
|
|
83
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Delete character at current cursor position within a field.
|
|
199
|
+
* Shifts all characters to the right of cursor one position left.
|
|
200
|
+
* Pads the end of the field with a space. Marks field as modified.
|
|
201
|
+
* Per lib5250 dbuffer.c:693-737 (dbuffer_del).
|
|
202
|
+
*/
|
|
203
|
+
deleteCharAtCursor(field) {
|
|
204
|
+
const fieldStart = this.screen.offset(field.row, field.col);
|
|
205
|
+
const fieldEnd = fieldStart + field.length;
|
|
206
|
+
const cursorAddr = this.screen.offset(this.screen.cursorRow, this.screen.cursorCol);
|
|
207
|
+
// Shift characters left from cursor+1 to end of field
|
|
208
|
+
for (let i = cursorAddr; i < fieldEnd - 1; i++) {
|
|
209
|
+
this.screen.buffer[i] = this.screen.buffer[i + 1];
|
|
210
|
+
}
|
|
211
|
+
// Pad last position with space
|
|
212
|
+
this.screen.buffer[fieldEnd - 1] = ' ';
|
|
213
|
+
field.modified = true;
|
|
214
|
+
}
|
|
84
215
|
normalizeKeyName(key) {
|
|
85
216
|
const map = {
|
|
86
217
|
'ENTER': 'Enter', 'TAB': 'Tab', 'BACKTAB': 'Backtab',
|
|
87
218
|
'PAGEUP': 'PageUp', 'PAGEDOWN': 'PageDown',
|
|
88
|
-
'
|
|
219
|
+
'BACKSPACE': 'Backspace', 'DELETE': 'Delete',
|
|
220
|
+
'CLEAR': 'Clear', 'HELP': 'Help', 'PRINT': 'Print',
|
|
89
221
|
'UP': 'ArrowUp', 'DOWN': 'ArrowDown', 'LEFT': 'ArrowLeft', 'RIGHT': 'ArrowRight',
|
|
90
222
|
'HOME': 'Home', 'END': 'End', 'INSERT': 'Insert',
|
|
223
|
+
'RESET': 'Reset',
|
|
224
|
+
'FIELD_EXIT': 'FieldExit', 'FIELDEXIT': 'FieldExit',
|
|
91
225
|
};
|
|
92
226
|
return map[key] || key;
|
|
93
227
|
}
|
|
@@ -193,6 +327,94 @@ export class TN5250Handler extends ProtocolHandler {
|
|
|
193
327
|
}
|
|
194
328
|
return true;
|
|
195
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Full auto-sign-in flow: wait for sign-in fields, fill credentials,
|
|
332
|
+
* submit, wait for confirmation screen, and restore field values.
|
|
333
|
+
* Returns the final screen data, or null if sign-in fields weren't found.
|
|
334
|
+
*/
|
|
335
|
+
async performAutoSignIn(username, password) {
|
|
336
|
+
await this.waitForScreenWithFields(2, 5000);
|
|
337
|
+
const ok = this.autoSignIn(username, password);
|
|
338
|
+
if (!ok)
|
|
339
|
+
return null;
|
|
340
|
+
await this.waitForScreen(10000);
|
|
341
|
+
this.restoreFields();
|
|
342
|
+
return this.getScreenData();
|
|
343
|
+
}
|
|
344
|
+
/** Wait for the next screenChange event (or timeout with current screen). */
|
|
345
|
+
waitForScreen(timeoutMs) {
|
|
346
|
+
return new Promise((resolve) => {
|
|
347
|
+
const timer = setTimeout(() => resolve(this.getScreenData()), timeoutMs);
|
|
348
|
+
this.once('screenChange', (data) => {
|
|
349
|
+
clearTimeout(timer);
|
|
350
|
+
resolve(data);
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
/** Wait until the screen has at least `minFields` input fields, or timeout. */
|
|
355
|
+
waitForScreenWithFields(minFields, timeoutMs) {
|
|
356
|
+
return new Promise((resolve) => {
|
|
357
|
+
const timer = setTimeout(() => resolve(this.getScreenData()), timeoutMs);
|
|
358
|
+
const check = (data) => {
|
|
359
|
+
const inputFields = (data.fields || []).filter((f) => f.is_input);
|
|
360
|
+
if (inputFields.length >= minFields) {
|
|
361
|
+
clearTimeout(timer);
|
|
362
|
+
this.removeListener('screenChange', check);
|
|
363
|
+
resolve(data);
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
// Check current state first
|
|
367
|
+
const current = this.getScreenData();
|
|
368
|
+
const currentInputs = (current.fields || []).filter((f) => f.is_input);
|
|
369
|
+
if (currentInputs.length >= minFields) {
|
|
370
|
+
clearTimeout(timer);
|
|
371
|
+
resolve(current);
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
this.on('screenChange', check);
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Set cursor position (for click-to-position). Validates the target is
|
|
379
|
+
* inside an input field; if not, finds the nearest input field.
|
|
380
|
+
* Returns true if the cursor was repositioned.
|
|
381
|
+
*/
|
|
382
|
+
setCursor(row, col) {
|
|
383
|
+
// Clamp to screen bounds
|
|
384
|
+
row = Math.max(0, Math.min(row, this.screen.rows - 1));
|
|
385
|
+
col = Math.max(0, Math.min(col, this.screen.cols - 1));
|
|
386
|
+
// Check if target is directly in an input field
|
|
387
|
+
const field = this.screen.getFieldAt(row, col);
|
|
388
|
+
if (field && this.screen.isInputField(field)) {
|
|
389
|
+
this.screen.cursorRow = row;
|
|
390
|
+
this.screen.cursorCol = col;
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
// Find nearest input field (prefer same row, then closest overall)
|
|
394
|
+
const inputFields = this.screen.fields.filter(f => this.screen.isInputField(f) && this.screen.hasNativeUnderscore(f));
|
|
395
|
+
if (inputFields.length === 0)
|
|
396
|
+
return false;
|
|
397
|
+
const targetPos = this.screen.offset(row, col);
|
|
398
|
+
let bestField = null;
|
|
399
|
+
let bestDist = Infinity;
|
|
400
|
+
for (const f of inputFields) {
|
|
401
|
+
const fStart = this.screen.offset(f.row, f.col);
|
|
402
|
+
const fEnd = fStart + f.length - 1;
|
|
403
|
+
// Distance: 0 if inside, else distance to nearest edge
|
|
404
|
+
const dist = targetPos < fStart ? fStart - targetPos
|
|
405
|
+
: targetPos > fEnd ? targetPos - fEnd : 0;
|
|
406
|
+
if (dist < bestDist) {
|
|
407
|
+
bestDist = dist;
|
|
408
|
+
bestField = f;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (bestField) {
|
|
412
|
+
this.screen.cursorRow = bestField.row;
|
|
413
|
+
this.screen.cursorCol = bestField.col;
|
|
414
|
+
return true;
|
|
415
|
+
}
|
|
416
|
+
return false;
|
|
417
|
+
}
|
|
196
418
|
sendRaw(data) {
|
|
197
419
|
this.connection.sendRaw(data);
|
|
198
420
|
}
|
|
@@ -202,8 +424,21 @@ export class TN5250Handler extends ProtocolHandler {
|
|
|
202
424
|
}
|
|
203
425
|
onRecord(record) {
|
|
204
426
|
const modified = this.parser.parseRecord(record);
|
|
427
|
+
// Send query reply if host sent a 5250 Query WSF
|
|
428
|
+
if (this.parser.pendingQueryReply) {
|
|
429
|
+
this.parser.pendingQueryReply = false;
|
|
430
|
+
const reply = this.encoder.buildQueryReply();
|
|
431
|
+
if (reply)
|
|
432
|
+
this.connection.sendRaw(reply);
|
|
433
|
+
}
|
|
205
434
|
if (modified) {
|
|
206
435
|
this.parser.calculateFieldLengths();
|
|
436
|
+
// If we're in a SAVE_SCREEN context but the host didn't send CREATE_WINDOW,
|
|
437
|
+
// synthesize a window by overlaying the content on the saved screen.
|
|
438
|
+
// Check if a real CREATE_WINDOW was used (parser sets winRowOff/winColOff).
|
|
439
|
+
if (this.screen.screenStack.length > 0 && this.parser.winRowOff === 0 && this.parser.winColOff === 0) {
|
|
440
|
+
this.screen.synthesizeWindow();
|
|
441
|
+
}
|
|
207
442
|
this.emit('screenChange', this.screen.toScreenData());
|
|
208
443
|
}
|
|
209
444
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tn5250-handler.js","sourceRoot":"","sources":["../../src/protocols/tn5250-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tn5250-handler.js","sourceRoot":"","sources":["../../src/protocols/tn5250-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiKxB,eAAe,MAAM,CAAC"}
|