From 4e4ef173d6baae7881573440ce6dc4fb554bd174 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 22 Nov 2017 22:37:49 -0500 Subject: [PATCH] fix various TS complaints --- src/config.ts | 1 + src/css/Stylesheet.ts | 2 +- src/generators/Generator.ts | 3 +-- src/generators/dom/Block.ts | 2 +- src/generators/dom/index.ts | 10 ++++------ src/generators/dom/visitors/Element/meta/Window.ts | 2 +- .../server-side-rendering/visitors/EachBlock.ts | 2 +- src/interfaces.ts | 2 +- src/parse/index.ts | 6 ++++-- tsconfig.json | 1 - 10 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 src/config.ts diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000000..e37ef1aaee --- /dev/null +++ b/src/config.ts @@ -0,0 +1 @@ +export const test = typeof process !== 'undefined' && process.env.TEST; \ No newline at end of file diff --git a/src/css/Stylesheet.ts b/src/css/Stylesheet.ts index c10f1938c6..cb83804f1d 100644 --- a/src/css/Stylesheet.ts +++ b/src/css/Stylesheet.ts @@ -322,7 +322,7 @@ export default class Stylesheet { leave: (node: Node) => { if (node.type === 'Rule' || node.type === 'Atrule') stack.pop(); - if (node.type === 'Atrule') currentAtrule = stack[stack.length - 1]; + if (node.type === 'Atrule') currentAtrule = stack[stack.length - 1]; } }); } else { diff --git a/src/generators/Generator.ts b/src/generators/Generator.ts index c57cee27c3..a8775d41b2 100644 --- a/src/generators/Generator.ts +++ b/src/generators/Generator.ts @@ -16,10 +16,9 @@ import clone from '../utils/clone'; import DomBlock from './dom/Block'; import SsrBlock from './server-side-rendering/Block'; import Stylesheet from '../css/Stylesheet'; +import { test } from '../config'; import { Node, GenerateOptions, Parsed, CompileOptions, CustomElementOptions } from '../interfaces'; -const test = typeof global !== 'undefined' && global.__svelte_test; - interface Computation { key: string; deps: string[] diff --git a/src/generators/dom/Block.ts b/src/generators/dom/Block.ts index e2d3ed7a55..51ce51c29f 100644 --- a/src/generators/dom/Block.ts +++ b/src/generators/dom/Block.ts @@ -202,7 +202,7 @@ export default class Block { } // minor hack – we need to ensure that any {{{triples}}} are detached first - this.builders.unmount.addBlockAtStart(this.builders.detachRaw); + this.builders.unmount.addBlockAtStart(this.builders.detachRaw.toString()); const properties = new CodeBuilder(); diff --git a/src/generators/dom/index.ts b/src/generators/dom/index.ts index 1cbf6132cf..c33ea0d520 100644 --- a/src/generators/dom/index.ts +++ b/src/generators/dom/index.ts @@ -14,11 +14,9 @@ import Generator from '../Generator'; import Stylesheet from '../../css/Stylesheet'; import preprocess from './preprocess'; import Block from './Block'; -import { version } from '../../../package.json'; +import { test } from '../../config'; import { Parsed, CompileOptions, Node } from '../../interfaces'; -const test = typeof global !== 'undefined' && global.__svelte_test; - export class DomGenerator extends Generator { blocks: (Block|string)[]; readonly: Set; @@ -167,9 +165,9 @@ export default function dom( builder.addBlock(block.toString()); }); - const sharedPath = options.shared === true + const sharedPath: string = options.shared === true ? 'svelte/shared.js' - : options.shared; + : options.shared || ''; const prototypeBase = `${name}.prototype` + @@ -444,7 +442,7 @@ export default function dom( ); return generator.generate(result, options, { - banner: `/* ${filename ? `${filename} ` : ``}generated by Svelte v${version} */`, + banner: `/* ${filename ? `${filename} ` : ``}generated by Svelte v__VERSION__ */`, sharedPath, helpers, name, diff --git a/src/generators/dom/visitors/Element/meta/Window.ts b/src/generators/dom/visitors/Element/meta/Window.ts index ad23da6060..90bfff55c4 100644 --- a/src/generators/dom/visitors/Element/meta/Window.ts +++ b/src/generators/dom/visitors/Element/meta/Window.ts @@ -28,7 +28,7 @@ export default function visitWindow( node: Node ) { const events = {}; - const bindings = {}; + const bindings: Record = {}; node.attributes.forEach((attribute: Node) => { if (attribute.type === 'EventHandler') { diff --git a/src/generators/server-side-rendering/visitors/EachBlock.ts b/src/generators/server-side-rendering/visitors/EachBlock.ts index ae5c449b5a..59bd5fed0b 100644 --- a/src/generators/server-side-rendering/visitors/EachBlock.ts +++ b/src/generators/server-side-rendering/visitors/EachBlock.ts @@ -26,7 +26,7 @@ export default function visitEachBlock( contextDependencies.set(node.context, dependencies); if (node.destructuredContexts) { - for (const i = 0; i < node.destructuredContexts.length; i++) { + for (let i = 0; i < node.destructuredContexts.length; i += 1) { contexts.set(node.destructuredContexts[i], `${node.context}[${i}]`); contextDependencies.set(node.destructuredContexts[i], dependencies); } diff --git a/src/interfaces.ts b/src/interfaces.ts index 2d876c6a9a..fff52e8da4 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -65,7 +65,7 @@ export interface GenerateOptions { name: string; format: ModuleFormat; banner?: string; - sharedPath?: string | boolean; + sharedPath?: string; helpers?: { name: string, alias: string }[]; } diff --git a/src/parse/index.ts b/src/parse/index.ts index b9748515e5..c725ab90c3 100644 --- a/src/parse/index.ts +++ b/src/parse/index.ts @@ -23,6 +23,8 @@ interface ParserOptions { filename?: string; } +type ParserState = (parser: Parser) => (ParserState | void); + export class Parser { readonly template: string; readonly filename?: string; @@ -59,7 +61,7 @@ export class Parser { this.stack.push(this.html); - let state = fragment; + let state: ParserState = fragment; while (this.index < this.template.length) { state = state(this) || fragment; @@ -94,7 +96,7 @@ export class Parser { return this.stack[this.stack.length - 1]; } - acornError(err: Error) { + acornError(err: any) { this.error(err.message.replace(/ \(\d+:\d+\)$/, ''), err.pos); } diff --git a/tsconfig.json b/tsconfig.json index 3c77c23370..8dc5a51c1d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "noImplicitAny": true, "diagnostics": true, "noImplicitThis": true, "noEmitOnError": true,