diff --git a/extensions/html/client/src/htmlMain.ts b/extensions/html/client/src/htmlMain.ts index db3d12b2f3a..15911915194 100644 --- a/extensions/html/client/src/htmlMain.ts +++ b/extensions/html/client/src/htmlMain.ts @@ -32,7 +32,7 @@ export function activate(context: ExtensionContext) { let toDispose = context.subscriptions; let packageInfo = getPackageInfo(context); - let telemetryReporter: TelemetryReporter = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); + let telemetryReporter: TelemetryReporter | null = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); if (telemetryReporter) { toDispose.push(telemetryReporter); } @@ -166,7 +166,7 @@ export function activate(context: ExtensionContext) { }); } -function getPackageInfo(context: ExtensionContext): IPackageInfo { +function getPackageInfo(context: ExtensionContext): IPackageInfo | null { let extensionPackage = require(context.asAbsolutePath('./package.json')); if (extensionPackage) { return { diff --git a/extensions/html/client/src/tagClosing.ts b/extensions/html/client/src/tagClosing.ts index e48a37adf02..174cd460c2c 100644 --- a/extensions/html/client/src/tagClosing.ts +++ b/extensions/html/client/src/tagClosing.ts @@ -15,7 +15,7 @@ export function activateTagClosing(tagProvider: (document: TextDocument, positio updateEnabledState(); window.onDidChangeActiveTextEditor(updateEnabledState, null, disposables); - let timeout: NodeJS.Timer = void 0; + let timeout: NodeJS.Timer | undefined = void 0; function updateEnabledState() { isEnabled = false; @@ -56,13 +56,15 @@ export function activateTagClosing(tagProvider: (document: TextDocument, positio tagProvider(document, position).then(text => { if (text && isEnabled) { let activeEditor = window.activeTextEditor; - let activeDocument = activeEditor && activeEditor.document; - if (document === activeDocument && activeDocument.version === version) { - let selections = activeEditor.selections; - if (selections.length && selections.some(s => s.active.isEqual(position))) { - activeEditor.insertSnippet(new SnippetString(text), selections.map(s => s.active)); - } else { - activeEditor.insertSnippet(new SnippetString(text), position); + if (activeEditor) { + let activeDocument = activeEditor.document; + if (document === activeDocument && activeDocument.version === version) { + let selections = activeEditor.selections; + if (selections.length && selections.some(s => s.active.isEqual(position))) { + activeEditor.insertSnippet(new SnippetString(text), selections.map(s => s.active)); + } else { + activeEditor.insertSnippet(new SnippetString(text), position); + } } } } diff --git a/extensions/html/client/src/typings/color-convert.d.ts b/extensions/html/client/src/typings/color-convert.d.ts deleted file mode 100644 index a88de674d2d..00000000000 --- a/extensions/html/client/src/typings/color-convert.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare module "color-convert" { - module convert { - module rgb { - function hex(r: number, g: number, b: number); - function hsl(r: number, g: number, b: number); - function hvs(r: number, g: number, b: number); - } - } - - export = convert; -} \ No newline at end of file diff --git a/extensions/html/client/tsconfig.json b/extensions/html/client/tsconfig.json index 31c07df105b..54b6bee6a2a 100644 --- a/extensions/html/client/tsconfig.json +++ b/extensions/html/client/tsconfig.json @@ -5,6 +5,7 @@ "outDir": "./out", "lib": [ "es5", "es2015.promise" - ] + ], + "strict": true } } \ No newline at end of file diff --git a/extensions/html/server/src/modes/embeddedSupport.ts b/extensions/html/server/src/modes/embeddedSupport.ts index 25244863c44..3b524c7c93a 100644 --- a/extensions/html/server/src/modes/embeddedSupport.ts +++ b/extensions/html/server/src/modes/embeddedSupport.ts @@ -29,9 +29,9 @@ export function getDocumentRegions(languageService: LanguageService, document: T let regions: EmbeddedRegion[] = []; let scanner = languageService.createScanner(document.getText()); let lastTagName: string; - let lastAttributeName: string; - let languageIdFromType: string; - let importedScripts = []; + let lastAttributeName: string | null; + let languageIdFromType: string | undefined = undefined; + let importedScripts: string[] = []; let token = scanner.scan(); while (token !== TokenType.EOS) { @@ -224,7 +224,7 @@ function append(result: string, str: string, n: number): string { return result; } -function getAttributeLanguage(attributeName: string): string { +function getAttributeLanguage(attributeName: string): string | null { let match = attributeName.match(/^(style)$|^(on\w+)$/i); if (!match) { return null; diff --git a/extensions/html/server/src/modes/htmlMode.ts b/extensions/html/server/src/modes/htmlMode.ts index 38a2abc2367..f3cdab8ee11 100644 --- a/extensions/html/server/src/modes/htmlMode.ts +++ b/extensions/html/server/src/modes/htmlMode.ts @@ -60,7 +60,6 @@ export function getHTMLMode(htmlLanguageService: HTMLLanguageService): LanguageM if (offset > 0 && text.charAt(offset - 1).match(/[>\/]/g)) { return htmlLanguageService.doTagComplete(document, position, htmlDocuments.get(document)); } - return null; }, onDocumentRemoved(document: TextDocument) { htmlDocuments.onDocumentRemoved(document); diff --git a/extensions/html/server/src/modes/javascriptMode.ts b/extensions/html/server/src/modes/javascriptMode.ts index aad698e91c7..1a53634afbb 100644 --- a/extensions/html/server/src/modes/javascriptMode.ts +++ b/extensions/html/server/src/modes/javascriptMode.ts @@ -73,7 +73,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache { + return syntaxDiagnostics.concat(semanticDiagnostics).map((diag: ts.Diagnostic): Diagnostic => { return { range: convertRange(currentTextDocument, diag), severity: DiagnosticSeverity.Error, @@ -143,7 +143,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache { let sig = item.text + item.kind + item.spans[0].start; if (item.kind !== 'script' && !existing[sig]) { @@ -288,9 +288,13 @@ export function getJavascriptMode(documentRegions: LanguageModelCache void; doValidation?: (document: TextDocument, settings?: Settings) => Diagnostic[]; doComplete?: (document: TextDocument, position: Position, settings?: Settings) => CompletionList; @@ -74,7 +74,7 @@ export function getLanguageModes(supportedLanguages: { [languageId: string]: boo let modelCaches: LanguageModelCache[] = []; modelCaches.push(documentRegions); - let modes = {}; + let modes = Object.create(null); modes['html'] = getHTMLMode(htmlLanguageService); if (supportedLanguages['css']) { modes['css'] = getCSSMode(documentRegions); diff --git a/extensions/html/server/src/test/javascriptMode.test.ts b/extensions/html/server/src/test/javascriptMode.test.ts index c5d44e88cae..95a2fb7fbd7 100644 --- a/extensions/html/server/src/test/javascriptMode.test.ts +++ b/extensions/html/server/src/test/javascriptMode.test.ts @@ -27,7 +27,7 @@ suite('HTML Javascript Support', () => { var mode = getJavascriptMode(documentRegions); let position = document.positionAt(offset); - let list = mode.doComplete(document, position); + let list = mode.doComplete!(document, position); assert.ok(list); let actualLabels = list.items.map(c => c.label).sort();