From: Shuanglei Tao Date: Fri, 17 May 2019 03:21:33 +0000 (+0800) Subject: html: add tslint to webpack X-Git-Url: http://git.prime8.dev/?a=commitdiff_plain;h=2aa203519565c94f4bcadf6d0726cf94a3854970;p=ttyd.git html: add tslint to webpack --- diff --git a/html/js/app.ts b/html/js/app.ts index cd55a1e..5436850 100644 --- a/html/js/app.ts +++ b/html/js/app.ts @@ -1,11 +1,11 @@ import '../sass/app.scss'; import { Terminal, ITerminalOptions, IDisposable } from 'xterm'; -import * as fit from 'xterm/lib/addons/fit/fit' +import * as fit from 'xterm/lib/addons/fit/fit'; import * as Zmodem from 'zmodem.js/src/zmodem_browser'; -import * as overlay from './overlay' -import { Modal } from './zmodem' +import * as overlay from './overlay'; +import { Modal } from './zmodem'; Terminal.applyAddon(fit); Terminal.applyAddon(overlay); @@ -28,31 +28,31 @@ declare let window: IWindowWithTerminal; const modal = new Modal(); const terminalContainer = document.getElementById('terminal-container'); -const protocol = window.location.protocol === 'https:' ? 'wss://': 'ws://'; +const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; const wsPath = window.location.pathname.endsWith('/') ? 'ws' : '/ws'; const url = [protocol, window.location.host, window.location.pathname, wsPath, window.location.search].join(''); const textDecoder = new TextDecoder(); const textEncoder = new TextEncoder(); -let authToken = (typeof window.tty_auth_token !== 'undefined') ? window.tty_auth_token : null; +const authToken = (typeof window.tty_auth_token !== 'undefined') ? window.tty_auth_token : null; let autoReconnect = -1; let term: ITtydTerminal; let title: string; let wsError: boolean; -let openWs = function() { - let ws = new WebSocket(url, ['tty']); - let sendMessage = function (message) { +const openWs = function(): void { + const ws = new WebSocket(url, ['tty']); + const sendMessage = function (message: string): void { if (ws.readyState === WebSocket.OPEN) { ws.send(textEncoder.encode(message)); } }; - let unloadCallback = function (event) { - let message = 'Close terminal? this will also terminate the command.'; + const unloadCallback = function (event: BeforeUnloadEvent): string { + const message = 'Close terminal? this will also terminate the command.'; event.returnValue = message; return message; }; - let resetTerm = function() { + const resetTerm = function(): void { modal.hide(); clearTimeout(term.reconnectTimeout); if (ws.readyState !== WebSocket.CLOSED) { @@ -61,31 +61,31 @@ let openWs = function() { openWs(); }; - let zsentry = new Zmodem.Sentry({ - to_terminal: function _to_terminal(octets) { - let buffer = new Uint8Array(octets).buffer; + const zsentry = new Zmodem.Sentry({ + to_terminal: function(octets: ArrayBuffer): any { + const buffer = new Uint8Array(octets).buffer; term.write(textDecoder.decode(buffer)); }, - sender: function _ws_sender_func(octets) { + sender: function(octets: number[]): any { // limit max packet size to 4096 while (octets.length) { - let chunk = octets.splice(0, 4095); - let buffer = new Uint8Array(chunk.length + 1); - buffer[0]= '0'.charCodeAt(0); + const chunk = octets.splice(0, 4095); + const buffer = new Uint8Array(chunk.length + 1); + buffer[0] = '0'.charCodeAt(0); buffer.set(chunk, 1); ws.send(buffer); } }, - on_retract: function _on_retract() { + on_retract: function(): any { // console.log('on_retract'); }, - on_detect: function _on_detect(detection) { + on_detect: function(detection: any): any { term.setOption('disableStdin', true); - let zsession = detection.confirm(); - let promise = zsession.type === 'send' ? modal.handleSend(zsession) : modal.handleReceive(zsession); + const zsession = detection.confirm(); + const promise = zsession.type === 'send' ? modal.handleSend(zsession) : modal.handleReceive(zsession); promise.catch(console.error.bind(console)).then(() => { modal.hide(); term.setOption('disableStdin', false); @@ -95,7 +95,7 @@ let openWs = function() { ws.binaryType = 'arraybuffer'; - ws.onopen = function() { + ws.onopen = function(): void { console.log('[ttyd] websocket opened'); wsError = false; sendMessage(JSON.stringify({AuthToken: authToken})); @@ -163,11 +163,11 @@ let openWs = function() { term.focus(); }; - ws.onmessage = function(event: MessageEvent) { - let rawData = new Uint8Array(event.data), - cmd = String.fromCharCode(rawData[0]), - data = rawData.slice(1).buffer; - switch(cmd) { + ws.onmessage = function(event: MessageEvent): void { + const rawData = new Uint8Array(event.data); + const cmd = String.fromCharCode(rawData[0]); + const data = rawData.slice(1).buffer; + switch (cmd) { case '0': try { zsentry.consume(data); @@ -181,7 +181,7 @@ let openWs = function() { document.title = title; break; case '2': - let preferences = JSON.parse(textDecoder.decode(data)); + const preferences = JSON.parse(textDecoder.decode(data)); Object.keys(preferences).forEach((key) => { console.log('[ttyd] xterm option: ' + key + '=' + preferences[key]); term.setOption(key, preferences[key]); @@ -197,7 +197,7 @@ let openWs = function() { } }; - ws.onclose = function(event: CloseEvent) { + ws.onclose = function(event: CloseEvent): void { console.log('[ttyd] websocket closed, code: ' + event.code); modal.hide(); if (term) { diff --git a/html/js/overlay.ts b/html/js/overlay.ts index 9c39848..db06d97 100644 --- a/html/js/overlay.ts +++ b/html/js/overlay.ts @@ -3,15 +3,16 @@ import { Terminal } from 'xterm'; interface IOverlayAddonTerminal extends Terminal { - __overlayNode?: HTMLElement - __overlayTimeout?: number + __overlayNode?: HTMLElement; + __overlayTimeout?: number; } export function showOverlay(term: Terminal, msg: string, timeout: number): void { const addonTerminal = term; if (!addonTerminal.__overlayNode) { - if (!term.element) + if (!term.element) { return; + } addonTerminal.__overlayNode = document.createElement('div'); addonTerminal.__overlayNode.style.cssText = ( 'border-radius: 15px;' + @@ -29,14 +30,15 @@ export function showOverlay(term: Terminal, msg: string, timeout: number): void e.stopPropagation(); }, true); } - addonTerminal.__overlayNode.style.color = "#101010"; - addonTerminal.__overlayNode.style.backgroundColor = "#f0f0f0"; + addonTerminal.__overlayNode.style.color = '#101010'; + addonTerminal.__overlayNode.style.backgroundColor = '#f0f0f0'; addonTerminal.__overlayNode.textContent = msg; addonTerminal.__overlayNode.style.opacity = '0.75'; - if (!addonTerminal.__overlayNode.parentNode) + if (!addonTerminal.__overlayNode.parentNode) { term.element.appendChild(addonTerminal.__overlayNode); + } const divSize = term.element.getBoundingClientRect(); const overlaySize = addonTerminal.__overlayNode.getBoundingClientRect(); @@ -44,17 +46,20 @@ export function showOverlay(term: Terminal, msg: string, timeout: number): void addonTerminal.__overlayNode.style.top = (divSize.height - overlaySize.height) / 2 + 'px'; addonTerminal.__overlayNode.style.left = (divSize.width - overlaySize.width) / 2 + 'px'; - if (addonTerminal.__overlayTimeout) + if (addonTerminal.__overlayTimeout) { clearTimeout(addonTerminal.__overlayTimeout); + } - if (timeout === null) + if (timeout === null) { return; + } addonTerminal.__overlayTimeout = setTimeout(() => { addonTerminal.__overlayNode.style.opacity = '0'; addonTerminal.__overlayTimeout = setTimeout(() => { - if (addonTerminal.__overlayNode.parentNode) + if (addonTerminal.__overlayNode.parentNode) { addonTerminal.__overlayNode.parentNode.removeChild(addonTerminal.__overlayNode); + } addonTerminal.__overlayTimeout = null; addonTerminal.__overlayNode.style.opacity = '0.75'; }, 200); diff --git a/html/js/zmodem.ts b/html/js/zmodem.ts index e1873ba..a214b8d 100644 --- a/html/js/zmodem.ts +++ b/html/js/zmodem.ts @@ -49,9 +49,9 @@ function bytesHuman (bytes: any, precision: number): string { if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) return '-'; if (bytes === 0) return '0'; if (typeof precision === 'undefined') precision = 1; - let units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'], - number = Math.floor(Math.log(bytes) / Math.log(1024)); - return (bytes / Math.pow(1024, Math.floor(number))).toFixed(precision) + ' ' + units[number]; + const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']; + const num = Math.floor(Math.log(bytes) / Math.log(1024)); + return (bytes / Math.pow(1024, Math.floor(num))).toFixed(precision) + ' ' + units[num]; } export class Modal { @@ -69,7 +69,7 @@ export class Modal { this.progress = new Progress(); } - public reset(title): void { + public reset(title: string): void { this.header.textContent = title; this.status.element.style.display = 'none'; this.choose.element.style.display = 'none'; @@ -85,7 +85,7 @@ export class Modal { this.element.classList.remove('is-active'); } - public updateFileInfo(fileInfo): void { + public updateFileInfo(fileInfo: any): void { this.status.element.style.display = ''; this.choose.element.style.display = 'none'; this.progress.element.style.display = ''; @@ -94,11 +94,11 @@ export class Modal { this.progress.fileName.textContent = fileInfo.name; } - public showReceive(xfer): void { + public showReceive(xfer: any): void { this.reset('Receiving files'); this.updateFileInfo(xfer.get_details()); this.progress.skip.disabled = false; - this.progress.skip.onclick = function () { + this.progress.skip.onclick = function (): void { (this).disabled = true; xfer.skip(); }; @@ -106,17 +106,17 @@ export class Modal { this.element.classList.add('is-active'); } - public showSend(callback): void { + public showSend(callback: (files: FileList) => any): void { this.reset('Sending files'); this.choose.element.style.display = ''; this.choose.files.disabled = false; this.choose.files.value = ''; this.choose.filesNames.textContent = ''; - let self:Modal = this; - this.choose.files.onchange = function () { + const self: Modal = this; + this.choose.files.onchange = function (): void { (this).disabled = true; - let files:FileList = (this).files; - let fileNames:string = ''; + const files: FileList = (this).files; + let fileNames: string = ''; for (let i = 0; i < files.length; i++) { if (i === 0) { fileNames = files[i].name; @@ -130,20 +130,20 @@ export class Modal { this.element.classList.add('is-active'); } - public updateProgress(xfer): void { - let size = xfer.get_details().size; - let offset = xfer.get_offset(); + public updateProgress(xfer: any): void { + const size = xfer.get_details().size; + const offset = xfer.get_offset(); this.progress.bytesReceived.textContent = bytesHuman(offset, 2); this.progress.bytesFile.textContent = bytesHuman(size, 2); - let percentReceived = (100 * offset / size).toFixed(2); + const percentReceived = (100 * offset / size).toFixed(2); this.progress.percentReceived.textContent = percentReceived + '%'; this.progress.progressBar.textContent = percentReceived + '%'; this.progress.progressBar.setAttribute('value', percentReceived); } - public handleSend(zsession): Promise { + public handleSend(zsession: any): Promise { return new Promise((res) => { this.showSend((files) => { Zmodem.Browser.send_files( @@ -166,10 +166,10 @@ export class Modal { }); } - public handleReceive(zsession): Promise { + public handleReceive(zsession: any): Promise { zsession.on('offer', (xfer) => { this.showReceive(xfer); - let fileBuffer = []; + const fileBuffer = []; xfer.on('input', (payload) => { this.updateProgress(xfer); fileBuffer.push(new Uint8Array(payload)); @@ -181,10 +181,10 @@ export class Modal { ); }, console.error.bind(console)); }); - let promise = new Promise((res) => { + const promise = new Promise((res) => { zsession.on('session_end', () => res()); }); zsession.start(); return promise; } -} \ No newline at end of file +} diff --git a/html/package.json b/html/package.json index aa1acea..f37ceaf 100644 --- a/html/package.json +++ b/html/package.json @@ -10,8 +10,9 @@ "author": "Shuanglei Tao ", "license": "MIT", "scripts": { - "build": "NODE_ENV=production npx wp --config webpack.prod.js && gulp", - "start": "gulp clean && npx webpack-dev-server --config webpack.dev.js" + "build": "NODE_ENV=production webpack --config webpack.prod.js && gulp", + "prestart": "gulp clean", + "start": "webpack-dev-server --config webpack.dev.js" }, "dependencies": { "xterm": "^3.13.0", @@ -32,11 +33,13 @@ "style-loader": "^0.23.1", "terser-webpack-plugin": "^1.2.4", "ts-loader": "^6.0.0", + "tslint": "^5.16.0", + "tslint-consistent-codestyle": "^1.15.1", + "tslint-loader": "^3.5.4", "typescript": "^3.4.5", "webpack": "^4.31.0", "webpack-cli": "^3.3.2", "webpack-dev-server": "^3.3.1", - "webpack-merge": "^4.2.1", - "webpack-nano": "^0.6.2" + "webpack-merge": "^4.2.1" } } diff --git a/html/tslint.json b/html/tslint.json new file mode 100644 index 0000000..e066f1e --- /dev/null +++ b/html/tslint.json @@ -0,0 +1,111 @@ +{ + "rulesDirectory": [ + "tslint-consistent-codestyle" + ], + "rules": { + "array-type": [ + true, + "array" + ], + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": [ + true, + "ignore-same-line" + ], + "indent": [ + true, + "spaces" + ], + "interface-name": [ + true, + "always-prefix" + ], + "interface-over-type-literal": true, + "typedef": [ + true, + "call-signature", + "parameter" + ], + "eofline": true, + "new-parens": true, + "no-duplicate-imports": true, + "no-eval": true, + "no-internal-module": true, + "no-trailing-whitespace": true, + "one-variable-per-declaration": true, + "no-unsafe-finally": true, + "no-var-keyword": true, + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "semicolon": [ + true, + "always" + ], + "trailing-comma": [ + true, + { + "multiline": { + "objects": "never", + "arrays": "never", + "functions": "never", + "typeLiterals": "ignore" + }, + "esSpecCompliant": true + } + ], + "triple-equals": true, + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "variable-name": [ + true, + "ban-keywords", + "check-format", + "allow-leading-underscore" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-module", + "check-operator", + "check-rest-spread", + "check-separator", + "check-type", + "check-type-operator", + "check-preblock" + ], + "naming-convention": [ + true, + {"type": "default", "format": "camelCase", "leadingUnderscore": "forbid"}, + {"type": "type", "format": "PascalCase"}, + {"type": "class", "format": "PascalCase"}, + {"type": "property", "modifiers": ["const"], "format": "UPPER_CASE"}, + {"type": "member", "modifiers": ["protected"], "format": "camelCase", "leadingUnderscore": "allow"}, + {"type": "member", "modifiers": ["protected"], "format": "camelCase", "leadingUnderscore": "require"}, + {"type": "member", "modifiers": ["private"], "format": "camelCase", "leadingUnderscore": "require"}, + {"type": "variable", "modifiers": ["const"], "format": ["camelCase", "UPPER_CASE"]}, + {"type": "interface", "prefix": "I"} + ], + "no-else-after-return": { + "options": "allow-else-if" + }, + "prefer-const-enum": [ + true + ] + } +} diff --git a/html/webpack.config.js b/html/webpack.config.js index 00a7c52..b829794 100644 --- a/html/webpack.config.js +++ b/html/webpack.config.js @@ -12,6 +12,11 @@ module.exports = { }, module: { rules: [ + { + test: /\.ts$/, + enforce: 'pre', + use: 'tslint-loader', + }, { test: /\.tsx?$/, use: 'ts-loader', diff --git a/html/yarn.lock b/html/yarn.lock index ab91866..c1b8f7b 100644 --- a/html/yarn.lock +++ b/html/yarn.lock @@ -2,6 +2,41 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@fimbul/bifrost@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.17.0.tgz#f0383ba7e40992e3193dc87e2ddfde2ad62a9cf4" + integrity sha512-gVTkJAOef5HtN6LPmrtt5fAUmBywwlgmObsU3FBhPoNeXPLaIl2zywXkJEtvvVLQnaFmtff3x+wIj5lHRCDE3Q== + dependencies: + "@fimbul/ymir" "^0.17.0" + get-caller-file "^2.0.0" + tslib "^1.8.1" + tsutils "^3.5.0" + +"@fimbul/ymir@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@fimbul/ymir/-/ymir-0.17.0.tgz#4f28389b9f804d1cd202e11983af1743488b7815" + integrity sha512-xMXM9KTXRLHLVS6dnX1JhHNEkmWHcAVCQ/4+DA1KKwC/AFnGHzu/7QfQttEPgw3xplT+ILf9e3i64jrFwB3JtA== + dependencies: + inversify "^5.0.0" + reflect-metadata "^0.1.12" + tslib "^1.8.1" + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -790,7 +825,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= @@ -926,7 +961,7 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1119,7 +1154,7 @@ commander@2.15.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8= -commander@^2.19.0: +commander@^2.12.1, commander@^2.19.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -1724,6 +1759,11 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -2067,6 +2107,11 @@ estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -2510,6 +2555,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -3144,6 +3194,11 @@ interpret@^1.1.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +inversify@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/inversify/-/inversify-5.0.1.tgz#500d709b1434896ce5a0d58915c4a4210e34fb6e" + integrity sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ== + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -3509,7 +3564,12 @@ js-base64@^2.1.8: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" integrity sha1-nlZv7mJHUaHXIMlmzWIm0p1AJao= -js-yaml@^3.13.1: +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -5441,13 +5501,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -5456,6 +5509,11 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +reflect-metadata@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5606,7 +5664,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.4.0, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== @@ -5642,7 +5700,7 @@ rimraf@2: dependencies: glob "^7.0.5" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -6499,11 +6557,64 @@ ts-loader@^6.0.0: micromatch "^4.0.0" semver "^6.0.0" -tslib@^1.9.0: +tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslint-consistent-codestyle@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.15.1.tgz#a0c5cd5a5860d40b659c490d8013c5732e02af8c" + integrity sha512-38Y3Dz4zcABe/PlPAQSGNEWPGVq0OzcIQR7SEU6dNujp/SgvhxhJOhIhI9gY4r0I3/TNtvVQwARWor9O9LPZWg== + dependencies: + "@fimbul/bifrost" "^0.17.0" + tslib "^1.7.1" + tsutils "^2.29.0" + +tslint-loader@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/tslint-loader/-/tslint-loader-3.5.4.tgz#052af7f0772434451ea1b247bb55407f878a4c40" + integrity sha512-jBHNNppXut6SgZ7CsTBh+6oMwVum9n8azbmcYSeMlsABhWWoHwjq631vIFXef3VSd75cCdX3rc6kstsB7rSVVw== + dependencies: + loader-utils "^1.0.2" + mkdirp "^0.5.1" + object-assign "^4.1.1" + rimraf "^2.4.4" + semver "^5.3.0" + +tslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.16.0.tgz#ae61f9c5a98d295b9a4f4553b1b1e831c1984d67" + integrity sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA== + dependencies: + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.13.0" + minimatch "^3.0.4" + mkdirp "^0.5.1" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + +tsutils@^3.5.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" + integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -6927,16 +7038,6 @@ webpack-merge@^4.2.1: dependencies: lodash "^4.17.5" -webpack-nano@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/webpack-nano/-/webpack-nano-0.6.2.tgz#9a8224b693f6a903371fbc4a731b5a10cef4d37d" - integrity sha512-N6BgPssm3vsKfx9zLPJh8DdgzmoXvyh9OKtdum44ahZvGgHOwuLswIxuQvtC8QQXgQGL4tNZ3lXfXbhqaafPVA== - dependencies: - chalk "^2.4.1" - import-local "^2.0.0" - rechoir "^0.7.0" - yargs-parser "^13.0.0" - webpack-sources@^1.1.0, webpack-sources@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" @@ -7077,14 +7178,6 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.0.tgz#7016b6dd03e28e1418a510e258be4bff5a31138f" - integrity sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" diff --git a/src/index.html b/src/index.html index d5f9116..72495c9 100644 --- a/src/index.html +++ b/src/index.html @@ -1,3 +1,3 @@ ttyd - Terminal
\ No newline at end of file +/*# sourceMappingURL=app.7e683c5d86be891f3cf8.css.map */
\ No newline at end of file