diff --git a/.vscode/settings.json b/.vscode/settings.json index 00ad71f..55712c1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "typescript.tsdk": "node_modules\\typescript\\lib" + "typescript.tsdk": "node_modules/typescript/lib" } \ No newline at end of file diff --git a/README.md b/README.md index 165bced..d1658cf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,20 @@ -fTelnet -======= +# fTelnet for Iniquity -fTelnet: An HTML5 WebSocket client +This is the re-imagining of the iconic Iniquity Bulletin Board Software. + +![Alt text](https://github.com/iniquitybbs/iniquity/raw/master/packages/core/src/assets/5m-iniquity3a.png?raw=true "Iniquity 3") + +## Synopsis + +npm install @iniquitybbs/fTelnet +Then you can use it in your project... + +```shell +npx fTelnet +``` + +Now go to localhost:8888 and you should be able to connect to any telnet server running on port 23. + +## About + +In my opinion fTelnet is the best web based telnet engine out there. But I needed it to behave in a certain way for use with Iniquity so I'm currently maintaining a fork of it. I try to sync with Rick's upstream master branch as often as required. I have added some new features to fTelnet. diff --git a/build.cmd b/build.cmd deleted file mode 100644 index eb3c9a5..0000000 --- a/build.cmd +++ /dev/null @@ -1,3 +0,0 @@ -cls -node node_modules\typescript\bin\tsc --build source %1 -node postbuild.js \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7a4c3fe..3d28ec3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,1734 @@ { + "name": "fTelnet", + "version": "1.0.0", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "telnet-stream": "^1.1.0", + "webtelnet": "^1.1.0" + }, + "devDependencies": { + "async": "^3.2.0", + "jsmin": "^1.0.1", + "typescript": "^4.1.3" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + }, + "node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dependencies": { + "callsite": "1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "engines": { + "node": "*" + } + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", + "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", + "dependencies": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "~1.1.5" + } + }, + "node_modules/engine.io-client": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.6.tgz", + "integrity": "sha512-6+rInQu8xU7c0fIF6RC4SRKuHVWPt8Xq0bZYS4lMrTwmhRineOlEMsU3X0zS5mHIvCgJsmpOKEX7DhihGk7j0g==", + "dependencies": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~1.1.5", + "xmlhttprequest-ssl": "1.6.3", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dependencies": { + "ms": "0.7.2" + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "node_modules/engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dependencies": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dependencies": { + "ms": "0.7.2" + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "node_modules/engine.io/node_modules/negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/jsmin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", + "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", + "dev": true, + "bin": { + "jsmin": "bin/jsmin" + }, + "engines": { + "node": ">=0.1.93" + } + }, + "node_modules/json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "deprecated": "Please use the native JSON object instead of JSON 3" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/socket.io": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", + "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", + "dependencies": { + "debug": "2.3.3", + "engine.io": "~1.8.4", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.4", + "socket.io-parser": "2.3.1" + } + }, + "node_modules/socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dependencies": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dependencies": { + "ms": "0.7.2" + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "node_modules/socket.io-client": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "dependencies": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "~1.8.4", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dependencies": { + "ms": "0.7.2" + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "node_modules/socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dependencies": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + } + }, + "node_modules/socket.io-parser/node_modules/component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dependencies": { + "ms": "0.7.1" + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dependencies": { + "ms": "0.7.2" + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/telnet-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/telnet-stream/-/telnet-stream-1.1.0.tgz", + "integrity": "sha512-saVuav/ScOFlrQXSB8xUqwwIi3sifjSfBiiywGMu7B8wJz60duqFCyG8IhcRjoPpl6VGGkBH+yH3Tnbxh36h1Q==" + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webtelnet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webtelnet/-/webtelnet-1.1.0.tgz", + "integrity": "sha1-u7pAkFzNS1eakttd6A5+oTqCcEE=", + "dependencies": { + "express": "^4.13.4", + "iconv-lite": "^0.4.13", + "minimist": "^1.2.0", + "socket.io": "^1.4.4" + }, + "bin": { + "webtelnet": "main.js" + } + }, + "node_modules/ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dependencies": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "node_modules/wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + } + }, "dependencies": { + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + }, "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", "dev": true }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "engine.io": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", + "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "~1.1.5" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "requires": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + } + } + }, + "engine.io-client": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.6.tgz", + "integrity": "sha512-6+rInQu8xU7c0fIF6RC4SRKuHVWPt8Xq0bZYS4lMrTwmhRineOlEMsU3X0zS5mHIvCgJsmpOKEX7DhihGk7j0g==", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~1.1.5", + "xmlhttprequest-ssl": "1.6.3", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "requires": { + "isarray": "0.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, "jsmin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", "dev": true }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "socket.io": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", + "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", + "requires": { + "debug": "2.3.3", + "engine.io": "~1.8.4", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.4", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-client": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "~1.8.4", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "telnet-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/telnet-stream/-/telnet-stream-1.1.0.tgz", + "integrity": "sha512-saVuav/ScOFlrQXSB8xUqwwIi3sifjSfBiiywGMu7B8wJz60duqFCyG8IhcRjoPpl6VGGkBH+yH3Tnbxh36h1Q==" + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "typescript": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "webtelnet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webtelnet/-/webtelnet-1.1.0.tgz", + "integrity": "sha1-u7pAkFzNS1eakttd6A5+oTqCcEE=", + "requires": { + "express": "^4.13.4", + "iconv-lite": "^0.4.13", + "minimist": "^1.2.0", + "socket.io": "^1.4.4" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" + }, + "xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } diff --git a/package.json b/package.json index 342a443..52e3399 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,24 @@ { + "name": "@iniquitybbs/fTelnet", + "version": "1.0.0", + "description": "The foundation of an Iniquity bbs application.", + "author": "ispyhumanfly ", + "homepage": "http://iniquitybbs.com", + "license": "GNU", + "private": true, "requires": true, + "scripts": { + "build": "npx tsc --build source && node postbuild.js", + "start": "npx webtelnet 8888 23 -h localhost -c 437 -w ./release/" + }, "lockfileVersion": 1, - "dependencies": {}, "devDependencies": { "async": "^3.2.0", "jsmin": "^1.0.1", - "typescript": "^4.1.3" + "typescript": "^4.1.3", + "webtelnet": "^1.1.0" + }, + "bin": { + "fTelnet": "./node_modules/.bin/webtelnet" } } diff --git a/postbuild.js b/postbuild.js index 8d72864..6bffa52 100644 --- a/postbuild.js +++ b/postbuild.js @@ -70,25 +70,25 @@ function minifyFile(filename) { } Promise.all([ - fixEnumerable('stage\\common.js'), - fixEnumerable('stage\\connections.js'), - fixEnumerable('stage\\crt.js'), - fixEnumerable('stage\\crtcontrols.js'), - fixEnumerable('stage\\filetransfer.js'), - fixEnumerable('stage\\ftelnetclient.js'), - fixEnumerable('stage\\graph.js') + fixEnumerable('stage/common.js'), + fixEnumerable('stage/connections.js'), + fixEnumerable('stage/crt.js'), + fixEnumerable('stage/crtcontrols.js'), + fixEnumerable('stage/filetransfer.js'), + fixEnumerable('stage/ftelnetclient.js'), + fixEnumerable('stage/graph.js') ]).then(function() { Promise.all([ - combineFiles(['stage\\common.js', 'stage\\crt.js', 'stage\\connections.js', 'stage\\ftelnetclient.js'], 'release\\ftelnet.norip.noxfer.js'), - combineFiles(['include\\blob.js', 'include\\filesaver.js', 'stage\\common.js', 'stage\\crt.js', 'stage\\connections.js', 'stage\\crtcontrols.js', 'stage\\filetransfer.js', 'stage\\ftelnetclient.js'], 'release\\ftelnet.norip.xfer.js'), - combineFiles(['stage\\common.js', 'stage\\crt.js', 'stage\\connections.js', 'stage\\graph.js', 'stage\\ftelnetclient.js'], 'release\\ftelnet.rip.noxfer.js'), - combineFiles(['include\\blob.js', 'include\\filesaver.js', 'stage\\common.js', 'stage\\crt.js', 'stage\\connections.js', 'stage\\crtcontrols.js', 'stage\\filetransfer.js', 'stage\\graph.js', 'stage\\ftelnetclient.js'], 'release\\ftelnet.rip.xfer.js') + combineFiles(['stage/common.js', 'stage/crt.js', 'stage/connections.js', 'stage/ftelnetclient.js'], 'release/ftelnet.norip.noxfer.js'), + combineFiles(['include/blob.js', 'include/filesaver.js', 'stage/common.js', 'stage/crt.js', 'stage/connections.js', 'stage/crtcontrols.js', 'stage/filetransfer.js', 'stage/ftelnetclient.js'], 'release/ftelnet.norip.xfer.js'), + combineFiles(['stage/common.js', 'stage/crt.js', 'stage/connections.js', 'stage/graph.js', 'stage/ftelnetclient.js'], 'release/ftelnet.rip.noxfer.js'), + combineFiles(['include/blob.js', 'include/filesaver.js', 'stage/common.js', 'stage/crt.js', 'stage/connections.js', 'stage/crtcontrols.js', 'stage/filetransfer.js', 'stage/graph.js', 'stage/ftelnetclient.js'], 'release/ftelnet.rip.xfer.js') ]).then(function() { Promise.all([ - minifyFile('release\\ftelnet.norip.noxfer.js'), - minifyFile('release\\ftelnet.norip.xfer.js'), - minifyFile('release\\ftelnet.rip.noxfer.js'), - minifyFile('release\\ftelnet.rip.xfer.js') + minifyFile('release/ftelnet.norip.noxfer.js'), + minifyFile('release/ftelnet.norip.xfer.js'), + minifyFile('release/ftelnet.rip.noxfer.js'), + minifyFile('release/ftelnet.rip.xfer.js') ]); }); }); diff --git a/release/ftelnet.norip.noxfer.js b/release/ftelnet.norip.noxfer.js index 6b61670..99277f9 100644 --- a/release/ftelnet.norip.noxfer.js +++ b/release/ftelnet.norip.noxfer.js @@ -921,7 +921,7 @@ var Ansi = (function () { x = this.GetNextParam(0); y = this.GetNextParam(0); z = this.GetNextParam(0); - this.onescQ.trigger(x.toString(10)); + this.onescQ.trigger('CP' + x.toString(10) + '_' + y.toString(10) + 'x' + z.toString(10)); break; case 'r': if (this._AnsiIntermediates.length === 0) { @@ -4700,7 +4700,8 @@ var fTelnetClient = (function () { this._FocusWarningBar.className = 'fTelnetFocusWarning'; this._FocusWarningBar.innerHTML = '*** CLICK HERE TO ENABLE KEYBOARD INPUT ***'; this._FocusWarningBar.style.display = 'none'; - this._fTelnetContainer.appendChild(this._FocusWarningBar); + if (!this._Options.DisableFocusBar) + this._fTelnetContainer.appendChild(this._FocusWarningBar); this._ScrollbackBar = document.createElement('div'); this._ScrollbackBar.className = 'fTelnetScrollback'; if (this._UseModernScrollback) { @@ -4740,13 +4741,15 @@ var fTelnetClient = (function () { this._fTelnetContainer.appendChild(this._ScrollbackBar); this._StatusBar = document.createElement('div'); this._StatusBar.className = 'fTelnetStatusBar'; - this._fTelnetContainer.appendChild(this._StatusBar); + if (!this._Options.DisableStatusBar) + this._fTelnetContainer.appendChild(this._StatusBar); this._MenuButton = document.createElement('a'); this._MenuButton.className = 'fTelnetMenuButton'; this._MenuButton.href = '#'; this._MenuButton.innerHTML = 'Menu'; this._MenuButton.addEventListener('click', function (e) { _this.OnMenuButtonClick(); e.preventDefault(); return false; }, false); - this._StatusBar.appendChild(this._MenuButton); + if (!this._Options.DisableMenu) + this._StatusBar.appendChild(this._MenuButton); this._ConnectButton = document.createElement('a'); this._ConnectButton.className = 'fTelnetConnectButton'; this._ConnectButton.href = '#'; @@ -4942,14 +4945,14 @@ var fTelnetClient = (function () { if (this._Options.ProxyHostname === '') { this._ConnectButton.style.display = 'none'; this._StatusBarLabel.innerHTML = 'Connecting to ' + this._Options.Hostname + ':' + this._Options.Port; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor; this._ClientContainer.style.opacity = '1.0'; this._Connection.connect(this._Options.Hostname, this._Options.Port, this._Options.WebSocketUrlPath, this._Options.ForceWss); } else { this._ConnectButton.style.display = 'none'; this._StatusBarLabel.innerHTML = 'Connecting to ' + this._Options.Hostname + ':' + this._Options.Port + ' via ' + this._Options.ProxyHostname; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor; this._ClientContainer.style.opacity = '1.0'; this._Connection.connect(this._Options.Hostname, this._Options.Port, '', this._Options.ForceWss, this._Options.ProxyHostname, this._Options.ProxyPort, this._Options.ProxyPortSecure); } @@ -5140,12 +5143,12 @@ var fTelnetClient = (function () { this._Crt.ClrScr(); if (this._Options.ProxyHostname === '') { this._StatusBarLabel.innerHTML = 'Connected to ' + this._Options.Hostname + ':' + this._Options.Port; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor; this._ClientContainer.style.opacity = '1.0'; } else { this._StatusBarLabel.innerHTML = 'Connected to ' + this._Options.Hostname + ':' + this._Options.Port + ' via ' + this._Options.ProxyHostname; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor; this._ClientContainer.style.opacity = '1.0'; } if (this._Options.ConnectionType === 'rlogin') { @@ -5418,6 +5421,10 @@ var fTelnetOptions = (function () { this.VirtualKeyboardVibrateDuration = 25; this.VirtualKeyboardVisible = DetectMobileBrowser.IsMobile; this.WebSocketUrlPath = ''; + this.StatusBarColor = 'blue'; + this.DisableStatusBar = false; + this.DisableFocusBar = false; + this.DisableMenu = false; } return fTelnetOptions; }()); diff --git a/release/ftelnet.norip.noxfer.min.js b/release/ftelnet.norip.noxfer.min.js index 695901e..e46c839 100644 --- a/release/ftelnet.norip.noxfer.min.js +++ b/release/ftelnet.norip.noxfer.min.js @@ -90,7 +90,7 @@ else{console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB(' break;case 5:Colour256=this.ANSI256_COLORS[this.GetNextParam(0)];this._Crt.TextBackground24(Colour256.r,Colour256.g,Colour256.b);break;default:console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB('+this._AnsiIntermediates.toString()+') FB('+finalByte+')');break;} break;case 49:Colour=this.ANSI_COLORS[40-40];this._Crt.TextBackground(Colour);break;case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:Colour=this.ANSI_COLORS[x-90]+8;this._Crt.TextColor(Colour);break;case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:Colour=this.ANSI_COLORS[x-100]+8;this._Crt.TextBackground(Colour);break;}} break;case'N':console.log('Unhandled ESC sequence: ANSI Music');break;case'n':x=this.GetNextParam(0);switch(x){case 5:this.onesc5n.trigger();break;case 6:this.onesc6n.trigger();break;case 255:this.onesc255n.trigger();break;default:console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB('+this._AnsiIntermediates.toString()+') FB('+finalByte+')');break;} -break;case'P':x=Math.max(1,this.GetNextParam(1));this._Crt.DelChar(x);break;case'Q':x=this.GetNextParam(0);y=this.GetNextParam(0);z=this.GetNextParam(0);this.onescQ.trigger(x.toString(10));break;case'r':if(this._AnsiIntermediates.length===0){console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB('+this._AnsiIntermediates.toString()+') FB('+finalByte+')');} +break;case'P':x=Math.max(1,this.GetNextParam(1));this._Crt.DelChar(x);break;case'Q':x=this.GetNextParam(0);y=this.GetNextParam(0);z=this.GetNextParam(0);this.onescQ.trigger('CP'+x.toString(10)+'_'+y.toString(10)+'x'+z.toString(10));break;case'r':if(this._AnsiIntermediates.length===0){console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB('+this._AnsiIntermediates.toString()+') FB('+finalByte+')');} else if(this._AnsiIntermediates[0].indexOf('*')!==-1){console.log('Unhandled ESC sequence: Set the output emulation speed.');} else if(this._AnsiIntermediates[0].indexOf(']')!==-1){console.log('Unhandled ESC sequence: Set Top and Bottom Margins');} else{console.log('Unknown ESC sequence: PB('+this._AnsiParams.toString()+') IB('+this._AnsiIntermediates.toString()+') FB('+finalByte+')');} @@ -470,9 +470,12 @@ if(document.getElementById('fTelnetKeyboardCss')===null){var link=document.creat this._InitMessageBar=document.createElement('div');this._InitMessageBar.className='fTelnetInitMessage';this._InitMessageBar.innerHTML='Initializing fTelnet...';this._fTelnetContainer.appendChild(this._InitMessageBar);this._ClientContainer=document.createElement('div');this._ClientContainer.className='fTelnetClientContainer';this._fTelnetContainer.appendChild(this._ClientContainer);this._UseModernScrollback=(this._Options.AllowModernScrollback&&DetectMobileBrowser.SupportsModernScrollback&&(this._Options.Emulation!=='RIP'));if(this._UseModernScrollback){this._ClientContainer.style.overflowX='hidden';this._ClientContainer.style.overflowY='scroll';this._ClientContainer.style.height=this._Options.ScreenRows*16+'px';this._ClientContainer.style.width=(this._Options.ScreenColumns*9)+GetScrollbarWidth.Width+'px';this._ClientContainer.scrollTop=this._ClientContainer.scrollHeight;} this._Crt=new Crt(this._ClientContainer,this._UseModernScrollback);this._InitMessageBar.style.display='none';this._Crt.onfontchange.on(function(){_this.OnCrtScreenSizeChanged();});this._Crt.onkeypressed.on(function(){_this.OnCrtKeyPressed();});this._Crt.onscreensizechange.on(function(){_this.OnCrtScreenSizeChanged();});this._Crt.BareLFtoCRLF=this._Options.BareLFtoCRLF;this._Crt.LocalEcho=this._Options.LocalEcho;this._Crt.SkipRedrawWhenSameFontSize=this._Options.SkipRedrawWhenSameFontSize;this._Crt.SetFont(this._Options.Font);this._Crt.SetScreenSize(this._Options.ScreenColumns,this._Options.ScreenRows);this._Ansi=new Ansi(this._Crt);this._Ansi.onesc0c.on(function(){_this.OnAnsiESC0c();});this._Ansi.onesc5n.on(function(){_this.OnAnsiESC5n();});this._Ansi.onesc6n.on(function(){_this.OnAnsiESC6n();});this._Ansi.onesc255n.on(function(){_this.OnAnsiESC255n();});this._Ansi.onescQ.on(function(font){_this.OnAnsiESCQ(font);});this._Ansi.onripdetect.on(function(){_this.OnAnsiRIPDetect();});this._Ansi.onripdisable.on(function(){_this.OnAnsiRIPDisable();});this._Ansi.onripenable.on(function(){_this.OnAnsiRIPEnable();});if(this._Options.Emulation==='RIP'){this._RIP=new RIP(this._Crt,this._Ansi,this._ClientContainer);} if(!('WebSocket'in window)||navigator.userAgent.match('AppleWebKit/534.30')){this._Crt.WriteLn();this._Crt.WriteLn('Sorry, but your browser doesn\'t support the WebSocket protocol!');this._Crt.WriteLn();this._Crt.WriteLn('WebSockets are how fTelnet connects to the remote server, so without them that');this._Crt.WriteLn('means you won\'t be able to connect anywhere.');this._Crt.WriteLn();this._Crt.WriteLn('If you can, try upgrading your web browser. If that\'s not an option (ie you\'re');this._Crt.WriteLn('already running the latest version your platform supports, like IE 8 on');this._Crt.WriteLn('Windows XP), then try switching to a different web browser.');this._Crt.WriteLn();this._Crt.WriteLn('Feel free to contact me (http://www.ftelnet.ca/contact/) if you think you\'re');this._Crt.WriteLn('seeing this message in error, and I\'ll look into it. Be sure to let me know');this._Crt.WriteLn('what browser you use, as well as which version it is.');console.log('fTelnet Error: WebSocket not supported');} -this._FocusWarningBar=document.createElement('div');this._FocusWarningBar.className='fTelnetFocusWarning';this._FocusWarningBar.innerHTML='*** CLICK HERE TO ENABLE KEYBOARD INPUT ***';this._FocusWarningBar.style.display='none';this._fTelnetContainer.appendChild(this._FocusWarningBar);this._ScrollbackBar=document.createElement('div');this._ScrollbackBar.className='fTelnetScrollback';if(this._UseModernScrollback){this._ScrollbackBar.innerHTML='SCROLLBACK: Scroll back down to the bottom to exit scrollback mode';} +this._FocusWarningBar=document.createElement('div');this._FocusWarningBar.className='fTelnetFocusWarning';this._FocusWarningBar.innerHTML='*** CLICK HERE TO ENABLE KEYBOARD INPUT ***';this._FocusWarningBar.style.display='none';if(!this._Options.DisableFocusBar) +this._fTelnetContainer.appendChild(this._FocusWarningBar);this._ScrollbackBar=document.createElement('div');this._ScrollbackBar.className='fTelnetScrollback';if(this._UseModernScrollback){this._ScrollbackBar.innerHTML='SCROLLBACK: Scroll back down to the bottom to exit scrollback mode';} else{var ScrollbackLabel=document.createElement('span');ScrollbackLabel.innerHTML='SCROLLBACK:';this._ScrollbackBar.appendChild(ScrollbackLabel);var ScrollbackLineUp=document.createElement('a');ScrollbackLineUp.href='#';ScrollbackLineUp.innerHTML='Line Up';ScrollbackLineUp.addEventListener('click',function(e){_this._Crt.PushKeyDown(KeyboardKeys.UP,KeyboardKeys.UP,false,false,false);e.preventDefault();return false;});this._ScrollbackBar.appendChild(ScrollbackLineUp);var ScrollbackLineDown=document.createElement('a');ScrollbackLineDown.href='#';ScrollbackLineDown.innerHTML='Line Down';ScrollbackLineDown.addEventListener('click',function(e){_this._Crt.PushKeyDown(KeyboardKeys.DOWN,KeyboardKeys.DOWN,false,false,false);e.preventDefault();return false;});this._ScrollbackBar.appendChild(ScrollbackLineDown);var ScrollbackPageUp=document.createElement('a');ScrollbackPageUp.href='#';ScrollbackPageUp.innerHTML='Page Up';ScrollbackPageUp.addEventListener('click',function(e){_this._Crt.PushKeyDown(KeyboardKeys.PAGE_UP,KeyboardKeys.PAGE_UP,false,false,false);e.preventDefault();return false;});this._ScrollbackBar.appendChild(ScrollbackPageUp);var ScrollbackPageDown=document.createElement('a');ScrollbackPageDown.href='#';ScrollbackPageDown.innerHTML='Page Down';ScrollbackPageDown.addEventListener('click',function(e){_this._Crt.PushKeyDown(KeyboardKeys.PAGE_DOWN,KeyboardKeys.PAGE_DOWN,false,false,false);e.preventDefault();return false;});this._ScrollbackBar.appendChild(ScrollbackPageDown);var ScrollbackExit=document.createElement('a');ScrollbackExit.href='#';ScrollbackExit.innerHTML='Exit';ScrollbackExit.addEventListener('click',function(e){_this.ExitScrollback();e.preventDefault();return false;});this._ScrollbackBar.appendChild(ScrollbackExit);} -this._ScrollbackBar.style.display='none';this._fTelnetContainer.appendChild(this._ScrollbackBar);this._StatusBar=document.createElement('div');this._StatusBar.className='fTelnetStatusBar';this._fTelnetContainer.appendChild(this._StatusBar);this._MenuButton=document.createElement('a');this._MenuButton.className='fTelnetMenuButton';this._MenuButton.href='#';this._MenuButton.innerHTML='Menu';this._MenuButton.addEventListener('click',function(e){_this.OnMenuButtonClick();e.preventDefault();return false;},false);this._StatusBar.appendChild(this._MenuButton);this._ConnectButton=document.createElement('a');this._ConnectButton.className='fTelnetConnectButton';this._ConnectButton.href='#';this._ConnectButton.innerHTML='Connect';this._ConnectButton.addEventListener('click',function(e){_this.Connect();e.preventDefault();return false;},false);this._StatusBar.appendChild(this._ConnectButton);this._StatusBarLabel=document.createElement('span');this._StatusBarLabel.className='fTelnetStatusBarLabel';this._StatusBarLabel.innerHTML='Not connected';this._StatusBar.appendChild(this._StatusBarLabel);this._MenuButtons=document.createElement('div');this._MenuButtons.className='fTelnetMenuButtons';var MenuButtonsTable=document.createElement('table');var MenuButtonsRow1=document.createElement('tr');var MenuButtonsRow1Cell1=document.createElement('td');var MenuButtonsConnect=document.createElement('a');MenuButtonsConnect.href='#';MenuButtonsConnect.innerHTML='Connect';MenuButtonsConnect.addEventListener('click',function(me){_this.Connect();me.preventDefault();return false;});MenuButtonsRow1Cell1.appendChild(MenuButtonsConnect);MenuButtonsRow1.appendChild(MenuButtonsRow1Cell1);var MenuButtonsRow1Cell2=document.createElement('td');var MenuButtonsDisconnect=document.createElement('a');MenuButtonsDisconnect.href='#';MenuButtonsDisconnect.innerHTML='Disconnect';MenuButtonsDisconnect.addEventListener('click',function(me){_this.Disconnect(true);me.preventDefault();return false;});MenuButtonsRow1Cell2.appendChild(MenuButtonsDisconnect);MenuButtonsRow1.appendChild(MenuButtonsRow1Cell2);MenuButtonsTable.appendChild(MenuButtonsRow1);if(!DetectMobileBrowser.IsMobile){var MenuButtonsRow2=document.createElement('tr');var MenuButtonsRow2Cell1=document.createElement('td');var MenuButtonsCopy=document.createElement('a');MenuButtonsCopy.href='#';MenuButtonsCopy.innerHTML='Copy';MenuButtonsCopy.addEventListener('click',function(me){_this.ClipboardCopy();me.preventDefault();return false;});MenuButtonsRow2Cell1.appendChild(MenuButtonsCopy);MenuButtonsRow2.appendChild(MenuButtonsRow2Cell1);var MenuButtonsRow2Cell2=document.createElement('td');var MenuButtonsPaste=document.createElement('a');MenuButtonsPaste.href='#';MenuButtonsPaste.innerHTML='Paste';MenuButtonsPaste.addEventListener('click',function(me){_this.ClipboardPaste();me.preventDefault();return false;});MenuButtonsRow2Cell2.appendChild(MenuButtonsPaste);MenuButtonsRow2.appendChild(MenuButtonsRow2Cell2);MenuButtonsTable.appendChild(MenuButtonsRow2);} +this._ScrollbackBar.style.display='none';this._fTelnetContainer.appendChild(this._ScrollbackBar);this._StatusBar=document.createElement('div');this._StatusBar.className='fTelnetStatusBar';if(!this._Options.DisableStatusBar) +this._fTelnetContainer.appendChild(this._StatusBar);this._MenuButton=document.createElement('a');this._MenuButton.className='fTelnetMenuButton';this._MenuButton.href='#';this._MenuButton.innerHTML='Menu';this._MenuButton.addEventListener('click',function(e){_this.OnMenuButtonClick();e.preventDefault();return false;},false);if(!this._Options.DisableMenu) +this._StatusBar.appendChild(this._MenuButton);this._ConnectButton=document.createElement('a');this._ConnectButton.className='fTelnetConnectButton';this._ConnectButton.href='#';this._ConnectButton.innerHTML='Connect';this._ConnectButton.addEventListener('click',function(e){_this.Connect();e.preventDefault();return false;},false);this._StatusBar.appendChild(this._ConnectButton);this._StatusBarLabel=document.createElement('span');this._StatusBarLabel.className='fTelnetStatusBarLabel';this._StatusBarLabel.innerHTML='Not connected';this._StatusBar.appendChild(this._StatusBarLabel);this._MenuButtons=document.createElement('div');this._MenuButtons.className='fTelnetMenuButtons';var MenuButtonsTable=document.createElement('table');var MenuButtonsRow1=document.createElement('tr');var MenuButtonsRow1Cell1=document.createElement('td');var MenuButtonsConnect=document.createElement('a');MenuButtonsConnect.href='#';MenuButtonsConnect.innerHTML='Connect';MenuButtonsConnect.addEventListener('click',function(me){_this.Connect();me.preventDefault();return false;});MenuButtonsRow1Cell1.appendChild(MenuButtonsConnect);MenuButtonsRow1.appendChild(MenuButtonsRow1Cell1);var MenuButtonsRow1Cell2=document.createElement('td');var MenuButtonsDisconnect=document.createElement('a');MenuButtonsDisconnect.href='#';MenuButtonsDisconnect.innerHTML='Disconnect';MenuButtonsDisconnect.addEventListener('click',function(me){_this.Disconnect(true);me.preventDefault();return false;});MenuButtonsRow1Cell2.appendChild(MenuButtonsDisconnect);MenuButtonsRow1.appendChild(MenuButtonsRow1Cell2);MenuButtonsTable.appendChild(MenuButtonsRow1);if(!DetectMobileBrowser.IsMobile){var MenuButtonsRow2=document.createElement('tr');var MenuButtonsRow2Cell1=document.createElement('td');var MenuButtonsCopy=document.createElement('a');MenuButtonsCopy.href='#';MenuButtonsCopy.innerHTML='Copy';MenuButtonsCopy.addEventListener('click',function(me){_this.ClipboardCopy();me.preventDefault();return false;});MenuButtonsRow2Cell1.appendChild(MenuButtonsCopy);MenuButtonsRow2.appendChild(MenuButtonsRow2Cell1);var MenuButtonsRow2Cell2=document.createElement('td');var MenuButtonsPaste=document.createElement('a');MenuButtonsPaste.href='#';MenuButtonsPaste.innerHTML='Paste';MenuButtonsPaste.addEventListener('click',function(me){_this.ClipboardPaste();me.preventDefault();return false;});MenuButtonsRow2Cell2.appendChild(MenuButtonsPaste);MenuButtonsRow2.appendChild(MenuButtonsRow2Cell2);MenuButtonsTable.appendChild(MenuButtonsRow2);} if((typeof YModemReceive!=='undefined')&&(typeof YModemSend!=='undefined')){var MenuButtonsRow3=document.createElement('tr');var MenuButtonsRow3Cell1=document.createElement('td');var MenuButtonsUpload=document.createElement('a');MenuButtonsUpload.href='#';MenuButtonsUpload.innerHTML='Upload';MenuButtonsUpload.addEventListener('click',function(me){_this.Upload();me.preventDefault();return false;});MenuButtonsRow3Cell1.appendChild(MenuButtonsUpload);MenuButtonsRow3.appendChild(MenuButtonsRow3Cell1);var MenuButtonsRow3Cell2=document.createElement('td');var MenuButtonsDownload=document.createElement('a');MenuButtonsDownload.href='#';MenuButtonsDownload.innerHTML='Download';MenuButtonsDownload.addEventListener('click',function(me){_this.Download();me.preventDefault();return false;});MenuButtonsRow3Cell2.appendChild(MenuButtonsDownload);MenuButtonsRow3.appendChild(MenuButtonsRow3Cell2);MenuButtonsTable.appendChild(MenuButtonsRow3);} if(!window.cordova){var MenuButtonsRow4=document.createElement('tr');var MenuButtonsRow4Cell1=document.createElement('td');var MenuButtonsKeyboard=document.createElement('a');MenuButtonsKeyboard.href='#';MenuButtonsKeyboard.innerHTML='Keyboard';MenuButtonsKeyboard.addEventListener('click',function(me){_this.VirtualKeyboardVisible=!_this.VirtualKeyboardVisible;me.preventDefault();return false;});MenuButtonsRow4Cell1.appendChild(MenuButtonsKeyboard);MenuButtonsRow4.appendChild(MenuButtonsRow4Cell1);var MenuButtonsRow4Cell2=document.createElement('td');var MenuButtonsFullScreen=document.createElement('a');MenuButtonsFullScreen.href='#';MenuButtonsFullScreen.innerHTML='Full Screen';MenuButtonsFullScreen.addEventListener('click',function(me){_this.FullScreenToggle();me.preventDefault();return false;});MenuButtonsRow4Cell2.appendChild(MenuButtonsFullScreen);MenuButtonsRow4.appendChild(MenuButtonsRow4Cell2);MenuButtonsTable.appendChild(MenuButtonsRow4);} if(!this._UseModernScrollback){var MenuButtonsRow5=document.createElement('tr');var MenuButtonsRow5Cell1=document.createElement('td');MenuButtonsRow5Cell1.colSpan=2;var MenuButtonsScrollback=document.createElement('a');MenuButtonsScrollback.href='#';MenuButtonsScrollback.innerHTML='View Scrollback Buffer';MenuButtonsScrollback.addEventListener('click',function(me){_this.EnterScrollback();me.preventDefault();return false;});MenuButtonsRow5Cell1.appendChild(MenuButtonsScrollback);MenuButtonsRow5.appendChild(MenuButtonsRow5Cell1);MenuButtonsTable.appendChild(MenuButtonsRow5);} @@ -491,8 +494,8 @@ if((typeof this._Connection!=='undefined')&&(this._Connection.connected)){return switch(this._Options.ConnectionType){case'rlogin':this._Connection=new RLoginConnection();break;case'tcp':this._Connection=new WebSocketConnection();break;default:this._Connection=new TelnetConnection(this._Crt);this._Connection.LocalEcho=this._Options.LocalEcho;this._Connection.onlocalecho.on(function(value){_this.OnConnectionLocalEcho(value);});this._Connection.SendLocation=this._Options.SendLocation;break;} this._Connection.onclose.on(function(){_this.OnConnectionClose();});this._Connection.onconnect.on(function(){_this.OnConnectionConnect();});this._Connection.ondata.on(function(){_this.OnConnectionData();});this._Connection.onioerror.on(function(){_this.OnConnectionIOError();});this._Connection.onsecurityerror.on(function(){_this.OnConnectionSecurityError();});if(this._Options.Emulation==='RIP'){this._RIP.ResetWindows();} else{this._Crt.NormVideo();this._Crt.ClrScr();} -if(this._Options.ProxyHostname===''){this._ConnectButton.style.display='none';this._StatusBarLabel.innerHTML='Connecting to '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor='blue';this._ClientContainer.style.opacity='1.0';this._Connection.connect(this._Options.Hostname,this._Options.Port,this._Options.WebSocketUrlPath,this._Options.ForceWss);} -else{this._ConnectButton.style.display='none';this._StatusBarLabel.innerHTML='Connecting to '+this._Options.Hostname+':'+this._Options.Port+' via '+this._Options.ProxyHostname;this._StatusBar.style.backgroundColor='blue';this._ClientContainer.style.opacity='1.0';this._Connection.connect(this._Options.Hostname,this._Options.Port,'',this._Options.ForceWss,this._Options.ProxyHostname,this._Options.ProxyPort,this._Options.ProxyPortSecure);}};Object.defineProperty(fTelnetClient.prototype,"Connected",{get:function(){if(typeof this._Connection==='undefined'){return false;} +if(this._Options.ProxyHostname===''){this._ConnectButton.style.display='none';this._StatusBarLabel.innerHTML='Connecting to '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor=this._Options.StatusBarColor;this._ClientContainer.style.opacity='1.0';this._Connection.connect(this._Options.Hostname,this._Options.Port,this._Options.WebSocketUrlPath,this._Options.ForceWss);} +else{this._ConnectButton.style.display='none';this._StatusBarLabel.innerHTML='Connecting to '+this._Options.Hostname+':'+this._Options.Port+' via '+this._Options.ProxyHostname;this._StatusBar.style.backgroundColor=this._Options.StatusBarColor;this._ClientContainer.style.opacity='1.0';this._Connection.connect(this._Options.Hostname,this._Options.Port,'',this._Options.ForceWss,this._Options.ProxyHostname,this._Options.ProxyPort,this._Options.ProxyPortSecure);}};Object.defineProperty(fTelnetClient.prototype,"Connected",{get:function(){if(typeof this._Connection==='undefined'){return false;} return this._Connection.connected;},enumerable:true,configurable:true});Object.defineProperty(fTelnetClient.prototype,"Connection",{get:function(){return this._Connection;},enumerable:true,configurable:true});Object.defineProperty(fTelnetClient.prototype,"Crt",{get:function(){return this._Crt;},enumerable:true,configurable:true});fTelnetClient.prototype.Disconnect=function(prompt){if(typeof this._MenuButtons!=='undefined'){this._MenuButtons.style.display='none';} if(typeof this._Connection==='undefined'){return true;} if(!this._Connection.connected){return true;} @@ -520,8 +523,8 @@ this._Connection.writeString(this._Ansi.CursorPosition());};fTelnetClient.protot if(!this._Connection.connected){return;} this._Connection.writeString(this._Ansi.CursorPosition(this._Crt.WindCols,this._Crt.WindRows));};fTelnetClient.prototype.OnAnsiESCQ=function(font){if(this._Options.Emulation!=='RIP'){this._Crt.SetFont(font);}};fTelnetClient.prototype.OnAnsiRIPDetect=function(){if(this._Options.Emulation==='RIP'){if(typeof this._Connection==='undefined'){return;} if(!this._Connection.connected){return;} -this._Connection.writeString('RIPSCRIP015400');}};fTelnetClient.prototype.OnAnsiRIPDisable=function(){};fTelnetClient.prototype.OnAnsiRIPEnable=function(){};fTelnetClient.prototype.OnConnectionClose=function(){this._ConnectButton.innerHTML='Reconnect';this._ConnectButton.style.display='inline';this._StatusBarLabel.innerHTML='Disconnected from '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor='red';this._ClientContainer.style.opacity='0.5';};fTelnetClient.prototype.OnConnectionConnect=function(){this._Crt.ClrScr();if(this._Options.ProxyHostname===''){this._StatusBarLabel.innerHTML='Connected to '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor='blue';this._ClientContainer.style.opacity='1.0';} -else{this._StatusBarLabel.innerHTML='Connected to '+this._Options.Hostname+':'+this._Options.Port+' via '+this._Options.ProxyHostname;this._StatusBar.style.backgroundColor='blue';this._ClientContainer.style.opacity='1.0';} +this._Connection.writeString('RIPSCRIP015400');}};fTelnetClient.prototype.OnAnsiRIPDisable=function(){};fTelnetClient.prototype.OnAnsiRIPEnable=function(){};fTelnetClient.prototype.OnConnectionClose=function(){this._ConnectButton.innerHTML='Reconnect';this._ConnectButton.style.display='inline';this._StatusBarLabel.innerHTML='Disconnected from '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor='red';this._ClientContainer.style.opacity='0.5';};fTelnetClient.prototype.OnConnectionConnect=function(){this._Crt.ClrScr();if(this._Options.ProxyHostname===''){this._StatusBarLabel.innerHTML='Connected to '+this._Options.Hostname+':'+this._Options.Port;this._StatusBar.style.backgroundColor=this._Options.StatusBarColor;this._ClientContainer.style.opacity='1.0';} +else{this._StatusBarLabel.innerHTML='Connected to '+this._Options.Hostname+':'+this._Options.Port+' via '+this._Options.ProxyHostname;this._StatusBar.style.backgroundColor=this._Options.StatusBarColor;this._ClientContainer.style.opacity='1.0';} if(this._Options.ConnectionType==='rlogin'){var TerminalType=this._Options.RLoginTerminalType;if(TerminalType===''){TerminalType=this._Options.Emulation+'/'+this._Options.BitsPerSecond;} if(typeof this._Connection==='undefined'){return;} if(!this._Connection.connected){return;} @@ -550,5 +553,5 @@ if(typeof this._Connection==='undefined'){return;} if(!this._Connection.connected){return;} this._UploadInput.click();};fTelnetClient.prototype.UploadFile=function(file,fileCount){var _this=this;var reader=new FileReader();reader.onload=function(){var FR=new FileRecord(file.name,file.size);var Buffer=reader.result;var Bytes=new Uint8Array(Buffer);for(var i=0;i - - - Super Simple Sample - - - - - -

