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();