diff --git a/demo/client.ts b/demo/client.ts
index 8bcdc971..6de8558c 100644
--- a/demo/client.ts
+++ b/demo/client.ts
@@ -7,7 +7,10 @@
///
-import { Terminal } from '../lib/public/Terminal';
+const t = require('../lib2/xterm');
+console.log(t);
+import { Terminal } from '../lib2/xterm';
+console.log('t2', Terminal);
import { AttachAddon } from 'xterm-addon-attach';
import { SearchAddon, ISearchOptions } from 'xterm-addon-search';
import { WebLinksAddon } from 'xterm-addon-web-links';
diff --git a/demo/start.js b/demo/start.js
index 7e13e790..7be2a48e 100644
--- a/demo/start.js
+++ b/demo/start.js
@@ -32,7 +32,11 @@ const clientConfig = {
},
resolve: {
modules: [path.resolve(__dirname, '..'), 'node_modules'],
- extensions: [ '.tsx', '.ts', '.js' ]
+ extensions: [ '.tsx', '.ts', '.js' ],
+ alias: {
+ common: path.resolve(__dirname, '../lib/common'),
+ core: path.resolve(__dirname, '../lib/core')
+ }
},
output: {
filename: 'client-bundle.js',
diff --git a/package.json b/package.json
index 043b76cb..ad1f7058 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"zmodem.js": "^0.1.5"
},
"scripts": {
+ "lib2": "webpack",
"start": "node demo/start",
"start-debug": "node --inspect-brk demo/start",
"start-zmodem": "node demo/zmodem/app",
diff --git a/src/common/CircularList.test.ts b/src/common/CircularList.test.ts
index 4c07b16c..7a578a8c 100644
--- a/src/common/CircularList.test.ts
+++ b/src/common/CircularList.test.ts
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
-import { CircularList } from './CircularList';
+import { CircularList } from 'common/CircularList';
describe('CircularList', () => {
describe('push', () => {
diff --git a/src/common/CircularList.ts b/src/common/CircularList.ts
index d4fc41cd..88e714b8 100644
--- a/src/common/CircularList.ts
+++ b/src/common/CircularList.ts
@@ -3,8 +3,8 @@
* @license MIT
*/
-import { ICircularList } from './Types';
-import { EventEmitter2, IEvent } from './EventEmitter2';
+import { ICircularList } from 'common/Types';
+import { EventEmitter2, IEvent } from 'common/EventEmitter2';
export interface IInsertEvent {
index: number;
diff --git a/src/common/Clone.test.ts b/src/common/Clone.test.ts
index 4b815ff3..fc95e196 100644
--- a/src/common/Clone.test.ts
+++ b/src/common/Clone.test.ts
@@ -4,7 +4,7 @@
*/
import { assert, expect } from 'chai';
-import { clone } from './Clone';
+import { clone } from 'common/Clone';
describe('clone', () => {
it('should clone simple objects', () => {
diff --git a/src/common/EventEmitter.test.ts b/src/common/EventEmitter.test.ts
index f2d31cf6..c7f75ba0 100644
--- a/src/common/EventEmitter.test.ts
+++ b/src/common/EventEmitter.test.ts
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
-import { EventEmitter } from './EventEmitter';
+import { EventEmitter } from 'common/EventEmitter';
describe('EventEmitter', () => {
let eventEmitter: EventEmitter;
diff --git a/src/common/EventEmitter.ts b/src/common/EventEmitter.ts
index 74a794cd..266216a4 100644
--- a/src/common/EventEmitter.ts
+++ b/src/common/EventEmitter.ts
@@ -3,8 +3,8 @@
* @license MIT
*/
-import { IDisposable, IEventEmitter, XtermListener } from './Types';
-import { Disposable } from './Lifecycle';
+import { IDisposable, IEventEmitter, XtermListener } from 'common/Types';
+import { Disposable } from 'common/Lifecycle';
export class EventEmitter extends Disposable implements IEventEmitter, IDisposable {
private _events: {[type: string]: XtermListener[]};
diff --git a/src/common/EventEmitter2.test.ts b/src/common/EventEmitter2.test.ts
index 53ee4c4f..bd8b5dea 100644
--- a/src/common/EventEmitter2.test.ts
+++ b/src/common/EventEmitter2.test.ts
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
-import { EventEmitter2 } from './EventEmitter2';
+import { EventEmitter2 } from 'common/EventEmitter2';
describe('EventEmitter2', () => {
it('should fire listeners multiple times', () => {
diff --git a/src/common/EventEmitter2.ts b/src/common/EventEmitter2.ts
index 71c0b72d..fcbef969 100644
--- a/src/common/EventEmitter2.ts
+++ b/src/common/EventEmitter2.ts
@@ -3,7 +3,7 @@
* @license MIT
*/
-import { IDisposable } from './Types';
+import { IDisposable } from 'common/Types';
interface IListener {
(e: T): void;
diff --git a/src/common/Lifecycle.test.ts b/src/common/Lifecycle.test.ts
index 4b696fa5..6f7c7884 100644
--- a/src/common/Lifecycle.test.ts
+++ b/src/common/Lifecycle.test.ts
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
-import { Disposable } from './Lifecycle';
+import { Disposable } from 'common/Lifecycle';
class TestDisposable extends Disposable {
public get isDisposed(): boolean {
diff --git a/src/common/Lifecycle.ts b/src/common/Lifecycle.ts
index 5fac6e82..ad1afa1d 100644
--- a/src/common/Lifecycle.ts
+++ b/src/common/Lifecycle.ts
@@ -3,7 +3,7 @@
* @license MIT
*/
-import { IDisposable } from './Types';
+import { IDisposable } from 'common/Types';
/**
* A base class that can be extended to provide convenience methods for managing the lifecycle of an
diff --git a/src/common/TypedArrayUtils.test.ts b/src/common/TypedArrayUtils.test.ts
index 99b0fd82..429a3a33 100644
--- a/src/common/TypedArrayUtils.test.ts
+++ b/src/common/TypedArrayUtils.test.ts
@@ -3,7 +3,7 @@
* @license MIT
*/
import { assert } from 'chai';
-import { fillFallback, concat } from './TypedArrayUtils';
+import { fillFallback, concat } from 'common/TypedArrayUtils';
type TypedArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray
| Int8Array | Int16Array | Int32Array
diff --git a/src/common/Types.ts b/src/common/Types.ts
index 717de359..e0a1e612 100644
--- a/src/common/Types.ts
+++ b/src/common/Types.ts
@@ -3,8 +3,8 @@
* @license MIT
*/
-import { IEvent, EventEmitter2 } from './EventEmitter2';
-import { IDeleteEvent, IInsertEvent } from './CircularList';
+import { IEvent, EventEmitter2 } from 'common/EventEmitter2';
+import { IDeleteEvent, IInsertEvent } from 'common/CircularList';
export const DEFAULT_COLOR = 256;
diff --git a/src/common/tsconfig.json b/src/common/tsconfig.json
index ccf742e5..ff0e5c68 100644
--- a/src/common/tsconfig.json
+++ b/src/common/tsconfig.json
@@ -4,7 +4,11 @@
"outDir": "../../lib",
"types": [
"../../node_modules/@types/mocha"
- ]
+ ],
+ "baseUrl": "..",
+ "paths": {
+ "common/*": [ "./common/*" ]
+ }
},
"include": [ "./**/*" ]
}
diff --git a/src/core/Types.ts b/src/core/Types.ts
index 5b97f249..39cb172e 100644
--- a/src/core/Types.ts
+++ b/src/core/Types.ts
@@ -3,7 +3,7 @@
* @license MIT
*/
-import { IDisposable } from '../common/Types';
+import { IDisposable } from 'common/Types';
export const enum KeyboardResultType {
SEND_KEY,
diff --git a/src/core/buffer/BufferLine.ts b/src/core/buffer/BufferLine.ts
index 154cc598..ce3b54b7 100644
--- a/src/core/buffer/BufferLine.ts
+++ b/src/core/buffer/BufferLine.ts
@@ -2,9 +2,9 @@
* Copyright (c) 2018 The xterm.js authors. All rights reserved.
* @license MIT
*/
-import { CharData, IBufferLine, ICellData, IColorRGB, IAttributeData } from '../Types';
-import { stringFromCodePoint } from '../input/TextDecoder';
-import { DEFAULT_COLOR } from '../../common/Types';
+import { CharData, IBufferLine, ICellData, IColorRGB, IAttributeData } from 'core/Types';
+import { stringFromCodePoint } from 'core/input/TextDecoder';
+import { DEFAULT_COLOR } from 'common/Types';
export const DEFAULT_ATTR = (0 << 18) | (DEFAULT_COLOR << 9) | (256 << 0);
diff --git a/src/core/buffer/BufferReflow.test.ts b/src/core/buffer/BufferReflow.test.ts
index d0d97dff..f7d2de73 100644
--- a/src/core/buffer/BufferReflow.test.ts
+++ b/src/core/buffer/BufferReflow.test.ts
@@ -3,8 +3,8 @@
* @license MIT
*/
import { assert } from 'chai';
-import { BufferLine, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE } from './BufferLine';
-import { reflowSmallerGetNewLineLengths } from './BufferReflow';
+import { BufferLine, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE } from 'core/buffer/BufferLine';
+import { reflowSmallerGetNewLineLengths } from 'core/buffer/BufferReflow';
describe('BufferReflow', () => {
describe('reflowSmallerGetNewLineLengths', () => {
diff --git a/src/core/buffer/BufferReflow.ts b/src/core/buffer/BufferReflow.ts
index e363da0b..d75941e3 100644
--- a/src/core/buffer/BufferReflow.ts
+++ b/src/core/buffer/BufferReflow.ts
@@ -3,9 +3,9 @@
* @license MIT
*/
-import { BufferLine } from './BufferLine';
-import { CircularList } from '../../common/CircularList';
-import { IBufferLine, ICellData } from '../Types';
+import { BufferLine } from 'core/buffer/BufferLine';
+import { CircularList } from 'common/CircularList';
+import { IBufferLine, ICellData } from 'core/Types';
export interface INewLayoutResult {
layout: number[];
diff --git a/src/core/buffer/Marker.ts b/src/core/buffer/Marker.ts
index 26de0dfe..8d207166 100644
--- a/src/core/buffer/Marker.ts
+++ b/src/core/buffer/Marker.ts
@@ -3,9 +3,9 @@
* @license MIT
*/
-import { EventEmitter2, IEvent } from '../../common/EventEmitter2';
-import { Disposable } from '../../common/Lifecycle';
-import { IMarker } from '../Types';
+import { EventEmitter2, IEvent } from 'common/EventEmitter2';
+import { Disposable } from 'common/Lifecycle';
+import { IMarker } from 'core/Types';
export class Marker extends Disposable implements IMarker {
private static _nextId = 1;
diff --git a/src/core/data/Charsets.ts b/src/core/data/Charsets.ts
index 5fc36ac1..f6ee7297 100644
--- a/src/core/data/Charsets.ts
+++ b/src/core/data/Charsets.ts
@@ -3,7 +3,7 @@
* @license MIT
*/
-import { ICharset } from '../Types';
+import { ICharset } from 'core/Types';
/**
* The character sets supported by the terminal. These enable several languages
diff --git a/src/core/input/Keyboard.test.ts b/src/core/input/Keyboard.test.ts
index a0dc3cbc..8a5f105b 100644
--- a/src/core/input/Keyboard.test.ts
+++ b/src/core/input/Keyboard.test.ts
@@ -1,8 +1,8 @@
import { assert } from 'chai';
-import { evaluateKeyboardEvent } from './Keyboard';
-import { IKeyboardResult } from '../Types';
-import { IKeyboardEvent } from '../../common/Types';
+import { evaluateKeyboardEvent } from 'core/input/Keyboard';
+import { IKeyboardResult } from 'core/Types';
+import { IKeyboardEvent } from 'common/Types';
/**
* A helper function for testing which allows passing in a partial event and defaults will be filled
diff --git a/src/core/input/Keyboard.ts b/src/core/input/Keyboard.ts
index 36097f91..c78328da 100644
--- a/src/core/input/Keyboard.ts
+++ b/src/core/input/Keyboard.ts
@@ -4,9 +4,9 @@
* @license MIT
*/
-import { IKeyboardEvent } from '../../common/Types';
-import { IKeyboardResult, KeyboardResultType } from '../Types';
-import { C0 } from '../../common/data/EscapeSequences';
+import { IKeyboardEvent } from 'common/Types';
+import { IKeyboardResult, KeyboardResultType } from 'core/Types';
+import { C0 } from 'common/data/EscapeSequences';
// reg + shift key mappings for digits and special chars
const KEYCODE_KEY_MAPPINGS: { [key: number]: [string, string]} = {
diff --git a/src/core/input/TextDecoder.test.ts b/src/core/input/TextDecoder.test.ts
index dc358bc5..ba1c04fa 100644
--- a/src/core/input/TextDecoder.test.ts
+++ b/src/core/input/TextDecoder.test.ts
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
-import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32, utf32ToString } from './TextDecoder';
+import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32, utf32ToString } from 'core/input/TextDecoder';
import { encode } from 'utf8';
// convert UTF32 codepoints to string
diff --git a/src/core/tsconfig.json b/src/core/tsconfig.json
index 99bf48ca..4482140b 100644
--- a/src/core/tsconfig.json
+++ b/src/core/tsconfig.json
@@ -4,7 +4,12 @@
"outDir": "../../lib",
"types": [
"../../node_modules/@types/mocha"
- ]
+ ],
+ "baseUrl": "..",
+ "paths": {
+ "common/*": [ "./common/*" ],
+ "core/*": [ "./core/*" ]
+ },
},
"include": [ "./**/*" ],
"references": [
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 00000000..c2c1a226
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,32 @@
+const path = require('path');
+
+module.exports = {
+ entry: './lib/public/Terminal.js',
+ devtool: 'inline-source-map',
+ module: {
+ rules: [
+ {
+ test: /\.js$/,
+ use: ["source-map-loader"],
+ enforce: "pre",
+ exclude: /node_modules/
+ }
+ ]
+ },
+ resolve: {
+ modules: ['./node_modules'],
+ extensions: [ '.js' ],
+ alias: {
+ common: path.resolve('./lib/common'),
+ core: path.resolve('./lib/core')
+ }
+ },
+ output: {
+ filename: 'xterm.js',
+ path: path.resolve('./lib2'),
+ library: 'Terminal',
+ libraryTarget: 'umd'
+ },
+ mode: 'development',
+ watch: true
+};