green-screen-proxy 1.1.1 → 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.
Files changed (91) 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 +3 -0
  5. package/dist/controller.d.ts.map +1 -1
  6. package/dist/controller.js +14 -5
  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 +18 -16
  11. package/dist/index.js.map +1 -1
  12. package/dist/protocols/tn3270-handler.d.ts +2 -1
  13. package/dist/protocols/tn3270-handler.d.ts.map +1 -1
  14. package/dist/protocols/tn3270-handler.js +10 -2
  15. package/dist/protocols/tn3270-handler.js.map +1 -1
  16. package/dist/protocols/tn5250-handler.d.ts +3 -2
  17. package/dist/protocols/tn5250-handler.d.ts.map +1 -1
  18. package/dist/protocols/tn5250-handler.js +85 -26
  19. package/dist/protocols/tn5250-handler.js.map +1 -1
  20. package/dist/protocols/types.d.ts +30 -2
  21. package/dist/protocols/types.d.ts.map +1 -1
  22. package/dist/protocols/types.js +32 -0
  23. package/dist/protocols/types.js.map +1 -1
  24. package/dist/routes.d.ts.map +1 -1
  25. package/dist/routes.js +261 -30
  26. package/dist/routes.js.map +1 -1
  27. package/dist/server.js +1 -5
  28. package/dist/server.js.map +1 -1
  29. package/dist/session-store.d.ts +68 -0
  30. package/dist/session-store.d.ts.map +1 -0
  31. package/dist/session-store.js +40 -0
  32. package/dist/session-store.js.map +1 -0
  33. package/dist/session.d.ts +32 -2
  34. package/dist/session.d.ts.map +1 -1
  35. package/dist/session.js +105 -9
  36. package/dist/session.js.map +1 -1
  37. package/dist/standalone.d.ts +3 -0
  38. package/dist/standalone.d.ts.map +1 -0
  39. package/dist/standalone.js +6 -0
  40. package/dist/standalone.js.map +1 -0
  41. package/dist/tn3270/connection.d.ts +1 -1
  42. package/dist/tn3270/connection.d.ts.map +1 -1
  43. package/dist/tn3270/connection.js +2 -2
  44. package/dist/tn3270/connection.js.map +1 -1
  45. package/dist/tn3270/screen.d.ts +1 -0
  46. package/dist/tn3270/screen.d.ts.map +1 -1
  47. package/dist/tn3270/screen.js +1 -0
  48. package/dist/tn3270/screen.js.map +1 -1
  49. package/dist/tn5250/connection.d.ts +6 -1
  50. package/dist/tn5250/connection.d.ts.map +1 -1
  51. package/dist/tn5250/connection.js +27 -3
  52. package/dist/tn5250/connection.js.map +1 -1
  53. package/dist/tn5250/constants.d.ts +39 -3
  54. package/dist/tn5250/constants.d.ts.map +1 -1
  55. package/dist/tn5250/constants.js +51 -3
  56. package/dist/tn5250/constants.js.map +1 -1
  57. package/dist/tn5250/ebcdic-jp-builtin.d.ts +45 -0
  58. package/dist/tn5250/ebcdic-jp-builtin.d.ts.map +1 -0
  59. package/dist/tn5250/ebcdic-jp-builtin.js +124 -0
  60. package/dist/tn5250/ebcdic-jp-builtin.js.map +1 -0
  61. package/dist/tn5250/ebcdic-jp.d.ts +61 -0
  62. package/dist/tn5250/ebcdic-jp.d.ts.map +1 -0
  63. package/dist/tn5250/ebcdic-jp.js +188 -0
  64. package/dist/tn5250/ebcdic-jp.js.map +1 -0
  65. package/dist/tn5250/ebcdic.d.ts +13 -4
  66. package/dist/tn5250/ebcdic.d.ts.map +1 -1
  67. package/dist/tn5250/ebcdic.js +30 -8
  68. package/dist/tn5250/ebcdic.js.map +1 -1
  69. package/dist/tn5250/encoder.d.ts +41 -9
  70. package/dist/tn5250/encoder.d.ts.map +1 -1
  71. package/dist/tn5250/encoder.js +228 -41
  72. package/dist/tn5250/encoder.js.map +1 -1
  73. package/dist/tn5250/parser.d.ts +14 -0
  74. package/dist/tn5250/parser.d.ts.map +1 -1
  75. package/dist/tn5250/parser.js +428 -53
  76. package/dist/tn5250/parser.js.map +1 -1
  77. package/dist/tn5250/screen.d.ts +144 -24
  78. package/dist/tn5250/screen.d.ts.map +1 -1
  79. package/dist/tn5250/screen.js +245 -13
  80. package/dist/tn5250/screen.js.map +1 -1
  81. package/dist/ui/assets/index-B51sr7HL.js +56 -0
  82. package/dist/ui/assets/index-B9wpEWAh.css +1 -0
  83. package/dist/ui/assets/index-BrUnECmE.css +1 -0
  84. package/dist/ui/assets/index-CDBbEXbH.js +56 -0
  85. package/dist/ui/index.html +16 -0
  86. package/dist/websocket.d.ts +3 -0
  87. package/dist/websocket.d.ts.map +1 -1
  88. package/dist/websocket.js +90 -1
  89. package/dist/websocket.js.map +1 -1
  90. package/dist/worker/index.js +5573 -0
  91. package/package.json +1 -1
