green-screen-proxy 1.1.2 → 1.2.1

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 (73) hide show
  1. package/README.md +93 -8
  2. package/dist/cli.js +0 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/controller.d.ts +14 -0
  5. package/dist/controller.d.ts.map +1 -1
  6. package/dist/controller.js +27 -2
  7. package/dist/controller.js.map +1 -1
  8. package/dist/index.d.ts +1 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +11 -16
  11. package/dist/index.js.map +1 -1
  12. package/dist/protocols/tn5250-handler.d.ts +3 -2
  13. package/dist/protocols/tn5250-handler.d.ts.map +1 -1
  14. package/dist/protocols/tn5250-handler.js +83 -25
  15. package/dist/protocols/tn5250-handler.js.map +1 -1
  16. package/dist/protocols/types.d.ts +28 -2
  17. package/dist/protocols/types.d.ts.map +1 -1
  18. package/dist/protocols/types.js +28 -0
  19. package/dist/protocols/types.js.map +1 -1
  20. package/dist/routes.d.ts.map +1 -1
  21. package/dist/routes.js +160 -34
  22. package/dist/routes.js.map +1 -1
  23. package/dist/server.js +1 -5
  24. package/dist/server.js.map +1 -1
  25. package/dist/session-store.d.ts +68 -0
  26. package/dist/session-store.d.ts.map +1 -0
  27. package/dist/session-store.js +40 -0
  28. package/dist/session-store.js.map +1 -0
  29. package/dist/session.d.ts +26 -3
  30. package/dist/session.d.ts.map +1 -1
  31. package/dist/session.js +83 -11
  32. package/dist/session.js.map +1 -1
  33. package/dist/tn5250/connection.d.ts +5 -0
  34. package/dist/tn5250/connection.d.ts.map +1 -1
  35. package/dist/tn5250/connection.js +25 -1
  36. package/dist/tn5250/connection.js.map +1 -1
  37. package/dist/tn5250/constants.d.ts +39 -3
  38. package/dist/tn5250/constants.d.ts.map +1 -1
  39. package/dist/tn5250/constants.js +51 -3
  40. package/dist/tn5250/constants.js.map +1 -1
  41. package/dist/tn5250/ebcdic-jp-builtin.d.ts +45 -0
  42. package/dist/tn5250/ebcdic-jp-builtin.d.ts.map +1 -0
  43. package/dist/tn5250/ebcdic-jp-builtin.js +124 -0
  44. package/dist/tn5250/ebcdic-jp-builtin.js.map +1 -0
  45. package/dist/tn5250/ebcdic-jp.d.ts +61 -0
  46. package/dist/tn5250/ebcdic-jp.d.ts.map +1 -0
  47. package/dist/tn5250/ebcdic-jp.js +188 -0
  48. package/dist/tn5250/ebcdic-jp.js.map +1 -0
  49. package/dist/tn5250/ebcdic.d.ts +13 -4
  50. package/dist/tn5250/ebcdic.d.ts.map +1 -1
  51. package/dist/tn5250/ebcdic.js +30 -8
  52. package/dist/tn5250/ebcdic.js.map +1 -1
  53. package/dist/tn5250/encoder.d.ts +41 -9
  54. package/dist/tn5250/encoder.d.ts.map +1 -1
  55. package/dist/tn5250/encoder.js +228 -41
  56. package/dist/tn5250/encoder.js.map +1 -1
  57. package/dist/tn5250/parser.d.ts +14 -0
  58. package/dist/tn5250/parser.d.ts.map +1 -1
  59. package/dist/tn5250/parser.js +428 -53
  60. package/dist/tn5250/parser.js.map +1 -1
  61. package/dist/tn5250/screen.d.ts +144 -24
  62. package/dist/tn5250/screen.d.ts.map +1 -1
  63. package/dist/tn5250/screen.js +244 -13
  64. package/dist/tn5250/screen.js.map +1 -1
  65. package/dist/websocket.d.ts +3 -0
  66. package/dist/websocket.d.ts.map +1 -1
  67. package/dist/websocket.js +106 -1
  68. package/dist/websocket.js.map +1 -1
  69. package/package.json +1 -1
  70. package/dist/mock/mock-routes.d.ts +0 -3
  71. package/dist/mock/mock-routes.d.ts.map +0 -1
  72. package/dist/mock/mock-routes.js +0 -232
  73. package/dist/mock/mock-routes.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { EventEmitter } from 'events';
