diff --git a/.gitignore b/.gitignore index f9811493..8e28c797 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ npm-debug.log build/ .vscode/ .DS_Store +fixtures/typings-test/*.js # Directories needed for code coverage /coverage/ diff --git a/fixtures/typings-test/tsconfig.json b/fixtures/typings-test/tsconfig.json new file mode 100644 index 00000000..2f78a6d0 --- /dev/null +++ b/fixtures/typings-test/tsconfig.json @@ -0,0 +1,9 @@ +{ + "files": [ + "typing-tests.ts" + ], + "compilerOptions": { + "module": "commonjs", + "target": "es5" + } +} diff --git a/fixtures/typings-test/typing-tests.ts b/fixtures/typings-test/typing-tests.ts new file mode 100644 index 00000000..dd686d91 --- /dev/null +++ b/fixtures/typings-test/typing-tests.ts @@ -0,0 +1,23 @@ +/// + +import { Terminal } from 'xterm'; + +namespace constructor_tests { + { + new Terminal(); + new Terminal({}); + new Terminal({ + cols: 1, + rows: 1 + }); + new Terminal({ + 'cols': 1, + 'cursorBlink': true, + 'cursorStyle': 'block', + 'disableStdin': false, + 'rows': 1, + 'scrollback': 10, + 'tabStopWidth': 2, + }); + } +} diff --git a/src/Terminal.integration.ts b/src/Terminal.integration.ts index 2155d0e0..d5c014d8 100644 --- a/src/Terminal.integration.ts +++ b/src/Terminal.integration.ts @@ -4,11 +4,13 @@ * This file contains integration tests for xterm.js. */ +import * as cp from 'child_process'; import * as glob from 'glob'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; import * as pty from 'node-pty'; +import { assert } from 'chai'; import { Terminal } from './Terminal'; import { CHAR_DATA_CHAR_INDEX } from './Buffer'; @@ -143,3 +145,12 @@ if (os.platform() !== 'win32') { } }); } + +describe('typings', () => { + it('should throw no compile errors', () => { + let result = cp.spawnSync(path.join(__dirname, '..', 'node_modules', '.bin', 'tsc'), { + cwd: path.join(__dirname, '..', 'fixtures', 'typings-test') + }); + assert.equal(result.status, 0, `build did not succeed:\nstdout: ${result.stdout.toString()}\nstderr: ${result.stderr.toString()}\n`); + }); +}); diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 152c2cd9..b503ec2d 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -181,19 +181,19 @@ declare module 'xterm' { * propogation and/or prevent the default action. The function returns * whether the event should be processed by xterm.js. */ - attachCustomKeyEventHandler(customKeyEventHandler: (event: KeyboardEvent) => boolean); + attachCustomKeyEventHandler(customKeyEventHandler: (event: KeyboardEvent) => boolean): void; - /** - * (EXPERIMENTAL) Registers a link matcher, allowing custom link patterns to - * be matched and handled. - * @param regex The regular expression to search for, specifically this - * searches the textContent of the rows. You will want to use \s to match a - * space ' ' character for example. - * @param handler The callback when the link is called. - * @param options Options for the link matcher. - * @return The ID of the new matcher, this can be used to deregister. - */ - registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => boolean | void , options?: any); + /** + * (EXPERIMENTAL) Registers a link matcher, allowing custom link patterns to + * be matched and handled. + * @param regex The regular expression to search for, specifically this + * searches the textContent of the rows. You will want to use \s to match a + * space ' ' character for example. + * @param handler The callback when the link is called. + * @param options Options for the link matcher. + * @return The ID of the new matcher, this can be used to deregister. + */ + registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => boolean | void , options?: any): number; /** * (EXPERIMENTAL) Deregisters a link matcher if it has been registered.