Super Simple Sample

+ + + + + @iniquitybbs/fTelnet + -

This is a super simple sample of how to use fTelnet. For more information, see the docs.

+ + + + -
- - - + + +
+ + + + diff --git a/source/ftelnetclient/fTelnetClient.ts b/source/ftelnetclient/fTelnetClient.ts index b24831f..f2d60eb 100644 --- a/source/ftelnetclient/fTelnetClient.ts +++ b/source/ftelnetclient/fTelnetClient.ts @@ -187,7 +187,7 @@ class fTelnetClient { this._FocusWarningBar.className = 'fTelnetFocusWarning'; this._FocusWarningBar.innerHTML = '*** CLICK HERE TO ENABLE KEYBOARD INPUT ***'; this._FocusWarningBar.style.display = 'none'; - this._fTelnetContainer.appendChild(this._FocusWarningBar); + if (!this._Options.DisableFocusBar) this._fTelnetContainer.appendChild(this._FocusWarningBar); // Create the scrollback bar this._ScrollbackBar = document.createElement('div'); @@ -236,7 +236,7 @@ class fTelnetClient { // Create the status bar this._StatusBar = document.createElement('div'); this._StatusBar.className = 'fTelnetStatusBar'; - this._fTelnetContainer.appendChild(this._StatusBar); + if (!this._Options.DisableStatusBar) this._fTelnetContainer.appendChild(this._StatusBar); // Create the statusbar menu button this._MenuButton = document.createElement('a'); @@ -244,7 +244,7 @@ class fTelnetClient { this._MenuButton.href = '#'; this._MenuButton.innerHTML = 'Menu'; this._MenuButton.addEventListener('click', (e: Event): boolean => { this.OnMenuButtonClick(); e.preventDefault(); return false; }, false); - this._StatusBar.appendChild(this._MenuButton); + if (!this._Options.DisableMenu) this._StatusBar.appendChild(this._MenuButton); // Create the statusbar connect button this._ConnectButton = document.createElement('a'); @@ -475,13 +475,13 @@ class fTelnetClient { if (this._Options.ProxyHostname === '') { this._ConnectButton.style.display = 'none'; this._StatusBarLabel.innerHTML = 'Connecting to ' + this._Options.Hostname + ':' + this._Options.Port; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor this._ClientContainer.style.opacity = '1.0'; this._Connection.connect(this._Options.Hostname, this._Options.Port, this._Options.WebSocketUrlPath, this._Options.ForceWss); } else { this._ConnectButton.style.display = 'none'; this._StatusBarLabel.innerHTML = 'Connecting to ' + this._Options.Hostname + ':' + this._Options.Port + ' via ' + this._Options.ProxyHostname; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor this._ClientContainer.style.opacity = '1.0'; this._Connection.connect(this._Options.Hostname, this._Options.Port, '', this._Options.ForceWss, this._Options.ProxyHostname, this._Options.ProxyPort, this._Options.ProxyPortSecure); } @@ -653,11 +653,11 @@ class fTelnetClient { if (this._Options.ProxyHostname === '') { this._StatusBarLabel.innerHTML = 'Connected to ' + this._Options.Hostname + ':' + this._Options.Port; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor this._ClientContainer.style.opacity = '1.0'; } else { this._StatusBarLabel.innerHTML = 'Connected to ' + this._Options.Hostname + ':' + this._Options.Port + ' via ' + this._Options.ProxyHostname; - this._StatusBar.style.backgroundColor = 'blue'; + this._StatusBar.style.backgroundColor = this._Options.StatusBarColor this._ClientContainer.style.opacity = '1.0'; } diff --git a/source/ftelnetclient/fTelnetOptions.ts b/source/ftelnetclient/fTelnetOptions.ts index 1f3c02c..48cdb43 100644 --- a/source/ftelnetclient/fTelnetOptions.ts +++ b/source/ftelnetclient/fTelnetOptions.ts @@ -44,4 +44,8 @@ class fTelnetOptions { public VirtualKeyboardVibrateDuration: number = 25; public VirtualKeyboardVisible: boolean = DetectMobileBrowser.IsMobile; public WebSocketUrlPath: string = ''; + public StatusBarColor: string = 'blue' + public DisableStatusBar: boolean = false + public DisableFocusBar: boolean = false + public DisableMenu: boolean = false }