2
+ /** Default in-memory session store — process-local Map. */
3
+ export class InMemorySessionStore {
4
+ map = new Map();
5
+ set(id, session) {
6
+ this.map.set(id, session);
7
+ }
8
+ get(id) {
9
+ return this.map.get(id);
10
+ }
11
+ delete(id) {
12
+ this.map.delete(id);
13
+ }
14
+ has(id) {
15
+ return this.map.has(id);
16
+ }
17
+ values() {
18
+ return this.map.values();
19
+ }
20
+ size() {
21
+ return this.map.size;
22
+ }
23
+ }
24
+ let activeStore = new InMemorySessionStore();
25
+ /**
26
+ * Replace the active session store. Call this once at startup, before the
27
+ * HTTP/WS server accepts connections. Switching stores mid-flight will
28
+ * orphan any sessions already held in the previous store.
29
+ */
30
+ export function setSessionStore(store) {
31
+ activeStore = store;
32
+ }
33
+ /** Get the active session store (for internal proxy code + tests). */
34
+ export function getSessionStore() {
35
+ return activeStore;
36
+ }
37
+ class SessionLifecycleEmitter extends EventEmitter {
38
+ }
39
+ export const sessionLifecycle = new SessionLifecycleEmitter();
40
+ //# sourceMappingURL=session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAmCtC,2DAA2D;AAC3D,MAAM,OAAO,oBAAoB;IACd,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;IAElD,GAAG,CAAC,EAAU,EAAE,OAAgB;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAED,IAAI,WAAW,GAAiB,IAAI,oBAAoB,EAAE,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,CAAC;AACrB,CAAC;AAeD,MAAM,uBAAwB,SAAQ,YAAY;CAAG;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC"}
package/dist/session.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import { ProtocolHandler } from './protocols/index.js';
3
3
  import type { ProtocolType, ProtocolOptions, ScreenData } from './protocols/index.js';
