From e4099be9548d23ff7454e778865443b0d0f9d6c9 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 09:37:51 -0700 Subject: [PATCH 1/5] Exclude tslint and devcontainer from npm package Fixes #2152 --- .npmignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.npmignore b/.npmignore index f278232f..5f10c1c7 100644 --- a/.npmignore +++ b/.npmignore @@ -38,6 +38,7 @@ *.test.js *.test.js.map lib/test/ +tslint.json docs/ /.idea/ @@ -46,3 +47,4 @@ bin/ build/ fixtures/ demo/ +.devcontainer/ From b6b10b7ef671f70afcb76154900204eff3b6fd18 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 10:36:51 -0700 Subject: [PATCH 2/5] Remove deprecated destroy API Fixes #1371 --- fixtures/typings-test/typings-test.ts | 1 - src/Terminal.ts | 7 ------- src/TestUtils.test.ts | 3 --- src/Types.ts | 1 - src/public/Terminal.ts | 3 --- typings/xterm.d.ts | 7 ------- 6 files changed, 22 deletions(-) diff --git a/fixtures/typings-test/typings-test.ts b/fixtures/typings-test/typings-test.ts index 65c478c6..53938611 100644 --- a/fixtures/typings-test/typings-test.ts +++ b/fixtures/typings-test/typings-test.ts @@ -50,7 +50,6 @@ namespace methods_core { const t: Terminal = new Terminal(); t.blur(); t.focus(); - t.destroy(); t.clear(); t.refresh(0, 1); t.reset(); diff --git a/src/Terminal.ts b/src/Terminal.ts index a6903ef7..b77df953 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -290,13 +290,6 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II } } - /** - * @deprecated Use dispose instead. - */ - public destroy(): void { - this.dispose(); - } - private _setup(): void { Object.keys(DEFAULT_OPTIONS).forEach((key) => { if (this.options[key] === null || this.options[key] === undefined) { diff --git a/src/TestUtils.test.ts b/src/TestUtils.test.ts index 11e972b4..ea7980e6 100644 --- a/src/TestUtils.test.ts +++ b/src/TestUtils.test.ts @@ -99,9 +99,6 @@ export class MockTerminal implements ITerminal { dispose(): void { throw new Error('Method not implemented.'); } - destroy(): void { - throw new Error('Method not implemented.'); - } scrollPages(pageCount: number): void { throw new Error('Method not implemented.'); } diff --git a/src/Types.ts b/src/Types.ts index 5c121bad..7e01b99f 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -257,7 +257,6 @@ export interface IPublicTerminal extends IDisposable, IEventEmitter { selectAll(): void; selectLines(start: number, end: number): void; dispose(): void; - destroy(): void; scrollLines(amount: number): void; scrollPages(pageCount: number): void; scrollToTop(): void; diff --git a/src/public/Terminal.ts b/src/public/Terminal.ts index 346e514e..86a9cce1 100644 --- a/src/public/Terminal.ts +++ b/src/public/Terminal.ts @@ -121,9 +121,6 @@ export class Terminal implements ITerminalApi { this._addonManager.dispose(); this._core.dispose(); } - public destroy(): void { - this._core.destroy(); - } public scrollLines(amount: number): void { this._core.scrollLines(amount); } diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 097fd2d2..ac6cfc61 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -706,13 +706,6 @@ declare module 'xterm' { */ dispose(): void; - /** - * Destroys the terminal and detaches it from the DOM. - * - * @deprecated Use dispose() instead. - */ - destroy(): void; - /** * Scroll the display of the terminal * @param amount The number of lines to scroll down (negative scroll up). From 94fc2064c29e62e6704b2a04f8ffa53e8b1fa312 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 10:43:52 -0700 Subject: [PATCH 3/5] Remove enableBold fontWeightBold is the new way to do this Fixes #1237 --- fixtures/typings-test/typings-test.ts | 2 -- src/Terminal.ts | 2 -- src/public/Terminal.ts | 4 ++-- src/renderer/BaseRenderLayer.ts | 4 ++-- src/renderer/dom/DomRendererRowFactory.test.ts | 1 - src/renderer/dom/DomRendererRowFactory.ts | 5 ++--- typings/xterm.d.ts | 11 ++--------- 7 files changed, 8 insertions(+), 21 deletions(-) diff --git a/fixtures/typings-test/typings-test.ts b/fixtures/typings-test/typings-test.ts index 65c478c6..0a623758 100644 --- a/fixtures/typings-test/typings-test.ts +++ b/fixtures/typings-test/typings-test.ts @@ -148,7 +148,6 @@ namespace methods_core { const r18: (data: string) => void = t.getOption('handler'); const r19: string = t.getOption('bellSound'); const r20: string = t.getOption('bellStyle'); - const r21: boolean = t.getOption('enableBold'); const r22: number = t.getOption('letterSpacing'); const r23: boolean = t.getOption('macOptionIsMeta'); const r24: string = t.getOption('fontWeight'); @@ -168,7 +167,6 @@ namespace methods_core { t.setOption('cursorBlink', true); t.setOption('debug', true); t.setOption('disableStdin', true); - t.setOption('enableBold', true); t.setOption('fontWeight', 'normal'); t.setOption('fontWeight', 'bold'); t.setOption('fontWeightBold', 'normal'); diff --git a/src/Terminal.ts b/src/Terminal.ts index a6903ef7..a2c4fe9a 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -92,7 +92,6 @@ const DEFAULT_OPTIONS: ITerminalOptions = { bellSound: DEFAULT_BELL_SOUND, bellStyle: 'none', drawBoldTextInBrightColors: true, - enableBold: true, experimentalCharAtlas: 'static', fontFamily: 'courier-new, courier, monospace', fontSize: 15, @@ -504,7 +503,6 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II break; case 'drawBoldTextInBrightColors': case 'experimentalCharAtlas': - case 'enableBold': case 'letterSpacing': case 'lineHeight': case 'fontWeight': diff --git a/src/public/Terminal.ts b/src/public/Terminal.ts index 346e514e..533076ed 100644 --- a/src/public/Terminal.ts +++ b/src/public/Terminal.ts @@ -149,7 +149,7 @@ export class Terminal implements ITerminalApi { this._core.writeUtf8(data); } public getOption(key: 'bellSound' | 'bellStyle' | 'cursorStyle' | 'fontFamily' | 'fontWeight' | 'fontWeightBold' | 'rendererType' | 'termName'): string; - public getOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'enableBold' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell'): boolean; + public getOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell'): boolean; public getOption(key: 'colors'): string[]; public getOption(key: 'cols' | 'fontSize' | 'letterSpacing' | 'lineHeight' | 'rows' | 'tabStopWidth' | 'scrollback'): number; public getOption(key: 'handler'): (data: string) => void; @@ -161,7 +161,7 @@ export class Terminal implements ITerminalApi { public setOption(key: 'fontWeight' | 'fontWeightBold', value: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'): void; public setOption(key: 'bellStyle', value: 'none' | 'visual' | 'sound' | 'both'): void; public setOption(key: 'cursorStyle', value: 'block' | 'underline' | 'bar'): void; - public setOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'enableBold' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell', value: boolean): void; + public setOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell', value: boolean): void; public setOption(key: 'colors', value: string[]): void; public setOption(key: 'fontSize' | 'letterSpacing' | 'lineHeight' | 'tabStopWidth' | 'scrollback', value: number): void; public setOption(key: 'handler', value: (data: string) => void): void; diff --git a/src/renderer/BaseRenderLayer.ts b/src/renderer/BaseRenderLayer.ts index c59a4f24..023443d0 100644 --- a/src/renderer/BaseRenderLayer.ts +++ b/src/renderer/BaseRenderLayer.ts @@ -288,7 +288,7 @@ export abstract class BaseRenderLayer implements IRenderLayer { this._currentGlyphIdentifier.code = cell.getCode() || WHITESPACE_CELL_CODE; this._currentGlyphIdentifier.bg = bg; this._currentGlyphIdentifier.fg = fg; - this._currentGlyphIdentifier.bold = cell.isBold() && terminal.options.enableBold; + this._currentGlyphIdentifier.bold = !!cell.isBold(); this._currentGlyphIdentifier.dim = !!cell.isDim(); this._currentGlyphIdentifier.italic = !!cell.isItalic(); const atlasDidDraw = this._charAtlas && this._charAtlas.draw( @@ -316,7 +316,7 @@ export abstract class BaseRenderLayer implements IRenderLayer { */ private _drawUncachedChars(terminal: ITerminal, cell: ICellData, x: number, y: number): void { this._ctx.save(); - this._ctx.font = this._getFont(terminal, cell.isBold() && terminal.options.enableBold, !!cell.isItalic()); + this._ctx.font = this._getFont(terminal, !!cell.isBold(), !!cell.isItalic()); this._ctx.textBaseline = 'middle'; if (cell.isInverse()) { diff --git a/src/renderer/dom/DomRendererRowFactory.test.ts b/src/renderer/dom/DomRendererRowFactory.test.ts index 5747eeb2..e3b26e5d 100644 --- a/src/renderer/dom/DomRendererRowFactory.test.ts +++ b/src/renderer/dom/DomRendererRowFactory.test.ts @@ -19,7 +19,6 @@ describe('DomRendererRowFactory', () => { beforeEach(() => { dom = new jsdom.JSDOM(''); - options.enableBold = true; options.drawBoldTextInBrightColors = true; rowFactory = new DomRendererRowFactory(options, dom.window.document); diff --git a/src/renderer/dom/DomRendererRowFactory.ts b/src/renderer/dom/DomRendererRowFactory.ts index 85ef586e..d3685923 100644 --- a/src/renderer/dom/DomRendererRowFactory.ts +++ b/src/renderer/dom/DomRendererRowFactory.ts @@ -77,7 +77,7 @@ export class DomRendererRowFactory { } } - if (this._workCell.isBold() && this._terminalOptions.enableBold) { + if (this._workCell.isBold()) { charElement.classList.add(BOLD_CLASS); } @@ -104,8 +104,7 @@ export class DomRendererRowFactory { charElement.setAttribute('style', style); } else if (this._workCell.isFgPalette()) { let fg = this._workCell.getFgColor(); - if (this._workCell.isBold() && fg < 8 && !swapColor && - this._terminalOptions.enableBold && this._terminalOptions.drawBoldTextInBrightColors) { + if (this._workCell.isBold() && fg < 8 && !swapColor && this._terminalOptions.drawBoldTextInBrightColors) { fg += 8; } charElement.classList.add(`xterm-${swapColor ? 'b' : 'f'}g-${fg}`); diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 097fd2d2..9e827618 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -76,13 +76,6 @@ declare module 'xterm' { */ drawBoldTextInBrightColors?: boolean; - /** - * Whether to enable the rendering of bold text. - * - * @deprecated Use fontWeight and fontWeightBold instead. - */ - enableBold?: boolean; - /** * What character atlas implementation to use. The character atlas caches drawn characters, * speeding up rendering significantly. However, it can introduce some minor rendering @@ -775,7 +768,7 @@ declare module 'xterm' { * Retrieves an option's value from the terminal. * @param key The option key. */ - getOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'enableBold' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell' | 'windowsMode'): boolean; + getOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'screenKeys' | 'useFlowControl' | 'visualBell' | 'windowsMode'): boolean; /** * Retrieves an option's value from the terminal. * @param key The option key. @@ -826,7 +819,7 @@ declare module 'xterm' { * @param key The option key. * @param value The option value. */ - setOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'enableBold' | 'macOptionIsMeta' | 'popOnBell' | 'rightClickSelectsWord' | 'screenKeys' | 'useFlowControl' | 'visualBell' | 'windowsMode', value: boolean): void; + setOption(key: 'allowTransparency' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'debug' | 'disableStdin' | 'macOptionIsMeta' | 'popOnBell' | 'rightClickSelectsWord' | 'screenKeys' | 'useFlowControl' | 'visualBell' | 'windowsMode', value: boolean): void; /** * Sets an option on the terminal. * @param key The option key. From f8c311b59f5313d207bb1b90ced97e5a0082ca71 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 11:06:41 -0700 Subject: [PATCH 4/5] Build sourcemaps in lib Fixes #2158 --- webpack.config.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/webpack.config.js b/webpack.config.js index d62cba20..5e0a2754 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,6 +13,17 @@ const path = require('path'); */ module.exports = { entry: './out/public/Terminal.js', + devtool: 'source-map', + module: { + rules: [ + { + test: /\.js$/, + use: ["source-map-loader"], + enforce: "pre", + exclude: /node_modules/ + } + ] + }, resolve: { modules: ['./node_modules'], extensions: [ '.js' ], From cdaf9d6f63f4cabf25e6b8c6ab4f2945abab800b Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 31 May 2019 11:11:11 -0700 Subject: [PATCH 5/5] Remove webpack config and out from package Part of #2152 --- .npmignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.npmignore b/.npmignore index 5f10c1c7..1b9f6b62 100644 --- a/.npmignore +++ b/.npmignore @@ -39,6 +39,7 @@ *.test.js.map lib/test/ tslint.json +webpack.config.js docs/ /.idea/ @@ -48,3 +49,4 @@ build/ fixtures/ demo/ .devcontainer/ +out/