@@ -7,6 +7,19 @@ export class ScreenBuffer {
7
7
  buffer;
8
8
  /** Attribute buffer (display attribute per cell) */
9
9
  attrBuffer;
10
+ /**
11
+ * Extended attribute buffer (per-cell, nullable). Populated from WEA
12
+ * orders — sparse/null when no extended attributes are set for a cell.
13
+ */
14
+ extAttrBuffer;
15
+ /**
16
+ * DBCS continuation marker: cells that hold the second half of a
17
+ * double-byte Kanji character. The first cell holds the rendered glyph;
18
+ * the second cell is rendered as empty but reserved for layout.
19
+ */
20
+ dbcsCont;
21
+ /** EBCDIC single-byte code page used to decode/encode character data. */
22
+ codePage = 'cp37';
10
23
  fields = [];
11
24
  cursorRow = 0;
12
25
  cursorCol = 0;
@@ -26,12 +39,37 @@ export class ScreenBuffer {
26
39
  windowList = [];
27
40
  /** Selection fields parsed from WDSF DEFINE_SELECTION_FIELD */
28
41
  selectionFields = [];
42
+ /** Scrollbars parsed from WDSF DEFINE_SCROLL_BAR */
43
+ scrollbarList = [];
44
+ /**
45
+ * Start-of-Header data bytes from the last SOH order (per lib5250
46
+ * dbuffer.h:66-67). Byte 3 (1-based) specifies the error message row.
47
+ * Kept here so encoder/display can query the configured message line.
48
+ */
49
+ headerData = [];
50
+ /**
51
+ * Saved contents of the message line row, captured before
52
+ * WRITE_ERROR_CODE painted an error message onto it. Restored on Reset
53
+ * (when the INHIBIT indicator clears) per lib5250 display.c:1861-1876.
54
+ */
55
+ savedMsgLine = null;
56
+ /** Row (0-based) where savedMsgLine was captured from. */
57
+ savedMsgLineRow = -1;
58
+ /**
59
+ * Current Read command opcode — set when the host sends a Read command
60
+ * (READ_INPUT_FIELDS, READ_MDT_FIELDS, READ_MDT_FIELDS_ALT, READ_IMMEDIATE,
61
+ * READ_IMMEDIATE_ALT). Cleared to 0 when the client replies with an AID key.
62
+ * Per lib5250 session.c:2353, session.c:381-433.
63
+ */
64
+ readOpcode = 0;
29
65
  constructor(rows = SCREEN.ROWS_24, cols = SCREEN.COLS_80) {
30
66
  this.rows = rows;
31
67
  this.cols = cols;
32
68
  const size = rows * cols;
33
69
  this.buffer = new Array(size).fill(' ');
34
70
  this.attrBuffer = new Array(size).fill(0x20); // normal
71
+ this.extAttrBuffer = new Array(size).fill(null);
72
+ this.dbcsCont = new Array(size).fill(false);
35
73
  }
36
74
  get size() {
37
75
  return this.rows * this.cols;
@@ -43,6 +81,8 @@ export class ScreenBuffer {
43
81
  const size = rows * cols;
44
82
  this.buffer = new Array(size).fill(' ');
45
83
  this.attrBuffer = new Array(size).fill(0x20);
84
+ this.extAttrBuffer = new Array(size).fill(null);
85
+ this.dbcsCont = new Array(size).fill(false);
46
86
  this.fields = [];
47
87
  this.cursorRow = 0;
48
88
  this.cursorCol = 0;
@@ -89,10 +129,18 @@ export class ScreenBuffer {
89
129
  this.attrBuffer[addr] = attr;
90
130
  }
91
131
  }
132
+ /** Set (or clear) the extended attribute set at a linear address. */
133
+ setExtAttrAt(addr, ext) {
134
+ if (addr >= 0 && addr < this.size) {
135
+ this.extAttrBuffer[addr] = ext;
136
+ }
137
+ }
92
138
  /** Clear the entire screen */
93
139
  clear() {
94
140
  this.buffer.fill(' ');
95
141
  this.attrBuffer.fill(0x20);
142
+ this.extAttrBuffer.fill(null);
143
+ this.dbcsCont.fill(false);
96
144
  this.fields = [];
97
145
  this.selectionFields = [];
98
146
  this.cursorRow = 0;
@@ -123,6 +171,27 @@ export class ScreenBuffer {
123
171
  for (let i = 0; i < field.length; i++) {
124
172
  this.buffer[start + i] = i < value.length ? value[i] : ' ';
125
173
  }
174
+ this.setFieldMdt(field);
175
+ }
176
+ /**
177
+ * Mark a field's MDT bit. For continued subfields, propagates to the
178
+ * "first" subfield of the group per lib5250 field.c:458-481.
179
+ * Call this instead of `field.modified = true` directly.
180
+ */
181
+ setFieldMdt(field) {
182
+ if (field.continuous && !field.continuedFirst) {
183
+ // Walk backward through the fields list to find the "first" subfield
184
+ const idx = this.fields.indexOf(field);
185
+ for (let i = idx - 1; i >= 0; i--) {
186
+ const prev = this.fields[i];
187
+ if (!prev.continuous)
188
+ break;
189
+ if (prev.continuedFirst) {
190
+ prev.modified = true;
191
+ return;
192
+ }
193
+ }
194
+ }
126
195
  field.modified = true;
127
196
  }
128
197
  /** Find the field at cursor position */
@@ -156,10 +225,48 @@ export class ScreenBuffer {
156
225
  isNonDisplay(field) {
157
226
  return field.attribute === 0x27;
158
227
  }
228
+ /**
229
+ * Determine which row to use as the operator error/message line.
230
+ * Per lib5250 dbuffer.c:934-944: byte 3 of the SOH header (1-based) if
231
+ * set, otherwise the last row.
232
+ */
233
+ msgLineRow() {
234
+ if (this.headerData.length >= 4) {
235
+ const l = this.headerData[3] - 1;
236
+ if (l >= 0 && l <= this.rows - 1)
237
+ return l;
238
+ }
239
+ return this.rows - 1;
240
+ }
241
+ /** Save the current contents of the message line row for later restore. */
242
+ saveMsgLine() {
243
+ const row = this.msgLineRow();
244
+ const start = this.offset(row, 0);
245
+ this.savedMsgLine = this.buffer.slice(start, start + this.cols);
246
+ this.savedMsgLineRow = row;
247
+ }
248
+ /**
249
+ * Restore the previously saved message line (called on Reset when the
250
+ * keyboard unlocks after an error).
251
+ */
252
+ restoreMsgLine() {
253
+ if (!this.savedMsgLine || this.savedMsgLineRow < 0)
254
+ return;
255
+ const start = this.offset(this.savedMsgLineRow, 0);
256
+ for (let i = 0; i < this.cols && i < this.savedMsgLine.length; i++) {
257
+ this.buffer[start + i] = this.savedMsgLine[i];
258
+ }
259
+ this.savedMsgLine = null;
260
+ this.savedMsgLineRow = -1;
261
+ }
159
262
  /** Whether a field has the underscore display attribute */
160
263
  isUnderscored(field) {
161
264
  return field.attribute === 0x24;
162
265
  }
266
+ /** Whether a field has the FFW mandatory entry flag (CHECK(ME)) */
267
+ isMandatory(field) {
268
+ return (field.ffw2 & 0x08) !== 0;
269
+ }
163
270
  /** Whether an input field is visually interactive (underscored or password) */
164
271
  isVisibleInput(field) {
165
272
  return this.isInputField(field) && (this.isUnderscored(field) || this.isNonDisplay(field));
@@ -202,6 +309,8 @@ export class ScreenBuffer {
202
309
  this.screenStack.push({
203
310
  buffer: [...this.buffer],
204
311
  attrBuffer: [...this.attrBuffer],
312
+ extAttrBuffer: this.extAttrBuffer.map(e => (e ? { ...e } : null)),
313
+ dbcsCont: [...this.dbcsCont],
205
314
  fields: this.fields.map(f => ({ ...f })),
206
315
  cursorRow: this.cursorRow,
207
316
  cursorCol: this.cursorCol,
@@ -214,6 +323,8 @@ export class ScreenBuffer {
214
323
  return false;
215
324
  this.buffer = state.buffer;
216
325
  this.attrBuffer = state.attrBuffer;
326
+ this.extAttrBuffer = state.extAttrBuffer;
327
+ this.dbcsCont = state.dbcsCont;
217
328
  this.fields = state.fields;
218
329
  this.cursorRow = state.cursorRow;
219
330
  this.cursorCol = state.cursorCol;
@@ -382,6 +493,40 @@ export class ScreenBuffer {
382
493
  }
383
494
  }
384
495
  }
496
+ /**
497
+ * Read the current value of input fields on the screen buffer. Used by
498
+ * the proxy's /read-mdt primitive to give clients a cheap post-write
499
+ * verification path: instead of diffing the whole screen, the client asks
500
+ * "what's in the fields I just wrote to?"
501
+ *
502
+ * @param modifiedOnly — when true, only fields whose MDT bit is currently
503
+ * set are returned. When false, every input field (including unmodified)
504
+ * is returned. Protected fields are always excluded.
505
+ */
506
+ readFieldValues(modifiedOnly = true) {
507
+ const out = [];
508
+ for (const f of this.fields) {
509
+ if (!this.isInputField(f))
510
+ continue;
511
+ if (modifiedOnly && !f.modified)
512
+ continue;
513
+ let value = '';
514
+ for (let i = 0; i < f.length; i++) {
515
+ const c = f.col + i;
516
+ const r = f.row + Math.floor(c / this.cols);
517
+ const cc = c % this.cols;
518
+ value += this.getChar(r, cc);
519
+ }
520
+ out.push({
521
+ row: f.row,
522
+ col: f.col,
523
+ length: f.length,
524
+ value,
525
+ modified: !!f.modified,
526
+ });
527
+ }
528
+ return out;
529
+ }
385
530
  /** Convert screen buffer to the ScreenData format expected by the frontend */
386
531
  toScreenData() {
387
532
  // Build content as newline-separated rows, sanitising control characters
@@ -404,36 +549,116 @@ export class ScreenBuffer {
404
549
  }
405
550
  lines.push(row);
406
551
  }
407
- // Clean up 5250 indicator artifacts in the rendered text:
408
- // - â/ê appearing as lone chars before "Bottom"/"More"/"Top" replace with arrows
409
- // - & appearing as isolated chars (field attribute separators) → replace with space
410
- // - ( + ê appearing at end of indicator lines → replace with space
552
+ // Clean up 5250 indicator artifacts in the rendered text. The cleanup
553
+ // is intentionally scoped to non-newline whitespace (`[ ]+` instead of
554
+ // `\s+`) so patterns cannot straddle row boundaries any replacement
555
+ // that spanned a newline would erase the row boundary and visually
556
+ // shift downstream content (e.g. row 24 copyright getting pushed
557
+ // right). The final row-block replacement is length-preserving for the
558
+ // same reason — the match and the replacement are both 15 chars.
411
559
  let content = lines.join('\n');
412
- content = content.replace(/â(\s+(Bottom|More))/g, '↓$1');
413
- content = content.replace(/â(\s+(Top))/g, '↑$1');
414
- content = content.replace(/(\s)ê(\s)/g, '$1 $2');
415
- content = content.replace(/(\s)&(\s{2,})/g, '$1 $2');
416
- content = content.replace(/\(\s{2,}\+\s+ê/g, ' ');
560
+ content = content.replace(/â([ ]+(Bottom|More))/g, '↓$1');
561
+ content = content.replace(/â([ ]+(Top))/g, '↑$1');
562
+ content = content.replace(/( )ê( )/g, '$1 $2');
563
+ content = content.replace(/( )&( {2,})/g, '$1 $2');
564
+ content = content.replace(/\( {2,}\+ +ê/g, (match) => ' '.repeat(match.length));
417
565
  // Map fields to frontend format
418
566
  const fields = this.fields.map(f => {
419
- const color = f.rawAttrByte ? ScreenBuffer.attrColor(f.rawAttrByte) : undefined;
567
+ const color = f.rawAttrByte ? ScreenBuffer.attrColor(f.rawAttrByte) : 'green';
568
+ // DBCS: any ideographic FCW marks the field as DBCS-accepting.
569
+ const isDbcs = !!(f.ideographicOnly || f.ideographicData || f.ideographicOpen);
570
+ // Decode the shift-type (FFW1 lower 3 bits, per lib5250 field.h)
571
+ const shiftMap = {
572
+ 0x00: 'alpha',
573
+ 0x01: 'alpha_only',
574
+ 0x02: 'numeric_shift',
575
+ 0x03: 'numeric_only',
576
+ 0x04: 'katakana',
577
+ 0x05: 'digits_only',
578
+ 0x06: 'io',
579
+ 0x07: 'signed_num',
580
+ };
581
+ const shift_type = this.isInputField(f) ? shiftMap[f.ffw1 & 0x07] : undefined;
582
+ const monocase = (f.ffw2 & 0x20) !== 0;
583
+ const isInput = this.isInputField(f);
420
584
  return {
421
585
  row: f.row,
422
586
  col: f.col,
423
587
  length: f.length,
424
- is_input: this.isInputField(f),
425
- is_protected: !this.isInputField(f),
588
+ is_input: isInput,
589
+ is_protected: !isInput,
426
590
  is_highlighted: this.isHighlighted(f) || undefined,
427
591
  is_reverse: this.isReverse(f) || undefined,
428
592
  is_underscored: this.isUnderscored(f) || undefined,
429
- color: color !== 'green' ? color : undefined, // only send non-default
593
+ is_non_display: this.isNonDisplay(f) || undefined,
594
+ color,
595
+ highlight_entry_attr: f.highlightEntryAttr,
596
+ resequence: f.resequence,
597
+ progression_id: f.progressionId,
598
+ pointer_aid: f.pointerAid,
599
+ is_dbcs: isDbcs || undefined,
600
+ is_dbcs_either: f.ideographicEither || undefined,
601
+ self_check_mod10: f.selfCheckMod10,
602
+ self_check_mod11: f.selfCheckMod11,
603
+ shift_type,
604
+ monocase: monocase || undefined,
605
+ // MDT bit — only meaningful for input fields; leave undefined on
606
+ // protected fields to keep the wire payload minimal.
607
+ modified: isInput && f.modified ? true : undefined,
430
608
  };
431
609
  });
610
+ // Build sparse extended-attribute map (only cells with non-null entries)
611
+ let ext_attrs;
612
+ for (let i = 0; i < this.extAttrBuffer.length; i++) {
613
+ const e = this.extAttrBuffer[i];
614
+ if (!e)
615
+ continue;
616
+ if (!e.color && !e.highlight && !e.charSet)
617
+ continue;
618
+ if (!ext_attrs)
619
+ ext_attrs = {};
620
+ const cell = {};
621
+ if (e.color)
622
+ cell.color = e.color;
623
+ if (e.highlight)
624
+ cell.highlight = e.highlight;
625
+ if (e.charSet)
626
+ cell.char_set = e.charSet;
627
+ ext_attrs[i] = cell;
628
+ }
629
+ // DBCS continuation cells: offsets of the second half of each kanji.
630
+ const dbcsContList = [];
631
+ for (let i = 0; i < this.dbcsCont.length; i++) {
632
+ if (this.dbcsCont[i])
633
+ dbcsContList.push(i);
634
+ }
635
+ const dbcs_cont = dbcsContList.length > 0 ? dbcsContList : undefined;
432
636
  // Generate screen signature
433
637
  const hash = createHash('md5').update(content).digest('hex').substring(0, 12);
434
638
  // Consume pending alarm (one-shot)
435
639
  const alarm = this.pendingAlarm;
436
640
  this.pendingAlarm = false;
641
+ const windows = this.windowList.length > 0
642
+ ? this.windowList.map(w => ({
643
+ row: w.row,
644
+ col: w.col,
645
+ height: w.height,
646
+ width: w.width,
647
+ ...(w.title ? { title: w.title } : {}),
648
+ ...(w.footer ? { footer: w.footer } : {}),
649
+ }))
650
+ : undefined;
651
+ const selection_fields = this.selectionFields.length > 0
652
+ ? this.selectionFields.map(sf => ({
653
+ row: sf.row,
654
+ col: sf.col,
655
+ num_rows: sf.numRows,
656
+ num_cols: sf.numCols,
657
+ choices: sf.choices,
658
+ }))
659
+ : undefined;
660
+ const screen_stack_depth = this.screenStack.length || undefined;
661
+ const is_popup = this.screenStack.length > 0 || undefined;
437
662
  return {
438
663
  content,
439
664
  cursor_row: this.cursorRow,
@@ -447,6 +672,13 @@ export class ScreenBuffer {
447
672
  insert_mode: this.insertMode || undefined,
448
673
  message_waiting: this.messageWaiting || undefined,
449
674
  alarm: alarm || undefined,
675
+ windows,
676
+ selection_fields,
677
+ screen_stack_depth,
678
+ is_popup,
679
+ ext_attrs,
680
+ dbcs_cont,
681
+ code_page: this.codePage,
450
682
  };
451
683
  }
452
684
  }
@@ -1 +1 @@
1
- {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/tn5250/screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/tn5250/screen.ts"],"names":[],"mappings":"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"}