4
- import type { ConnectionStatus } from 'green-screen-types';
4
+ import type { ConnectionStatus, FieldValue } from 'green-screen-types';
5
5
  export declare class Session extends EventEmitter {
6
6
  readonly id: string;
7
7
  readonly handler: ProtocolHandler;
@@ -9,9 +9,20 @@ export declare class Session extends EventEmitter {
9
9
  private _status;
10
10
  private _host;
11
11
  private _port;
12
- /** Timeout (ms) to wait for screen data after connect or key send (default 2000) */
12
+ private _idleTimer;
13
+ private _lastActivity;
14
+ /** Timeout (ms) to wait for screen data after connect or key send (default 5000) */
13
15
  screenTimeout: number;
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: number;
14
19
  constructor(protocol?: ProtocolType);
20
+ /** Reset idle timer — called on any API activity (screen read, key send, etc.) */
21
+ touch(): void;
22
+ /** Start the idle timer. Call after connection is established. */
23
+ startIdleTimer(): void;
24
+ /** Stop the idle timer. */
25
+ stopIdleTimer(): void;
15
26
  get status(): ConnectionStatus;
16
27
  /** Mark this session as authenticated after a successful auto-sign-in */
17
28
  markAuthenticated(username: string): void;
@@ -22,13 +33,25 @@ export declare class Session extends EventEmitter {
22
33
  sendKey(keyName: string): boolean;
23
34
  setCursor(row: number, col: number): boolean;
24
35
  getScreenData(): ScreenData;
36
+ /** Read input field values from the current screen.
37
+ * @param modifiedOnly — when true (default), only fields with MDT bit set. */
38
+ readFieldValues(modifiedOnly?: boolean): FieldValue[];
39
+ /** Wait until the next screen has at least `minFields` input fields (or timeout). */
40
+ waitForScreenWithFields(minFields: number, timeoutMs: number): Promise<ScreenData>;
25
41
  /** Wait for the next screenChange event, or return current screen after timeout */
26
42
  waitForScreen(timeoutMs: number): Promise<ScreenData>;
43
+ /** Send a remote key and wait for the host response — race-free.
44
+ * Sets up the screenChange listener BEFORE sending the key so fast
45
+ * host responses are never missed. */
46
+ sendKeyAndWait(keyName: string, timeoutMs: number): Promise<{
47
+ ok: boolean;
48
+ screen: ScreenData;
49
+ }>;
27
50
  destroy(): void;
28
51
  }
29
52
  export declare function createSession(protocol?: ProtocolType): Session;
30
53
  export declare function getSession(id: string): Session | undefined;
31
54
  export declare function destroySession(id: string): void;
32
55
  export declare function getDefaultSession(): Session | undefined;
33
- export declare function getAllSessions(): Map<string, Session>;
56
+ export declare function getAllSessions(): Session[];
34
57
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,OAAQ,SAAQ,YAAY;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAE3B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAQ;gBAEjB,QAAQ,GAAE,YAAuB;IAmB7C,IAAI,MAAM,IAAI,gBAAgB,CAE7B;IAED,yEAAyE;IACzE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASnC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnF,UAAU,IAAI,IAAI;IAMZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5C,aAAa;IAIb,mFAAmF;IACnF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUrD,OAAO,IAAI,IAAI;CAIhB;AAKD,wBAAgB,aAAa,CAAC,QAAQ,GAAE,YAAuB,GAAG,OAAO,CAIxE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAM/C;AAED,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,SAAS,CAKvD;AAED,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAErD"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGvE,qBAAa,OAAQ,SAAQ,YAAY;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,aAAa,CAAsB;IAE3C,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAQ;IAE7B;4FACwF;IACxF,MAAM,CAAC,YAAY,SAAiB;gBAExB,QAAQ,GAAE,YAAuB;IAuB7C,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAIb,kEAAkE;IAClE,cAAc,IAAI,IAAI;IAUtB,2BAA2B;IAC3B,aAAa,IAAI,IAAI;IAOrB,IAAI,MAAM,IAAI,gBAAgB,CAE7B;IAED,yEAAyE;IACzE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASnC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnF,UAAU,IAAI,IAAI;IAOZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5C,aAAa;IAIb;mFAC+E;IAC/E,eAAe,CAAC,YAAY,GAAE,OAAc,GAAG,UAAU,EAAE;IAK3D,qFAAqF;IACrF,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKlF,mFAAmF;IACnF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUrD;;2CAEuC;IACvC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IAwBhG,OAAO,IAAI,IAAI;CAKhB;AAMD,wBAAgB,aAAa,CAAC,QAAQ,GAAE,YAAuB,GAAG,OAAO,CAIxE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAO/C;AAED,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,SAAS,CAMvD;AAED,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAE1C"}
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
- /** Timeout (ms) to wait for screen data after connect or key send (default 2000) */
12
- screenTimeout = 2000;
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
- const sessions = new Map();
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
- sessions.set(session.id, session);
161
+ getSessionStore().set(session.id, session);
92
162
  return session;
93
163
  }
94
164
  export function getSession(id) {
95
- return sessions.get(id);
165
+ return getSessionStore().get(id);
96
166
  }
97
167
  export function destroySession(id) {
98
- const session = sessions.get(id);
168
+ const store = getSessionStore();
169
+ const session = store.get(id);
99
170
  if (session) {
100
171
  session.destroy();
101
- sessions.delete(id);
172
+ store.delete(id);
102
173
  }
103
174
  }
104
175
  export function getDefaultSession() {
105
- if (sessions.size === 1) {
106
- return sessions.values().next().value;
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 sessions;
183
+ return Array.from(getSessionStore().values());
112
184
  }
113
185
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -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;IAErD,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;IAgDlG,UAAU,IAAI,IAAI;IAOlB,qCAAqC;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3B,OAAO,CAAC,OAAO;IASf,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"}
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.destroy();
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":"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"}
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: 4;
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: 1;
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;AAGX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;CAcN,CAAC;AAGX,eAAO,MAAM,KAAK;;;;;;;;;;;;CAYR,CAAC;AAGX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCN,CAAC;AAGX,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAa7C,CAAC;AAGF,eAAO,MAAM,GAAG;;;;;;;;;;CAYN,CAAC;AAGX,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC;AAGX,eAAO,MAAM,SAAS;;;;;;;;CAQZ,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"}
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"}
@@ -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: 0x04, // Write Extended Attribute
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
- SYS_REQUEST: 0x01, // Attention key
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)