1.5.1 • Published 2 years ago

xvt v1.5.1

Weekly downloads
78
License
MIT
Repository
github
Last release
2 years ago

xvt

an asynchronous terminal session handler

xvt class an be initialized for either input & output or for output only

xvt input designed to work akin to a browser <form> element

xvt output filters to your app's terminal emulation needs:

  • dumb - plain ASCII
  • VT - VT220 monochrome 7-bit controls with plain ASCII
  • PC - ANSI color typically used with IBM CP850 encoding
  • PI - Linux virtual console controls - useful on Raspberry Pi console
  • XT - ANSI color used with UTF-8 encoding - useful for xterm & web apps
const emulation = [ 'dumb', 'VT', 'PC', 'PI', 'XT' ]
for (let e in emulation) {
    xvt.app.emulation = emulation[e]
    xvt.outln(xvt.magenta, xvt.app.LGradient, xvt.reverse, emulation[e], ' BANNER', xvt.noreverse, xvt.app.RGradient)
    xvt.out(xvt.red,'R', xvt.green,'G', xvt.blue,'B')
    xvt.outln(xvt.reset, ' - ', xvt.bright, 'bold ', xvt.normal, 'normal ', xvt.blink, 'flash ', xvt.noblink, xvt.faint, 'dim')
}

Demo

Check it out online where this is used to run a classic BBS: Dank Domain

Or install it locally and run its demo from a shell:

$ npm install xvt
$ cd node_modules/xvt
$ npm run demo

> @theflyingape/xvt@1.5.0 demo
> tsc -p demo --outDir demo; node demo/index

xvt I/O initialized

demo running on Node.js v16.16.0 (linux)
@theflyingape/xvt v1.5.0 - an asynchronous terminal session handler
(C) 2017-2022 Robert Hurst <theflyingape@gmail.com>
MIT licensed

Testing xvt outputs:

░▒▓█BANNER█▓▒░
RGB - bold normal flash dim
Request terminal device status ENQ response = 27,91,48,110

Example snippet

import { io } from 'xvt'
const io = new xvt()

io.outln(io.clear, io.magenta, io.bright, 'Hello, world!')

io.form = {
    0: { cb: { io.focus = 'username' }, pause:true },
    'username': { cb: {
            const username = io.entry
            io.focus = 'password'
        }, prompt:'Username: ', min:3, max:10 },
    'password': { cb: password, echo:false, min:6, timeout:300 }
    1: { cb: fight, prompt: '<A>ttack, <C>ast a spell, or <R>etreat: ', enter:'a', eol:false, match:/A|C|R/i },
}

Note: form will autofocus if there is a field 0 defined in it. Else, app sets form field focus manually.

1.5.1

2 years ago

1.5.0

2 years ago

1.4.8

3 years ago

1.4.7

3 years ago

1.4.6

3 years ago

1.4.5

3 years ago

1.4.4

3 years ago

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.3.7

3 years ago

1.3.6

3 years ago

1.3.5

3 years ago

1.3.4

3 years ago

1.3.3

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

3 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.0

4 years ago

1.2.1

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

5 years ago

1.1.1-a

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

6 years ago

1.0.24

6 years ago

1.0.23

6 years ago

1.0.22

6 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.17

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.14

7 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8-a

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago