From 6d102d851258012f4e29443d3235314752d8c91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Ryb=C3=A1rsky?= Date: Sun, 12 Jun 2022 12:41:52 +0200 Subject: [PATCH] do some stuff again --- .vscode/tasks.json | 6 +- commands/beep.js | 9 +++ commands/beep.js.map | 1 + commands/beep.ts | 6 ++ commands/commands.js | 68 +++++++++++++------- commands/commands.js.map | 2 +- commands/commands.ts | 72 +++++++++++++-------- commands/help.js | 1 + commands/help.js.map | 2 +- commands/help.ts | 1 + commands/man.js | 3 + commands/man.js.map | 2 +- commands/man.ts | 8 ++- index.js | 23 ++++--- index.js.map | 2 +- index.ts | 22 ++++--- package-lock.json | 136 ++++++++++++++++++++++++++++++++++++++- package.json | 5 +- script.ts | 104 ++++++++++++++++++++++++++++++ tsconfig.json | 4 +- website/index.html | 11 ++-- website/jquery.js | 2 - website/script.js | 101 +++++++++++++++++++++-------- 23 files changed, 478 insertions(+), 113 deletions(-) create mode 100644 commands/beep.js create mode 100644 commands/beep.js.map create mode 100644 commands/beep.ts create mode 100644 script.ts delete mode 100644 website/jquery.js diff --git a/.vscode/tasks.json b/.vscode/tasks.json index f24f68b..4b4c42b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -5,7 +5,11 @@ { "label": "Compile TypeScript", "type": "shell", - "command": "npx tsc", + //make sure to run the other task + "dependsOn": [ + "Compile TypeScript for web" + ], + "command": "npx tsc -p tsconfig.json", "group": "build", "presentation": { "reveal": "always" diff --git a/commands/beep.js b/commands/beep.js new file mode 100644 index 0000000..aee17a3 --- /dev/null +++ b/commands/beep.js @@ -0,0 +1,9 @@ +"use strict"; +exports.__esModule = true; +exports.beep = void 0; +function beep(socket) { + socket.emit("bell"); + return "Beeped\n"; +} +exports.beep = beep; +//# sourceMappingURL=beep.js.map \ No newline at end of file diff --git a/commands/beep.js.map b/commands/beep.js.map new file mode 100644 index 0000000..2d9548a --- /dev/null +++ b/commands/beep.js.map @@ -0,0 +1 @@ +{"version":3,"file":"beep.js","sourceRoot":"","sources":["beep.ts"],"names":[],"mappings":";;;AACA,SAAS,IAAI,CAAC,MAAa;IACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,UAAU,CAAA;AACrB,CAAC;AACO,oBAAI"} \ No newline at end of file diff --git a/commands/beep.ts b/commands/beep.ts new file mode 100644 index 0000000..d4b35ea --- /dev/null +++ b/commands/beep.ts @@ -0,0 +1,6 @@ +import {Socket} from "socket.io"; +function beep(socket:Socket):string{ + socket.emit("bell"); + return "Beeped\n" +} +export {beep}; \ No newline at end of file diff --git a/commands/commands.js b/commands/commands.js index bc22b2b..a135043 100644 --- a/commands/commands.js +++ b/commands/commands.js @@ -2,6 +2,7 @@ exports.__esModule = true; exports.resolveCommand = void 0; var append_1 = require("./append"); +var beep_1 = require("./beep"); var cat_1 = require("./cat"); var cd_1 = require("./cd"); var clear_1 = require("./clear"); @@ -24,81 +25,98 @@ var spam_1 = require("./spam"); var touch_1 = require("./touch"); var wee_1 = require("./wee"); var woo_1 = require("./woo"); +function sendbuffer(socket, bufferx, forcefulload) { + var bufx = bufferx[socket.id]; + bufx += "\u2588"; + if (forcefulload) { + socket.emit('buffer', bufx); + } + else { + socket.emit('bufferx', bufx); + } +} function resolveCommand(commandname, socket, args, buffer, sessions, filesystem, curdir, curdirx) { + var bufko = ""; switch (commandname) { case "help": - buffer[socket.id] += (0, help_1.help)(); + bufko += (0, help_1.help)(); break; case "man": - buffer[socket.id] += (0, man_1.man)(args); + bufko += (0, man_1.man)(args); + break; + case "beep": + bufko += (0, beep_1.beep)(socket); break; case "screenshot": - buffer[socket.id] += (0, screenshot_1.screenshot)(args, curdir, buffer, socket); + bufko += (0, screenshot_1.screenshot)(args, curdir, buffer, socket); break; case "append": - buffer[socket.id] += (0, append_1.append)(args, curdir[socket.id]); + bufko += (0, append_1.append)(args, curdir[socket.id]); break; case "overwrite": - buffer[socket.id] += (0, overwrite_1.overwrite)(args, curdir[socket.id]); + bufko += (0, overwrite_1.overwrite)(args, curdir[socket.id]); break; case "rm": - buffer[socket.id] += (0, rm_1.rm)(args, curdir, socket); + bufko += (0, rm_1.rm)(args, curdir, socket); break; case "mv": - buffer[socket.id] += (0, mv_1.mv)(args, curdir[socket.id]); + bufko += (0, mv_1.mv)(args, curdir[socket.id]); break; case "cp": - buffer[socket.id] += (0, cp_1.cp)(args, curdir[socket.id]); + bufko += (0, cp_1.cp)(args, curdir[socket.id]); break; case "mkdir": - buffer[socket.id] += (0, mkdir_1.mkdir)(args, curdir[socket.id]); + bufko += (0, mkdir_1.mkdir)(args, curdir[socket.id]); break; case "rmdir": - buffer[socket.id] += (0, rmdir_1.rmdir)(args, curdir, socket); + bufko += (0, rmdir_1.rmdir)(args, curdir, socket); break; case "touch": - buffer[socket.id] += (0, touch_1.touch)(args, curdir, socket); + bufko += (0, touch_1.touch)(args, curdir, socket); break; case "cat": - buffer[socket.id] += (0, cat_1.cat)(args, curdir[socket.id]); + bufko += (0, cat_1.cat)(args, curdir[socket.id]); break; case "exec": - buffer[socket.id] += (0, exec_1.exec)(args, curdir, socket, buffer, sessions, filesystem, curdirx); + bufko += (0, exec_1.exec)(args, curdir, socket, buffer, sessions, filesystem, curdirx); break; case "ls": - buffer[socket.id] += (0, ls_1.ls)(curdir[socket.id]); + bufko += (0, ls_1.ls)(curdir[socket.id]); break; case "cd": - buffer[socket.id] += (0, cd_1.cd)(args, curdir, socket, filesystem, curdirx); + bufko += (0, cd_1.cd)(args, curdir, socket, filesystem, curdirx); break; case "pwd": - buffer[socket.id] += (0, pwd_1.pwd)(curdirx[socket.id]); + bufko += (0, pwd_1.pwd)(curdirx[socket.id]); break; case "echo": - buffer[socket.id] += (0, echo_1.echo)(args); + bufko += (0, echo_1.echo)(args); break; case "clear": - buffer[socket.id] += (0, clear_1.clear)(buffer[socket.id]); + bufko += (0, clear_1.clear)(buffer[socket.id]); break; case "savesess": - buffer[socket.id] += (0, savesess_1.savesess)(args, sessions, filesystem, curdir, buffer, socket); + bufko += (0, savesess_1.savesess)(args, sessions, filesystem, curdir, buffer, socket); break; case "loadsess": - buffer[socket.id] += (0, loadsess_1.loadsess)(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]); + bufko += (0, loadsess_1.loadsess)(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]); break; case "wee": - buffer[socket.id] += (0, wee_1.wee)(); + bufko += (0, wee_1.wee)(); break; case "woo": - buffer[socket.id] += (0, woo_1.woo)(); + bufko += (0, woo_1.woo)(); + break; + case "resendbufko": + sendbuffer(socket, buffer, true); break; case "spam": - buffer[socket.id] += (0, spam_1.spam)(args); + bufko += (0, spam_1.spam)(args); break; default: - buffer[socket.id] += "Invalid command.\n"; + bufko += "Invalid command.\n"; } - buffer[socket.id] += "#"; + return bufko; } exports.resolveCommand = resolveCommand; //# sourceMappingURL=commands.js.map \ No newline at end of file diff --git a/commands/commands.js.map b/commands/commands.js.map index 9f49f06..ce836dd 100644 --- a/commands/commands.js.map +++ b/commands/commands.js.map @@ -1 +1 @@ -{"version":3,"file":"commands.js","sourceRoot":"","sources":["commands.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"commands.js","sourceRoot":"","sources":["commands.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/commands/commands.ts b/commands/commands.ts index 71aa7af..1d53957 100644 --- a/commands/commands.ts +++ b/commands/commands.ts @@ -1,5 +1,6 @@ import { Socket } from 'socket.io'; import { append } from './append'; +import { beep } from './beep'; import { cat } from './cat'; import { cd } from './cd'; import { clear } from './clear'; @@ -22,81 +23,100 @@ import { spam } from './spam'; import { touch } from './touch'; import { wee } from './wee'; import { woo } from './woo'; -function resolveCommand(commandname:string, socket:Socket, args:string[], buffer:{ [id: string]: string }, sessions:any, filesystem:any, curdir:any, curdirx:any) { + +function sendbuffer(socket:Socket, bufferx: { [id: string]: string }, forcefulload:boolean) { + var bufx = bufferx[socket.id]; + //add placeholder character(reserved unicode) for blinking cursor in client; + bufx += "\u2588"; + if(forcefulload) { + socket.emit('buffer', bufx); + } + else { + socket.emit('bufferx', bufx); + } +} +function resolveCommand(commandname:string, socket:Socket, args:string[], buffer:{ [id: string]: string }, sessions:any, filesystem:any, curdir:any, curdirx:any):string { + var bufko = ""; switch (commandname) { case "help": - buffer[socket.id] += help(); + bufko += help(); break; case "man": - buffer[socket.id] += man(args); + bufko += man(args); break; //implement more commands + case "beep": + bufko += beep(socket); + break; case "screenshot": - buffer[socket.id] += screenshot(args, curdir, buffer, socket); + bufko += screenshot(args, curdir, buffer, socket); break; case "append": - buffer[socket.id] += append(args, curdir[socket.id]); + bufko += append(args, curdir[socket.id]); break; case "overwrite": - buffer[socket.id] += overwrite(args, curdir[socket.id]); + bufko += overwrite(args, curdir[socket.id]); break; case "rm": - buffer[socket.id] += rm(args, curdir, socket); + bufko += rm(args, curdir, socket); break; case "mv": - buffer[socket.id] += mv(args, curdir[socket.id]); + bufko += mv(args, curdir[socket.id]); break; case "cp": - buffer[socket.id] += cp(args, curdir[socket.id]); + bufko += cp(args, curdir[socket.id]); break; case "mkdir": - buffer[socket.id] += mkdir(args, curdir[socket.id]); + bufko += mkdir(args, curdir[socket.id]); break; case "rmdir": - buffer[socket.id] += rmdir(args, curdir, socket); + bufko += rmdir(args, curdir, socket); break; case "touch": - buffer[socket.id] += touch(args, curdir, socket); + bufko += touch(args, curdir, socket); break; case "cat": - buffer[socket.id] += cat(args, curdir[socket.id]); + bufko += cat(args, curdir[socket.id]); break; case "exec": - buffer[socket.id] += exec(args, curdir, socket, buffer, sessions, filesystem, curdirx); + bufko += exec(args, curdir, socket, buffer, sessions, filesystem, curdirx); break; case "ls": - buffer[socket.id] += ls(curdir[socket.id]); + bufko += ls(curdir[socket.id]); break; case "cd": - buffer[socket.id] += cd(args, curdir, socket, filesystem, curdirx); + bufko += cd(args, curdir, socket, filesystem, curdirx); break; case "pwd": - buffer[socket.id] += pwd(curdirx[socket.id]); + bufko += pwd(curdirx[socket.id]); break; case "echo": - buffer[socket.id] += echo(args); + bufko += echo(args); break; case "clear": - buffer[socket.id] += clear(buffer[socket.id]); + bufko += clear(buffer[socket.id]); break; case "savesess": - buffer[socket.id] += savesess(args, sessions, filesystem, curdir, buffer, socket); + bufko += savesess(args, sessions, filesystem, curdir, buffer, socket); break; case "loadsess": - buffer[socket.id] += loadsess(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]); + bufko += loadsess(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]); break; case "wee": - buffer[socket.id] += wee(); + bufko += wee(); break; case "woo": - buffer[socket.id] += woo(); + bufko += woo(); + break; + case "resendbufko": + sendbuffer(socket, buffer, true); break; case "spam": - buffer[socket.id] += spam(args); + bufko += spam(args); break; //invalid command default: - buffer[socket.id] += "Invalid command.\n"; + bufko += "Invalid command.\n"; } - buffer[socket.id] += "#"; + return bufko; } export {resolveCommand}; \ No newline at end of file diff --git a/commands/help.js b/commands/help.js index 85b19e1..9cfe653 100644 --- a/commands/help.js +++ b/commands/help.js @@ -22,6 +22,7 @@ function help() { buf += "overwrite - overwrites the file with data\n"; buf += "append - appends the arguments to a file\n"; buf += "screenshot - takes a screenshot\n"; + buf += "beep - makes a beep\n"; buf += "man - display longer help\n"; return buf; } diff --git a/commands/help.js.map b/commands/help.js.map index 1f2852f..d7c3388 100644 --- a/commands/help.js.map +++ b/commands/help.js.map @@ -1 +1 @@ -{"version":3,"file":"help.js","sourceRoot":"","sources":["help.ts"],"names":[],"mappings":";;;AAAA,SAAS,IAAI;IACT,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,iDAAiD,CAAC;IACzD,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,uCAAuC,CAAC;IAC/C,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,qBAAqB,CAAC;IAC7B,GAAG,IAAI,sBAAsB,CAAC;IAC9B,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,4BAA4B,CAAC;IACpC,GAAG,IAAI,6CAA6C,CAAC;IACrD,GAAG,IAAI,4CAA4C,CAAC;IACpD,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,6BAA6B,CAAC;IACrC,OAAO,GAAG,CAAC;AACf,CAAC;AACO,oBAAI"} \ No newline at end of file +{"version":3,"file":"help.js","sourceRoot":"","sources":["help.ts"],"names":[],"mappings":";;;AAAA,SAAS,IAAI;IACT,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,iDAAiD,CAAC;IACzD,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,uCAAuC,CAAC;IAC/C,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,qBAAqB,CAAC;IAC7B,GAAG,IAAI,sBAAsB,CAAC;IAC9B,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,4BAA4B,CAAC;IACpC,GAAG,IAAI,6CAA6C,CAAC;IACrD,GAAG,IAAI,4CAA4C,CAAC;IACpD,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,6BAA6B,CAAC;IACrC,OAAO,GAAG,CAAC;AACf,CAAC;AACO,oBAAI"} \ No newline at end of file diff --git a/commands/help.ts b/commands/help.ts index 8076726..81cc0b9 100644 --- a/commands/help.ts +++ b/commands/help.ts @@ -19,6 +19,7 @@ function help(): string { buf += "overwrite - overwrites the file with data\n"; buf += "append - appends the arguments to a file\n"; buf += "screenshot - takes a screenshot\n"; + buf += "beep - makes a beep\n"; buf += "man - display longer help\n"; return buf; } diff --git a/commands/man.js b/commands/man.js index 8fe8a75..3a728df 100644 --- a/commands/man.js +++ b/commands/man.js @@ -64,6 +64,9 @@ function man(args) { case "man": buf += "\'screenshot (command)\' This manual databank\n"; break; + case "beep": + buf += "\'beep\' This command makes a beep\n"; + break; default: buf += "No such command\n"; } diff --git a/commands/man.js.map b/commands/man.js.map index c4f4a5a..3af351f 100644 --- a/commands/man.js.map +++ b/commands/man.js.map @@ -1 +1 @@ -{"version":3,"file":"man.js","sourceRoot":"","sources":["man.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG,CAAC,IAAmB;IAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAG,IAAI,CAAC,MAAM,IAAI,CAAC,EAAC;QAChB,GAAG,IAAI,mBAAmB,CAAA;KAC7B;IACD,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAC;QACZ,KAAK,MAAM;YACP,GAAG,IAAI,kDAAkD,CAAC;YAC1D,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,gCAAgC,CAAC;YACxC,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,uFAAuF,CAAC;YAC/F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,qDAAqD,CAAC;YAC7D,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,wEAAwE,CAAC;YAChF,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,uEAAuE,CAAC;YAC/E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,+DAA+D,CAAC;YACvE,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,mFAAmF,CAAC;YAC3F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,oFAAoF,CAAC;YAC5F,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,sEAAsE,CAAC;YAC9E,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,2DAA2D,CAAC;YACnE,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,sGAAsG,CAAC;YAC9G,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,2FAA2F,CAAC;YACnG,MAAM;QACV,KAAK,WAAW;YACZ,GAAG,IAAI,wFAAwF,CAAC;YAChG,MAAM;QACV,KAAK,QAAQ;YACT,GAAG,IAAI,+EAA+E,CAAC;YACvF,MAAM;QACV,KAAK,YAAY;YACb,GAAG,IAAI,sFAAsF,CAAC;YAC9F,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,iDAAiD,CAAA;YACxD,MAAK;QACT;YACI,GAAG,IAAI,mBAAmB,CAAA;KACjC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACO,kBAAG"} \ No newline at end of file +{"version":3,"file":"man.js","sourceRoot":"","sources":["man.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG,CAAC,IAAmB;IAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAG,IAAI,CAAC,MAAM,IAAI,CAAC,EAAC;QAChB,GAAG,IAAI,mBAAmB,CAAA;KAC7B;IACD,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAC;QACZ,KAAK,MAAM;YACP,GAAG,IAAI,kDAAkD,CAAC;YAC1D,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,gCAAgC,CAAC;YACxC,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,uFAAuF,CAAC;YAC/F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,qDAAqD,CAAC;YAC7D,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,wEAAwE,CAAC;YAChF,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,uEAAuE,CAAC;YAC/E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,+DAA+D,CAAC;YACvE,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,mFAAmF,CAAC;YAC3F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,oFAAoF,CAAC;YAC5F,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,sEAAsE,CAAC;YAC9E,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,2DAA2D,CAAC;YACnE,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,sGAAsG,CAAC;YAC9G,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,2FAA2F,CAAC;YACnG,MAAM;QACV,KAAK,WAAW;YACZ,GAAG,IAAI,wFAAwF,CAAC;YAChG,MAAM;QACV,KAAK,QAAQ;YACT,GAAG,IAAI,+EAA+E,CAAC;YACvF,MAAM;QACV,KAAK,YAAY;YACb,GAAG,IAAI,sFAAsF,CAAC;YAC9F,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,iDAAiD,CAAC;YACzD,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,sCAAsC,CAAC;YAC9C,MAAM;QAEV;YACI,GAAG,IAAI,mBAAmB,CAAA;KACjC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACO,kBAAG"} \ No newline at end of file diff --git a/commands/man.ts b/commands/man.ts index 87118d9..900b199 100644 --- a/commands/man.ts +++ b/commands/man.ts @@ -59,8 +59,12 @@ function man(args: Array):string{ buf += "\'screenshot (filename)\' Takes a screenshot of the console and saves it to a file\n"; break; case "man": - buf += "\'screenshot (command)\' This manual databank\n" - break + buf += "\'screenshot (command)\' This manual databank\n"; + break; + case "beep": + buf += "\'beep\' This command makes a beep\n"; + break; + default: buf += "No such command\n" } diff --git a/index.js b/index.js index a6a2f82..741f444 100644 --- a/index.js +++ b/index.js @@ -17,18 +17,20 @@ app.get("/script.js", function (req, res) { app.get("/style.css", function (req, res) { res.sendFile(__dirname + '/website/style.css'); }); -app.get("/jquery.js", function (req, res) { - res.sendFile(__dirname + '/website/jquery.js'); -}); var buffer = {}; var filesystem = {}; var curdir = {}; var sessions = {}; var curdirx = {}; -function sendbuffer(socket, bufferx) { +function sendbuffer(socket, bufferx, forcefulload) { var bufx = bufferx[socket.id]; bufx += "\u2588"; - socket.emit('buffer', bufx); + if (forcefulload) { + socket.emit('buffer', bufx); + } + else { + socket.emit('bufferx', bufx); + } } io.on('connection', function (socket) { console.log('a user connected'); @@ -39,7 +41,7 @@ io.on('connection', function (socket) { buffer[socket.id] = "Welcome to the console!\n"; buffer[socket.id] += "Type 'help' to see the available commands.\n"; buffer[socket.id] += "#"; - sendbuffer(socket, buffer); + sendbuffer(socket, buffer, true); socket.on('keypress', function (data) { console.log('a key was pressed'); var key = String.fromCharCode(data); @@ -49,6 +51,7 @@ io.on('connection', function (socket) { var lines = buffer[socket.id].split("\n"); if (lines[lines.length - 1] != "#") { lines[lines.length - 1] = lines[lines.length - 1].slice(0, -1); + socket.emit("lastline", lines[lines.length - 1]); buffer[socket.id] = lines.join("\n"); } } @@ -65,12 +68,16 @@ io.on('connection', function (socket) { }); buffer[socket.id] += "\n"; console.log("Executing command: \"" + commandName + "\" with arguments: \"" + commandArgs + "\""); - (0, commands_1.resolveCommand)(commandName, socket, commandArgs, buffer, sessions, filesystem, curdir, curdirx); + var bufko = "\n" + (0, commands_1.resolveCommand)(commandName, socket, commandArgs, buffer, sessions, filesystem, curdir, curdirx); + console.log("This command \"" + commandName + "\" with args:\"" + commandArgs + "\" returned \"" + bufko + "\""); + bufko += "#"; + socket.emit("bufferx", bufko + '\u2588'); + buffer[socket.id] += bufko; } else { buffer[socket.id] += key; + socket.emit("bufferx", key + "\u2588"); } - sendbuffer(socket, buffer); }); }); io.on('disconnect', function (socket) { diff --git a/index.js.map b/index.js.map index 4c350cf..03e28fa 100644 --- a/index.js.map +++ b/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.ts b/index.ts index 9367203..347b0e5 100644 --- a/index.ts +++ b/index.ts @@ -23,10 +23,6 @@ app.get("/style.css", (req:Request, res:Response) => { res.sendFile(__dirname + '/website/style.css'); } ); -app.get("/jquery.js", (req:Request, res:Response) => { - res.sendFile(__dirname + '/website/jquery.js'); - } -); //initialize buffer //var buffer = []; //add type for typescript @@ -40,11 +36,16 @@ var sessions: any = {}; //var curdirx = []; var curdirx: any = {}; //on connection -function sendbuffer(socket:Socket, bufferx: { [id: string]: string }) { +function sendbuffer(socket:Socket, bufferx: { [id: string]: string }, forcefulload:boolean) { var bufx = bufferx[socket.id]; //add placeholder character(reserved unicode) for blinking cursor in client; bufx += "\u2588"; + if(forcefulload) { socket.emit('buffer', bufx); + } + else { + socket.emit('bufferx', bufx); + } } io.on('connection', (socket:Socket) => { console.log('a user connected'); @@ -57,7 +58,7 @@ io.on('connection', (socket:Socket) => { buffer[socket.id] += "Type 'help' to see the available commands.\n"; buffer[socket.id] += "#"; //send buffer - sendbuffer(socket, buffer); + sendbuffer(socket, buffer, true); socket.on('keypress', (data) => { console.log('a key was pressed'); @@ -76,6 +77,7 @@ io.on('connection', (socket:Socket) => { var lines = buffer[socket.id].split("\n"); if (lines[lines.length - 1] != "#") { lines[lines.length - 1] = lines[lines.length - 1].slice(0, -1); + socket.emit("lastline", lines[lines.length - 1]); buffer[socket.id] = lines.join("\n"); } } @@ -98,14 +100,18 @@ io.on('connection', (socket:Socket) => { buffer[socket.id] += "\n"; //remove # in beginning of commandname console.log("Executing command: \"" + commandName + "\" with arguments: \"" + commandArgs + "\""); - resolveCommand(commandName, socket, commandArgs, buffer, sessions, filesystem, curdir, curdirx); + var bufko = "\n" + resolveCommand(commandName, socket, commandArgs, buffer, sessions, filesystem, curdir, curdirx); + console.log("This command \""+ commandName +"\" with args:\""+commandArgs+"\" returned \""+bufko+"\""); + bufko += "#"; + socket.emit("bufferx", bufko+ '\u2588'); + buffer[socket.id] += bufko; } else{ //add key to buffer buffer[socket.id] += key; + socket.emit("bufferx", key+"\u2588"); } //send buffer to client - sendbuffer(socket, buffer); }); }); io.on('disconnect', (socket:Socket) => { diff --git a/package-lock.json b/package-lock.json index 1f9873c..6d2d898 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,23 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@types/jquery": "^3.5.14", "express": "^4.18.1", + "jquery": "^3.6.0", "serialize-anything": "^1.1.10", - "socket.io": "^4.5.1" + "socket.io": "^4.5.1", + "socket.io-client": "^4.5.1" }, "devDependencies": { "@types/express": "^4.17.13", "typescript": "^4.7.3" } }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -75,6 +83,14 @@ "@types/range-parser": "*" } }, + "node_modules/@types/jquery": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz", + "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==", + "dependencies": { + "@types/sizzle": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -108,6 +124,11 @@ "@types/node": "*" } }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -309,6 +330,18 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, "node_modules/engine.io-parser": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", @@ -517,6 +550,11 @@ "node": ">= 0.10" } }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -795,6 +833,32 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, + "node_modules/socket.io-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", + "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/socket.io-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", + "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/socket.io-parser": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", @@ -892,9 +956,22 @@ "optional": true } } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } } }, "dependencies": { + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -952,6 +1029,14 @@ "@types/range-parser": "*" } }, + "@types/jquery": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz", + "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==", + "requires": { + "@types/sizzle": "*" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -985,6 +1070,11 @@ "@types/node": "*" } }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1139,6 +1229,18 @@ "ws": "~8.2.3" } }, + "engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, "engine.io-parser": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", @@ -1309,6 +1411,11 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1517,6 +1624,28 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, + "socket.io-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", + "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + }, + "dependencies": { + "socket.io-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", + "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + } + } + }, "socket.io-parser": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", @@ -1572,6 +1701,11 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" } } } diff --git a/package.json b/package.json index aca187c..940d0be 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,12 @@ "author": "", "license": "ISC", "dependencies": { + "@types/jquery": "^3.5.14", "express": "^4.18.1", + "jquery": "^3.6.0", "serialize-anything": "^1.1.10", - "socket.io": "^4.5.1" + "socket.io": "^4.5.1", + "socket.io-client": "^4.5.1" }, "devDependencies": { "@types/express": "^4.17.13", diff --git a/script.ts b/script.ts new file mode 100644 index 0000000..442b536 --- /dev/null +++ b/script.ts @@ -0,0 +1,104 @@ +function setareacontent(content:string):void{ + //this appends to the bottom of the console and scrolls to the bottom make sure we start typing at the bottom + var console = document.getElementById("console"); + if (console != null) { + console.innerHTML = content; + console.scrollTop = console.scrollHeight; + } +} +function addareacontent(content:string):void{ + //this appends to the bottom of the console and scrolls to the bottom make sure we start typing at the bottom + var console = document.getElementById("console"); + if (console != null) { + console.innerHTML += content; + console.scrollTop = console.scrollHeight; + } +} +function resizeit():void{ + let con = $("#console"); + let windowx = $("window"); + let consolecont = $("#consolecont"); + if (con != null && windowx != null && con != undefined&& windowx != undefined&&consolecont != null&&consolecont!=undefined) { + let winheight = windowx.height(); + let conoffset = con.offset(); + if (winheight != undefined && conoffset != undefined){ + consolecont.css('height', winheight - 10); + let height = (winheight - conoffset.top)*0.96; + $('#console').css('height', height); + $('#rows').val(winheight - conoffset.top - 10); + } + } + else{ + console.log("error"); + } +} +$(function(){ + //fit console to screen + //$('#console').css('height', $(window).height() - $('#console').offset().top - 10); + //account for the input box + let host = 'ws://127.0.0.1:8480'; + var socket = io.connect(host) + resizeit(); + //resize it on window resize + //$(window).resize(function(){ + $(window).on('resize', function(){ + resizeit(); + }); + //on key press on any part of html page + //$("#console").keyup(function(e){ + $("#console").on('keyup', function(e){ + //if enter key is pressed + //get the input + e.preventDefault(); + //resolve e.code to char + let key = e.which; + //send to server via socket if connected + if (key == 8){ + socket.emit('keypress', key); + } + }); + // $("#console").keypress(function(e){ + $("#console").on('keypress', function(e){ + //if enter key is pressed + //get the input + e.preventDefault(); + //resolve e.code to char + let key = e.which; + //send to server via socket if connected + socket.emit('keypress', key); + }); + //connect to the server + + //on connect + socket.on('connect', function(){ + setareacontent("Connected to server"); + }); + //on disconnect + socket.on('disconnect', function(){ + setareacontent("Disconnected from server"); + }); + //on error + socket.on('error', function(err:any){ + setareacontent("Error: " + err); + }); + //on message + socket.on('buffer', function(msg:any){ + setareacontent(msg); + }); + socket.on('bufferx', function(msg:any){ + addareacontent(msg); + }); +}) +function flash(){ + //if u+2800 is present in the console then replace it with 2588 + let console = document.getElementById("console"); + if (console != null) { + if(console.innerHTML.indexOf("\u2800") > -1){ + console.innerHTML = console.innerHTML.replace("\u2800", "\u2588"); + } + else{ + console.innerHTML = console.innerHTML.replace("\u2588", "\u2800"); + } + } +} +setInterval(flash, 500); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 12d2852..cf88789 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,13 @@ { "compilerOptions": { "module": "commonjs", + "moduleResolution": "node", "noImplicitAny": true, "removeComments": true, "preserveConstEnums": true, "suppressImplicitAnyIndexErrors": true, - "sourceMap": true + "sourceMap": true, + "esModuleInterop": true }, "files": [ "index.ts" diff --git a/website/index.html b/website/index.html index b88ee18..aa4c4fa 100644 --- a/website/index.html +++ b/website/index.html @@ -1,15 +1,14 @@ - - - + + + + -
- -
+ \ No newline at end of file diff --git a/website/jquery.js b/website/jquery.js deleted file mode 100644 index c4c6022..0000000 --- a/website/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 -1){ - console.innerHTML = console.innerHTML.replace("\u2800", "\u2588"); - } - else{ - console.innerHTML = console.innerHTML.replace("\u2588", "\u2800"); + if (console != null) { + if (console.innerHTML.indexOf("\u2800") > -1) { + console.innerHTML = console.innerHTML.replace("\u2800", "\u2588"); + } + else { + console.innerHTML = console.innerHTML.replace("\u2588", "\u2800"); + } } } setInterval(flash, 500); \ No newline at end of file