diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index c13c5f627f..0000000000
--- a/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "presets": ["es2015"]
-}
diff --git a/.gitignore b/.gitignore
index 2e91366a44..efa028b66a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,5 @@
node_modules/
*.swp
-build/*
.lock-wscript
out/
Makefile.gyp
@@ -12,3 +11,4 @@ docs/
npm-debug.log
/.idea/
.env
+dist/*
diff --git a/.travis.yml b/.travis.yml
index b085a7bd71..bdc4783851 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: node_js
node_js:
- - 4
+ - 6
env:
- CXX=g++-4.8
addons:
diff --git a/bin/build b/bin/build
index 42a47881f7..00a732368d 100755
--- a/bin/build
+++ b/bin/build
@@ -1,38 +1,17 @@
-#! /usr/bin/env node
+#! /usr/bin/env bash
-var child_process = require('child_process');
-var fs = require('fs');
+# Build all TypeScript files (including tests) to out/
+tsc
-var buildDir = process.env.BUILD_DIR || 'build';
+# Concat all xterm.js files into a single file and output as a UMD to dist/xterm.js
+browserify out/xterm.js --standalone Terminal -p [ tsify ] --outfile dist/xterm.js
-if (!fs.existsSync(buildDir)){
- fs.mkdirSync(buildDir);
-}
+# Copy all CSS files from src/ to dist/
+cd src
+find . -name '*.css' | cpio -pdm ../dist
+cd ..
-// Add `node_modules/.bin` to PATH
-process.env.PATH = process.cwd() + '/node_modules/.bin:' + process.env.PATH;
-
-console.log('Building xterm.js into ' + buildDir);
-
-// Build ES2015 modules into ES5 form, then concatenate them,
-// then remove unused require calls and save in output file with source map.
-console.log(' - Building ' + buildDir + '/xterm.js...');
-
-var jsBuildCmd = 'browserify src/xterm.js -s Terminal -t [ babelify --presets [ es2015 ] ] --debug | ';
-jsBuildCmd += 'derequire | exorcist ' + buildDir + '/xterm.js.map > ' + buildDir + '/xterm.js';
-
-var jsBuildProcess = child_process.execSync(jsBuildCmd);
-
-if (jsBuildProcess.status) {
- console.log(jsBuildProcess.error);
-}
-
-console.log(' OK.');
-
-// Copy CSS into $BUILD_DIR
-console.log(' - Building ' + buildDir + '/xterm.css...');
-
-fs.createReadStream('src/xterm.css').pipe(
- fs.createWriteStream(buildDir + '/xterm.css')
-);
-console.log(' OK.');
+# Copy addons from out/ to dist/
+cd out/addons
+find . -name '*.js' | cpio -pdm ../../dist/addons
+cd ../..
diff --git a/demo/app.js b/demo/app.js
index 353482eda3..a4122ace4e 100644
--- a/demo/app.js
+++ b/demo/app.js
@@ -8,7 +8,6 @@ var terminals = {},
logs = {};
app.use('/build', express.static(__dirname + '/../build'));
-app.use('/addons', express.static(__dirname + '/../addons'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
diff --git a/demo/index.html b/demo/index.html
index 5325949a91..ae42540faf 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -3,13 +3,13 @@
xterm.js demo
-
+
-
-
-
-
+
+
+
+
xterm.js: xterm, in the browser
diff --git a/package.json b/package.json
index 3f529ada56..93ed9a7b86 100644
--- a/package.json
+++ b/package.json
@@ -10,14 +10,10 @@
"repository": "https://github.com/sourcelair/xterm.js",
"license": "MIT",
"devDependencies": {
- "babel-core": "6.14.0",
- "babel-preset-es2015": "6.14.0",
- "babelify": "^7.3.0",
+ "@types/node": "^6.0.41",
"browserify": "^13.1.0",
"chai": "3.5.0",
- "derequire": "^2.0.3",
"docdash": "0.4.0",
- "exorcist": "^0.4.0",
"express": "4.13.4",
"express-ws": "2.0.0-rc.1",
"glob": "^7.0.5",
@@ -25,11 +21,13 @@
"mocha": "2.5.3",
"nodemon": "1.10.2",
"pty.js": "0.3.1",
- "sleep": "^3.0.1"
+ "sleep": "^3.0.1",
+ "tsify": "^1.0.7",
+ "typescript": "^2.0.3"
},
"scripts": {
- "start": "nodemon --watch src --watch addons --exec bash -c './bin/build && node demo/app'",
- "test": "mocha --recursive --compilers js:babel-core/register",
+ "start": "nodemon --watch src --watch addons --watch demo --exec bash -c './bin/build && node demo/app'",
+ "test": "./bin/build && mocha --recursive ./out",
"build:docs": "jsdoc -c jsdoc.json",
"build": "./bin/build"
}
diff --git a/addons/attach/attach.js b/src/addons/attach/attach.js
similarity index 97%
rename from addons/attach/attach.js
rename to src/addons/attach/attach.js
index b74627d19a..769a7e53e0 100644
--- a/addons/attach/attach.js
+++ b/src/addons/attach/attach.js
@@ -11,12 +11,12 @@
/*
* CommonJS environment
*/
- module.exports = attach(require('../../dist/xterm'));
+ module.exports = attach(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
- define(['../../dist/xterm'], attach);
+ define(['../../xterm'], attach);
} else {
/*
* Plain browser environment
diff --git a/addons/attach/index.html b/src/addons/attach/index.html
similarity index 100%
rename from addons/attach/index.html
rename to src/addons/attach/index.html
diff --git a/addons/attach/package.json b/src/addons/attach/package.json
similarity index 100%
rename from addons/attach/package.json
rename to src/addons/attach/package.json
diff --git a/addons/fit/fit.js b/src/addons/fit/fit.js
similarity index 96%
rename from addons/fit/fit.js
rename to src/addons/fit/fit.js
index 7657c9c47c..7e24fd9b36 100644
--- a/addons/fit/fit.js
+++ b/src/addons/fit/fit.js
@@ -16,12 +16,12 @@
/*
* CommonJS environment
*/
- module.exports = fit(require('../../dist/xterm'));
+ module.exports = fit(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
- define(['../../dist/xterm'], fit);
+ define(['../../xterm'], fit);
} else {
/*
* Plain browser environment
diff --git a/addons/fit/package.json b/src/addons/fit/package.json
similarity index 100%
rename from addons/fit/package.json
rename to src/addons/fit/package.json
diff --git a/addons/fullscreen/fullscreen.css b/src/addons/fullscreen/fullscreen.css
similarity index 100%
rename from addons/fullscreen/fullscreen.css
rename to src/addons/fullscreen/fullscreen.css
diff --git a/addons/fullscreen/fullscreen.js b/src/addons/fullscreen/fullscreen.js
similarity index 91%
rename from addons/fullscreen/fullscreen.js
rename to src/addons/fullscreen/fullscreen.js
index 1579a9c289..e4098f48a4 100644
--- a/addons/fullscreen/fullscreen.js
+++ b/src/addons/fullscreen/fullscreen.js
@@ -15,12 +15,12 @@
/*
* CommonJS environment
*/
- module.exports = fullscreen(require('../../dist/xterm'));
+ module.exports = fullscreen(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
- define(['../../dist/xterm'], fullscreen);
+ define(['../../xterm'], fullscreen);
} else {
/*
* Plain browser environment
diff --git a/addons/fullscreen/package.json b/src/addons/fullscreen/package.json
similarity index 100%
rename from addons/fullscreen/package.json
rename to src/addons/fullscreen/package.json
diff --git a/addons/linkify/index.html b/src/addons/linkify/index.html
similarity index 100%
rename from addons/linkify/index.html
rename to src/addons/linkify/index.html
diff --git a/addons/linkify/linkify.js b/src/addons/linkify/linkify.js
similarity index 98%
rename from addons/linkify/linkify.js
rename to src/addons/linkify/linkify.js
index 8ee9611c69..2140c0aa65 100644
--- a/addons/linkify/linkify.js
+++ b/src/addons/linkify/linkify.js
@@ -3,12 +3,12 @@
/*
* CommonJS environment
*/
- module.exports = linkify(require('../../dist/xterm'));
+ module.exports = linkify(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
- define(['../../dist/xterm'], linkify);
+ define(['../../xterm'], linkify);
} else {
/*
* Plain browser environment
diff --git a/addons/linkify/package.json b/src/addons/linkify/package.json
similarity index 100%
rename from addons/linkify/package.json
rename to src/addons/linkify/package.json
diff --git a/addons/terminado/package.json b/src/addons/terminado/package.json
similarity index 100%
rename from addons/terminado/package.json
rename to src/addons/terminado/package.json
diff --git a/addons/terminado/terminado.js b/src/addons/terminado/terminado.js
similarity index 97%
rename from addons/terminado/terminado.js
rename to src/addons/terminado/terminado.js
index 06d70c51b0..e17a188a55 100644
--- a/addons/terminado/terminado.js
+++ b/src/addons/terminado/terminado.js
@@ -11,12 +11,12 @@
/*
* CommonJS environment
*/
- module.exports = attach(require('../../src/xterm'));
+ module.exports = attach(require('../../xterm'));
} else if (typeof define == 'function') {
/*
* Require.js is available
*/
- define(['../../src/xterm'], attach);
+ define(['../../xterm'], attach);
} else {
/*
* Plain browser environment
diff --git a/test/addons/linkify-test.js b/src/test/addons/linkify-test.js
similarity index 98%
rename from test/addons/linkify-test.js
rename to src/test/addons/linkify-test.js
index ff87100298..285bfbb18e 100644
--- a/test/addons/linkify-test.js
+++ b/src/test/addons/linkify-test.js
@@ -1,5 +1,5 @@
var assert = require('chai').assert;
-var Terminal = require('../../dist/xterm');
+var Terminal = require('../../xterm');
var linkify = require('../../addons/linkify/linkify');
describe('linkify addon', function () {
diff --git a/test/addons/test.js b/src/test/addons/test.js
similarity index 59%
rename from test/addons/test.js
rename to src/test/addons/test.js
index ddd79ff639..42ede9db5c 100644
--- a/test/addons/test.js
+++ b/src/test/addons/test.js
@@ -1,11 +1,10 @@
var assert = require('chai').assert;
-var Terminal = require('../../src/xterm');
-var distTerminal = require('../../dist/xterm');
+var Terminal = require('../../xterm');
describe('xterm.js addons', function() {
it('should load addons with Terminal.loadAddon', function () {
Terminal.loadAddon('attach');
// Test that addon was loaded successfully
- assert.equal(typeof distTerminal.prototype.attach, 'function');
+ assert.equal(typeof Terminal.prototype.attach, 'function');
});
});
diff --git a/test/clipboard-test.js b/src/test/clipboard-test.js
similarity index 85%
rename from test/clipboard-test.js
rename to src/test/clipboard-test.js
index f1688df1c3..12eeb5175a 100644
--- a/test/clipboard-test.js
+++ b/src/test/clipboard-test.js
@@ -1,6 +1,6 @@
var assert = require('chai').assert;
-var Terminal = require('../src/xterm');
-var Clipboard = require('../src/handlers/Clipboard');
+var Terminal = require('../xterm');
+var Clipboard = require('../handlers/Clipboard');
describe('evaluateCopiedTextProcessing', function () {
diff --git a/test/composition-helper-test.js b/src/test/composition-helper-test.js
similarity index 99%
rename from test/composition-helper-test.js
rename to src/test/composition-helper-test.js
index d3071c2dab..192df05dcd 100644
--- a/test/composition-helper-test.js
+++ b/src/test/composition-helper-test.js
@@ -1,5 +1,5 @@
var assert = require('chai').assert;
-var Terminal = require('../src/xterm');
+var Terminal = require('../xterm');
describe('CompositionHelper', function () {
var terminal;
diff --git a/test/escape_sequences.js b/src/test/escape-sequences-test.js
similarity index 96%
rename from test/escape_sequences.js
rename to src/test/escape-sequences-test.js
index 43523e60b1..2eb6016556 100644
--- a/test/escape_sequences.js
+++ b/src/test/escape-sequences-test.js
@@ -2,7 +2,7 @@ var glob = require('glob');
var fs = require('fs');
var pty = require('pty.js');
var sleep = require('sleep');
-var Terminal = require('../src/xterm');
+var Terminal = require('../xterm');
var CONSOLE_LOG = console.log;
@@ -80,9 +80,10 @@ describe('xterm output comparison', function() {
// omit stack trace for escape sequence files
Error.stackTraceLimit = 0;
- var files = glob.sync('test/escape_sequence_files/*.in');
+ var files = glob.sync('**/escape_sequence_files/*.in');
// only successful tests for now
var successful = [0, 2, 6, 12, 13, 18, 20, 22, 27, 28];
+ console.log(files);
for (var a in successful) {
var i = successful[a];
(function(filename){
diff --git a/test/escape_sequence_files/NOTES b/src/test/escape_sequence_files/NOTES
similarity index 100%
rename from test/escape_sequence_files/NOTES
rename to src/test/escape_sequence_files/NOTES
diff --git a/test/escape_sequence_files/t0001-all_printable.in b/src/test/escape_sequence_files/t0001-all_printable.in
similarity index 100%
rename from test/escape_sequence_files/t0001-all_printable.in
rename to src/test/escape_sequence_files/t0001-all_printable.in
diff --git a/test/escape_sequence_files/t0001-all_printable.text b/src/test/escape_sequence_files/t0001-all_printable.text
similarity index 100%
rename from test/escape_sequence_files/t0001-all_printable.text
rename to src/test/escape_sequence_files/t0001-all_printable.text
diff --git a/test/escape_sequence_files/t0002-history.in b/src/test/escape_sequence_files/t0002-history.in
similarity index 100%
rename from test/escape_sequence_files/t0002-history.in
rename to src/test/escape_sequence_files/t0002-history.in
diff --git a/test/escape_sequence_files/t0002-history.text b/src/test/escape_sequence_files/t0002-history.text
similarity index 100%
rename from test/escape_sequence_files/t0002-history.text
rename to src/test/escape_sequence_files/t0002-history.text
diff --git a/test/escape_sequence_files/t0002j-simple_string.in b/src/test/escape_sequence_files/t0002j-simple_string.in
similarity index 100%
rename from test/escape_sequence_files/t0002j-simple_string.in
rename to src/test/escape_sequence_files/t0002j-simple_string.in
diff --git a/test/escape_sequence_files/t0002j-simple_string.text b/src/test/escape_sequence_files/t0002j-simple_string.text
similarity index 100%
rename from test/escape_sequence_files/t0002j-simple_string.text
rename to src/test/escape_sequence_files/t0002j-simple_string.text
diff --git a/test/escape_sequence_files/t0003-line_wrap.in b/src/test/escape_sequence_files/t0003-line_wrap.in
similarity index 100%
rename from test/escape_sequence_files/t0003-line_wrap.in
rename to src/test/escape_sequence_files/t0003-line_wrap.in
diff --git a/test/escape_sequence_files/t0003-line_wrap.text b/src/test/escape_sequence_files/t0003-line_wrap.text
similarity index 100%
rename from test/escape_sequence_files/t0003-line_wrap.text
rename to src/test/escape_sequence_files/t0003-line_wrap.text
diff --git a/test/escape_sequence_files/t0003j-LF.in b/src/test/escape_sequence_files/t0003j-LF.in
similarity index 100%
rename from test/escape_sequence_files/t0003j-LF.in
rename to src/test/escape_sequence_files/t0003j-LF.in
diff --git a/test/escape_sequence_files/t0003j-LF.text b/src/test/escape_sequence_files/t0003j-LF.text
similarity index 100%
rename from test/escape_sequence_files/t0003j-LF.text
rename to src/test/escape_sequence_files/t0003j-LF.text
diff --git a/test/escape_sequence_files/t0004-LF.in b/src/test/escape_sequence_files/t0004-LF.in
similarity index 100%
rename from test/escape_sequence_files/t0004-LF.in
rename to src/test/escape_sequence_files/t0004-LF.in
diff --git a/test/escape_sequence_files/t0004-LF.text b/src/test/escape_sequence_files/t0004-LF.text
similarity index 100%
rename from test/escape_sequence_files/t0004-LF.text
rename to src/test/escape_sequence_files/t0004-LF.text
diff --git a/test/escape_sequence_files/t0004j-CR.in b/src/test/escape_sequence_files/t0004j-CR.in
similarity index 100%
rename from test/escape_sequence_files/t0004j-CR.in
rename to src/test/escape_sequence_files/t0004j-CR.in
diff --git a/test/escape_sequence_files/t0004j-CR.text b/src/test/escape_sequence_files/t0004j-CR.text
similarity index 100%
rename from test/escape_sequence_files/t0004j-CR.text
rename to src/test/escape_sequence_files/t0004j-CR.text
diff --git a/test/escape_sequence_files/t0005-CR.in b/src/test/escape_sequence_files/t0005-CR.in
similarity index 100%
rename from test/escape_sequence_files/t0005-CR.in
rename to src/test/escape_sequence_files/t0005-CR.in
diff --git a/test/escape_sequence_files/t0005-CR.text b/src/test/escape_sequence_files/t0005-CR.text
similarity index 100%
rename from test/escape_sequence_files/t0005-CR.text
rename to src/test/escape_sequence_files/t0005-CR.text
diff --git a/test/escape_sequence_files/t0006-IND.in b/src/test/escape_sequence_files/t0006-IND.in
similarity index 100%
rename from test/escape_sequence_files/t0006-IND.in
rename to src/test/escape_sequence_files/t0006-IND.in
diff --git a/test/escape_sequence_files/t0006-IND.text b/src/test/escape_sequence_files/t0006-IND.text
similarity index 100%
rename from test/escape_sequence_files/t0006-IND.text
rename to src/test/escape_sequence_files/t0006-IND.text
diff --git a/test/escape_sequence_files/t0007-space_at_end.in b/src/test/escape_sequence_files/t0007-space_at_end.in
similarity index 100%
rename from test/escape_sequence_files/t0007-space_at_end.in
rename to src/test/escape_sequence_files/t0007-space_at_end.in
diff --git a/test/escape_sequence_files/t0007-space_at_end.text b/src/test/escape_sequence_files/t0007-space_at_end.text
similarity index 100%
rename from test/escape_sequence_files/t0007-space_at_end.text
rename to src/test/escape_sequence_files/t0007-space_at_end.text
diff --git a/test/escape_sequence_files/t0008-BS.in b/src/test/escape_sequence_files/t0008-BS.in
similarity index 100%
rename from test/escape_sequence_files/t0008-BS.in
rename to src/test/escape_sequence_files/t0008-BS.in
diff --git a/test/escape_sequence_files/t0008-BS.text b/src/test/escape_sequence_files/t0008-BS.text
similarity index 100%
rename from test/escape_sequence_files/t0008-BS.text
rename to src/test/escape_sequence_files/t0008-BS.text
diff --git a/test/escape_sequence_files/t0009-NEL.in b/src/test/escape_sequence_files/t0009-NEL.in
similarity index 100%
rename from test/escape_sequence_files/t0009-NEL.in
rename to src/test/escape_sequence_files/t0009-NEL.in
diff --git a/test/escape_sequence_files/t0009-NEL.text b/src/test/escape_sequence_files/t0009-NEL.text
similarity index 100%
rename from test/escape_sequence_files/t0009-NEL.text
rename to src/test/escape_sequence_files/t0009-NEL.text
diff --git a/test/escape_sequence_files/t0010-RI.in b/src/test/escape_sequence_files/t0010-RI.in
similarity index 100%
rename from test/escape_sequence_files/t0010-RI.in
rename to src/test/escape_sequence_files/t0010-RI.in
diff --git a/test/escape_sequence_files/t0010-RI.text b/src/test/escape_sequence_files/t0010-RI.text
similarity index 100%
rename from test/escape_sequence_files/t0010-RI.text
rename to src/test/escape_sequence_files/t0010-RI.text
diff --git a/test/escape_sequence_files/t0011-RI_scroll.in b/src/test/escape_sequence_files/t0011-RI_scroll.in
similarity index 100%
rename from test/escape_sequence_files/t0011-RI_scroll.in
rename to src/test/escape_sequence_files/t0011-RI_scroll.in
diff --git a/test/escape_sequence_files/t0011-RI_scroll.text b/src/test/escape_sequence_files/t0011-RI_scroll.text
similarity index 100%
rename from test/escape_sequence_files/t0011-RI_scroll.text
rename to src/test/escape_sequence_files/t0011-RI_scroll.text
diff --git a/test/escape_sequence_files/t0012-VT.in b/src/test/escape_sequence_files/t0012-VT.in
similarity index 100%
rename from test/escape_sequence_files/t0012-VT.in
rename to src/test/escape_sequence_files/t0012-VT.in
diff --git a/test/escape_sequence_files/t0012-VT.text b/src/test/escape_sequence_files/t0012-VT.text
similarity index 100%
rename from test/escape_sequence_files/t0012-VT.text
rename to src/test/escape_sequence_files/t0012-VT.text
diff --git a/test/escape_sequence_files/t0013-FF.in b/src/test/escape_sequence_files/t0013-FF.in
similarity index 100%
rename from test/escape_sequence_files/t0013-FF.in
rename to src/test/escape_sequence_files/t0013-FF.in
diff --git a/test/escape_sequence_files/t0013-FF.text b/src/test/escape_sequence_files/t0013-FF.text
similarity index 100%
rename from test/escape_sequence_files/t0013-FF.text
rename to src/test/escape_sequence_files/t0013-FF.text
diff --git a/test/escape_sequence_files/t0014-CAN.in b/src/test/escape_sequence_files/t0014-CAN.in
similarity index 100%
rename from test/escape_sequence_files/t0014-CAN.in
rename to src/test/escape_sequence_files/t0014-CAN.in
diff --git a/test/escape_sequence_files/t0014-CAN.text b/src/test/escape_sequence_files/t0014-CAN.text
similarity index 100%
rename from test/escape_sequence_files/t0014-CAN.text
rename to src/test/escape_sequence_files/t0014-CAN.text
diff --git a/test/escape_sequence_files/t0015-SUB.in b/src/test/escape_sequence_files/t0015-SUB.in
similarity index 100%
rename from test/escape_sequence_files/t0015-SUB.in
rename to src/test/escape_sequence_files/t0015-SUB.in
diff --git a/test/escape_sequence_files/t0015-SUB.text b/src/test/escape_sequence_files/t0015-SUB.text
similarity index 100%
rename from test/escape_sequence_files/t0015-SUB.text
rename to src/test/escape_sequence_files/t0015-SUB.text
diff --git a/test/escape_sequence_files/t0016-SU.in b/src/test/escape_sequence_files/t0016-SU.in
similarity index 100%
rename from test/escape_sequence_files/t0016-SU.in
rename to src/test/escape_sequence_files/t0016-SU.in
diff --git a/test/escape_sequence_files/t0016-SU.text b/src/test/escape_sequence_files/t0016-SU.text
similarity index 100%
rename from test/escape_sequence_files/t0016-SU.text
rename to src/test/escape_sequence_files/t0016-SU.text
diff --git a/test/escape_sequence_files/t0017-SD.in b/src/test/escape_sequence_files/t0017-SD.in
similarity index 100%
rename from test/escape_sequence_files/t0017-SD.in
rename to src/test/escape_sequence_files/t0017-SD.in
diff --git a/test/escape_sequence_files/t0017-SD.text b/src/test/escape_sequence_files/t0017-SD.text
similarity index 100%
rename from test/escape_sequence_files/t0017-SD.text
rename to src/test/escape_sequence_files/t0017-SD.text
diff --git a/test/escape_sequence_files/t0020-CUF.in b/src/test/escape_sequence_files/t0020-CUF.in
similarity index 100%
rename from test/escape_sequence_files/t0020-CUF.in
rename to src/test/escape_sequence_files/t0020-CUF.in
diff --git a/test/escape_sequence_files/t0020-CUF.text b/src/test/escape_sequence_files/t0020-CUF.text
similarity index 100%
rename from test/escape_sequence_files/t0020-CUF.text
rename to src/test/escape_sequence_files/t0020-CUF.text
diff --git a/test/escape_sequence_files/t0021-CUB.in b/src/test/escape_sequence_files/t0021-CUB.in
similarity index 100%
rename from test/escape_sequence_files/t0021-CUB.in
rename to src/test/escape_sequence_files/t0021-CUB.in
diff --git a/test/escape_sequence_files/t0021-CUB.text b/src/test/escape_sequence_files/t0021-CUB.text
similarity index 100%
rename from test/escape_sequence_files/t0021-CUB.text
rename to src/test/escape_sequence_files/t0021-CUB.text
diff --git a/test/escape_sequence_files/t0022-CUU.in b/src/test/escape_sequence_files/t0022-CUU.in
similarity index 100%
rename from test/escape_sequence_files/t0022-CUU.in
rename to src/test/escape_sequence_files/t0022-CUU.in
diff --git a/test/escape_sequence_files/t0022-CUU.text b/src/test/escape_sequence_files/t0022-CUU.text
similarity index 100%
rename from test/escape_sequence_files/t0022-CUU.text
rename to src/test/escape_sequence_files/t0022-CUU.text
diff --git a/test/escape_sequence_files/t0023-CUU_scroll.in b/src/test/escape_sequence_files/t0023-CUU_scroll.in
similarity index 100%
rename from test/escape_sequence_files/t0023-CUU_scroll.in
rename to src/test/escape_sequence_files/t0023-CUU_scroll.in
diff --git a/test/escape_sequence_files/t0023-CUU_scroll.text b/src/test/escape_sequence_files/t0023-CUU_scroll.text
similarity index 100%
rename from test/escape_sequence_files/t0023-CUU_scroll.text
rename to src/test/escape_sequence_files/t0023-CUU_scroll.text
diff --git a/test/escape_sequence_files/t0024-CUD.in b/src/test/escape_sequence_files/t0024-CUD.in
similarity index 100%
rename from test/escape_sequence_files/t0024-CUD.in
rename to src/test/escape_sequence_files/t0024-CUD.in
diff --git a/test/escape_sequence_files/t0024-CUD.text b/src/test/escape_sequence_files/t0024-CUD.text
similarity index 100%
rename from test/escape_sequence_files/t0024-CUD.text
rename to src/test/escape_sequence_files/t0024-CUD.text
diff --git a/test/escape_sequence_files/t0025-CUP.in b/src/test/escape_sequence_files/t0025-CUP.in
similarity index 100%
rename from test/escape_sequence_files/t0025-CUP.in
rename to src/test/escape_sequence_files/t0025-CUP.in
diff --git a/test/escape_sequence_files/t0025-CUP.text b/src/test/escape_sequence_files/t0025-CUP.text
similarity index 100%
rename from test/escape_sequence_files/t0025-CUP.text
rename to src/test/escape_sequence_files/t0025-CUP.text
diff --git a/test/escape_sequence_files/t0026-CNL.in b/src/test/escape_sequence_files/t0026-CNL.in
similarity index 100%
rename from test/escape_sequence_files/t0026-CNL.in
rename to src/test/escape_sequence_files/t0026-CNL.in
diff --git a/test/escape_sequence_files/t0026-CNL.text b/src/test/escape_sequence_files/t0026-CNL.text
similarity index 100%
rename from test/escape_sequence_files/t0026-CNL.text
rename to src/test/escape_sequence_files/t0026-CNL.text
diff --git a/test/escape_sequence_files/t0027-CPL.in b/src/test/escape_sequence_files/t0027-CPL.in
similarity index 100%
rename from test/escape_sequence_files/t0027-CPL.in
rename to src/test/escape_sequence_files/t0027-CPL.in
diff --git a/test/escape_sequence_files/t0027-CPL.text b/src/test/escape_sequence_files/t0027-CPL.text
similarity index 100%
rename from test/escape_sequence_files/t0027-CPL.text
rename to src/test/escape_sequence_files/t0027-CPL.text
diff --git a/test/escape_sequence_files/t0030-HPR.in b/src/test/escape_sequence_files/t0030-HPR.in
similarity index 100%
rename from test/escape_sequence_files/t0030-HPR.in
rename to src/test/escape_sequence_files/t0030-HPR.in
diff --git a/test/escape_sequence_files/t0030-HPR.text b/src/test/escape_sequence_files/t0030-HPR.text
similarity index 100%
rename from test/escape_sequence_files/t0030-HPR.text
rename to src/test/escape_sequence_files/t0030-HPR.text
diff --git a/test/escape_sequence_files/t0031-HPB.in_ b/src/test/escape_sequence_files/t0031-HPB.in_
similarity index 100%
rename from test/escape_sequence_files/t0031-HPB.in_
rename to src/test/escape_sequence_files/t0031-HPB.in_
diff --git a/test/escape_sequence_files/t0031-HPB.text b/src/test/escape_sequence_files/t0031-HPB.text
similarity index 100%
rename from test/escape_sequence_files/t0031-HPB.text
rename to src/test/escape_sequence_files/t0031-HPB.text
diff --git a/test/escape_sequence_files/t0032-VPB.in b/src/test/escape_sequence_files/t0032-VPB.in
similarity index 100%
rename from test/escape_sequence_files/t0032-VPB.in
rename to src/test/escape_sequence_files/t0032-VPB.in
diff --git a/test/escape_sequence_files/t0032-VPB.text b/src/test/escape_sequence_files/t0032-VPB.text
similarity index 100%
rename from test/escape_sequence_files/t0032-VPB.text
rename to src/test/escape_sequence_files/t0032-VPB.text
diff --git a/test/escape_sequence_files/t0033-VPB_scroll.in b/src/test/escape_sequence_files/t0033-VPB_scroll.in
similarity index 100%
rename from test/escape_sequence_files/t0033-VPB_scroll.in
rename to src/test/escape_sequence_files/t0033-VPB_scroll.in
diff --git a/test/escape_sequence_files/t0033-VPB_scroll.text b/src/test/escape_sequence_files/t0033-VPB_scroll.text
similarity index 100%
rename from test/escape_sequence_files/t0033-VPB_scroll.text
rename to src/test/escape_sequence_files/t0033-VPB_scroll.text
diff --git a/test/escape_sequence_files/t0034-VPR.in b/src/test/escape_sequence_files/t0034-VPR.in
similarity index 100%
rename from test/escape_sequence_files/t0034-VPR.in
rename to src/test/escape_sequence_files/t0034-VPR.in
diff --git a/test/escape_sequence_files/t0034-VPR.text b/src/test/escape_sequence_files/t0034-VPR.text
similarity index 100%
rename from test/escape_sequence_files/t0034-VPR.text
rename to src/test/escape_sequence_files/t0034-VPR.text
diff --git a/test/escape_sequence_files/t0035-HVP.in b/src/test/escape_sequence_files/t0035-HVP.in
similarity index 100%
rename from test/escape_sequence_files/t0035-HVP.in
rename to src/test/escape_sequence_files/t0035-HVP.in
diff --git a/test/escape_sequence_files/t0035-HVP.text b/src/test/escape_sequence_files/t0035-HVP.text
similarity index 100%
rename from test/escape_sequence_files/t0035-HVP.text
rename to src/test/escape_sequence_files/t0035-HVP.text
diff --git a/test/escape_sequence_files/t0040-REP.in b/src/test/escape_sequence_files/t0040-REP.in
similarity index 100%
rename from test/escape_sequence_files/t0040-REP.in
rename to src/test/escape_sequence_files/t0040-REP.in
diff --git a/test/escape_sequence_files/t0040-REP.text b/src/test/escape_sequence_files/t0040-REP.text
similarity index 100%
rename from test/escape_sequence_files/t0040-REP.text
rename to src/test/escape_sequence_files/t0040-REP.text
diff --git a/test/escape_sequence_files/t0050-ICH.in b/src/test/escape_sequence_files/t0050-ICH.in
similarity index 100%
rename from test/escape_sequence_files/t0050-ICH.in
rename to src/test/escape_sequence_files/t0050-ICH.in
diff --git a/test/escape_sequence_files/t0050-ICH.text b/src/test/escape_sequence_files/t0050-ICH.text
similarity index 100%
rename from test/escape_sequence_files/t0050-ICH.text
rename to src/test/escape_sequence_files/t0050-ICH.text
diff --git a/test/escape_sequence_files/t0051-IL.in b/src/test/escape_sequence_files/t0051-IL.in
similarity index 100%
rename from test/escape_sequence_files/t0051-IL.in
rename to src/test/escape_sequence_files/t0051-IL.in
diff --git a/test/escape_sequence_files/t0051-IL.text b/src/test/escape_sequence_files/t0051-IL.text
similarity index 100%
rename from test/escape_sequence_files/t0051-IL.text
rename to src/test/escape_sequence_files/t0051-IL.text
diff --git a/test/escape_sequence_files/t0052-DL.in b/src/test/escape_sequence_files/t0052-DL.in
similarity index 100%
rename from test/escape_sequence_files/t0052-DL.in
rename to src/test/escape_sequence_files/t0052-DL.in
diff --git a/test/escape_sequence_files/t0052-DL.text b/src/test/escape_sequence_files/t0052-DL.text
similarity index 100%
rename from test/escape_sequence_files/t0052-DL.text
rename to src/test/escape_sequence_files/t0052-DL.text
diff --git a/test/escape_sequence_files/t0053-DCH.in b/src/test/escape_sequence_files/t0053-DCH.in
similarity index 100%
rename from test/escape_sequence_files/t0053-DCH.in
rename to src/test/escape_sequence_files/t0053-DCH.in
diff --git a/test/escape_sequence_files/t0053-DCH.text b/src/test/escape_sequence_files/t0053-DCH.text
similarity index 100%
rename from test/escape_sequence_files/t0053-DCH.text
rename to src/test/escape_sequence_files/t0053-DCH.text
diff --git a/test/escape_sequence_files/t0054-ECH.in b/src/test/escape_sequence_files/t0054-ECH.in
similarity index 100%
rename from test/escape_sequence_files/t0054-ECH.in
rename to src/test/escape_sequence_files/t0054-ECH.in
diff --git a/test/escape_sequence_files/t0054-ECH.text b/src/test/escape_sequence_files/t0054-ECH.text
similarity index 100%
rename from test/escape_sequence_files/t0054-ECH.text
rename to src/test/escape_sequence_files/t0054-ECH.text
diff --git a/test/escape_sequence_files/t0055-EL.in b/src/test/escape_sequence_files/t0055-EL.in
similarity index 100%
rename from test/escape_sequence_files/t0055-EL.in
rename to src/test/escape_sequence_files/t0055-EL.in
diff --git a/test/escape_sequence_files/t0055-EL.text b/src/test/escape_sequence_files/t0055-EL.text
similarity index 100%
rename from test/escape_sequence_files/t0055-EL.text
rename to src/test/escape_sequence_files/t0055-EL.text
diff --git a/test/escape_sequence_files/t0056-ED.in b/src/test/escape_sequence_files/t0056-ED.in
similarity index 100%
rename from test/escape_sequence_files/t0056-ED.in
rename to src/test/escape_sequence_files/t0056-ED.in
diff --git a/test/escape_sequence_files/t0056-ED.text b/src/test/escape_sequence_files/t0056-ED.text
similarity index 100%
rename from test/escape_sequence_files/t0056-ED.text
rename to src/test/escape_sequence_files/t0056-ED.text
diff --git a/test/escape_sequence_files/t0057-ED3.in b/src/test/escape_sequence_files/t0057-ED3.in
similarity index 100%
rename from test/escape_sequence_files/t0057-ED3.in
rename to src/test/escape_sequence_files/t0057-ED3.in
diff --git a/test/escape_sequence_files/t0057-ED3.note b/src/test/escape_sequence_files/t0057-ED3.note
similarity index 100%
rename from test/escape_sequence_files/t0057-ED3.note
rename to src/test/escape_sequence_files/t0057-ED3.note
diff --git a/test/escape_sequence_files/t0057-ED3.text b/src/test/escape_sequence_files/t0057-ED3.text
similarity index 100%
rename from test/escape_sequence_files/t0057-ED3.text
rename to src/test/escape_sequence_files/t0057-ED3.text
diff --git a/test/escape_sequence_files/t0060-DECSC.in b/src/test/escape_sequence_files/t0060-DECSC.in
similarity index 100%
rename from test/escape_sequence_files/t0060-DECSC.in
rename to src/test/escape_sequence_files/t0060-DECSC.in
diff --git a/test/escape_sequence_files/t0060-DECSC.text b/src/test/escape_sequence_files/t0060-DECSC.text
similarity index 100%
rename from test/escape_sequence_files/t0060-DECSC.text
rename to src/test/escape_sequence_files/t0060-DECSC.text
diff --git a/test/escape_sequence_files/t0061-CSI_s.in b/src/test/escape_sequence_files/t0061-CSI_s.in
similarity index 100%
rename from test/escape_sequence_files/t0061-CSI_s.in
rename to src/test/escape_sequence_files/t0061-CSI_s.in
diff --git a/test/escape_sequence_files/t0061-CSI_s.text b/src/test/escape_sequence_files/t0061-CSI_s.text
similarity index 100%
rename from test/escape_sequence_files/t0061-CSI_s.text
rename to src/test/escape_sequence_files/t0061-CSI_s.text
diff --git a/test/escape_sequence_files/t0070-DECSTBM_LF.in b/src/test/escape_sequence_files/t0070-DECSTBM_LF.in
similarity index 100%
rename from test/escape_sequence_files/t0070-DECSTBM_LF.in
rename to src/test/escape_sequence_files/t0070-DECSTBM_LF.in
diff --git a/test/escape_sequence_files/t0070-DECSTBM_LF.text b/src/test/escape_sequence_files/t0070-DECSTBM_LF.text
similarity index 100%
rename from test/escape_sequence_files/t0070-DECSTBM_LF.text
rename to src/test/escape_sequence_files/t0070-DECSTBM_LF.text
diff --git a/test/escape_sequence_files/t0071-DECSTBM_IND.in b/src/test/escape_sequence_files/t0071-DECSTBM_IND.in
similarity index 100%
rename from test/escape_sequence_files/t0071-DECSTBM_IND.in
rename to src/test/escape_sequence_files/t0071-DECSTBM_IND.in
diff --git a/test/escape_sequence_files/t0071-DECSTBM_IND.text b/src/test/escape_sequence_files/t0071-DECSTBM_IND.text
similarity index 100%
rename from test/escape_sequence_files/t0071-DECSTBM_IND.text
rename to src/test/escape_sequence_files/t0071-DECSTBM_IND.text
diff --git a/test/escape_sequence_files/t0072-DECSTBM_NEL.in b/src/test/escape_sequence_files/t0072-DECSTBM_NEL.in
similarity index 100%
rename from test/escape_sequence_files/t0072-DECSTBM_NEL.in
rename to src/test/escape_sequence_files/t0072-DECSTBM_NEL.in
diff --git a/test/escape_sequence_files/t0072-DECSTBM_NEL.text b/src/test/escape_sequence_files/t0072-DECSTBM_NEL.text
similarity index 100%
rename from test/escape_sequence_files/t0072-DECSTBM_NEL.text
rename to src/test/escape_sequence_files/t0072-DECSTBM_NEL.text
diff --git a/test/escape_sequence_files/t0073-DECSTBM_RI.in b/src/test/escape_sequence_files/t0073-DECSTBM_RI.in
similarity index 100%
rename from test/escape_sequence_files/t0073-DECSTBM_RI.in
rename to src/test/escape_sequence_files/t0073-DECSTBM_RI.in
diff --git a/test/escape_sequence_files/t0073-DECSTBM_RI.text b/src/test/escape_sequence_files/t0073-DECSTBM_RI.text
similarity index 100%
rename from test/escape_sequence_files/t0073-DECSTBM_RI.text
rename to src/test/escape_sequence_files/t0073-DECSTBM_RI.text
diff --git a/test/escape_sequence_files/t0074-DECSTBM_SU_SD.in b/src/test/escape_sequence_files/t0074-DECSTBM_SU_SD.in
similarity index 100%
rename from test/escape_sequence_files/t0074-DECSTBM_SU_SD.in
rename to src/test/escape_sequence_files/t0074-DECSTBM_SU_SD.in
diff --git a/test/escape_sequence_files/t0074-DECSTBM_SU_SD.text b/src/test/escape_sequence_files/t0074-DECSTBM_SU_SD.text
similarity index 100%
rename from test/escape_sequence_files/t0074-DECSTBM_SU_SD.text
rename to src/test/escape_sequence_files/t0074-DECSTBM_SU_SD.text
diff --git a/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.in b/src/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.in
similarity index 100%
rename from test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.in
rename to src/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.in
diff --git a/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.text b/src/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.text
similarity index 100%
rename from test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.text
rename to src/test/escape_sequence_files/t0075-DECSTBM_CUU_CUD.text
diff --git a/test/escape_sequence_files/t0076-DECSTBM_IL_DL.in b/src/test/escape_sequence_files/t0076-DECSTBM_IL_DL.in
similarity index 100%
rename from test/escape_sequence_files/t0076-DECSTBM_IL_DL.in
rename to src/test/escape_sequence_files/t0076-DECSTBM_IL_DL.in
diff --git a/test/escape_sequence_files/t0076-DECSTBM_IL_DL.text b/src/test/escape_sequence_files/t0076-DECSTBM_IL_DL.text
similarity index 100%
rename from test/escape_sequence_files/t0076-DECSTBM_IL_DL.text
rename to src/test/escape_sequence_files/t0076-DECSTBM_IL_DL.text
diff --git a/test/escape_sequence_files/t0077-DECSTBM_quirks.in b/src/test/escape_sequence_files/t0077-DECSTBM_quirks.in
similarity index 100%
rename from test/escape_sequence_files/t0077-DECSTBM_quirks.in
rename to src/test/escape_sequence_files/t0077-DECSTBM_quirks.in
diff --git a/test/escape_sequence_files/t0077-DECSTBM_quirks.text b/src/test/escape_sequence_files/t0077-DECSTBM_quirks.text
similarity index 100%
rename from test/escape_sequence_files/t0077-DECSTBM_quirks.text
rename to src/test/escape_sequence_files/t0077-DECSTBM_quirks.text
diff --git a/test/escape_sequence_files/t0080-HT.in b/src/test/escape_sequence_files/t0080-HT.in
similarity index 100%
rename from test/escape_sequence_files/t0080-HT.in
rename to src/test/escape_sequence_files/t0080-HT.in
diff --git a/test/escape_sequence_files/t0080-HT.text b/src/test/escape_sequence_files/t0080-HT.text
similarity index 100%
rename from test/escape_sequence_files/t0080-HT.text
rename to src/test/escape_sequence_files/t0080-HT.text
diff --git a/test/escape_sequence_files/t0081-TBC.in b/src/test/escape_sequence_files/t0081-TBC.in
similarity index 100%
rename from test/escape_sequence_files/t0081-TBC.in
rename to src/test/escape_sequence_files/t0081-TBC.in
diff --git a/test/escape_sequence_files/t0081-TBC.text b/src/test/escape_sequence_files/t0081-TBC.text
similarity index 100%
rename from test/escape_sequence_files/t0081-TBC.text
rename to src/test/escape_sequence_files/t0081-TBC.text
diff --git a/test/escape_sequence_files/t0082-HTS.in b/src/test/escape_sequence_files/t0082-HTS.in
similarity index 100%
rename from test/escape_sequence_files/t0082-HTS.in
rename to src/test/escape_sequence_files/t0082-HTS.in
diff --git a/test/escape_sequence_files/t0082-HTS.text b/src/test/escape_sequence_files/t0082-HTS.text
similarity index 100%
rename from test/escape_sequence_files/t0082-HTS.text
rename to src/test/escape_sequence_files/t0082-HTS.text
diff --git a/test/escape_sequence_files/t0083-CHT.in b/src/test/escape_sequence_files/t0083-CHT.in
similarity index 100%
rename from test/escape_sequence_files/t0083-CHT.in
rename to src/test/escape_sequence_files/t0083-CHT.in
diff --git a/test/escape_sequence_files/t0083-CHT.text b/src/test/escape_sequence_files/t0083-CHT.text
similarity index 100%
rename from test/escape_sequence_files/t0083-CHT.text
rename to src/test/escape_sequence_files/t0083-CHT.text
diff --git a/test/escape_sequence_files/t0084-CBT.in b/src/test/escape_sequence_files/t0084-CBT.in
similarity index 100%
rename from test/escape_sequence_files/t0084-CBT.in
rename to src/test/escape_sequence_files/t0084-CBT.in
diff --git a/test/escape_sequence_files/t0084-CBT.text b/src/test/escape_sequence_files/t0084-CBT.text
similarity index 100%
rename from test/escape_sequence_files/t0084-CBT.text
rename to src/test/escape_sequence_files/t0084-CBT.text
diff --git a/test/escape_sequence_files/t0084-CBT.text-xterm b/src/test/escape_sequence_files/t0084-CBT.text-xterm
similarity index 100%
rename from test/escape_sequence_files/t0084-CBT.text-xterm
rename to src/test/escape_sequence_files/t0084-CBT.text-xterm
diff --git a/test/escape_sequence_files/t0090-alt_screen.in b/src/test/escape_sequence_files/t0090-alt_screen.in
similarity index 100%
rename from test/escape_sequence_files/t0090-alt_screen.in
rename to src/test/escape_sequence_files/t0090-alt_screen.in
diff --git a/test/escape_sequence_files/t0090-alt_screen.text b/src/test/escape_sequence_files/t0090-alt_screen.text
similarity index 100%
rename from test/escape_sequence_files/t0090-alt_screen.text
rename to src/test/escape_sequence_files/t0090-alt_screen.text
diff --git a/test/escape_sequence_files/t0091-alt_screen_ED3.in b/src/test/escape_sequence_files/t0091-alt_screen_ED3.in
similarity index 100%
rename from test/escape_sequence_files/t0091-alt_screen_ED3.in
rename to src/test/escape_sequence_files/t0091-alt_screen_ED3.in
diff --git a/test/escape_sequence_files/t0091-alt_screen_ED3.text b/src/test/escape_sequence_files/t0091-alt_screen_ED3.text
similarity index 100%
rename from test/escape_sequence_files/t0091-alt_screen_ED3.text
rename to src/test/escape_sequence_files/t0091-alt_screen_ED3.text
diff --git a/test/escape_sequence_files/t0092-alt_screen_DECSC.in b/src/test/escape_sequence_files/t0092-alt_screen_DECSC.in
similarity index 100%
rename from test/escape_sequence_files/t0092-alt_screen_DECSC.in
rename to src/test/escape_sequence_files/t0092-alt_screen_DECSC.in
diff --git a/test/escape_sequence_files/t0092-alt_screen_DECSC.text b/src/test/escape_sequence_files/t0092-alt_screen_DECSC.text
similarity index 100%
rename from test/escape_sequence_files/t0092-alt_screen_DECSC.text
rename to src/test/escape_sequence_files/t0092-alt_screen_DECSC.text
diff --git a/test/escape_sequence_files/t0100-IRM.in b/src/test/escape_sequence_files/t0100-IRM.in
similarity index 100%
rename from test/escape_sequence_files/t0100-IRM.in
rename to src/test/escape_sequence_files/t0100-IRM.in
diff --git a/test/escape_sequence_files/t0100-IRM.text b/src/test/escape_sequence_files/t0100-IRM.text
similarity index 100%
rename from test/escape_sequence_files/t0100-IRM.text
rename to src/test/escape_sequence_files/t0100-IRM.text
diff --git a/test/escape_sequence_files/t0101-NLM.in b/src/test/escape_sequence_files/t0101-NLM.in
similarity index 100%
rename from test/escape_sequence_files/t0101-NLM.in
rename to src/test/escape_sequence_files/t0101-NLM.in
diff --git a/test/escape_sequence_files/t0101-NLM.text b/src/test/escape_sequence_files/t0101-NLM.text
similarity index 100%
rename from test/escape_sequence_files/t0101-NLM.text
rename to src/test/escape_sequence_files/t0101-NLM.text
diff --git a/test/escape_sequence_files/t0102-DECAWM.in b/src/test/escape_sequence_files/t0102-DECAWM.in
similarity index 100%
rename from test/escape_sequence_files/t0102-DECAWM.in
rename to src/test/escape_sequence_files/t0102-DECAWM.in
diff --git a/test/escape_sequence_files/t0102-DECAWM.text b/src/test/escape_sequence_files/t0102-DECAWM.text
similarity index 100%
rename from test/escape_sequence_files/t0102-DECAWM.text
rename to src/test/escape_sequence_files/t0102-DECAWM.text
diff --git a/test/escape_sequence_files/t0103-reverse_wrap.in b/src/test/escape_sequence_files/t0103-reverse_wrap.in
similarity index 100%
rename from test/escape_sequence_files/t0103-reverse_wrap.in
rename to src/test/escape_sequence_files/t0103-reverse_wrap.in
diff --git a/test/escape_sequence_files/t0103-reverse_wrap.text b/src/test/escape_sequence_files/t0103-reverse_wrap.text
similarity index 100%
rename from test/escape_sequence_files/t0103-reverse_wrap.text
rename to src/test/escape_sequence_files/t0103-reverse_wrap.text
diff --git a/test/escape_sequence_files/t0200-SGR.html b/src/test/escape_sequence_files/t0200-SGR.html
similarity index 100%
rename from test/escape_sequence_files/t0200-SGR.html
rename to src/test/escape_sequence_files/t0200-SGR.html
diff --git a/test/escape_sequence_files/t0200-SGR.in_ b/src/test/escape_sequence_files/t0200-SGR.in_
similarity index 100%
rename from test/escape_sequence_files/t0200-SGR.in_
rename to src/test/escape_sequence_files/t0200-SGR.in_
diff --git a/test/escape_sequence_files/t0220-SGR_inverse.html b/src/test/escape_sequence_files/t0220-SGR_inverse.html
similarity index 100%
rename from test/escape_sequence_files/t0220-SGR_inverse.html
rename to src/test/escape_sequence_files/t0220-SGR_inverse.html
diff --git a/test/escape_sequence_files/t0220-SGR_inverse.in_ b/src/test/escape_sequence_files/t0220-SGR_inverse.in_
similarity index 100%
rename from test/escape_sequence_files/t0220-SGR_inverse.in_
rename to src/test/escape_sequence_files/t0220-SGR_inverse.in_
diff --git a/test/escape_sequence_files/t0500-bash_long_line.in b/src/test/escape_sequence_files/t0500-bash_long_line.in
similarity index 100%
rename from test/escape_sequence_files/t0500-bash_long_line.in
rename to src/test/escape_sequence_files/t0500-bash_long_line.in
diff --git a/test/escape_sequence_files/t0500-bash_long_line.text b/src/test/escape_sequence_files/t0500-bash_long_line.text
similarity index 100%
rename from test/escape_sequence_files/t0500-bash_long_line.text
rename to src/test/escape_sequence_files/t0500-bash_long_line.text
diff --git a/test/escape_sequence_files/t0501-bash_ls.in b/src/test/escape_sequence_files/t0501-bash_ls.in
similarity index 100%
rename from test/escape_sequence_files/t0501-bash_ls.in
rename to src/test/escape_sequence_files/t0501-bash_ls.in
diff --git a/test/escape_sequence_files/t0501-bash_ls.text b/src/test/escape_sequence_files/t0501-bash_ls.text
similarity index 100%
rename from test/escape_sequence_files/t0501-bash_ls.text
rename to src/test/escape_sequence_files/t0501-bash_ls.text
diff --git a/test/escape_sequence_files/t0502-bash_ls_color.in b/src/test/escape_sequence_files/t0502-bash_ls_color.in
similarity index 100%
rename from test/escape_sequence_files/t0502-bash_ls_color.in
rename to src/test/escape_sequence_files/t0502-bash_ls_color.in
diff --git a/test/escape_sequence_files/t0502-bash_ls_color.text b/src/test/escape_sequence_files/t0502-bash_ls_color.text
similarity index 100%
rename from test/escape_sequence_files/t0502-bash_ls_color.text
rename to src/test/escape_sequence_files/t0502-bash_ls_color.text
diff --git a/test/escape_sequence_files/t0503-zsh_ls_color.in b/src/test/escape_sequence_files/t0503-zsh_ls_color.in
similarity index 100%
rename from test/escape_sequence_files/t0503-zsh_ls_color.in
rename to src/test/escape_sequence_files/t0503-zsh_ls_color.in
diff --git a/test/escape_sequence_files/t0503-zsh_ls_color.text b/src/test/escape_sequence_files/t0503-zsh_ls_color.text
similarity index 100%
rename from test/escape_sequence_files/t0503-zsh_ls_color.text
rename to src/test/escape_sequence_files/t0503-zsh_ls_color.text
diff --git a/test/escape_sequence_files/t0504-vim.in b/src/test/escape_sequence_files/t0504-vim.in
similarity index 100%
rename from test/escape_sequence_files/t0504-vim.in
rename to src/test/escape_sequence_files/t0504-vim.in
diff --git a/test/escape_sequence_files/t0504-vim.text b/src/test/escape_sequence_files/t0504-vim.text
similarity index 100%
rename from test/escape_sequence_files/t0504-vim.text
rename to src/test/escape_sequence_files/t0504-vim.text
diff --git a/test/test.js b/src/test/test.js
similarity index 99%
rename from test/test.js
rename to src/test/test.js
index 02be195f4e..08593e12a6 100644
--- a/test/test.js
+++ b/src/test/test.js
@@ -1,6 +1,6 @@
var assert = require('chai').assert;
var expect = require('chai').expect;
-var Terminal = require('../src/xterm');
+var Terminal = require('../xterm');
describe('xterm.js', function() {
var xterm;
diff --git a/test/viewport-test.js b/src/test/viewport-test.js
similarity index 98%
rename from test/viewport-test.js
rename to src/test/viewport-test.js
index a9523f523e..376fcdc86c 100644
--- a/test/viewport-test.js
+++ b/src/test/viewport-test.js
@@ -1,5 +1,5 @@
var assert = require('chai').assert;
-var Terminal = require('../src/xterm');
+var Terminal = require('../xterm');
describe('Viewport', function () {
var terminal;
diff --git a/src/xterm.js b/src/xterm.js
index 55c2a2c76c..85efc22307 100644
--- a/src/xterm.js
+++ b/src/xterm.js
@@ -647,10 +647,10 @@ Terminal.prototype.open = function(parent) {
Terminal.loadAddon = function(addon, callback) {
if (typeof exports === 'object' && typeof module === 'object') {
// CommonJS
- return require('../addons/' + addon);
+ return require('./addons/' + addon + '/' + addon);
} else if (typeof define == 'function') {
// RequireJS
- return require(['../addons/' + addon + '/' + addon], callback);
+ return require(['./addons/' + addon + '/' + addon], callback);
} else {
console.error('Cannot load a module without a CommonJS or RequireJS environment.');
return false;
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000000..beb8326193
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es5",
+ "rootDir": "src",
+ "allowJs": true,
+ "outDir": "out"
+ },
+ "exclude": [
+ "addons",
+ "build",
+ "demo",
+ "dist",
+ "out",
+ "test",
+ "node_modules"
+ ]
+}
diff --git a/typings.json b/typings.json
new file mode 100644
index 0000000000..8210c007e5
--- /dev/null
+++ b/typings.json
@@ -0,0 +1,6 @@
+{
+ "name": "xterm",
+ "globalDependencies": {
+ "node": "registry:env/node#6.0.0+20160918225031"
+ }
+}