diff --git a/.eslintrc.js b/.eslintrc.js index 2c7f2ed1b4..2023207f74 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -22,14 +22,7 @@ module.exports = { 'arrow-spacing': 2, 'no-inner-declarations': 0, 'require-atomic-updates': 'off', - '@typescript-eslint/indent': [ - 'error', - 'tab', - { - SwitchCase: 1, - ignoredNodes: ['TemplateLiteral'] - } - ], + '@typescript-eslint/indent': 'off', '@typescript-eslint/camelcase': 'off', '@typescript-eslint/no-use-before-define': 'off', '@typescript-eslint/array-type': ['error', 'array-simple'], diff --git a/src/compiler/compile/Component.ts b/src/compiler/compile/Component.ts index 678f79f3c9..032358b151 100644 --- a/src/compiler/compile/Component.ts +++ b/src/compiler/compile/Component.ts @@ -71,8 +71,8 @@ export default class Component { hoistable_nodes: Set = new Set(); node_for_declaration: Map = new Map(); - partly_hoisted: (Node | Node[])[] = []; - fully_hoisted: (Node | Node[])[] = []; + partly_hoisted: Array<(Node | Node[])> = []; + fully_hoisted: Array<(Node | Node[])> = []; reactive_declarations: Array<{ assignees: Set; dependencies: Set; diff --git a/src/compiler/compile/create_module.ts b/src/compiler/compile/create_module.ts index 5f2f0cebfd..df85c276ea 100644 --- a/src/compiler/compile/create_module.ts +++ b/src/compiler/compile/create_module.ts @@ -62,7 +62,7 @@ function esm( imported: { type: 'Identifier', name: h.name } })), source: { type: 'Literal', value: internal_path } - } + }; const internal_globals = globals.length > 0 && { type: 'VariableDeclaration', diff --git a/src/compiler/compile/css/interfaces.ts b/src/compiler/compile/css/interfaces.ts index 64dd8b3374..103bc18d79 100644 --- a/src/compiler/compile/css/interfaces.ts +++ b/src/compiler/compile/css/interfaces.ts @@ -1,4 +1,4 @@ -export type CssNode = { +export interface CssNode { type: string; start: number; end: number; diff --git a/src/compiler/compile/nodes/EachBlock.ts b/src/compiler/compile/nodes/EachBlock.ts index 70b3340ce5..85da0a2210 100644 --- a/src/compiler/compile/nodes/EachBlock.ts +++ b/src/compiler/compile/nodes/EachBlock.ts @@ -37,7 +37,7 @@ function unpack_destructuring(contexts: Context[], node: Node, modifier: (node: const replacement: RestElement = { type: 'RestElement', argument: property.key as Identifier - } + }; node.properties[i] = replacement; diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index 24753ee40b..99d063a98d 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -32,7 +32,7 @@ export default class Expression { // TODO apparently unnecessary? // is_synthetic: boolean; - declarations: (Node | Node[])[] = []; + declarations: Array<(Node | Node[])> = []; uses_context = false; manipulated: Node; diff --git a/src/compiler/compile/render_dom/Block.ts b/src/compiler/compile/render_dom/Block.ts index 60044ab037..7e25cd0f56 100644 --- a/src/compiler/compile/render_dom/Block.ts +++ b/src/compiler/compile/render_dom/Block.ts @@ -44,18 +44,18 @@ export default class Block { }>; chunks: { - init: (Node | Node[])[]; - create: (Node | Node[])[]; - claim: (Node | Node[])[]; - hydrate: (Node | Node[])[]; - mount: (Node | Node[])[]; - measure: (Node | Node[])[]; - fix: (Node | Node[])[]; - animate: (Node | Node[])[]; - intro: (Node | Node[])[]; - update: (Node | Node[])[]; - outro: (Node | Node[])[]; - destroy: (Node | Node[])[]; + init: Array; + create: Array; + claim: Array; + hydrate: Array; + mount: Array; + measure: Array; + fix: Array; + animate: Array; + intro: Array; + update: Array; + outro: Array; + destroy: Array; }; event_listeners: Node[] = []; @@ -69,7 +69,7 @@ export default class Block { outros: number; aliases: Map; - variables: Map = new Map(); + variables: Map = new Map(); get_unique_name: (name: string) => Identifier; has_update_method = false; @@ -249,7 +249,7 @@ export default class Block { const noop = x`@noop`; - properties.key = key + properties.key = key; if (this.first) { properties.first = x`null`; diff --git a/src/compiler/compile/render_dom/Renderer.ts b/src/compiler/compile/render_dom/Renderer.ts index cf148df304..624886c2c7 100644 --- a/src/compiler/compile/render_dom/Renderer.ts +++ b/src/compiler/compile/render_dom/Renderer.ts @@ -11,7 +11,7 @@ export default class Renderer { blocks: Array = []; readonly: Set = new Set(); - meta_bindings: (Node | Node[])[] = []; // initial values for e.g. window.innerWidth, if there's a meta tag + meta_bindings: Array = []; // initial values for e.g. window.innerWidth, if there's a meta tag binding_groups: string[] = []; block: Block; diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 0d8a29d63b..4dbe5bb059 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -475,7 +475,7 @@ export default function dom( value: x`function() { return [${props.map(prop => x`"${prop.export_name}"`)}]; }` as FunctionExpression - }) + }); } declaration.body.body.push(...accessors); diff --git a/src/compiler/compile/render_dom/wrappers/AwaitBlock.ts b/src/compiler/compile/render_dom/wrappers/AwaitBlock.ts index 0a4262181e..0497ca5d56 100644 --- a/src/compiler/compile/render_dom/wrappers/AwaitBlock.ts +++ b/src/compiler/compile/render_dom/wrappers/AwaitBlock.ts @@ -188,7 +188,7 @@ export default class AwaitBlockWrapper extends Wrapper { const dependencies = this.node.expression.dynamic_dependencies(); if (dependencies.length > 0) { - let condition = x` + const condition = x` ${changed(dependencies)} && ${promise} !== (${promise} = ${snippet}) && @handle_promise(${promise}, ${info})`; diff --git a/src/compiler/compile/render_dom/wrappers/EachBlock.ts b/src/compiler/compile/render_dom/wrappers/EachBlock.ts index 33968c762a..5c8d193f56 100644 --- a/src/compiler/compile/render_dom/wrappers/EachBlock.ts +++ b/src/compiler/compile/render_dom/wrappers/EachBlock.ts @@ -61,7 +61,7 @@ export default class EachBlockWrapper extends Wrapper { view_length: string; } - context_props: (Node | Node[])[]; + context_props: Array; index_name: Identifier; var: Identifier = { type: 'Identifier', name: 'each' }; diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index 77f0a6d92d..876be588d6 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -84,7 +84,7 @@ export default class AttributeWrapper { } else { value = this.node.name === 'class' ? this.get_class_name_text() - : this.render_chunks().reduce((lhs, rhs) => x`${lhs} + ${rhs}`) + : this.render_chunks().reduce((lhs, rhs) => x`${lhs} + ${rhs}`); // '{foo} {bar}' — treat as string concatenation if (this.node.chunks[0].type !== 'Text') { diff --git a/src/compiler/compile/render_dom/wrappers/Element/Binding.ts b/src/compiler/compile/render_dom/wrappers/Element/Binding.ts index e9fc9a87ef..d0baf4aa4a 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Binding.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Binding.ts @@ -267,7 +267,7 @@ function get_event_handler( } } - let mutation = b` + const mutation = b` ${lhs} = ${value}; ${set_store} `; diff --git a/src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts b/src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts index b4198ed298..c60a89f66f 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts @@ -38,7 +38,7 @@ export default class StyleAttributeWrapper extends AttributeWrapper { return chunk.manipulate(block); } }) - .reduce((lhs, rhs) => x`${lhs} + ${rhs}`) + .reduce((lhs, rhs) => x`${lhs} + ${rhs}`); // TODO is this necessary? style.setProperty always treats value as string, no? // if (prop.value.length === 1 || prop.value[0].type !== 'Text') { diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts index a33e88f95f..1744b5af12 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/index.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts @@ -310,7 +310,7 @@ export default class ElementWrapper extends Wrapper { quasis: [] }; - to_html((this.fragment.nodes as unknown as (ElementWrapper | TextWrapper)[]), block, literal, state); + to_html((this.fragment.nodes as unknown as Array), block, literal, state); literal.quasis.push(state.quasi); block.chunks.create.push( @@ -832,7 +832,7 @@ export default class ElementWrapper extends Wrapper { } } -function to_html(wrappers: (ElementWrapper | TextWrapper)[], block: Block, literal: any, state: any) { +function to_html(wrappers: Array, block: Block, literal: any, state: any) { wrappers.forEach(wrapper => { if (wrapper.node.type === 'Text') { if ((wrapper as TextWrapper).use_space()) state.quasi.value.raw += ' '; @@ -866,7 +866,7 @@ function to_html(wrappers: (ElementWrapper | TextWrapper)[], block: Block, liter state.quasi.value.raw += chunk.data; } else { literal.quasis.push(state.quasi); - literal.expressions.push(chunk.manipulate(block)) + literal.expressions.push(chunk.manipulate(block)); state.quasi = { type: 'TemplateElement', @@ -881,7 +881,7 @@ function to_html(wrappers: (ElementWrapper | TextWrapper)[], block: Block, liter state.quasi.value.raw += '>'; if (!is_void(wrapper.node.name)) { - to_html((wrapper as ElementWrapper).fragment.nodes as (ElementWrapper | TextWrapper)[], block, literal, state); + to_html((wrapper as ElementWrapper).fragment.nodes as Array, block, literal, state); state.quasi.value.raw += ``; } diff --git a/src/compiler/compile/render_dom/wrappers/IfBlock.ts b/src/compiler/compile/render_dom/wrappers/IfBlock.ts index 261002df3b..c54994a36c 100644 --- a/src/compiler/compile/render_dom/wrappers/IfBlock.ts +++ b/src/compiler/compile/render_dom/wrappers/IfBlock.ts @@ -261,7 +261,7 @@ export default class IfBlockWrapper extends Wrapper { const current_block_type = block.get_unique_name(`current_block_type`); const get_block = has_else ? x`${current_block_type}(#ctx)` - : x`${current_block_type} && ${current_block_type}(#ctx)` + : x`${current_block_type} && ${current_block_type}(#ctx)`; /* eslint-disable @typescript-eslint/indent,indent */ if (this.needs_update) { diff --git a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts index 0de8066999..431affbcad 100644 --- a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts +++ b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts @@ -116,8 +116,8 @@ export default class InlineComponentWrapper extends Wrapper { const component_opts = x`{}` as ObjectExpression; - const statements: (Node | Node[])[] = []; - const updates: (Node | Node[])[] = []; + const statements: Array = []; + const updates: Array = []; let props; const name_changes = block.get_unique_name(`${name.name}_changes`); diff --git a/src/compiler/compile/render_dom/wrappers/shared/add_actions.ts b/src/compiler/compile/render_dom/wrappers/shared/add_actions.ts index 331a71708e..538bfc7a95 100644 --- a/src/compiler/compile/render_dom/wrappers/shared/add_actions.ts +++ b/src/compiler/compile/render_dom/wrappers/shared/add_actions.ts @@ -1,8 +1,7 @@ -import { b } from 'code-red'; +import { b, x } from 'code-red'; import Block from '../../Block'; import Action from '../../../nodes/Action'; import Component from '../../../Component'; -import { x } from 'code-red'; export default function add_actions( component: Component, diff --git a/src/compiler/compile/render_ssr/Renderer.ts b/src/compiler/compile/render_ssr/Renderer.ts index c8b2d14ff6..00a7ee2fb5 100644 --- a/src/compiler/compile/render_ssr/Renderer.ts +++ b/src/compiler/compile/render_ssr/Renderer.ts @@ -48,7 +48,7 @@ export default class Renderer { name: Identifier; - stack: { current: { value: string }, literal: TemplateLiteral }[] = []; + stack: Array<{ current: { value: string }; literal: TemplateLiteral }> = []; current: { value: string }; // TODO can it just be `current: string`? literal: TemplateLiteral; @@ -59,17 +59,6 @@ export default class Renderer { this.push(); } - append() { - throw new Error('no more append'); - // if (this.targets.length) { - // const target = this.targets[this.targets.length - 1]; - // const slot_name = target.slot_stack[target.slot_stack.length - 1]; - // target.slots[slot_name] += code; - // } else { - // this.code += code; - // } - } - add_string(str: string) { this.current.value += escape_template(str); } @@ -94,7 +83,7 @@ export default class Renderer { quasis: [] }; - this.stack.push({ current, literal }) + this.stack.push({ current, literal }); } pop() { diff --git a/src/compiler/compile/utils/get_slot_data.ts b/src/compiler/compile/utils/get_slot_data.ts index 18df4e3118..c81dc83c92 100644 --- a/src/compiler/compile/utils/get_slot_data.ts +++ b/src/compiler/compile/utils/get_slot_data.ts @@ -11,7 +11,7 @@ export default function get_slot_data(values: Map, is_ssr: bo const value = get_value(attribute); return p`${attribute.name}: ${value}`; }) - } + }; } // TODO fairly sure this is duplicated at least once diff --git a/src/compiler/interfaces.ts b/src/compiler/interfaces.ts index 5d3acda67b..1e0028e8aa 100644 --- a/src/compiler/interfaces.ts +++ b/src/compiler/interfaces.ts @@ -67,7 +67,7 @@ export interface Parser { } export interface Script extends BaseNode { - type: 'Script', + type: 'Script'; context: string; content: Program; } @@ -80,7 +80,7 @@ export interface Style extends BaseNode { start: number; end: number; styles: string; - } + }; } export interface Ast { diff --git a/src/compiler/parse/read/script.ts b/src/compiler/parse/read/script.ts index ed427d6551..efc9306677 100644 --- a/src/compiler/parse/read/script.ts +++ b/src/compiler/parse/read/script.ts @@ -29,7 +29,7 @@ function get_context(parser: Parser, attributes: any[], start: number): string { return value; } -export default function read_script(parser: Parser, start: number, attributes: Node[]) : Script { +export default function read_script(parser: Parser, start: number, attributes: Node[]): Script { const script_start = parser.index; const script_end = parser.template.indexOf(script_closing_tag, script_start); diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index dca2301203..880c866ffe 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -37,8 +37,8 @@ const specials = new Map([ ], ]); -const SELF = /^svelte:self(?=[\s\/>])/; -const COMPONENT = /^svelte:component(?=[\s\/>])/; +const SELF = /^svelte:self(?=[\s/>])/; +const COMPONENT = /^svelte:component(?=[\s/>])/; function parent_is_head(stack) { let i = stack.length;