green-screen-proxy 1.1.2 → 1.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.
- package/README.md +93 -8
- package/dist/cli.js +0 -6
- package/dist/cli.js.map +1 -1
- package/dist/controller.d.ts +3 -0
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +13 -2
- package/dist/controller.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -16
- package/dist/index.js.map +1 -1
- package/dist/protocols/tn5250-handler.d.ts +3 -2
- package/dist/protocols/tn5250-handler.d.ts.map +1 -1
- package/dist/protocols/tn5250-handler.js +83 -25
- package/dist/protocols/tn5250-handler.js.map +1 -1
- package/dist/protocols/types.d.ts +28 -2
- package/dist/protocols/types.d.ts.map +1 -1
- package/dist/protocols/types.js +28 -0
- package/dist/protocols/types.js.map +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +160 -34
- package/dist/routes.js.map +1 -1
- package/dist/server.js +1 -5
- package/dist/server.js.map +1 -1
- package/dist/session-store.d.ts +68 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/session-store.js +40 -0
- package/dist/session-store.js.map +1 -0
- package/dist/session.d.ts +26 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +83 -11
- package/dist/session.js.map +1 -1
- package/dist/standalone.d.ts +3 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +6 -0
- package/dist/standalone.js.map +1 -0
- package/dist/tn5250/connection.d.ts +5 -0
- package/dist/tn5250/connection.d.ts.map +1 -1
- package/dist/tn5250/connection.js +25 -1
- package/dist/tn5250/connection.js.map +1 -1
- package/dist/tn5250/constants.d.ts +39 -3
- package/dist/tn5250/constants.d.ts.map +1 -1
- package/dist/tn5250/constants.js +51 -3
- package/dist/tn5250/constants.js.map +1 -1
- package/dist/tn5250/ebcdic-jp-builtin.d.ts +45 -0
- package/dist/tn5250/ebcdic-jp-builtin.d.ts.map +1 -0
- package/dist/tn5250/ebcdic-jp-builtin.js +124 -0
- package/dist/tn5250/ebcdic-jp-builtin.js.map +1 -0
- package/dist/tn5250/ebcdic-jp.d.ts +61 -0
- package/dist/tn5250/ebcdic-jp.d.ts.map +1 -0
- package/dist/tn5250/ebcdic-jp.js +188 -0
- package/dist/tn5250/ebcdic-jp.js.map +1 -0
- package/dist/tn5250/ebcdic.d.ts +13 -4
- package/dist/tn5250/ebcdic.d.ts.map +1 -1
- package/dist/tn5250/ebcdic.js +30 -8
- package/dist/tn5250/ebcdic.js.map +1 -1
- package/dist/tn5250/encoder.d.ts +41 -9
- package/dist/tn5250/encoder.d.ts.map +1 -1
- package/dist/tn5250/encoder.js +228 -41
- package/dist/tn5250/encoder.js.map +1 -1
- package/dist/tn5250/parser.d.ts +14 -0
- package/dist/tn5250/parser.d.ts.map +1 -1
- package/dist/tn5250/parser.js +428 -53
- package/dist/tn5250/parser.js.map +1 -1
- package/dist/tn5250/screen.d.ts +144 -24
- package/dist/tn5250/screen.d.ts.map +1 -1
- package/dist/tn5250/screen.js +244 -13
- package/dist/tn5250/screen.js.map +1 -1
- package/dist/ui/assets/index-B51sr7HL.js +56 -0
- package/dist/ui/assets/index-B9wpEWAh.css +1 -0
- package/dist/ui/assets/index-BrUnECmE.css +1 -0
- package/dist/ui/assets/index-CDBbEXbH.js +56 -0
- package/dist/ui/index.html +16 -0
- package/dist/websocket.d.ts +3 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +90 -1
- package/dist/websocket.js.map +1 -1
- package/dist/worker/index.js +5573 -0
- package/package.json +1 -1
package/dist/session.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'crypto';
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { createProtocolHandler } from './protocols/index.js';
|
|
4
|
+
import { getSessionStore, sessionLifecycle } from './session-store.js';
|
|
4
5
|
export class Session extends EventEmitter {
|
|
5
6
|
id;
|
|
6
7
|
handler;
|
|
@@ -8,25 +9,55 @@ export class Session extends EventEmitter {
|
|
|
8
9
|
_status = { connected: false, status: 'disconnected' };
|
|
9
10
|
_host = '';
|
|
10
11
|
_port = 23;
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
_idleTimer = null;
|
|
13
|
+
_lastActivity = Date.now();
|
|
14
|
+
/** Timeout (ms) to wait for screen data after connect or key send (default 5000) */
|
|
15
|
+
screenTimeout = 5000;
|
|
16
|
+
/** Idle timeout (ms) — session auto-destroys if no activity. Default 5 min.
|
|
17
|
+
* Prevents stale TCP sessions when the backend crashes or misses a disconnect call. */
|
|
18
|
+
static IDLE_TIMEOUT = 5 * 60 * 1000;
|
|
13
19
|
constructor(protocol = 'tn5250') {
|
|
14
20
|
super();
|
|
15
21
|
this.id = randomUUID();
|
|
16
22
|
this.protocol = protocol;
|
|
17
23
|
this.handler = createProtocolHandler(protocol);
|
|
18
24
|
this.handler.on('screenChange', (screenData) => {
|
|
25
|
+
this.touch();
|
|
19
26
|
this.emit('screenChange', screenData);
|
|
20
27
|
});
|
|
21
28
|
this.handler.on('disconnected', () => {
|
|
22
29
|
this._status = { connected: false, status: 'disconnected', protocol: this.protocol, host: this._host };
|
|
30
|
+
this.stopIdleTimer();
|
|
23
31
|
this.emit('statusChange', this._status);
|
|
32
|
+
sessionLifecycle.emit('session.lost', this.id, this._status);
|
|
24
33
|
});
|
|
25
34
|
this.handler.on('error', (err) => {
|
|
26
35
|
this._status = { connected: false, status: 'error', protocol: this.protocol, host: this._host, error: err.message };
|
|
27
36
|
this.emit('statusChange', this._status);
|
|
37
|
+
sessionLifecycle.emit('session.lost', this.id, this._status);
|
|
28
38
|
});
|
|
29
39
|
}
|
|
40
|
+
/** Reset idle timer — called on any API activity (screen read, key send, etc.) */
|
|
41
|
+
touch() {
|
|
42
|
+
this._lastActivity = Date.now();
|
|
43
|
+
}
|
|
44
|
+
/** Start the idle timer. Call after connection is established. */
|
|
45
|
+
startIdleTimer() {
|
|
46
|
+
this.stopIdleTimer();
|
|
47
|
+
this._idleTimer = setInterval(() => {
|
|
48
|
+
if (Date.now() - this._lastActivity > Session.IDLE_TIMEOUT) {
|
|
49
|
+
console.log(`[Session ${this.id.slice(0, 8)}] Idle timeout (${Session.IDLE_TIMEOUT / 1000}s) — destroying`);
|
|
50
|
+
destroySession(this.id);
|
|
51
|
+
}
|
|
52
|
+
}, 30_000); // Check every 30s
|
|
53
|
+
}
|
|
54
|
+
/** Stop the idle timer. */
|
|
55
|
+
stopIdleTimer() {
|
|
56
|
+
if (this._idleTimer) {
|
|
57
|
+
clearInterval(this._idleTimer);
|
|
58
|
+
this._idleTimer = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
30
61
|
get status() {
|
|
31
62
|
return { ...this._status };
|
|
32
63
|
}
|
|
@@ -46,9 +77,12 @@ export class Session extends EventEmitter {
|
|
|
46
77
|
this.emit('statusChange', this._status);
|
|
47
78
|
await this.handler.connect(host, port, options);
|
|
48
79
|
this._status = { connected: true, status: 'connected', protocol: this.protocol, host };
|
|
80
|
+
this.touch();
|
|
81
|
+
this.startIdleTimer();
|
|
49
82
|
this.emit('statusChange', this._status);
|
|
50
83
|
}
|
|
51
84
|
disconnect() {
|
|
85
|
+
this.stopIdleTimer();
|
|
52
86
|
this.handler.disconnect();
|
|
53
87
|
this._status = { connected: false, status: 'disconnected', protocol: this.protocol, host: this._host };
|
|
54
88
|
this.emit('statusChange', this._status);
|
|
@@ -69,6 +103,17 @@ export class Session extends EventEmitter {
|
|
|
69
103
|
getScreenData() {
|
|
70
104
|
return this.handler.getScreenData();
|
|
71
105
|
}
|
|
106
|
+
/** Read input field values from the current screen.
|
|
107
|
+
* @param modifiedOnly — when true (default), only fields with MDT bit set. */
|
|
108
|
+
readFieldValues(modifiedOnly = true) {
|
|
109
|
+
this.touch();
|
|
110
|
+
return this.handler.readFieldValues(modifiedOnly);
|
|
111
|
+
}
|
|
112
|
+
/** Wait until the next screen has at least `minFields` input fields (or timeout). */
|
|
113
|
+
waitForScreenWithFields(minFields, timeoutMs) {
|
|
114
|
+
this.touch();
|
|
115
|
+
return this.handler.waitForScreenWithFields(minFields, timeoutMs);
|
|
116
|
+
}
|
|
72
117
|
/** Wait for the next screenChange event, or return current screen after timeout */
|
|
73
118
|
waitForScreen(timeoutMs) {
|
|
74
119
|
return new Promise((resolve) => {
|
|
@@ -79,35 +124,62 @@ export class Session extends EventEmitter {
|
|
|
79
124
|
});
|
|
80
125
|
});
|
|
81
126
|
}
|
|
127
|
+
/** Send a remote key and wait for the host response — race-free.
|
|
128
|
+
* Sets up the screenChange listener BEFORE sending the key so fast
|
|
129
|
+
* host responses are never missed. */
|
|
130
|
+
sendKeyAndWait(keyName, timeoutMs) {
|
|
131
|
+
return new Promise((resolve) => {
|
|
132
|
+
const onScreen = (data) => {
|
|
133
|
+
clearTimeout(timer);
|
|
134
|
+
resolve({ ok: true, screen: data });
|
|
135
|
+
};
|
|
136
|
+
const timer = setTimeout(() => {
|
|
137
|
+
this.handler.removeListener('screenChange', onScreen);
|
|
138
|
+
resolve({ ok: true, screen: this.handler.getScreenData() });
|
|
139
|
+
}, timeoutMs);
|
|
140
|
+
// Listener registered BEFORE sendKey to close the race window
|
|
141
|
+
this.handler.once('screenChange', onScreen);
|
|
142
|
+
const ok = this.handler.sendKey(keyName);
|
|
143
|
+
if (!ok) {
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
this.handler.removeListener('screenChange', onScreen);
|
|
146
|
+
resolve({ ok: false, screen: this.handler.getScreenData() });
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
82
150
|
destroy() {
|
|
151
|
+
this.stopIdleTimer();
|
|
83
152
|
this.handler.destroy();
|
|
84
153
|
this.removeAllListeners();
|
|
85
154
|
}
|
|
86
155
|
}
|
|
87
|
-
// Session manager
|
|
88
|
-
|
|
156
|
+
// Session manager — delegates to the active SessionStore (default
|
|
157
|
+
// in-memory). Integrators can swap the store via setSessionStore() before
|
|
158
|
+
// any routes/websockets are mounted.
|
|
89
159
|
export function createSession(protocol = 'tn5250') {
|
|
90
160
|
const session = new Session(protocol);
|
|
91
|
-
|
|
161
|
+
getSessionStore().set(session.id, session);
|
|
92
162
|
return session;
|
|
93
163
|
}
|
|
94
164
|
export function getSession(id) {
|
|
95
|
-
return
|
|
165
|
+
return getSessionStore().get(id);
|
|
96
166
|
}
|
|
97
167
|
export function destroySession(id) {
|
|
98
|
-
const
|
|
168
|
+
const store = getSessionStore();
|
|
169
|
+
const session = store.get(id);
|
|
99
170
|
if (session) {
|
|
100
171
|
session.destroy();
|
|
101
|
-
|
|
172
|
+
store.delete(id);
|
|
102
173
|
}
|
|
103
174
|
}
|
|
104
175
|
export function getDefaultSession() {
|
|
105
|
-
|
|
106
|
-
|
|
176
|
+
const store = getSessionStore();
|
|
177
|
+
if (store.size() === 1) {
|
|
178
|
+
return store.values().next().value;
|
|
107
179
|
}
|
|
108
180
|
return undefined;
|
|
109
181
|
}
|
|
110
182
|
export function getAllSessions() {
|
|
111
|
-
return
|
|
183
|
+
return Array.from(getSessionStore().values());
|
|
112
184
|
}
|
|
113
185
|
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAmB,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.js","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":";AAEA,iFAAiF;AACjF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -17,6 +17,9 @@ export declare class TN5250Connection extends EventEmitter {
|
|
|
17
17
|
private recvBuffer;
|
|
18
18
|
private negotiationDone;
|
|
19
19
|
private terminalType;
|
|
20
|
+
private keepAliveTimer;
|
|
21
|
+
private static readonly KEEP_ALIVE_INTERVAL;
|
|
22
|
+
private static readonly KEEP_ALIVE_NOP;
|
|
20
23
|
get isConnected(): boolean;
|
|
21
24
|
get remoteHost(): string;
|
|
22
25
|
get remotePort(): number;
|
|
@@ -24,6 +27,8 @@ export declare class TN5250Connection extends EventEmitter {
|
|
|
24
27
|
disconnect(): void;
|
|
25
28
|
/** Send raw bytes over the socket */
|
|
26
29
|
sendRaw(data: Buffer): void;
|
|
30
|
+
private startKeepAlive;
|
|
31
|
+
private stopKeepAlive;
|
|
27
32
|
private cleanup;
|
|
28
33
|
private onData;
|
|
29
34
|
private processBuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/tn5250/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAiC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/tn5250/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAE/E,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDlG,UAAU,IAAI,IAAI;IASlB,qCAAqC;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,aAAa;IA6DrB,kDAAkD;IAClD,OAAO,CAAC,aAAa;IASrB,wCAAwC;IACxC,OAAO,CAAC,aAAa;IASrB,wCAAwC;IACxC,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -13,6 +13,9 @@ export class TN5250Connection extends EventEmitter {
|
|
|
13
13
|
recvBuffer = Buffer.alloc(0);
|
|
14
14
|
negotiationDone = false;
|
|
15
15
|
terminalType = DEFAULT_TERMINAL_TYPE;
|
|
16
|
+
keepAliveTimer = null;
|
|
17
|
+
static KEEP_ALIVE_INTERVAL = 15_000; // 15s — well under PUB400's ~30s idle timeout
|
|
18
|
+
static KEEP_ALIVE_NOP = Buffer.from([TELNET.IAC, TELNET.NOP]);
|
|
16
19
|
get isConnected() {
|
|
17
20
|
return this.connected;
|
|
18
21
|
}
|
|
@@ -54,6 +57,7 @@ export class TN5250Connection extends EventEmitter {
|
|
|
54
57
|
this.emit('error', new Error('Connection timeout'));
|
|
55
58
|
});
|
|
56
59
|
this.socket.on('data', (data) => this.onData(data));
|
|
60
|
+
this.startKeepAlive();
|
|
57
61
|
this.emit('connected');
|
|
58
62
|
resolve();
|
|
59
63
|
});
|
|
@@ -61,7 +65,12 @@ export class TN5250Connection extends EventEmitter {
|
|
|
61
65
|
}
|
|
62
66
|
disconnect() {
|
|
63
67
|
if (this.socket) {
|
|
64
|
-
this.socket.
|
|
68
|
+
console.log(`[tn5250] Disconnecting socket to ${this.socket.remoteAddress}:${this.socket.remotePort}`);
|
|
69
|
+
// Send FIN first, then destroy to ensure TCP session closes on the host
|
|
70
|
+
try {
|
|
71
|
+
this.socket.end();
|
|
72
|
+
}
|
|
73
|
+
catch { /* ignore */ }
|
|
65
74
|
this.cleanup();
|
|
66
75
|
}
|
|
67
76
|
}
|
|
@@ -71,7 +80,22 @@ export class TN5250Connection extends EventEmitter {
|
|
|
71
80
|
this.socket.write(data);
|
|
72
81
|
}
|
|
73
82
|
}
|
|
83
|
+
startKeepAlive() {
|
|
84
|
+
this.stopKeepAlive();
|
|
85
|
+
this.keepAliveTimer = setInterval(() => {
|
|
86
|
+
if (this.socket && this.connected) {
|
|
87
|
+
this.sendRaw(TN5250Connection.KEEP_ALIVE_NOP);
|
|
88
|
+
}
|
|
89
|
+
}, TN5250Connection.KEEP_ALIVE_INTERVAL);
|
|
90
|
+
}
|
|
91
|
+
stopKeepAlive() {
|
|
92
|
+
if (this.keepAliveTimer) {
|
|
93
|
+
clearInterval(this.keepAliveTimer);
|
|
94
|
+
this.keepAliveTimer = null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
74
97
|
cleanup() {
|
|
98
|
+
this.stopKeepAlive();
|
|
75
99
|
this.connected = false;
|
|
76
100
|
if (this.socket) {
|
|
77
101
|
this.socket.removeAllListeners();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/tn5250/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAShF;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IACxC,MAAM,GAAsB,IAAI,CAAC;IACjC,IAAI,GAAW,EAAE,CAAC;IAClB,IAAI,GAAW,EAAE,CAAC;IAClB,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,eAAe,GAAY,KAAK,CAAC;IACjC,YAAY,GAAW,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/tn5250/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,14 +43,37 @@ export declare const CMD: {
|
|
|
43
43
|
readonly WRITE_TO_DISPLAY: 17;
|
|
44
44
|
readonly WRITE_ERROR_CODE: 33;
|
|
45
45
|
readonly WRITE_ERROR_CODE_WIN: 34;
|
|
46
|
-
readonly READ_MDT_FIELDS: 82;
|
|
47
46
|
readonly READ_INPUT_FIELDS: 66;
|
|
47
|
+
readonly READ_MDT_FIELDS: 82;
|
|
48
|
+
readonly READ_MDT_FIELDS_ALT: 130;
|
|
49
|
+
readonly READ_SCREEN_IMMEDIATE: 98;
|
|
48
50
|
readonly READ_IMMEDIATE: 114;
|
|
51
|
+
readonly READ_IMMEDIATE_ALT: 131;
|
|
49
52
|
readonly WRITE_STRUCTURED_FIELD: 243;
|
|
50
53
|
readonly SAVE_SCREEN: 2;
|
|
51
54
|
readonly RESTORE_SCREEN: 18;
|
|
52
55
|
readonly ROLL: 35;
|
|
53
56
|
};
|
|
57
|
+
export declare const RECORD_H: {
|
|
58
|
+
readonly NONE: 0;
|
|
59
|
+
readonly HLP: 1;
|
|
60
|
+
readonly TRQ: 2;
|
|
61
|
+
readonly SRQ: 4;
|
|
62
|
+
readonly ATN: 64;
|
|
63
|
+
};
|
|
64
|
+
export declare const RECORD_OPCODE: {
|
|
65
|
+
readonly NO_OP: 0;
|
|
66
|
+
readonly INVITE: 1;
|
|
67
|
+
readonly OUTPUT_ONLY: 2;
|
|
68
|
+
readonly PUT_GET: 3;
|
|
69
|
+
readonly SAVE_SCREEN: 4;
|
|
70
|
+
readonly RESTORE_SCREEN: 5;
|
|
71
|
+
readonly READ_IMMEDIATE: 6;
|
|
72
|
+
readonly READ_SCREEN: 8;
|
|
73
|
+
readonly CANCEL_INVITE: 10;
|
|
74
|
+
readonly TURN_ON_MSG_LIGHT: 11;
|
|
75
|
+
readonly TURN_OFF_MSG_LIGHT: 12;
|
|
76
|
+
};
|
|
54
77
|
export declare const ORDER: {
|
|
55
78
|
readonly SBA: 17;
|
|
56
79
|
readonly IC: 19;
|
|
@@ -59,7 +82,7 @@ export declare const ORDER: {
|
|
|
59
82
|
readonly EA: 3;
|
|
60
83
|
readonly SOH: 1;
|
|
61
84
|
readonly TD: 16;
|
|
62
|
-
readonly WEA:
|
|
85
|
+
readonly WEA: 18;
|
|
63
86
|
readonly SF: 29;
|
|
64
87
|
readonly WDSF: 21;
|
|
65
88
|
readonly SA: 40;
|
|
@@ -96,7 +119,9 @@ export declare const AID: {
|
|
|
96
119
|
readonly HELP: 243;
|
|
97
120
|
readonly PRINT: 246;
|
|
98
121
|
readonly RECORD_BACKSPACE: 248;
|
|
99
|
-
readonly SYS_REQUEST:
|
|
122
|
+
readonly SYS_REQUEST: 257;
|
|
123
|
+
readonly ATTN: 258;
|
|
124
|
+
readonly TEST_REQUEST: 259;
|
|
100
125
|
};
|
|
101
126
|
export declare const KEY_TO_AID: Record<string, number>;
|
|
102
127
|
export declare const FFW: {
|
|
@@ -104,6 +129,14 @@ export declare const FFW: {
|
|
|
104
129
|
readonly DUP_ENABLE: 16;
|
|
105
130
|
readonly MDT: 8;
|
|
106
131
|
readonly SHIFT_MASK: 7;
|
|
132
|
+
readonly SHIFT_ALPHA: 0;
|
|
133
|
+
readonly SHIFT_ALPHA_ONLY: 1;
|
|
134
|
+
readonly SHIFT_NUMERIC_SHIFT: 2;
|
|
135
|
+
readonly SHIFT_NUMERIC_ONLY: 3;
|
|
136
|
+
readonly SHIFT_KATAKANA: 4;
|
|
137
|
+
readonly SHIFT_DIGITS_ONLY: 5;
|
|
138
|
+
readonly SHIFT_IO: 6;
|
|
139
|
+
readonly SHIFT_SIGNED_NUM: 7;
|
|
107
140
|
readonly AUTO_ENTER: 128;
|
|
108
141
|
readonly FER: 64;
|
|
109
142
|
readonly MONOCASE: 32;
|
|
@@ -125,7 +158,10 @@ export declare const WDSF_TYPE: {
|
|
|
125
158
|
readonly UNRESTRICT_CURSOR: 82;
|
|
126
159
|
readonly DEFINE_SCROLL_BAR: 83;
|
|
127
160
|
readonly WRITE_DATA: 84;
|
|
161
|
+
readonly PROGRAMMABLE_MOUSE_BUTTONS: 85;
|
|
162
|
+
readonly REM_GUI_SEL_FIELD: 88;
|
|
128
163
|
readonly REM_GUI_WINDOW: 89;
|
|
164
|
+
readonly REM_GUI_SCROLL_BAR: 91;
|
|
129
165
|
readonly REM_ALL_GUI_CONSTRUCTS: 95;
|
|
130
166
|
};
|
|
131
167
|
export declare const WDSF_CLASS = 217;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tn5250/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAwBT,CAAC;AAKX,eAAO,MAAM,WAAW;;CAEd,CAAC;AAGX,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAaT,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tn5250/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAwBT,CAAC;AAKX,eAAO,MAAM,WAAW;;CAEd,CAAC;AAGX,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAaT,CAAC;AAIX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;CAiBN,CAAC;AAIX,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAIX,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAGX,eAAO,MAAM,KAAK;;;;;;;;;;;;CAYR,CAAC;AAGX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCN,CAAC;AAGX,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgB7C,CAAC;AAGF,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;CAsBN,CAAC;AAGX,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC;AAGX,eAAO,MAAM,SAAS;;;;;;;;;;;CAWZ,CAAC;AAGX,eAAO,MAAM,UAAU,MAAO,CAAC;AAG/B,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAGX,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAGhD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAG9E,CAAC"}
|
package/dist/tn5250/constants.js
CHANGED
|
@@ -43,6 +43,7 @@ export const OPCODE = {
|
|
|
43
43
|
TURN_OFF_MSG_LIGHT: 0x0C,
|
|
44
44
|
};
|
|
45
45
|
// 5250 command codes (within WTD, etc.)
|
|
46
|
+
// Per lib5250 codes5250.h:38-55
|
|
46
47
|
export const CMD = {
|
|
47
48
|
CLEAR_UNIT: 0x40,
|
|
48
49
|
CLEAR_FORMAT_TABLE: 0x50,
|
|
@@ -50,14 +51,41 @@ export const CMD = {
|
|
|
50
51
|
WRITE_TO_DISPLAY: 0x11, // WTD
|
|
51
52
|
WRITE_ERROR_CODE: 0x21,
|
|
52
53
|
WRITE_ERROR_CODE_WIN: 0x22,
|
|
53
|
-
READ_MDT_FIELDS: 0x52,
|
|
54
54
|
READ_INPUT_FIELDS: 0x42,
|
|
55
|
+
READ_MDT_FIELDS: 0x52,
|
|
56
|
+
READ_MDT_FIELDS_ALT: 0x82,
|
|
57
|
+
READ_SCREEN_IMMEDIATE: 0x62,
|
|
55
58
|
READ_IMMEDIATE: 0x72,
|
|
59
|
+
READ_IMMEDIATE_ALT: 0x83,
|
|
56
60
|
WRITE_STRUCTURED_FIELD: 0xF3,
|
|
57
61
|
SAVE_SCREEN: 0x02,
|
|
58
62
|
RESTORE_SCREEN: 0x12,
|
|
59
63
|
ROLL: 0x23,
|
|
60
64
|
};
|
|
65
|
+
// Record header flag byte values (byte 8 of the GDS header).
|
|
66
|
+
// Per lib5250 record.h:60-68.
|
|
67
|
+
export const RECORD_H = {
|
|
68
|
+
NONE: 0x00,
|
|
69
|
+
HLP: 0x01, // Help
|
|
70
|
+
TRQ: 0x02, // Test request
|
|
71
|
+
SRQ: 0x04, // System request
|
|
72
|
+
ATN: 0x40, // Attention
|
|
73
|
+
};
|
|
74
|
+
// Record header opcode byte (byte 10).
|
|
75
|
+
// Per lib5250 record.h:70-78.
|
|
76
|
+
export const RECORD_OPCODE = {
|
|
77
|
+
NO_OP: 0x00,
|
|
78
|
+
INVITE: 0x01,
|
|
79
|
+
OUTPUT_ONLY: 0x02,
|
|
80
|
+
PUT_GET: 0x03,
|
|
81
|
+
SAVE_SCREEN: 0x04,
|
|
82
|
+
RESTORE_SCREEN: 0x05,
|
|
83
|
+
READ_IMMEDIATE: 0x06,
|
|
84
|
+
READ_SCREEN: 0x08,
|
|
85
|
+
CANCEL_INVITE: 0x0A,
|
|
86
|
+
TURN_ON_MSG_LIGHT: 0x0B,
|
|
87
|
+
TURN_OFF_MSG_LIGHT: 0x0C,
|
|
88
|
+
};
|
|
61
89
|
// 5250 order codes
|
|
62
90
|
export const ORDER = {
|
|
63
91
|
SBA: 0x11, // Set Buffer Address
|
|
@@ -67,7 +95,7 @@ export const ORDER = {
|
|
|
67
95
|
EA: 0x03, // Erase to Address
|
|
68
96
|
SOH: 0x01, // Start of Header
|
|
69
97
|
TD: 0x10, // Transparent Data
|
|
70
|
-
WEA:
|
|
98
|
+
WEA: 0x12, // Write Extended Attribute (per lib5250 codes5250.h)
|
|
71
99
|
SF: 0x1D, // Start Field (used in field attribute)
|
|
72
100
|
WDSF: 0x15, // Write Display Structured Field (within WTD)
|
|
73
101
|
SA: 0x28, // Set Attribute
|
|
@@ -105,7 +133,12 @@ export const AID = {
|
|
|
105
133
|
HELP: 0xF3,
|
|
106
134
|
PRINT: 0xF6,
|
|
107
135
|
RECORD_BACKSPACE: 0xF8,
|
|
108
|
-
|
|
136
|
+
// Sentinel values (not real AID bytes — dispatched via record flags).
|
|
137
|
+
// Per lib5250 session.h: these are negative in C; TS uses values outside
|
|
138
|
+
// the 0x00-0xFF AID range so they cannot collide with real AID bytes.
|
|
139
|
+
SYS_REQUEST: 0x101,
|
|
140
|
+
ATTN: 0x102,
|
|
141
|
+
TEST_REQUEST: 0x103,
|
|
109
142
|
};
|
|
110
143
|
// Map key names (from frontend) to AID bytes
|
|
111
144
|
export const KEY_TO_AID = {
|
|
@@ -121,6 +154,9 @@ export const KEY_TO_AID = {
|
|
|
121
154
|
'Clear': AID.CLEAR,
|
|
122
155
|
'Help': AID.HELP,
|
|
123
156
|
'Print': AID.PRINT,
|
|
157
|
+
'SysReq': AID.SYS_REQUEST,
|
|
158
|
+
'Attn': AID.ATTN,
|
|
159
|
+
'TestReq': AID.TEST_REQUEST,
|
|
124
160
|
};
|
|
125
161
|
// Field attribute bits (in the FFW - Field Format Word)
|
|
126
162
|
export const FFW = {
|
|
@@ -128,6 +164,15 @@ export const FFW = {
|
|
|
128
164
|
DUP_ENABLE: 0x10,
|
|
129
165
|
MDT: 0x08, // Modified Data Tag
|
|
130
166
|
SHIFT_MASK: 0x07, // Data type shift bits
|
|
167
|
+
// Shift-type values (FFW1 & SHIFT_MASK)
|
|
168
|
+
SHIFT_ALPHA: 0x00,
|
|
169
|
+
SHIFT_ALPHA_ONLY: 0x01,
|
|
170
|
+
SHIFT_NUMERIC_SHIFT: 0x02,
|
|
171
|
+
SHIFT_NUMERIC_ONLY: 0x03,
|
|
172
|
+
SHIFT_KATAKANA: 0x04,
|
|
173
|
+
SHIFT_DIGITS_ONLY: 0x05,
|
|
174
|
+
SHIFT_IO: 0x06,
|
|
175
|
+
SHIFT_SIGNED_NUM: 0x07, // Signed numeric (last position is sign)
|
|
131
176
|
// Second byte flags
|
|
132
177
|
AUTO_ENTER: 0x80,
|
|
133
178
|
FER: 0x40, // Field Exit Required
|
|
@@ -152,7 +197,10 @@ export const WDSF_TYPE = {
|
|
|
152
197
|
UNRESTRICT_CURSOR: 0x52,
|
|
153
198
|
DEFINE_SCROLL_BAR: 0x53,
|
|
154
199
|
WRITE_DATA: 0x54,
|
|
200
|
+
PROGRAMMABLE_MOUSE_BUTTONS: 0x55,
|
|
201
|
+
REM_GUI_SEL_FIELD: 0x58,
|
|
155
202
|
REM_GUI_WINDOW: 0x59,
|
|
203
|
+
REM_GUI_SCROLL_BAR: 0x5B,
|
|
156
204
|
REM_ALL_GUI_CONSTRUCTS: 0x5F,
|
|
157
205
|
};
|
|
158
206
|
// Structured field class byte (IBM Display class)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tn5250/constants.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,IAAI,EAAI,uBAAuB;IACpC,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,IAAI,EAAK,uBAAuB;IACpC,EAAE,EAAE,IAAI,EAAK,qBAAqB;IAClC,GAAG,EAAE,IAAI,EAAI,gBAAgB;IAC7B,GAAG,EAAE,IAAI;IAET,iBAAiB;IACjB,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI,EAAQ,oBAAoB;IACzC,SAAS,EAAE,IAAI,EAAM,gBAAgB;IACrC,OAAO,EAAE,IAAI,EAAQ,gBAAgB;IACrC,QAAQ,EAAE,IAAI,EAAO,8BAA8B;IACnD,eAAe,EAAE,IAAI,EAAE,kBAAkB;IACzC,WAAW,EAAE,IAAI,EAAI,uBAAuB;IAE5C,uBAAuB;IACvB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;CACR,CAAC;AAEX,qCAAqC;AAErC,eAAe;AACf,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,MAAM,EAAI,sBAAsB;CAC7B,CAAC;AAEX,+BAA+B;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;CAChB,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tn5250/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in minimum IBM-Kanji (CCSID 300) → Unicode table.
|
|
3
|
+
*
|
|
4
|
+
* This covers the **non-Kanji** portion of the IBM host double-byte code
|
|
5
|
+
* set — the rows that contain the DBCS space, full-width ASCII, Hiragana,
|
|
6
|
+
* Katakana (full-width), and common CJK punctuation / symbols.
|
|
7
|
+
*
|
|
8
|
+
* These are the characters you see on typical IBM i Japanese system
|
|
9
|
+
* screens (menu titles, field labels, error messages), which are mostly
|
|
10
|
+
* rendered in hiragana/katakana rather than kanji. The full Kanji plane
|
|
11
|
+
* (~7000 characters in rows 0x4F–0xFE of CCSID 300) is NOT included here
|
|
12
|
+
* — register the full table separately via `registerDbcsTable()` after
|
|
13
|
+
* generating it with `scripts/generate-ibm-kanji-table.mjs`.
|
|
14
|
+
*
|
|
15
|
+
* Layout notes (per IBM CCSID 300 mapping):
|
|
16
|
+
* Row 0x41 — CJK/IBM special symbols
|
|
17
|
+
* Row 0x42 — DBCS space + full-width ASCII 0x20-0x7E (full-width)
|
|
18
|
+
* Row 0x43 — Hiragana (あ-ん + voiced)
|
|
19
|
+
* Row 0x44 — Katakana (ア-ン + voiced)
|
|
20
|
+
* Row 0x45 — Greek (Α-Ω, α-ω)
|
|
21
|
+
* Row 0x46 — Cyrillic
|
|
22
|
+
* Row 0x47 — Box-drawing characters
|
|
23
|
+
*
|
|
24
|
+
* The bytes that follow row bytes are 0x41..0xFE (column selector).
|
|
25
|
+
* IBM CCSID 300 tables start at column 0x41 = JIS column 1.
|
|
26
|
+
*
|
|
27
|
+
* Rather than hand-transcribing every entry (error-prone), this file
|
|
28
|
+
* builds the mapping arithmetically from the well-known Unicode ranges
|
|
29
|
+
* using the IBM → JIS column offset of (byte2 - 0x41).
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Register the built-in minimum IBM-Kanji table with the DBCS decoder.
|
|
33
|
+
* Call this once at proxy startup to get hiragana/katakana/symbol
|
|
34
|
+
* rendering without shipping the full Kanji table.
|
|
35
|
+
*
|
|
36
|
+
* The full Kanji plane (~7000 characters) still falls back to the geta
|
|
37
|
+
* mark until you register a complete table via `registerDbcsTable()`.
|
|
38
|
+
*
|
|
39
|
+
* Idempotent — safe to call multiple times; later entries overwrite
|
|
40
|
+
* earlier ones, so calling `registerDbcsTable(fullTable)` AFTER
|
|
41
|
+
* `registerBuiltinDbcsTable()` will layer the full table on top of the
|
|
42
|
+
* minimum.
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerBuiltinDbcsTable(): void;
|
|
45
|
+
//# sourceMappingURL=ebcdic-jp-builtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ebcdic-jp-builtin.d.ts","sourceRoot":"","sources":["../../src/tn5250/ebcdic-jp-builtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AA8FH;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
|