Enable strict mode

This commit is contained in:
Matt Bierner 2018-03-05 11:13:23 -08:00
parent c43fe75976
commit dc0d6badd3
5 changed files with 27 additions and 16 deletions

View file

@ -10,7 +10,7 @@ import { postCommand, postMessage } from './messaging';
function throttle(fn: (x: any) => any, threshhold: any, scope?: any) {
threshhold = threshhold || (threshhold = 250);
var last: any, deferTimer: any;
return function (...x: any[]) {
return function (this: any, ...x: any[]) {
var context = scope || this;
var now = +new Date,
@ -71,7 +71,7 @@ function getElementsForSourceLine(targetLine: number): { previous: CodeLineEleme
let previous = lines[0] || null;
for (const entry of lines) {
if (entry.line === lineNumber) {
return { previous: entry, next: null };
return { previous: entry, next: undefined };
}
else if (entry.line > lineNumber) {
return { previous, next: entry };
@ -163,14 +163,14 @@ class ActiveLineMarker {
this._current = before;
}
_unmarkActiveElement(element: HTMLElement) {
_unmarkActiveElement(element: HTMLElement | undefined) {
if (!element) {
return;
}
element.className = element.className.replace(/\bcode-active-line\b/g, '');
}
_markActiveElement(element: HTMLElement) {
_markActiveElement(element: HTMLElement | undefined) {
if (!element) {
return;
}
@ -250,7 +250,7 @@ document.addEventListener('dblclick', event => {
const offset = event.pageY;
const line = getEditorLineNumberForPageOffset(offset);
if (!isNaN(line)) {
if (typeof line === 'number' && !isNaN(line)) {
postMessage('didClick', { line });
}
});
@ -260,8 +260,6 @@ document.addEventListener('click', event => {
return;
}
const baseElement = document.getElementsByTagName('base')[0];
let node: any = event.target;
while (node) {
if (node.tagName && node.tagName === 'A' && node.href) {
@ -287,7 +285,7 @@ if (settings.scrollEditorWithPreview) {
scrollDisabled = false;
} else {
const line = getEditorLineNumberForPageOffset(window.scrollY);
if (!isNaN(line)) {
if (typeof line === 'number' && !isNaN(line)) {
postMessage('revealLine', { line });
}
}

View file

@ -2,13 +2,10 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { getSettings } from './settings';
import { postCommand } from './messaging';
const unloadedStyles: string[] = [];
const settings = getSettings();
const onStyleLoadError = (event: any) => {
const source = event.target.dataset.source;
unloadedStyles.push(source);

View file

@ -7,12 +7,19 @@ export interface PreviewSettings {
source: string;
line: number;
lineCount: number;
scrollPreviewWithEditor: boolean;
scrollPreviewWithEditor?: boolean;
scrollEditorWithPreview: boolean;
disableSecurityWarnings: boolean;
doubleClickToSwitchToEditor: boolean;
}
export function getSettings(): PreviewSettings {
return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings'));
const element = document.getElementById('vscode-markdown-preview-data');
if (element) {
const data = element.getAttribute('data-settings');
if (data) {
return JSON.parse(data);
}
}
throw new Error('Could not load settings');
}

View file

@ -4,5 +4,12 @@
*--------------------------------------------------------------------------------------------*/
export function getStrings(): { [key: string]: string } {
return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings'));
const store = document.getElementById('vscode-markdown-preview-data');
if (store) {
const data = store.getAttribute('data-strings');
if (data) {
return JSON.parse(data);
}
}
throw new Error('Could not load strings');
}

View file

@ -1,10 +1,12 @@
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": true,
"module": "es6",
"target": "es6",
"jsx": "react",
"sourceMap": true
"sourceMap": true,
"strict": true,
"noImplicitAny": true,
"noUnusedLocals": true
}
}