diff --git a/demo/index.html b/demo/index.html
index 12f7cb9835..370a51ed53 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -2,8 +2,8 @@
xterm.js demo
-
-
+
+
diff --git a/demo/server.js b/demo/server.js
index 5ff9ca61a7..c41110ff09 100644
--- a/demo/server.js
+++ b/demo/server.js
@@ -10,7 +10,7 @@ function startServer() {
var terminals = {},
logs = {};
- app.use('/build', express.static(__dirname + '/../build'));
+ app.use('/src', express.static(__dirname + '/../src'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
diff --git a/demo/zmodem/app.js b/demo/zmodem/app.js
deleted file mode 100644
index 7124c22249..0000000000
--- a/demo/zmodem/app.js
+++ /dev/null
@@ -1,87 +0,0 @@
-var express = require('express');
-var app = express();
-var expressWs = require('express-ws')(app);
-var os = require('os');
-var pty = require('node-pty');
-
-var terminals = {},
- logs = {};
-
-app.use('/build', express.static(__dirname + '/../../build'));
-app.use('/demo', express.static(__dirname + '/../../demo'));
-app.use('/zmodemjs', express.static(__dirname + '/../../node_modules/zmodem.js/dist'));
-
-app.get('/', function(req, res){
- res.sendFile(__dirname + '/index.html');
-});
-
-app.get('/style.css', function(req, res){
- res.sendFile(__dirname + '../style.css');
-});
-
-app.get('/main.js', function(req, res){
- res.sendFile(__dirname + '/main.js');
-});
-
-app.post('/terminals', function (req, res) {
- var cols = parseInt(req.query.cols),
- rows = parseInt(req.query.rows),
- term = pty.spawn(process.platform === 'win32' ? 'cmd.exe' : 'bash', [], {
- encoding: null,
- name: 'xterm-color',
- cols: cols || 80,
- rows: rows || 24,
- cwd: process.env.PWD,
- env: process.env
- });
-
- console.log('Created terminal with PID: ' + term.pid);
- terminals[term.pid] = term;
- logs[term.pid] = '';
- term.on('data', function(data) {
- logs[term.pid] += data;
- });
- res.send(term.pid.toString());
- res.end();
-});
-
-app.post('/terminals/:pid/size', function (req, res) {
- var pid = parseInt(req.params.pid),
- cols = parseInt(req.query.cols),
- rows = parseInt(req.query.rows),
- term = terminals[pid];
-
- term.resize(cols, rows);
- console.log('Resized terminal ' + pid + ' to ' + cols + ' cols and ' + rows + ' rows.');
- res.end();
-});
-
-app.ws('/terminals/:pid', function (ws, req) {
- var term = terminals[parseInt(req.params.pid)];
- console.log('Connected to terminal ' + term.pid);
- ws.send(logs[term.pid]);
-
- term.on('data', function(data) {
- try {
- ws.send(data);
- } catch (ex) {
- // The WebSocket is not open, ignore
- }
- });
- ws.on('message', function(msg) {
- term.write(msg);
- });
- ws.on('close', function () {
- term.kill();
- console.log('Closed terminal ' + term.pid);
- // Clean things up
- delete terminals[term.pid];
- delete logs[term.pid];
- });
-});
-
-var port = process.env.PORT || 3000,
- host = os.platform() === 'win32' ? '127.0.0.1' : '0.0.0.0';
-
-console.log('App listening to http://' + host + ':' + port);
-app.listen(port, host);
diff --git a/demo/zmodem/index.html b/demo/zmodem/index.html
deleted file mode 100644
index aee7742a57..0000000000
--- a/demo/zmodem/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
- xterm.js demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- xterm.js: xterm, in the browser
-
-
-
-
-
-
-
-
-
-
Name:
-
Size:
-
Last modified:
-
Mode:
-
-
Conversion:
-
Management:
-
Transport:
-
Sparse?
-
-
Files remaining in batch:
-
Bytes remaining in batch:
-
-
-
-
-
-
-
-
-
-
Options
-
- cursorBlink
-
-
- Accept all ZMODEM prompts*
-
-
-
- cursorStyle
-
- block
- underline
- bar
-
-
-
-
-
- bellStyle
-
- none
- sound
- visual
- both
-
-
-
-
- scrollback
-
-
- tabStopWidth
-
-
-
- Attention: The demo is a barebones implementation and is designed for xterm.js evaluation purposes only. Exposing the demo to the public as is would introduce security risks for the host.
- * ZMODEM file transfers are supported via an addon. To try it out, install lrzsz
onto the remote peer, then run rz
to send from your browser or sz <file>
to send from the remote peer.
-
-
-
diff --git a/demo/zmodem/main.js b/demo/zmodem/main.js
deleted file mode 100644
index 619ef2b806..0000000000
--- a/demo/zmodem/main.js
+++ /dev/null
@@ -1,388 +0,0 @@
-"use strict";
-
-var term,
- protocol,
- socketURL,
- socket,
- pid;
-
-Terminal.applyAddon(fit);
-Terminal.applyAddon(attach);
-Terminal.applyAddon(zmodem);
-Terminal.applyAddon(search);
-
-var terminalContainer = document.getElementById('terminal-container'),
- actionElements = {
- findNext: document.querySelector('#find-next'),
- findPrevious: document.querySelector('#find-previous')
- },
- optionElements = {
- cursorBlink: document.querySelector('#option-cursor-blink'),
- cursorStyle: document.querySelector('#option-cursor-style'),
- scrollback: document.querySelector('#option-scrollback'),
- tabstopwidth: document.querySelector('#option-tabstopwidth'),
- bellStyle: document.querySelector('#option-bell-style')
- },
- colsElement = document.getElementById('cols'),
- rowsElement = document.getElementById('rows');
-
-function setTerminalSize() {
- var cols = parseInt(colsElement.value, 10);
- var rows = parseInt(rowsElement.value, 10);
- var viewportElement = document.querySelector('.xterm-viewport');
- var scrollBarWidth = viewportElement.offsetWidth - viewportElement.clientWidth;
- var width = (cols * term.charMeasure.width + 20 /*room for scrollbar*/).toString() + 'px';
- var height = (rows * term.charMeasure.height).toString() + 'px';
-
- terminalContainer.style.width = width;
- terminalContainer.style.height = height;
- term.resize(cols, rows);
-}
-
-colsElement.addEventListener('change', setTerminalSize);
-rowsElement.addEventListener('change', setTerminalSize);
-
-actionElements.findNext.addEventListener('keypress', function (e) {
- if (e.key === "Enter") {
- e.preventDefault();
- term.findNext(actionElements.findNext.value);
- }
-});
-actionElements.findPrevious.addEventListener('keypress', function (e) {
- if (e.key === "Enter") {
- e.preventDefault();
- term.findPrevious(actionElements.findPrevious.value);
- }
-});
-
-optionElements.cursorBlink.addEventListener('change', function () {
- term.setOption('cursorBlink', optionElements.cursorBlink.checked);
-});
-optionElements.cursorStyle.addEventListener('change', function () {
- term.setOption('cursorStyle', optionElements.cursorStyle.value);
-});
-optionElements.bellStyle.addEventListener('change', function () {
- term.setOption('bellStyle', optionElements.bellStyle.value);
-});
-optionElements.scrollback.addEventListener('change', function () {
- term.setOption('scrollback', parseInt(optionElements.scrollback.value, 10));
-});
-optionElements.tabstopwidth.addEventListener('change', function () {
- term.setOption('tabStopWidth', parseInt(optionElements.tabstopwidth.value, 10));
-});
-
-createTerminal();
-
-function createTerminal() {
- // Clean terminal
- while (terminalContainer.children.length) {
- terminalContainer.removeChild(terminalContainer.children[0]);
- }
- term = new Terminal({
- cursorBlink: optionElements.cursorBlink.checked,
- scrollback: parseInt(optionElements.scrollback.value, 10),
- tabStopWidth: parseInt(optionElements.tabstopwidth.value, 10)
- });
- term.on('resize', function (size) {
- if (!pid) {
- return;
- }
- var cols = size.cols,
- rows = size.rows,
- url = '/terminals/' + pid + '/size?cols=' + cols + '&rows=' + rows;
-
- fetch(url, {method: 'POST'});
- });
- protocol = (location.protocol === 'https:') ? 'wss://' : 'ws://';
- socketURL = protocol + location.hostname + ((location.port) ? (':' + location.port) : '') + '/terminals/';
-
- term.open(terminalContainer);
- term.fit();
-
- // fit is called within a setTimeout, cols and rows need this.
- setTimeout(function () {
- colsElement.value = term.cols;
- rowsElement.value = term.rows;
-
- // Set terminal size again to set the specific dimensions on the demo
- setTerminalSize();
-
- fetch('/terminals?cols=' + term.cols + '&rows=' + term.rows, {method: 'POST'}).then(function (res) {
-
- res.text().then(function (pid) {
- window.pid = pid;
- socketURL += pid;
- socket = new WebSocket(socketURL);
- socket.onopen = runRealTerminal;
- socket.onclose = runFakeTerminal;
- socket.onerror = runFakeTerminal;
-
- term.zmodemAttach(socket, {
- noTerminalWriteOutsideSession: true,
- } );
-
- term.on("zmodemRetract", () => {
- start_form.style.display = "none";
- start_form.onsubmit = null;
- });
-
- term.on("zmodemDetect", (detection) => {
- function do_zmodem() {
- term.detach();
- let zsession = detection.confirm();
-
- var promise;
-
- if (zsession.type === "receive") {
- promise = _handle_receive_session(zsession);
- }
- else {
- promise = _handle_send_session(zsession);
- }
-
- promise.catch( console.error.bind(console) ).then( () => {
- term.attach(socket);
- } );
- }
-
- if (_auto_zmodem()) {
- do_zmodem();
- }
- else {
- start_form.style.display = "";
- start_form.onsubmit = function(e) {
- start_form.style.display = "none";
-
- if (document.getElementById("zmstart_yes").checked) {
- do_zmodem();
- }
- else {
- detection.deny();
- }
- };
- }
- });
- });
- });
- }, 0);
-}
-
-//----------------------------------------------------------------------
-// UI STUFF
-
-function _show_file_info(xfer) {
- var file_info = xfer.get_details();
-
- document.getElementById("name").textContent = file_info.name;
- document.getElementById("size").textContent = file_info.size;
- document.getElementById("mtime").textContent = file_info.mtime;
- document.getElementById("files_remaining").textContent = file_info.files_remaining;
- document.getElementById("bytes_remaining").textContent = file_info.bytes_remaining;
-
- document.getElementById("mode").textContent = "0" + file_info.mode.toString(8);
-
- var xfer_opts = xfer.get_options();
- ["conversion", "management", "transport", "sparse"].forEach( (lbl) => {
- document.getElementById(`zfile_${lbl}`).textContent = xfer_opts[lbl];
- } );
-
- document.getElementById("zm_file").style.display = "";
-}
-function _hide_file_info() {
- document.getElementById("zm_file").style.display = "none";
-}
-
-function _save_to_disk(xfer, buffer) {
- return Zmodem.Browser.save_to_disk(buffer, xfer.get_details().name);
-}
-
-var skipper_button = document.getElementById("zm_progress_skipper");
-var skipper_button_orig_text = skipper_button.textContent;
-
-function _show_progress() {
- skipper_button.disabled = false;
- skipper_button.textContent = skipper_button_orig_text;
-
- document.getElementById("bytes_received").textContent = 0;
- document.getElementById("percent_received").textContent = 0;
-
- document.getElementById("zm_progress").style.display = "";
-}
-
-function _update_progress(xfer) {
- var total_in = xfer.get_offset();
-
- document.getElementById("bytes_received").textContent = total_in;
-
- var percent_received = 100 * total_in / xfer.get_details().size;
- document.getElementById("percent_received").textContent = percent_received.toFixed(2);
-}
-
-function _hide_progress() {
- document.getElementById("zm_progress").style.display = "none";
-}
-
-var start_form = document.getElementById("zm_start");
-
-function _auto_zmodem() {
- return document.getElementById("zmodem-auto").checked;
-}
-
-// END UI STUFF
-//----------------------------------------------------------------------
-
-function _handle_receive_session(zsession) {
- zsession.on("offer", function(xfer) {
- current_receive_xfer = xfer;
-
- _show_file_info(xfer);
-
- var offer_form = document.getElementById("zm_offer");
-
- function on_form_submit() {
- offer_form.style.display = "none";
-
- //START
- //if (offer_form.zmaccept.value) {
- if (_auto_zmodem() || document.getElementById("zmaccept_yes").checked) {
- _show_progress();
-
- var FILE_BUFFER = [];
- xfer.on("input", (payload) => {
- _update_progress(xfer);
- FILE_BUFFER.push( new Uint8Array(payload) );
- });
- xfer.accept().then(
- () => {
- _save_to_disk(xfer, FILE_BUFFER);
- },
- console.error.bind(console)
- );
- }
- else {
- xfer.skip();
- }
- //END
- }
-
- if (_auto_zmodem()) {
- on_form_submit();
- }
- else {
- offer_form.onsubmit = on_form_submit;
- offer_form.style.display = "";
- }
- } );
-
- var promise = new Promise( (res) => {
- zsession.on("session_end", () => {
- _hide_file_info();
- _hide_progress();
- res();
- } );
- } );
-
- zsession.start();
-
- return promise;
-}
-
-function _handle_send_session(zsession) {
- var choose_form = document.getElementById("zm_choose");
- choose_form.style.display = "";
-
- var file_el = document.getElementById("zm_files");
-
- var promise = new Promise( (res) => {
- file_el.onchange = function(e) {
- choose_form.style.display = "none";
-
- var files_obj = file_el.files;
-
- Zmodem.Browser.send_files(
- zsession,
- files_obj,
- {
- on_offer_response(obj, xfer) {
- if (xfer) _show_progress();
- //console.log("offer", xfer ? "accepted" : "skipped");
- },
- on_progress(obj, xfer) {
- _update_progress(xfer);
- },
- on_file_complete(obj) {
- //console.log("COMPLETE", obj);
- _hide_progress();
- },
- }
- ).then(_hide_progress).then(
- zsession.close.bind(zsession),
- console.error.bind(console)
- ).then( () => {
- _hide_file_info();
- _hide_progress();
- res();
- } );
- };
- } );
-
- return promise;
-}
-
-//This is here to allow canceling of an in-progress ZMODEM transfer.
-var current_receive_xfer;
-
-//Called from HTML directly.
-function skip_current_file() {
- current_receive_xfer.skip();
-
- skipper_button.disabled = true;
- skipper_button.textContent = "Waiting for server to acknowledge skip …";
-}
-
-function runRealTerminal() {
- term.attach(socket);
-
- term._initialized = true;
-}
-
-function runFakeTerminal() {
- if (term._initialized) {
- return;
- }
-
- term._initialized = true;
-
- var shellprompt = '$ ';
-
- term.prompt = function () {
- term.write('\r\n' + shellprompt);
- };
-
- term.writeln('Welcome to xterm.js');
- term.writeln('This is a local terminal emulation, without a real terminal in the back-end.');
- term.writeln('Type some keys and commands to play around.');
- term.writeln('');
- term.prompt();
-
- term.on('key', function (key, ev) {
- var printable = (
- !ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.metaKey
- );
-
- if (ev.keyCode == 13) {
- term.prompt();
- } else if (ev.keyCode == 8) {
- // Do not delete the prompt
- if (term.x > 2) {
- term.write('\b \b');
- }
- } else if (printable) {
- term.write(key);
- }
- });
-
- term.on('paste', function (data, ev) {
- term.write(data);
- });
-}
diff --git a/gulpfile.js b/gulpfile.js
index 9af8d6e4a9..bbb4d6e167 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -16,9 +16,9 @@ const ts = require('gulp-typescript');
const util = require('gulp-util');
const buildDir = process.env.BUILD_DIR || 'build';
-const tsProject = ts.createProject('tsconfig.json');
-let srcDir = tsProject.config.compilerOptions.rootDir;
-let outDir = tsProject.config.compilerOptions.outDir;
+const tsProject = ts.createProject('src/tsconfig.json');
+let srcDir = './src';
+let outDir = './lib';
const addons = fs.readdirSync(`${__dirname}/src/addons`);
@@ -61,7 +61,7 @@ gulp.task('browserify', function() {
};
let bundleStream = browserify(browserifyOptions)
.bundle()
- .pipe(source('xterm.js'))
+ .pipe(source(`xterm.js`))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true, sourceRoot: '..'}))
.pipe(sourcemaps.write('./'))
@@ -136,6 +136,6 @@ gulp.task('sorcery-addons', ['browserify-addons'], function () {
})
});
-gulp.task('build', ['sorcery', 'sorcery-addons']);
+gulp.task('build', ['css', 'sorcery', 'sorcery-addons']);
gulp.task('test', ['mocha']);
gulp.task('default', ['build']);
diff --git a/package.json b/package.json
index c5fad51599..539b96dafd 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,6 @@
"@types/webpack": "^4.4.11",
"browserify": "^13.3.0",
"chai": "3.5.0",
- "concurrently": "^3.5.1",
"coveralls": "^3.0.1",
"express": "4.13.4",
"express-ws": "2.0.0-rc.1",
@@ -38,7 +37,7 @@
"ts-loader": "^4.5.0",
"tslint": "^5.9.1",
"tslint-consistent-codestyle": "^1.13.0",
- "typescript": "3.1",
+ "typescript": "3.4",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"webpack": "^4.17.1",
@@ -50,20 +49,16 @@
"start-debug": "node --inspect-brk demo/start",
"start-zmodem": "node demo/zmodem/app",
"lint": "tslint 'src/**/*.ts' './demo/**/*.ts'",
- "pretest": "npm run layering",
"test": "npm run mocha",
"posttest": "npm run lint",
"test-debug": "node --inspect-brk node_modules/.bin/gulp test",
"test-suite": "gulp mocha-suite --test",
"test-coverage": "nyc -x gulpfile.js -x '**/*test*' npm run mocha",
"mocha": "gulp test",
- "tsc": "tsc",
- "prebuild": "concurrently --kill-others-on-fail --names \"lib,attach,fit,fullscreen,search,terminado,webLinks,winptyCompat,zmodem,css\" \"tsc\" \"tsc -p ./src/addons/attach\" \"tsc -p ./src/addons/fit\" \"tsc -p ./src/addons/fullscreen\" \"tsc -p ./src/addons/search\" \"tsc -p ./src/addons/terminado\" \"tsc -p ./src/addons/webLinks\" \"tsc -p ./src/addons/winptyCompat\" \"tsc -p ./src/addons/zmodem\" \"gulp css\"",
+ "prebuild": "tsc -b ./src/tsconfig.all.json",
"build": "gulp build",
"prepublish": "npm run build",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
- "watch": "concurrently --kill-others-on-fail --names \"lib,css\" \"tsc -w\" \"gulp watch-css\"",
- "watch-addons": "concurrently --kill-others-on-fail --names \"attach,fit,fullscreen,search,terminado,webLinks,winptyCompat,zmodem\" \"tsc -w -p ./src/addons/attach\" \"tsc -w -p ./src/addons/fit\" \"tsc -w -p ./src/addons/fullscreen\" \"tsc -w -p ./src/addons/search\" \"tsc -w -p ./src/addons/terminado\" \"tsc -w -p ./src/addons/webLinks\" \"tsc -w -p ./src/addons/winptyCompat\" \"tsc -w -p ./src/addons/zmodem\"",
- "layering": "concurrently --kill-others-on-fail --names \"common,core\" \"tsc -p ./src/common\" \"tsc -p ./src/core\""
+ "watch": "tsc -b -w ./src/tsconfig.all.json --preserveWatchOutput"
}
}
diff --git a/src/addons/attach/tsconfig.json b/src/addons/attach/tsconfig.json
index 359fbd2408..2f39102cab 100644
--- a/src/addons/attach/tsconfig.json
+++ b/src/addons/attach/tsconfig.json
@@ -10,8 +10,7 @@
"outDir": "../../../lib/addons/attach/",
"sourceMap": true,
"removeComments": true,
- "declaration": true,
- "preserveWatchOutput": true
+ "declaration": true
},
"include": [
"**/*.ts",
diff --git a/src/addons/fit/tsconfig.json b/src/addons/fit/tsconfig.json
index 489ccdfead..3458d23a72 100644
--- a/src/addons/fit/tsconfig.json
+++ b/src/addons/fit/tsconfig.json
@@ -11,7 +11,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/fullscreen/tsconfig.json b/src/addons/fullscreen/tsconfig.json
index 05e6df68d7..0c74c25c02 100644
--- a/src/addons/fullscreen/tsconfig.json
+++ b/src/addons/fullscreen/tsconfig.json
@@ -11,7 +11,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/search/tsconfig.json b/src/addons/search/tsconfig.json
index 87899cda02..6a1611a51d 100644
--- a/src/addons/search/tsconfig.json
+++ b/src/addons/search/tsconfig.json
@@ -11,7 +11,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/terminado/tsconfig.json b/src/addons/terminado/tsconfig.json
index 91c18314ec..e2e194457e 100644
--- a/src/addons/terminado/tsconfig.json
+++ b/src/addons/terminado/tsconfig.json
@@ -10,7 +10,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/webLinks/tsconfig.json b/src/addons/webLinks/tsconfig.json
index 18105aa246..9c4f117606 100644
--- a/src/addons/webLinks/tsconfig.json
+++ b/src/addons/webLinks/tsconfig.json
@@ -11,7 +11,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/winptyCompat/tsconfig.json b/src/addons/winptyCompat/tsconfig.json
index 9fc4d25e31..fa48c963e2 100644
--- a/src/addons/winptyCompat/tsconfig.json
+++ b/src/addons/winptyCompat/tsconfig.json
@@ -10,7 +10,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/addons/zmodem/tsconfig.json b/src/addons/zmodem/tsconfig.json
index 2b49f537ec..7d821b7c51 100644
--- a/src/addons/zmodem/tsconfig.json
+++ b/src/addons/zmodem/tsconfig.json
@@ -10,7 +10,6 @@
"sourceMap": true,
"removeComments": true,
"declaration": true,
- "preserveWatchOutput": true,
"types": [
"../../node_modules/@types/mocha"
]
diff --git a/src/common/tsconfig.json b/src/common/tsconfig.json
index 19dd02731c..b40bb2f500 100644
--- a/src/common/tsconfig.json
+++ b/src/common/tsconfig.json
@@ -1,17 +1,7 @@
{
+ "extends": "../tsconfig-library-base",
"compilerOptions": {
- "target": "es5",
- "lib": [
- "es5"
- ],
- "rootDir": ".",
- "noEmit": true,
- "strict": true,
- "pretty": true,
- "types": [
- "../../node_modules/@types/mocha",
- "../../"
- ]
+ "outDir": "../../lib"
},
"include": [
"./**/*"
diff --git a/src/core/tsconfig.json b/src/core/tsconfig.json
index 4f024a28dc..41e41f0c12 100644
--- a/src/core/tsconfig.json
+++ b/src/core/tsconfig.json
@@ -1,20 +1,12 @@
{
+ "extends": "../tsconfig-library-base",
"compilerOptions": {
- "target": "es5",
- "lib": [
- "es5"
- ],
- "rootDir": ".",
- "noEmit": true,
- "strict": true,
- "pretty": true,
- "types": [
- "../../node_modules/@types/mocha",
- "../../"
- ]
+ "outDir": "../../lib"
},
"include": [
- "./**/*",
- "../common/**/*"
+ "./**/*"
+ ],
+ "references": [
+ { "path": "../common" }
]
}
diff --git a/src/tsconfig-base.json b/src/tsconfig-base.json
new file mode 100644
index 0000000000..5c6afcc5b0
--- /dev/null
+++ b/src/tsconfig-base.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": [ "es5" ],
+ "rootDir": ".",
+
+ "sourceMap": true,
+ "removeComments": true,
+ "pretty": true,
+
+ "incremental": true,
+
+ "skipLibCheck": true
+ }
+}
diff --git a/src/tsconfig-library-base.json b/src/tsconfig-library-base.json
new file mode 100644
index 0000000000..c82e087351
--- /dev/null
+++ b/src/tsconfig-library-base.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig-base.json",
+ "compilerOptions": {
+ "types": [
+ "../../node_modules/@types/mocha",
+ "../../"
+ ],
+ "composite": true,
+ "strict": true
+ }
+}
diff --git a/src/tsconfig.all.json b/src/tsconfig.all.json
new file mode 100644
index 0000000000..bee5df3237
--- /dev/null
+++ b/src/tsconfig.all.json
@@ -0,0 +1,16 @@
+{
+ "files": [],
+ "include": [],
+ "references": [
+ { "path": "." },
+ { "path": "./addons/attach" },
+ { "path": "./addons/fit" },
+ { "path": "./addons/fullscreen" },
+ { "path": "./addons/search" },
+ { "path": "./addons/terminado" },
+ { "path": "./addons/webLinks" },
+ { "path": "./addons/winptyCompat" },
+ { "path": "./addons/zmodem" }
+ ]
+}
+
\ No newline at end of file
diff --git a/tsconfig.json b/src/tsconfig.json
similarity index 53%
rename from tsconfig.json
rename to src/tsconfig.json
index 2d1d6e35fa..0aa3abb884 100644
--- a/tsconfig.json
+++ b/src/tsconfig.json
@@ -1,7 +1,7 @@
{
+ "extends": "./tsconfig-base",
"compilerOptions": {
"module": "commonjs",
- "target": "es5",
"lib": [
"dom",
"es5",
@@ -9,19 +9,22 @@
"scripthost",
"es2015.promise"
],
- "rootDir": "src",
- "outDir": "lib",
- "sourceMap": true,
- "removeComments": true,
- "preserveWatchOutput": true,
+ "rootDir": ".",
+ "outDir": "../lib",
+
"noUnusedLocals": true,
"noImplicitAny": true
},
"include": [
- "src/**/*",
- "typings/xterm.d.ts"
+ "./**/*",
+ "../typings/xterm.d.ts"
],
"exclude": [
- "src/addons/**/*"
+ "./addons/**/*"
+ ],
+ "references": [
+ { "path": "./common" },
+ { "path": "./core" }
]
}
+
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 5555321d1f..440aa4f826 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1275,11 +1275,6 @@ combined-stream@1.0.6, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
-commander@2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
- integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=
-
commander@2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
@@ -1338,21 +1333,6 @@ concat-with-sourcemaps@^1.0.0:
dependencies:
source-map "^0.6.1"
-concurrently@^3.5.1:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.6.0.tgz#c25e34b156a9d5bd4f256a0d85f6192438ae481f"
- integrity sha512-6XiIYtYzmGEccNZFkih5JOH92jLA4ulZArAYy5j1uDSdrPLB3KzdE8GW7t2fHPcg9ry2+5LP9IEYzXzxw9lFdA==
- dependencies:
- chalk "^2.4.1"
- commander "2.6.0"
- date-fns "^1.23.0"
- lodash "^4.5.1"
- read-pkg "^3.0.0"
- rx "2.3.24"
- spawn-command "^0.0.2-1"
- supports-color "^3.2.3"
- tree-kill "^1.1.0"
-
configstore@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021"
@@ -1595,11 +1575,6 @@ data-urls@^1.0.0:
whatwg-mimetype "^2.0.0"
whatwg-url "^6.4.0"
-date-fns@^1.23.0:
- version "1.29.0"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
- integrity sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==
-
date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
@@ -1933,7 +1908,7 @@ errno@^0.1.3, errno@~0.1.7:
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
@@ -3625,7 +3600,7 @@ jsesc@^1.3.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
@@ -3815,16 +3790,6 @@ load-json-file@^1.0.0:
pinkie-promise "^2.0.0"
strip-bom "^2.0.0"
-load-json-file@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
- integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^4.0.0"
- pify "^3.0.0"
- strip-bom "^3.0.0"
-
loader-runner@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
@@ -4037,7 +4002,7 @@ lodash.templatesettings@^3.0.0:
lodash._reinterpolate "^3.0.0"
lodash.escape "^3.0.0"
-lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.1:
+lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4:
version "4.17.10"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==
@@ -4984,14 +4949,6 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
parse-passwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
@@ -5092,13 +5049,6 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
- dependencies:
- pify "^3.0.0"
-
pause-stream@0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
@@ -5384,15 +5334,6 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
-read-pkg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
- integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
- dependencies:
- load-json-file "^4.0.0"
- normalize-package-data "^2.3.2"
- path-type "^3.0.0"
-
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
@@ -5688,11 +5629,6 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
-rx@2.3.24:
- version "2.3.24"
- resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7"
- integrity sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=
-
rxjs@^6.1.0:
version "6.3.1"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.1.tgz#878a1a8c64b8a5da11dcf74b5033fe944cdafb84"
@@ -6025,11 +5961,6 @@ sparkles@^1.0.0:
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
-spawn-command@^0.0.2-1:
- version "0.0.2-1"
- resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
- integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
-
spawn-wrap@^1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c"
@@ -6271,11 +6202,6 @@ strip-bom@^1.0.0:
first-chunk-stream "^1.0.0"
is-utf8 "^0.2.0"
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -6305,7 +6231,7 @@ supports-color@^2.0.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^3.1.2, supports-color@^3.2.3:
+supports-color@^3.1.2:
version "3.2.3"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
@@ -6521,11 +6447,6 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
-tree-kill@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
- integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==
-
trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
@@ -6633,10 +6554,10 @@ typedarray@^0.0.6, typedarray@~0.0.5:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@3.1:
- version "3.1.6"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68"
- integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==
+typescript@3.4:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.1.tgz#b6691be11a881ffa9a05765a205cb7383f3b63c6"
+ integrity sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q==
uglify-es@^3.3.4:
version "3.3.9"