Merge branch 'master' into silence-warnings

pull/6504/head
Simon H 5 years ago committed by GitHub
commit bf9e7a24cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

5
.github/stale.yml vendored

@ -8,6 +8,7 @@ exemptLabels:
- popular - popular
- pinned - pinned
- security - security
- bug
- "[Status] Maybe Later" - "[Status] Maybe Later"
# Set to true to ignore issues in a project (defaults to false) # Set to true to ignore issues in a project (defaults to false)
@ -31,7 +32,7 @@ limitPerRun: 30
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
pulls: pulls:
daysUntilStale: 180 daysUntilStale: 210
daysUntilClose: 25 daysUntilClose: 25
markComment: > markComment: >
This pull request has been automatically marked as stale because it has not had This pull request has been automatically marked as stale because it has not had
@ -41,7 +42,7 @@ pulls:
This pull request has been closed as it was previously marked as stale and saw no subsequent activity. This pull request has been closed as it was previously marked as stale and saw no subsequent activity.
issues: issues:
daysUntilStale: 90 daysUntilStale: 180
daysUntilClose: 14 daysUntilClose: 14
markComment: > markComment: >
This issue has been automatically marked as stale because it has not had This issue has been automatically marked as stale because it has not had

@ -9,37 +9,24 @@ jobs:
node-version: [8, 10, 12, 14] node-version: [8, 10, 12, 14]
os: [ubuntu-latest, windows-latest, macOS-latest] os: [ubuntu-latest, windows-latest, macOS-latest]
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
- id: npm-cache-dir cache: npm
run: echo "::set-output name=dir::$(npm config get cache)" - run: npm install
- uses: actions/cache@v2 - run: npm test
id: npm-cache env:
with: CI: true
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
- run: npm install
- run: npm test
env:
CI: true
Lint: Lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 5 timeout-minutes: 5
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
- id: npm-cache-dir with:
run: echo "::set-output name=dir::$(npm config get cache)" cache: npm
- uses: actions/cache@v2 - run: 'npm i && npm run lint'
id: npm-cache
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
- run: 'npm i && npm run lint'
Unit: Unit:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 10 timeout-minutes: 10
@ -47,14 +34,8 @@ jobs:
matrix: matrix:
os: [ubuntu-latest, windows-latest, macOS-latest] os: [ubuntu-latest, windows-latest, macOS-latest]
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
- id: npm-cache-dir with:
run: echo "::set-output name=dir::$(npm config get cache)" cache: npm
- uses: actions/cache@v2 - run: 'npm i && npm run test:unit'
id: npm-cache
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
- run: 'npm i && npm run test:unit'

@ -12,9 +12,14 @@
* Fix compiler error when using `:where()` inside `:global()` ([#6434](https://github.com/sveltejs/svelte/issues/6434)) * Fix compiler error when using `:where()` inside `:global()` ([#6434](https://github.com/sveltejs/svelte/issues/6434))
* Fix erroneous `unknown prop` warning when using slot on a component ([#6065](https://github.com/sveltejs/svelte/pull/6065)) * Fix erroneous `unknown prop` warning when using slot on a component ([#6065](https://github.com/sveltejs/svelte/pull/6065))
* Fix `:global()` with pseudo element not being seen as global ([#6470](https://github.com/sveltejs/svelte/pull/6470)) * Fix `:global()` with pseudo element not being seen as global ([#6470](https://github.com/sveltejs/svelte/pull/6470))
* Allow `:global()` to contain multiple selectors when it is not part of a larger selector ([#6477](https://github.com/sveltejs/svelte/issues/6477))
* Add a11y warning `a11y-mouse-events-have-key-events` which checks that `mouseover`/`mouseout` are accompanied by `focus`/`blur` event handlers ([#5938](https://github.com/sveltejs/svelte/pull/5938)) * Add a11y warning `a11y-mouse-events-have-key-events` which checks that `mouseover`/`mouseout` are accompanied by `focus`/`blur` event handlers ([#5938](https://github.com/sveltejs/svelte/pull/5938))
* Remove deprecated a11y warning `a11y-no-onchange warning` ([#6457](https://github.com/sveltejs/svelte/issues/6457)) * Remove deprecated a11y warning `a11y-no-onchange warning` ([#6457](https://github.com/sveltejs/svelte/issues/6457))
* Stop checking `a11y-media-has-caption` a11y warning on `<audio>` elements ([#6054](https://github.com/sveltejs/svelte/issues/6054)) * Stop checking `a11y-media-has-caption` a11y warning on `<audio>` elements ([#6054](https://github.com/sveltejs/svelte/issues/6054))
* Relax `derived` function signature ([#6178](https://github.com/sveltejs/svelte/issues/6178))
* Support `bind:group` in SSR ([#4621](https://github.com/sveltejs/svelte/pull/4621))
* Add sourcemaps to html elements ([#6427](https://github.com/sveltejs/svelte/pull/6427))
* Make `<script>` and `<style>` end tag parsing more robust ([#6511](https://github.com/sveltejs/svelte/pull/6511))
* Make it possible to silence more warnings ([#5954](https://github.com/sveltejs/svelte/issues/5954)) * Make it possible to silence more warnings ([#5954](https://github.com/sveltejs/svelte/issues/5954))
## 3.38.3 ## 3.38.3

59
package-lock.json generated

@ -479,9 +479,9 @@
"dev": true "dev": true
}, },
"acorn": { "acorn": {
"version": "7.4.0", "version": "8.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz",
"integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==",
"dev": true "dev": true
}, },
"acorn-globals": { "acorn-globals": {
@ -947,31 +947,32 @@
} }
}, },
"code-red": { "code-red": {
"version": "0.1.4", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/code-red/-/code-red-0.1.4.tgz", "resolved": "https://registry.npmjs.org/code-red/-/code-red-0.2.1.tgz",
"integrity": "sha512-NPiLFd1EfonYONCNXCH1oVirQMXk5oAOQ3FanRbjB4HZ09rTU/lZGKjVOOP0FKr4pccGVYE5I4CqtyU6ens2VA==", "integrity": "sha512-qn8UyXkRqHJnWkrgc5AGDjkgoqlK5BtelIykSCl89HOV/HMtVxZw2GTwD2A7uMbLgGmch4/KyJX+mcWuPpqCtg==",
"dev": true, "dev": true,
"requires": { "requires": {
"acorn": "^7.3.1", "@types/estree": "^0.0.45",
"is-reference": "^1.1.4", "acorn": "^8.0.5",
"estree-walker": "^0.9.0",
"is-reference": "^2.0.0",
"periscopic": "^2.0.1", "periscopic": "^2.0.1",
"sourcemap-codec": "^1.4.6" "sourcemap-codec": "^1.4.8"
}, },
"dependencies": { "dependencies": {
"estree-walker": { "estree-walker": {
"version": "2.0.2", "version": "0.9.0",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.9.0.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "integrity": "sha512-12U47o7XHUX329+x3FzNVjCx3SHEzMF0nkDv7r/HnBzX/xNTKxajBk6gyygaxrAFtLj39219oMfbtxv4KpaOiA==",
"dev": true "dev": true
}, },
"periscopic": { "is-reference": {
"version": "2.0.3", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-2.0.3.tgz", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-2.0.0.tgz",
"integrity": "sha512-FuCZe61mWxQOJAQFEfmt9FjzebRlcpFz8sFPbyaCKtdusPkMEbA9ey0eARnRav5zAhmXznhaQkKGFAPn7X9NUw==", "integrity": "sha512-kgaeJVq59jasPrhlGK/K61muTjLxMOZf4oMwI4X94nDWqkqLxDWVWrecCSP5c6OR8JF7Yul0X7h59lB1ho0epQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"estree-walker": "^2.0.2", "@types/estree": "*"
"is-reference": "^1.1.4"
} }
} }
} }
@ -1867,6 +1868,12 @@
"eslint-visitor-keys": "^1.3.0" "eslint-visitor-keys": "^1.3.0"
}, },
"dependencies": { "dependencies": {
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
},
"eslint-visitor-keys": { "eslint-visitor-keys": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
@ -2725,6 +2732,14 @@
"whatwg-url": "^7.0.0", "whatwg-url": "^7.0.0",
"ws": "^7.0.0", "ws": "^7.0.0",
"xml-name-validator": "^3.0.0" "xml-name-validator": "^3.0.0"
},
"dependencies": {
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
}
} }
}, },
"json-parse-better-errors": { "json-parse-better-errors": {
@ -3847,6 +3862,14 @@
"@types/estree": "*", "@types/estree": "*",
"@types/node": "*", "@types/node": "*",
"acorn": "^7.1.0" "acorn": "^7.1.0"
},
"dependencies": {
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
}
} }
}, },
"rollup-plugin-virtual": { "rollup-plugin-virtual": {

@ -112,10 +112,10 @@
"@types/node": "^8.10.53", "@types/node": "^8.10.53",
"@typescript-eslint/eslint-plugin": "^4.9.0", "@typescript-eslint/eslint-plugin": "^4.9.0",
"@typescript-eslint/parser": "^4.9.0", "@typescript-eslint/parser": "^4.9.0",
"acorn": "^7.4.0", "acorn": "^8.4.1",
"agadoo": "^1.1.0", "agadoo": "^1.1.0",
"c8": "^5.0.1", "c8": "^5.0.1",
"code-red": "^0.1.4", "code-red": "^0.2.1",
"codecov": "^3.5.0", "codecov": "^3.5.0",
"css-tree": "^1.1.2", "css-tree": "^1.1.2",
"eslint": "^7.15.0", "eslint": "^7.15.0",

@ -177,7 +177,7 @@ If a statement consists entirely of an assignment to an undeclared variable, Sve
A *store* is an object that allows reactive access to a value via a simple *store contract*. The [`svelte/store` module](docs#svelte_store) contains minimal store implementations which fulfil this contract. A *store* is an object that allows reactive access to a value via a simple *store contract*. The [`svelte/store` module](docs#svelte_store) contains minimal store implementations which fulfil this contract.
Any time you have a reference to a store, you can access its value inside a component by prefixing it with the `$` character. This causes Svelte to declare the prefixed variable, and set up a store subscription that will be unsubscribed when appropriate. Any time you have a reference to a store, you can access its value inside a component by prefixing it with the `$` character. This causes Svelte to declare the prefixed variable, subscribe to the store at component initialization and unsubscribe when appropriate.
Assignments to `$`-prefixed variables require that the variable be a writable store, and will result in a call to the store's `.set` method. Assignments to `$`-prefixed variables require that the variable be a writable store, and will result in a call to the store's `.set` method.

@ -136,11 +136,14 @@ An element or component can have multiple spread attributes, interspersed with r
Text can also contain JavaScript expressions: Text can also contain JavaScript expressions:
> If you're using a regular expression (`RegExp`) [literal notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#literal_notation_and_constructor), you'll need to wrap it in parentheses.
```sv ```sv
<h1>Hello {name}!</h1> <h1>Hello {name}!</h1>
<p>{a} + {b} = {a + b}.</p> <p>{a} + {b} = {a + b}.</p>
```
<div>{(/^[A-Za-z ]+$/).test(value) ? x : y}</div>
```
### Comments ### Comments

@ -38,9 +38,9 @@
<div class="chart" bind:clientWidth={width} bind:clientHeight={height}> <div class="chart" bind:clientWidth={width} bind:clientHeight={height}>
<svg> <svg>
<!-- y axis --> <!-- y axis -->
<g class="axis y-axis" transform="translate(0,{padding.top})"> <g class="axis y-axis">
{#each yTicks as tick} {#each yTicks as tick}
<g class="tick tick-{tick}" transform="translate(0, {yScale(tick) - padding.bottom})"> <g class="tick tick-{tick}" transform="translate(0, {yScale(tick)})">
<line x2="100%"></line> <line x2="100%"></line>
<text y="-4">{tick} {tick === 20 ? ' per 1,000 population' : ''}</text> <text y="-4">{tick} {tick === 20 ? ' per 1,000 population' : ''}</text>
</g> </g>
@ -62,7 +62,7 @@
x="{xScale(i) + 2}" x="{xScale(i) + 2}"
y="{yScale(point.birthrate)}" y="{yScale(point.birthrate)}"
width="{barWidth - 4}" width="{barWidth - 4}"
height="{height - padding.bottom - yScale(point.birthrate)}" height="{yScale(0) - yScale(point.birthrate)}"
></rect> ></rect>
{/each} {/each}
</g> </g>

@ -1,5 +1,3 @@
<svelte:options immutable/>
<script> <script>
import ImmutableTodo from './ImmutableTodo.svelte'; import ImmutableTodo from './ImmutableTodo.svelte';
import MutableTodo from './MutableTodo.svelte'; import MutableTodo from './MutableTodo.svelte';

@ -142,6 +142,15 @@ export default class Selector {
} }
} }
this.validate_global_with_multiple_selectors(component);
}
validate_global_with_multiple_selectors(component: Component) {
if (this.blocks.length === 1 && this.blocks[0].selectors.length === 1) {
// standalone :global() with multiple selectors is OK
return;
}
for (const block of this.blocks) { for (const block of this.blocks) {
for (const selector of block.selectors) { for (const selector of block.selectors) {
if (selector.type === 'PseudoClassSelector' && selector.name === 'global') { if (selector.type === 'PseudoClassSelector' && selector.name === 'global') {
@ -536,11 +545,11 @@ function has_definite_elements(result: Map<Element, NodeExist>): boolean {
function add_to_map(from: Map<Element, NodeExist>, to: Map<Element, NodeExist>) { function add_to_map(from: Map<Element, NodeExist>, to: Map<Element, NodeExist>) {
from.forEach((exist, element) => { from.forEach((exist, element) => {
to.set(element, higher_existance(exist, to.get(element))); to.set(element, higher_existence(exist, to.get(element)));
}); });
} }
function higher_existance(exist1: NodeExist | null, exist2: NodeExist | null): NodeExist { function higher_existence(exist1: NodeExist | null, exist2: NodeExist | null): NodeExist {
if (exist1 === undefined || exist2 === undefined) return exist1 || exist2; if (exist1 === undefined || exist2 === undefined) return exist1 || exist2;
return exist1 > exist2 ? exist1 : exist2; return exist1 > exist2 ? exist1 : exist2;
} }

@ -65,7 +65,7 @@ export default class Expression {
walk(info, { walk(info, {
enter(node: any, parent: any, key: string) { enter(node: any, parent: any, key: string) {
// don't manipulate shorthand props twice // don't manipulate shorthand props twice
if (key === 'value' && parent.shorthand) return; if (key === 'key' && parent.shorthand) return;
// don't manipulate `import.meta`, `new.target` // don't manipulate `import.meta`, `new.target`
if (node.type === 'MetaProperty') return this.skip(); if (node.type === 'MetaProperty') return this.skip();

@ -3,7 +3,7 @@ import Component from '../Component';
import Renderer from './Renderer'; import Renderer from './Renderer';
import { CompileOptions, CssResult } from '../../interfaces'; import { CompileOptions, CssResult } from '../../interfaces';
import { walk } from 'estree-walker'; import { walk } from 'estree-walker';
import { extract_names, Scope } from '../utils/scope'; import { extract_names, Scope } from 'periscopic';
import { invalidate } from './invalidate'; import { invalidate } from './invalidate';
import Block from './Block'; import Block from './Block';
import { ClassDeclaration, FunctionExpression, Node, Statement, ObjectExpression, Expression } from 'estree'; import { ClassDeclaration, FunctionExpression, Node, Statement, ObjectExpression, Expression } from 'estree';

@ -1,5 +1,5 @@
import { nodes_match } from '../../utils/nodes_match'; import { nodes_match } from '../../utils/nodes_match';
import { Scope } from '../utils/scope'; import { Scope } from 'periscopic';
import { x } from 'code-red'; import { x } from 'code-red';
import { Node, Expression } from 'estree'; import { Node, Expression } from 'estree';
import Renderer from './Renderer'; import Renderer from './Renderer';

@ -19,7 +19,7 @@ import { add_event_handler } from '../shared/add_event_handlers';
import { add_action } from '../shared/add_actions'; import { add_action } from '../shared/add_actions';
import bind_this from '../shared/bind_this'; import bind_this from '../shared/bind_this';
import { is_head } from '../shared/is_head'; import { is_head } from '../shared/is_head';
import { Identifier } from 'estree'; import { Identifier, ExpressionStatement, CallExpression } from 'estree';
import EventHandler from './EventHandler'; import EventHandler from './EventHandler';
import { extract_names } from 'periscopic'; import { extract_names } from 'periscopic';
import Action from '../../../nodes/Action'; import Action from '../../../nodes/Action';
@ -263,15 +263,23 @@ export default class ElementWrapper extends Wrapper {
} }
if (parent_node) { if (parent_node) {
block.chunks.mount.push( const append = b`@append(${parent_node}, ${node});`;
b`@append(${parent_node}, ${node});` ((append[0] as ExpressionStatement).expression as CallExpression).callee.loc = {
); start: this.renderer.locate(this.node.start),
end: this.renderer.locate(this.node.end)
};
block.chunks.mount.push(append);
if (is_head(parent_node)) { if (is_head(parent_node)) {
block.chunks.destroy.push(b`@detach(${node});`); block.chunks.destroy.push(b`@detach(${node});`);
} }
} else { } else {
block.chunks.mount.push(b`@insert(#target, ${node}, #anchor);`); const insert = b`@insert(#target, ${node}, #anchor);`;
((insert[0] as ExpressionStatement).expression as CallExpression).callee.loc = {
start: this.renderer.locate(this.node.start),
end: this.renderer.locate(this.node.end)
};
block.chunks.mount.push(insert);
// TODO we eventually need to consider what happens to elements // TODO we eventually need to consider what happens to elements
// that belong to the same outgroup as an outroing element... // that belong to the same outgroup as an outroing element...

@ -344,7 +344,7 @@ export default class InlineComponentWrapper extends Wrapper {
contextual_dependencies.push(object.name, property.name); contextual_dependencies.push(object.name, property.name);
} }
const params = [x`#value`]; const params: Identifier[] = [x`#value` as Identifier];
const args = [x`#value`]; const args = [x`#value`];
if (contextual_dependencies.length > 0) { if (contextual_dependencies.length > 0) {

@ -44,10 +44,19 @@ export default class TextWrapper extends Wrapper {
if (this.skip) return; if (this.skip) return;
const use_space = this.use_space(); const use_space = this.use_space();
const string_literal = {
type: 'Literal',
value: this.data,
loc: {
start: this.renderer.locate(this.node.start),
end: this.renderer.locate(this.node.end)
}
};
block.add_element( block.add_element(
this.var, this.var,
use_space ? x`@space()` : x`@text("${this.data}")`, use_space ? x`@space()` : x`@text(${string_literal})`,
parent_nodes && (use_space ? x`@claim_space(${parent_nodes})` : x`@claim_text(${parent_nodes}, "${this.data}")`), parent_nodes && (use_space ? x`@claim_space(${parent_nodes})` : x`@claim_text(${parent_nodes}, ${string_literal})`),
parent_node as Identifier parent_node as Identifier
); );
} }

@ -1,5 +1,5 @@
import { is_void } from '../../../utils/names'; import { is_void } from '../../../utils/names';
import { get_attribute_value, get_class_attribute_value } from './shared/get_attribute_value'; import { get_attribute_expression, get_attribute_value, get_class_attribute_value } from './shared/get_attribute_value';
import { boolean_attributes } from './shared/boolean_attributes'; import { boolean_attributes } from './shared/boolean_attributes';
import Renderer, { RenderOptions } from '../Renderer'; import Renderer, { RenderOptions } from '../Renderer';
import Element from '../../nodes/Element'; import Element from '../../nodes/Element';
@ -110,7 +110,14 @@ export default function(node: Element, renderer: Renderer, options: RenderOption
} }
if (name === 'group') { if (name === 'group') {
// TODO server-render group bindings const value_attribute = node.attributes.find(({ name }) => name === 'value');
if (value_attribute) {
const value = get_attribute_expression(value_attribute);
const type = node.get_static_attribute_value('type');
const bound = expression.node;
const condition = type === 'checkbox' ? x`~${bound}.indexOf(${value})`: x`${value} === ${bound}`;
renderer.add_expression(x`${condition} ? @add_attribute("checked", true, 1) : ""`);
}
} else if (contenteditable && (name === 'textContent' || name === 'innerHTML')) { } else if (contenteditable && (name === 'textContent' || name === 'innerHTML')) {
node_contents = expression.node; node_contents = expression.node;

@ -26,3 +26,10 @@ export function get_attribute_value(attribute: Attribute): ESTreeExpression {
}) })
.reduce((lhs, rhs) => x`${lhs} + ${rhs}`); .reduce((lhs, rhs) => x`${lhs} + ${rhs}`);
} }
export function get_attribute_expression(attribute: Attribute): ESTreeExpression {
if (attribute.chunks.length === 1 && attribute.chunks[0].type === 'Expression') {
return (attribute.chunks[0] as Expression).node as ESTreeExpression;
}
return get_attribute_value(attribute);
}

@ -177,9 +177,9 @@ export class Parser {
return identifier; return identifier;
} }
read_until(pattern: RegExp) { read_until(pattern: RegExp, error_message?: Parameters<Parser['error']>[0]) {
if (this.index >= this.template.length) { if (this.index >= this.template.length) {
this.error({ this.error(error_message || {
code: 'unexpected-eof', code: 'unexpected-eof',
message: 'Unexpected end of input' message: 'Unexpected end of input'
}); });

@ -3,8 +3,6 @@ import { Parser } from '../index';
import { Script } from '../../interfaces'; import { Script } from '../../interfaces';
import { Node, Program } from 'estree'; import { Node, Program } from 'estree';
const script_closing_tag = '</script>';
function get_context(parser: Parser, attributes: any[], start: number): string { function get_context(parser: Parser, attributes: any[], start: number): string {
const context = attributes.find(attribute => attribute.name === 'context'); const context = attributes.find(attribute => attribute.name === 'context');
if (!context) return 'default'; if (!context) return 'default';
@ -30,18 +28,17 @@ function get_context(parser: Parser, attributes: any[], start: number): string {
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_start = parser.index;
const script_end = parser.template.indexOf(script_closing_tag, script_start); const error_message = {
code: 'unclosed-script',
if (script_end === -1) { message: '<script> must have a closing tag'
parser.error({ };
code: 'unclosed-script', const data = parser.read_until(/<\/script\s*>/, error_message);
message: '<script> must have a closing tag' if (parser.index >= parser.template.length) {
}); parser.error(error_message);
} }
const source = parser.template.slice(0, script_start).replace(/[^\n]/g, ' ') + const source = parser.template.slice(0, script_start).replace(/[^\n]/g, ' ') + data;
parser.template.slice(script_start, script_end); parser.read(/<\/script\s*>/);
parser.index = script_end + script_closing_tag.length;
let ast: Program; let ast: Program;

@ -6,7 +6,17 @@ import { Style } from '../../interfaces';
export default function read_style(parser: Parser, start: number, attributes: Node[]): Style { export default function read_style(parser: Parser, start: number, attributes: Node[]): Style {
const content_start = parser.index; const content_start = parser.index;
const styles = parser.read_until(/<\/style>/); const error_message = {
code: 'unclosed-style',
message: '<style> must have a closing tag'
};
const styles = parser.read_until(/<\/style\s*>/, error_message);
if (parser.index >= parser.template.length) {
parser.error(error_message);
}
const content_end = parser.index; const content_end = parser.index;
let ast; let ast;
@ -72,7 +82,7 @@ export default function read_style(parser: Parser, start: number, attributes: No
} }
}); });
parser.eat('</style>', true); parser.read(/<\/style\s*>/);
const end = parser.index; const end = parser.index;
return { return {

@ -203,7 +203,7 @@ export interface SvelteComponentTyped<
* class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {} * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}
* const component: typeof SvelteComponent = ASubclassOfSvelteComponent; * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;
* ``` * ```
* will throw a type error, so we need to seperate the more strictly typed class. * will throw a type error, so we need to separate the more strictly typed class.
*/ */
export class SvelteComponentTyped< export class SvelteComponentTyped<
Props extends Record<string, any> = any, Props extends Record<string, any> = any,

@ -113,7 +113,7 @@ export function writable<T>(value?: T, start: StartStopNotifier<T> = noop): Writ
} }
/** One or more `Readable`s. */ /** One or more `Readable`s. */
type Stores = Readable<any> | [Readable<any>, ...Array<Readable<any>>]; type Stores = Readable<any> | [Readable<any>, ...Array<Readable<any>>] | Array<Readable<any>>;
/** One or more values from `Readable` stores. */ /** One or more values from `Readable` stores. */
type StoresValues<T> = T extends Readable<infer U> ? U : type StoresValues<T> = T extends Readable<infer U> ? U :

@ -56,7 +56,7 @@ function instance($$self, $$props, $$invalidate) {
const foo_function = () => handleFoo(bar); const foo_function = () => handleFoo(bar);
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("bar" in $$props) $$invalidate(0, bar = $$props.bar); if ('bar' in $$props) $$invalidate(0, bar = $$props.bar);
}; };
return [bar, foo_function]; return [bar, foo_function];

@ -48,11 +48,11 @@ function link(node) {
history.pushState(null, null, event.target.href); history.pushState(null, null, event.target.href);
} }
node.addEventListener("click", onClick); node.addEventListener('click', onClick);
return { return {
destroy() { destroy() {
node.removeEventListener("click", onClick); node.removeEventListener('click', onClick);
} }
}; };
} }

@ -53,7 +53,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("open" in $$props) $$invalidate(0, open = $$props.open); if ('open' in $$props) $$invalidate(0, open = $$props.open);
}; };
return [open, details_toggle_handler]; return [open, details_toggle_handler];

@ -47,8 +47,8 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("w" in $$props) $$invalidate(0, w = $$props.w); if ('w' in $$props) $$invalidate(0, w = $$props.w);
if ("h" in $$props) $$invalidate(1, h = $$props.h); if ('h' in $$props) $$invalidate(1, h = $$props.h);
}; };
return [w, h, div_elementresize_handler]; return [w, h, div_elementresize_handler];

@ -69,7 +69,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("files" in $$props) $$invalidate(0, files = $$props.files); if ('files' in $$props) $$invalidate(0, files = $$props.files);
}; };
return [files, input0_change_handler, input1_change_handler]; return [files, input0_change_handler, input1_change_handler];

@ -95,7 +95,7 @@ const moduleContantProps = 4;
let moduleLet; let moduleLet;
const moduleConst = 2; const moduleConst = 2;
let shadowedByModule; let shadowedByModule;
const priv = "priv"; const priv = 'priv';
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let computed; let computed;
@ -106,22 +106,22 @@ function instance($$self, $$props, $$invalidate) {
$$self.$$.on_destroy.push(() => $$unsubscribe_prop()); $$self.$$.on_destroy.push(() => $$unsubscribe_prop());
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let { prop } = $$props; let { prop } = $$props;
validate_store(prop, "prop"); validate_store(prop, 'prop');
$$subscribe_prop(); $$subscribe_prop();
let { alias: realName } = $$props; let { alias: realName } = $$props;
let local; let local;
let shadowedByModule; let shadowedByModule;
const writable_props = ["prop", "alias"]; const writable_props = ['prop', 'alias'];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("prop" in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop)); if ('prop' in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop));
if ("alias" in $$props) $$invalidate(1, realName = $$props.alias); if ('alias' in $$props) $$invalidate(1, realName = $$props.alias);
}; };
$$self.$capture_state = () => ({ $$self.$capture_state = () => ({
@ -140,11 +140,11 @@ function instance($$self, $$props, $$invalidate) {
}); });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("prop" in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop)); if ('prop' in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop));
if ("realName" in $$props) $$invalidate(1, realName = $$props.realName); if ('realName' in $$props) $$invalidate(1, realName = $$props.realName);
if ("local" in $$props) $$invalidate(3, local = $$props.local); if ('local' in $$props) $$invalidate(3, local = $$props.local);
if ("shadowedByModule" in $$props) $$invalidate(4, shadowedByModule = $$props.shadowedByModule); if ('shadowedByModule' in $$props) $$invalidate(4, shadowedByModule = $$props.shadowedByModule);
if ("computed" in $$props) computed = $$props.computed; if ('computed' in $$props) computed = $$props.computed;
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {
@ -170,11 +170,11 @@ class Component extends SvelteComponentDev {
const { ctx } = this.$$; const { ctx } = this.$$;
const props = options.props || {}; const props = options.props || {};
if (/*prop*/ ctx[0] === undefined && !("prop" in props)) { if (/*prop*/ ctx[0] === undefined && !('prop' in props)) {
console.warn("<Component> was created without expected prop 'prop'"); console.warn("<Component> was created without expected prop 'prop'");
} }
if (/*realName*/ ctx[1] === undefined && !("alias" in props)) { if (/*realName*/ ctx[1] === undefined && !('alias' in props)) {
console.warn("<Component> was created without expected prop 'alias'"); console.warn("<Component> was created without expected prop 'alias'");
} }
} }

@ -49,7 +49,7 @@ function instance($$self, $$props, $$invalidate) {
let { foo = 42 } = $$props; let { foo = 42 } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
return [foo]; return [foo];

@ -16,8 +16,8 @@ import {
transition_out transition_out
} from "svelte/internal"; } from "svelte/internal";
import Foo from "./Foo.svelte"; import Foo from './Foo.svelte';
import Bar from "./Bar.svelte"; import Bar from './Bar.svelte';
function create_fragment(ctx) { function create_fragment(ctx) {
let foo; let foo;

@ -13,7 +13,7 @@ import {
text text
} from "svelte/internal"; } from "svelte/internal";
import { writable } from "svelte/store"; import { writable } from 'svelte/store';
function create_fragment(ctx) { function create_fragment(ctx) {
let h1; let h1;

@ -7,7 +7,7 @@ import {
set_store_value set_store_value
} from "svelte/internal"; } from "svelte/internal";
import { count } from "./store.js"; import { count } from './store.js';
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let $count; let $count;

@ -15,7 +15,7 @@ import {
text text
} from "svelte/internal"; } from "svelte/internal";
import { writable } from "svelte/store"; import { writable } from 'svelte/store';
function create_fragment(ctx) { function create_fragment(ctx) {
let h1; let h1;

@ -13,7 +13,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("x" in $$props) $$invalidate(0, x = $$props.x); if ('x' in $$props) $$invalidate(0, x = $$props.x);
}; };
return [x, a, b]; return [x, a, b];

@ -48,7 +48,7 @@ function instance($$self, $$props, $$invalidate) {
let { bar } = $$props; let { bar } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("bar" in $$props) $$invalidate(0, bar = $$props.bar); if ('bar' in $$props) $$invalidate(0, bar = $$props.bar);
}; };
return [bar]; return [bar];

@ -70,22 +70,22 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let { name } = $$props; let { name } = $$props;
const writable_props = ["name"]; const writable_props = ['name'];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("name" in $$props) $$invalidate(0, name = $$props.name); if ('name' in $$props) $$invalidate(0, name = $$props.name);
}; };
$$self.$capture_state = () => ({ name }); $$self.$capture_state = () => ({ name });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("name" in $$props) $$invalidate(0, name = $$props.name); if ('name' in $$props) $$invalidate(0, name = $$props.name);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {
@ -110,7 +110,7 @@ class Component extends SvelteComponentDev {
const { ctx } = this.$$; const { ctx } = this.$$;
const props = options.props || {}; const props = options.props || {};
if (/*name*/ ctx[0] === undefined && !("name" in props)) { if (/*name*/ ctx[0] === undefined && !('name' in props)) {
console.warn("<Component> was created without expected prop 'name'"); console.warn("<Component> was created without expected prop 'name'");
} }
} }

@ -171,31 +171,31 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let { things } = $$props; let { things } = $$props;
let { foo } = $$props; let { foo } = $$props;
let { bar } = $$props; let { bar } = $$props;
let { baz } = $$props; let { baz } = $$props;
const writable_props = ["things", "foo", "bar", "baz"]; const writable_props = ['things', 'foo', 'bar', 'baz'];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
if ("foo" in $$props) $$invalidate(1, foo = $$props.foo); if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
if ("bar" in $$props) $$invalidate(2, bar = $$props.bar); if ('bar' in $$props) $$invalidate(2, bar = $$props.bar);
if ("baz" in $$props) $$invalidate(3, baz = $$props.baz); if ('baz' in $$props) $$invalidate(3, baz = $$props.baz);
}; };
$$self.$capture_state = () => ({ things, foo, bar, baz }); $$self.$capture_state = () => ({ things, foo, bar, baz });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
if ("foo" in $$props) $$invalidate(1, foo = $$props.foo); if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
if ("bar" in $$props) $$invalidate(2, bar = $$props.bar); if ('bar' in $$props) $$invalidate(2, bar = $$props.bar);
if ("baz" in $$props) $$invalidate(3, baz = $$props.baz); if ('baz' in $$props) $$invalidate(3, baz = $$props.baz);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {
@ -220,19 +220,19 @@ class Component extends SvelteComponentDev {
const { ctx } = this.$$; const { ctx } = this.$$;
const props = options.props || {}; const props = options.props || {};
if (/*things*/ ctx[0] === undefined && !("things" in props)) { if (/*things*/ ctx[0] === undefined && !('things' in props)) {
console.warn("<Component> was created without expected prop 'things'"); console.warn("<Component> was created without expected prop 'things'");
} }
if (/*foo*/ ctx[1] === undefined && !("foo" in props)) { if (/*foo*/ ctx[1] === undefined && !('foo' in props)) {
console.warn("<Component> was created without expected prop 'foo'"); console.warn("<Component> was created without expected prop 'foo'");
} }
if (/*bar*/ ctx[2] === undefined && !("bar" in props)) { if (/*bar*/ ctx[2] === undefined && !('bar' in props)) {
console.warn("<Component> was created without expected prop 'bar'"); console.warn("<Component> was created without expected prop 'bar'");
} }
if (/*baz*/ ctx[3] === undefined && !("baz" in props)) { if (/*baz*/ ctx[3] === undefined && !('baz' in props)) {
console.warn("<Component> was created without expected prop 'baz'"); console.warn("<Component> was created without expected prop 'baz'");
} }
} }

@ -165,25 +165,25 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let { things } = $$props; let { things } = $$props;
let { foo } = $$props; let { foo } = $$props;
const writable_props = ["things", "foo"]; const writable_props = ['things', 'foo'];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
if ("foo" in $$props) $$invalidate(1, foo = $$props.foo); if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
}; };
$$self.$capture_state = () => ({ things, foo }); $$self.$capture_state = () => ({ things, foo });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
if ("foo" in $$props) $$invalidate(1, foo = $$props.foo); if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {
@ -208,11 +208,11 @@ class Component extends SvelteComponentDev {
const { ctx } = this.$$; const { ctx } = this.$$;
const props = options.props || {}; const props = options.props || {};
if (/*things*/ ctx[0] === undefined && !("things" in props)) { if (/*things*/ ctx[0] === undefined && !('things' in props)) {
console.warn("<Component> was created without expected prop 'things'"); console.warn("<Component> was created without expected prop 'things'");
} }
if (/*foo*/ ctx[1] === undefined && !("foo" in props)) { if (/*foo*/ ctx[1] === undefined && !('foo' in props)) {
console.warn("<Component> was created without expected prop 'foo'"); console.warn("<Component> was created without expected prop 'foo'");
} }
} }

@ -50,20 +50,20 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let obj = { x: 5 }; let obj = { x: 5 };
let kobzol = 5; let kobzol = 5;
const writable_props = []; const writable_props = [];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$capture_state = () => ({ obj, kobzol }); $$self.$capture_state = () => ({ obj, kobzol });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("obj" in $$props) $$invalidate(0, obj = $$props.obj); if ('obj' in $$props) $$invalidate(0, obj = $$props.obj);
if ("kobzol" in $$props) $$invalidate(1, kobzol = $$props.kobzol); if ('kobzol' in $$props) $$invalidate(1, kobzol = $$props.kobzol);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {

@ -137,11 +137,11 @@ function create_fragment(ctx) {
function instance($$self, $$props) { function instance($$self, $$props) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
const writable_props = []; const writable_props = [];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
return []; return [];

@ -105,7 +105,7 @@ function instance($$self, $$props, $$invalidate) {
let { createElement } = $$props; let { createElement } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("createElement" in $$props) $$invalidate(0, createElement = $$props.createElement); if ('createElement' in $$props) $$invalidate(0, createElement = $$props.createElement);
}; };
return [createElement]; return [createElement];

@ -1,17 +1,17 @@
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
import { SvelteComponent, init, safe_not_equal } from "svelte/internal"; import { SvelteComponent, init, safe_not_equal } from "svelte/internal";
import { onMount } from "svelte"; import { onMount } from 'svelte';
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { foo = "bar" } = $$props; let { foo = 'bar' } = $$props;
onMount(() => { onMount(() => {
alert(JSON.stringify(data())); alert(JSON.stringify(data()));
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
return [foo]; return [foo];

@ -66,24 +66,24 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let { foo } = $$props; let { foo } = $$props;
let bar; let bar;
const writable_props = ["foo"]; const writable_props = ['foo'];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Component> was created with unknown prop '${key}'`);
}); });
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
$$self.$capture_state = () => ({ foo, bar }); $$self.$capture_state = () => ({ foo, bar });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
if ("bar" in $$props) $$invalidate(1, bar = $$props.bar); if ('bar' in $$props) $$invalidate(1, bar = $$props.bar);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {
@ -114,7 +114,7 @@ class Component extends SvelteComponentDev {
const { ctx } = this.$$; const { ctx } = this.$$;
const props = options.props || {}; const props = options.props || {};
if (/*foo*/ ctx[0] === undefined && !("foo" in props)) { if (/*foo*/ ctx[0] === undefined && !('foo' in props)) {
console.warn("<Component> was created without expected prop 'foo'"); console.warn("<Component> was created without expected prop 'foo'");
} }
} }

@ -11,7 +11,7 @@ import {
transition_out transition_out
} from "svelte/internal"; } from "svelte/internal";
import LazyLoad from "./LazyLoad.svelte"; import LazyLoad from './LazyLoad.svelte';
function create_fragment(ctx) { function create_fragment(ctx) {
let lazyload; let lazyload;
@ -42,7 +42,7 @@ function create_fragment(ctx) {
}; };
} }
const func = () => import("./Foo.svelte"); const func = () => import('./Foo.svelte');
class Component extends SvelteComponent { class Component extends SvelteComponent {
constructor(options) { constructor(options) {

@ -107,11 +107,11 @@ function instance($$self, $$props, $$invalidate) {
let { e } = $$props; let { e } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("a" in $$props) $$invalidate(0, a = $$props.a); if ('a' in $$props) $$invalidate(0, a = $$props.a);
if ("b" in $$props) $$invalidate(1, b = $$props.b); if ('b' in $$props) $$invalidate(1, b = $$props.b);
if ("c" in $$props) $$invalidate(2, c = $$props.c); if ('c' in $$props) $$invalidate(2, c = $$props.c);
if ("d" in $$props) $$invalidate(3, d = $$props.d); if ('d' in $$props) $$invalidate(3, d = $$props.d);
if ("e" in $$props) $$invalidate(4, e = $$props.e); if ('e' in $$props) $$invalidate(4, e = $$props.e);
}; };
return [a, b, c, d, e]; return [a, b, c, d, e];

@ -154,10 +154,10 @@ function instance($$self, $$props, $$invalidate) {
let { foo } = $$props; let { foo } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("comments" in $$props) $$invalidate(0, comments = $$props.comments); if ('comments' in $$props) $$invalidate(0, comments = $$props.comments);
if ("elapsed" in $$props) $$invalidate(1, elapsed = $$props.elapsed); if ('elapsed' in $$props) $$invalidate(1, elapsed = $$props.elapsed);
if ("time" in $$props) $$invalidate(2, time = $$props.time); if ('time' in $$props) $$invalidate(2, time = $$props.time);
if ("foo" in $$props) $$invalidate(3, foo = $$props.foo); if ('foo' in $$props) $$invalidate(3, foo = $$props.foo);
}; };
return [comments, elapsed, time, foo]; return [comments, elapsed, time, foo];

@ -130,7 +130,7 @@ function instance($$self, $$props, $$invalidate) {
let { things } = $$props; let { things } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
}; };
return [things]; return [things];

@ -99,7 +99,7 @@ function instance($$self, $$props, $$invalidate) {
let { things } = $$props; let { things } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("things" in $$props) $$invalidate(0, things = $$props.things); if ('things' in $$props) $$invalidate(0, things = $$props.things);
}; };
return [things]; return [things];

@ -89,7 +89,7 @@ function instance($$self, $$props, $$invalidate) {
let { foo } = $$props; let { foo } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
return [foo]; return [foo];

@ -67,7 +67,7 @@ function instance($$self, $$props, $$invalidate) {
let { foo } = $$props; let { foo } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
return [foo]; return [foo];

@ -45,9 +45,9 @@ function instance($$self, $$props, $$invalidate) {
let { y } = $$props; let { y } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("color" in $$props) $$invalidate(0, color = $$props.color); if ('color' in $$props) $$invalidate(0, color = $$props.color);
if ("x" in $$props) $$invalidate(1, x = $$props.x); if ('x' in $$props) $$invalidate(1, x = $$props.x);
if ("y" in $$props) $$invalidate(2, y = $$props.y); if ('y' in $$props) $$invalidate(2, y = $$props.y);
}; };
return [color, x, y]; return [color, x, y];

@ -38,7 +38,7 @@ function instance($$self, $$props, $$invalidate) {
let { data } = $$props; let { data } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("data" in $$props) $$invalidate(0, data = $$props.data); if ('data' in $$props) $$invalidate(0, data = $$props.data);
}; };
return [data]; return [data];

@ -38,7 +38,7 @@ function instance($$self, $$props, $$invalidate) {
let { color } = $$props; let { color } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("color" in $$props) $$invalidate(0, color = $$props.color); if ('color' in $$props) $$invalidate(0, color = $$props.color);
}; };
return [color]; return [color];

@ -55,9 +55,9 @@ function instance($$self, $$props, $$invalidate) {
let { value } = $$props; let { value } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("style" in $$props) $$invalidate(0, style = $$props.style); if ('style' in $$props) $$invalidate(0, style = $$props.style);
if ("key" in $$props) $$invalidate(1, key = $$props.key); if ('key' in $$props) $$invalidate(1, key = $$props.key);
if ("value" in $$props) $$invalidate(2, value = $$props.value); if ('value' in $$props) $$invalidate(2, value = $$props.value);
}; };
return [style, key, value]; return [style, key, value];

@ -30,7 +30,7 @@ function create_fragment(ctx) {
}; };
} }
let color = "red"; let color = 'red';
class Component extends SvelteComponent { class Component extends SvelteComponent {
constructor(options) { constructor(options) {

@ -50,7 +50,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("files" in $$props) $$invalidate(0, files = $$props.files); if ('files' in $$props) $$invalidate(0, files = $$props.files);
}; };
return [files, input_change_handler]; return [files, input_change_handler];

@ -69,7 +69,7 @@ function instance($$self, $$props, $$invalidate) {
function handleSubmit(event) { function handleSubmit(event) {
event.preventDefault(); event.preventDefault();
console.log("value", test); console.log('value', test);
} }
function input_input_handler() { function input_input_handler() {

@ -61,7 +61,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("value" in $$props) $$invalidate(0, value = $$props.value); if ('value' in $$props) $$invalidate(0, value = $$props.value);
}; };
return [value, input_change_input_handler]; return [value, input_change_input_handler];

@ -64,7 +64,7 @@ function create_fragment(ctx) {
} }
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let name = "change me"; let name = 'change me';
function onInput(event) { function onInput(event) {
$$invalidate(0, name = event.target.value); $$invalidate(0, name = event.target.value);

@ -54,7 +54,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
}; };
return [foo, input_change_handler]; return [foo, input_change_handler];

@ -54,7 +54,7 @@ function create_fragment(ctx) {
} }
function foo() { function foo() {
const guard = "foo"; const guard = 'foo';
{ {
const guard_1 = loop_guard(100); const guard_1 = loop_guard(100);
@ -68,7 +68,7 @@ function foo() {
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props; let { $$slots: slots = {}, $$scope } = $$props;
validate_slots("Component", slots, []); validate_slots('Component', slots, []);
let node; let node;
{ {
@ -110,11 +110,11 @@ function instance($$self, $$props, $$invalidate) {
const writable_props = []; const writable_props = [];
Object.keys($$props).forEach(key => { Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$" && key !== "slot") console_1.warn(`<Component> was created with unknown prop '${key}'`); if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(`<Component> was created with unknown prop '${key}'`);
}); });
function div_binding($$value) { function div_binding($$value) {
binding_callbacks[$$value ? "unshift" : "push"](() => { binding_callbacks[$$value ? 'unshift' : 'push'](() => {
node = $$value; node = $$value;
$$invalidate(0, node); $$invalidate(0, node);
}); });
@ -123,7 +123,7 @@ function instance($$self, $$props, $$invalidate) {
$$self.$capture_state = () => ({ node, foo }); $$self.$capture_state = () => ({ node, foo });
$$self.$inject_state = $$props => { $$self.$inject_state = $$props => {
if ("node" in $$props) $$invalidate(0, node = $$props.node); if ('node' in $$props) $$invalidate(0, node = $$props.node);
}; };
if ($$props && "$$inject" in $$props) { if ($$props && "$$inject" in $$props) {

@ -174,17 +174,17 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("buffered" in $$props) $$invalidate(0, buffered = $$props.buffered); if ('buffered' in $$props) $$invalidate(0, buffered = $$props.buffered);
if ("seekable" in $$props) $$invalidate(1, seekable = $$props.seekable); if ('seekable' in $$props) $$invalidate(1, seekable = $$props.seekable);
if ("played" in $$props) $$invalidate(2, played = $$props.played); if ('played' in $$props) $$invalidate(2, played = $$props.played);
if ("currentTime" in $$props) $$invalidate(3, currentTime = $$props.currentTime); if ('currentTime' in $$props) $$invalidate(3, currentTime = $$props.currentTime);
if ("duration" in $$props) $$invalidate(4, duration = $$props.duration); if ('duration' in $$props) $$invalidate(4, duration = $$props.duration);
if ("paused" in $$props) $$invalidate(5, paused = $$props.paused); if ('paused' in $$props) $$invalidate(5, paused = $$props.paused);
if ("volume" in $$props) $$invalidate(6, volume = $$props.volume); if ('volume' in $$props) $$invalidate(6, volume = $$props.volume);
if ("muted" in $$props) $$invalidate(7, muted = $$props.muted); if ('muted' in $$props) $$invalidate(7, muted = $$props.muted);
if ("playbackRate" in $$props) $$invalidate(8, playbackRate = $$props.playbackRate); if ('playbackRate' in $$props) $$invalidate(8, playbackRate = $$props.playbackRate);
if ("seeking" in $$props) $$invalidate(9, seeking = $$props.seeking); if ('seeking' in $$props) $$invalidate(9, seeking = $$props.seeking);
if ("ended" in $$props) $$invalidate(10, ended = $$props.ended); if ('ended' in $$props) $$invalidate(10, ended = $$props.ended);
}; };
return [ return [

@ -14,7 +14,7 @@ import {
transition_out transition_out
} from "svelte/internal"; } from "svelte/internal";
import Imported from "Imported.svelte"; import Imported from 'Imported.svelte';
function create_fragment(ctx) { function create_fragment(ctx) {
let imported; let imported;

@ -29,7 +29,7 @@ function create_fragment(ctx) {
}; };
} }
let name = "world"; let name = 'world';
class Component extends SvelteComponent { class Component extends SvelteComponent {
constructor(options) { constructor(options) {

@ -23,9 +23,9 @@ function create_fragment(ctx) {
let t1_value = /*b*/ ctx[1]?.optional + ""; let t1_value = /*b*/ ctx[1]?.optional + "";
let t1; let t1;
let t2; let t2;
let t3_value = /*c*/ ctx[2]["computed"] + ""; let t3_value = /*c*/ ctx[2]['computed'] + "";
let t3; let t3;
let t4_value = /*d*/ ctx[3]?.["computed_optional"] + ""; let t4_value = /*d*/ ctx[3]?.['computed_optional'] + "";
let t4; let t4;
let t5; let t5;
let t6_value = /*e*/ ctx[4]() + ""; let t6_value = /*e*/ ctx[4]() + "";
@ -48,8 +48,8 @@ function create_fragment(ctx) {
props: { props: {
a: /*a*/ ctx[0].normal, a: /*a*/ ctx[0].normal,
b: /*b*/ ctx[1]?.optional, b: /*b*/ ctx[1]?.optional,
c: /*c*/ ctx[2]["computed"], c: /*c*/ ctx[2]['computed'],
d: /*d*/ ctx[3]?.["computed_optional"], d: /*d*/ ctx[3]?.['computed_optional'],
e: /*e*/ ctx[4](), e: /*e*/ ctx[4](),
f: /*f*/ ctx[5]?.() f: /*f*/ ctx[5]?.()
} }
@ -71,8 +71,8 @@ function create_fragment(ctx) {
create_component(component.$$.fragment); create_component(component.$$.fragment);
attr(div, "a", div_a_value = /*a*/ ctx[0].normal); attr(div, "a", div_a_value = /*a*/ ctx[0].normal);
attr(div, "b", div_b_value = /*b*/ ctx[1]?.optional); attr(div, "b", div_b_value = /*b*/ ctx[1]?.optional);
attr(div, "c", div_c_value = /*c*/ ctx[2]["computed"]); attr(div, "c", div_c_value = /*c*/ ctx[2]['computed']);
attr(div, "d", div_d_value = /*d*/ ctx[3]?.["computed_optional"]); attr(div, "d", div_d_value = /*d*/ ctx[3]?.['computed_optional']);
attr(div, "e", div_e_value = /*e*/ ctx[4]()); attr(div, "e", div_e_value = /*e*/ ctx[4]());
attr(div, "f", div_f_value = /*f*/ ctx[5]?.()); attr(div, "f", div_f_value = /*f*/ ctx[5]?.());
}, },
@ -94,8 +94,8 @@ function create_fragment(ctx) {
p(ctx, [dirty]) { p(ctx, [dirty]) {
if ((!current || dirty & /*a*/ 1) && t0_value !== (t0_value = /*a*/ ctx[0].normal + "")) set_data(t0, t0_value); if ((!current || dirty & /*a*/ 1) && t0_value !== (t0_value = /*a*/ ctx[0].normal + "")) set_data(t0, t0_value);
if ((!current || dirty & /*b*/ 2) && t1_value !== (t1_value = /*b*/ ctx[1]?.optional + "")) set_data(t1, t1_value); if ((!current || dirty & /*b*/ 2) && t1_value !== (t1_value = /*b*/ ctx[1]?.optional + "")) set_data(t1, t1_value);
if ((!current || dirty & /*c*/ 4) && t3_value !== (t3_value = /*c*/ ctx[2]["computed"] + "")) set_data(t3, t3_value); if ((!current || dirty & /*c*/ 4) && t3_value !== (t3_value = /*c*/ ctx[2]['computed'] + "")) set_data(t3, t3_value);
if ((!current || dirty & /*d*/ 8) && t4_value !== (t4_value = /*d*/ ctx[3]?.["computed_optional"] + "")) set_data(t4, t4_value); if ((!current || dirty & /*d*/ 8) && t4_value !== (t4_value = /*d*/ ctx[3]?.['computed_optional'] + "")) set_data(t4, t4_value);
if ((!current || dirty & /*e*/ 16) && t6_value !== (t6_value = /*e*/ ctx[4]() + "")) set_data(t6, t6_value); if ((!current || dirty & /*e*/ 16) && t6_value !== (t6_value = /*e*/ ctx[4]() + "")) set_data(t6, t6_value);
if ((!current || dirty & /*f*/ 32) && t7_value !== (t7_value = /*f*/ ctx[5]?.() + "")) set_data(t7, t7_value); if ((!current || dirty & /*f*/ 32) && t7_value !== (t7_value = /*f*/ ctx[5]?.() + "")) set_data(t7, t7_value);
@ -107,11 +107,11 @@ function create_fragment(ctx) {
attr(div, "b", div_b_value); attr(div, "b", div_b_value);
} }
if (!current || dirty & /*c*/ 4 && div_c_value !== (div_c_value = /*c*/ ctx[2]["computed"])) { if (!current || dirty & /*c*/ 4 && div_c_value !== (div_c_value = /*c*/ ctx[2]['computed'])) {
attr(div, "c", div_c_value); attr(div, "c", div_c_value);
} }
if (!current || dirty & /*d*/ 8 && div_d_value !== (div_d_value = /*d*/ ctx[3]?.["computed_optional"])) { if (!current || dirty & /*d*/ 8 && div_d_value !== (div_d_value = /*d*/ ctx[3]?.['computed_optional'])) {
attr(div, "d", div_d_value); attr(div, "d", div_d_value);
} }
@ -126,8 +126,8 @@ function create_fragment(ctx) {
const component_changes = {}; const component_changes = {};
if (dirty & /*a*/ 1) component_changes.a = /*a*/ ctx[0].normal; if (dirty & /*a*/ 1) component_changes.a = /*a*/ ctx[0].normal;
if (dirty & /*b*/ 2) component_changes.b = /*b*/ ctx[1]?.optional; if (dirty & /*b*/ 2) component_changes.b = /*b*/ ctx[1]?.optional;
if (dirty & /*c*/ 4) component_changes.c = /*c*/ ctx[2]["computed"]; if (dirty & /*c*/ 4) component_changes.c = /*c*/ ctx[2]['computed'];
if (dirty & /*d*/ 8) component_changes.d = /*d*/ ctx[3]?.["computed_optional"]; if (dirty & /*d*/ 8) component_changes.d = /*d*/ ctx[3]?.['computed_optional'];
if (dirty & /*e*/ 16) component_changes.e = /*e*/ ctx[4](); if (dirty & /*e*/ 16) component_changes.e = /*e*/ ctx[4]();
if (dirty & /*f*/ 32) component_changes.f = /*f*/ ctx[5]?.(); if (dirty & /*f*/ 32) component_changes.f = /*f*/ ctx[5]?.();
component.$set(component_changes); component.$set(component_changes);
@ -168,12 +168,12 @@ function instance($$self, $$props, $$invalidate) {
let Component; let Component;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("a" in $$props) $$invalidate(0, a = $$props.a); if ('a' in $$props) $$invalidate(0, a = $$props.a);
if ("b" in $$props) $$invalidate(1, b = $$props.b); if ('b' in $$props) $$invalidate(1, b = $$props.b);
if ("c" in $$props) $$invalidate(2, c = $$props.c); if ('c' in $$props) $$invalidate(2, c = $$props.c);
if ("d" in $$props) $$invalidate(3, d = $$props.d); if ('d' in $$props) $$invalidate(3, d = $$props.d);
if ("e" in $$props) $$invalidate(4, e = $$props.e); if ('e' in $$props) $$invalidate(4, e = $$props.e);
if ("f" in $$props) $$invalidate(5, f = $$props.f); if ('f' in $$props) $$invalidate(5, f = $$props.f);
}; };
return [a, b, c, d, e, f, Component]; return [a, b, c, d, e, f, Component];

@ -13,7 +13,7 @@ import {
toggle_class toggle_class
} from "svelte/internal"; } from "svelte/internal";
import { reactiveStoreVal, unreactiveExport } from "./store"; import { reactiveStoreVal, unreactiveExport } from './store';
function create_fragment(ctx) { function create_fragment(ctx) {
let div0; let div0;

@ -7,7 +7,7 @@ function instance($$self, $$props, $$invalidate) {
let b; let b;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("x" in $$props) $$invalidate(0, x = $$props.x); if ('x' in $$props) $$invalidate(0, x = $$props.x);
}; };
$$self.$$.update = () => { $$self.$$.update = () => {

@ -6,13 +6,13 @@ function instance($$self, $$props, $$invalidate) {
let { b = 2 } = $$props; let { b = 2 } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("a" in $$props) $$invalidate(0, a = $$props.a); if ('a' in $$props) $$invalidate(0, a = $$props.a);
if ("b" in $$props) $$invalidate(1, b = $$props.b); if ('b' in $$props) $$invalidate(1, b = $$props.b);
}; };
$$self.$$.update = () => { $$self.$$.update = () => {
if ($$self.$$.dirty & /*a, b*/ 3) { if ($$self.$$.dirty & /*a, b*/ 3) {
$: console.log("max", Math.max(a, b)); $: console.log('max', Math.max(a, b));
} }
}; };

@ -51,7 +51,7 @@ function instance($$self, $$props, $$invalidate) {
let { current } = $$props; let { current } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("current" in $$props) $$invalidate(0, current = $$props.current); if ('current' in $$props) $$invalidate(0, current = $$props.current);
}; };
return [current]; return [current];

@ -68,8 +68,8 @@ function instance($$self, $$props, $$invalidate) {
let { slug } = $$props; let { slug } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("url" in $$props) $$invalidate(0, url = $$props.url); if ('url' in $$props) $$invalidate(0, url = $$props.url);
if ("slug" in $$props) $$invalidate(1, slug = $$props.slug); if ('slug' in $$props) $$invalidate(1, slug = $$props.slug);
}; };
return [url, slug]; return [url, slug];

@ -1,14 +1,14 @@
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
import { create_ssr_component } from "svelte/internal"; import { create_ssr_component } from "svelte/internal";
import { onDestroy, onMount } from "svelte"; import { onDestroy, onMount } from 'svelte';
function preload(input) { function preload(input) {
return output; return output;
} }
function foo() { function foo() {
console.log("foo"); console.log('foo');
} }
function swipe(node, callback) { function swipe(node, callback) {
@ -17,11 +17,11 @@ function swipe(node, callback) {
const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => { const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => {
onMount(() => { onMount(() => {
console.log("onMount"); console.log('onMount');
}); });
onDestroy(() => { onDestroy(() => {
console.log("onDestroy"); console.log('onDestroy');
}); });
return ``; return ``;

@ -23,7 +23,7 @@ function instance($$self, $$props, $$invalidate) {
let { custom } = $$props; let { custom } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("custom" in $$props) $$invalidate(0, custom = $$props.custom); if ('custom' in $$props) $$invalidate(0, custom = $$props.custom);
}; };
return [custom]; return [custom];

@ -125,8 +125,8 @@ function instance($$self, $$props, $$invalidate) {
let { y } = $$props; let { y } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("x" in $$props) $$invalidate(0, x = $$props.x); if ('x' in $$props) $$invalidate(0, x = $$props.x);
if ("y" in $$props) $$invalidate(1, y = $$props.y); if ('y' in $$props) $$invalidate(1, y = $$props.y);
}; };
return [x, y]; return [x, y];

@ -14,7 +14,7 @@ import {
transition_out transition_out
} from "svelte/internal"; } from "svelte/internal";
import { fade } from "svelte/transition"; import { fade } from 'svelte/transition';
function create_if_block(ctx) { function create_if_block(ctx) {
let div; let div;
@ -103,7 +103,7 @@ function instance($$self, $$props, $$invalidate) {
let { num = 1 } = $$props; let { num = 1 } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("num" in $$props) $$invalidate(0, num = $$props.num); if ('num' in $$props) $$invalidate(0, num = $$props.num);
}; };
return [num]; return [num];

@ -69,14 +69,14 @@ function create_fragment(ctx) {
}; };
} }
let world1 = "world"; let world1 = 'world';
let world2 = "world"; let world2 = 'world';
function instance($$self, $$props, $$invalidate) { function instance($$self, $$props, $$invalidate) {
const world3 = "world"; const world3 = 'world';
function foo() { function foo() {
$$invalidate(0, world3 = "svelte"); $$invalidate(0, world3 = 'svelte');
} }
return [world3]; return [world3];

@ -12,7 +12,7 @@ import {
text text
} from "svelte/internal"; } from "svelte/internal";
import { onMount } from "svelte"; import { onMount } from 'svelte';
function create_fragment(ctx) { function create_fragment(ctx) {
let p; let p;

@ -244,11 +244,11 @@ function instance($$self, $$props, $$invalidate) {
let { e } = $$props; let { e } = $$props;
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("a" in $$props) $$invalidate(0, a = $$props.a); if ('a' in $$props) $$invalidate(0, a = $$props.a);
if ("b" in $$props) $$invalidate(1, b = $$props.b); if ('b' in $$props) $$invalidate(1, b = $$props.b);
if ("c" in $$props) $$invalidate(2, c = $$props.c); if ('c' in $$props) $$invalidate(2, c = $$props.c);
if ("d" in $$props) $$invalidate(3, d = $$props.d); if ('d' in $$props) $$invalidate(3, d = $$props.d);
if ("e" in $$props) $$invalidate(4, e = $$props.e); if ('e' in $$props) $$invalidate(4, e = $$props.e);
}; };
return [a, b, c, d, e]; return [a, b, c, d, e];

@ -94,10 +94,10 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("currentTime" in $$props) $$invalidate(0, currentTime = $$props.currentTime); if ('currentTime' in $$props) $$invalidate(0, currentTime = $$props.currentTime);
if ("videoHeight" in $$props) $$invalidate(1, videoHeight = $$props.videoHeight); if ('videoHeight' in $$props) $$invalidate(1, videoHeight = $$props.videoHeight);
if ("videoWidth" in $$props) $$invalidate(2, videoWidth = $$props.videoWidth); if ('videoWidth' in $$props) $$invalidate(2, videoWidth = $$props.videoWidth);
if ("offsetWidth" in $$props) $$invalidate(3, offsetWidth = $$props.offsetWidth); if ('offsetWidth' in $$props) $$invalidate(3, offsetWidth = $$props.offsetWidth);
}; };
return [ return [

@ -79,7 +79,7 @@ function instance($$self, $$props, $$invalidate) {
} }
$$self.$$set = $$props => { $$self.$$set = $$props => {
if ("y" in $$props) $$invalidate(0, y = $$props.y); if ('y' in $$props) $$invalidate(0, y = $$props.y);
}; };
return [y, onwindowscroll]; return [y, onwindowscroll];

@ -0,0 +1,10 @@
{
"code": "unclosed-script",
"message": "<script> must have a closing tag",
"start": {
"line": 3,
"column": 22,
"character": 32
},
"pos": 32
}

@ -0,0 +1,10 @@
{
"code": "unclosed-style",
"message": "<style> must have a closing tag",
"start": {
"line": 3,
"column": 22,
"character": 31
},
"pos": 31
}

@ -0,0 +1,10 @@
{
"code": "unclosed-style",
"message": "<style> must have a closing tag",
"start": {
"line": 3,
"column": 7,
"character": 31
},
"pos": 31
}

@ -0,0 +1,3 @@
<h1>Hello {name}!</h1>
<style>

@ -0,0 +1,10 @@
<script>
let name = 'world';
</script
>
<h1>Hello {name}!</h1>

@ -0,0 +1,150 @@
{
"html": {
"start": 51,
"end": 73,
"type": "Fragment",
"children": [
{
"start": 49,
"end": 51,
"type": "Text",
"raw": "\n\n",
"data": "\n\n"
},
{
"start": 51,
"end": 73,
"type": "Element",
"name": "h1",
"attributes": [],
"children": [
{
"start": 55,
"end": 61,
"type": "Text",
"raw": "Hello ",
"data": "Hello "
},
{
"start": 61,
"end": 67,
"type": "MustacheTag",
"expression": {
"type": "Identifier",
"start": 62,
"end": 66,
"loc": {
"start": {
"line": 10,
"column": 11
},
"end": {
"line": 10,
"column": 15
}
},
"name": "name"
}
},
{
"start": 67,
"end": 68,
"type": "Text",
"raw": "!",
"data": "!"
}
]
}
]
},
"instance": {
"type": "Script",
"start": 0,
"end": 49,
"context": "default",
"content": {
"type": "Program",
"start": 8,
"end": 30,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 0
}
},
"body": [
{
"type": "VariableDeclaration",
"start": 10,
"end": 29,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 20
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 14,
"end": 28,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 19
}
},
"id": {
"type": "Identifier",
"start": 14,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 9
}
},
"name": "name"
},
"init": {
"type": "Literal",
"start": 21,
"end": 28,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 19
}
},
"value": "world",
"raw": "'world'"
}
}
],
"kind": "let"
}
],
"sourceType": "module"
}
}
}

@ -0,0 +1,12 @@
<div>foo</div>
<style>
div {
color: red;
}
</style
>

@ -0,0 +1,97 @@
{
"html": {
"start": 0,
"end": 14,
"type": "Fragment",
"children": [
{
"start": 0,
"end": 14,
"type": "Element",
"name": "div",
"attributes": [],
"children": [
{
"start": 5,
"end": 8,
"type": "Text",
"raw": "foo",
"data": "foo"
}
]
},
{
"start": 14,
"end": 16,
"type": "Text",
"raw": "\n\n",
"data": "\n\n"
}
]
},
"css": {
"type": "Style",
"start": 16,
"end": 66,
"attributes": [],
"children": [
{
"type": "Rule",
"prelude": {
"type": "SelectorList",
"children": [
{
"type": "Selector",
"children": [
{
"type": "TypeSelector",
"name": "div",
"start": 25,
"end": 28
}
],
"start": 25,
"end": 28
}
],
"start": 25,
"end": 28
},
"block": {
"type": "Block",
"children": [
{
"type": "Declaration",
"important": false,
"property": "color",
"value": {
"type": "Value",
"children": [
{
"type": "Identifier",
"name": "red",
"start": 40,
"end": 43
}
],
"start": 40,
"end": 43
},
"start": 33,
"end": 43
}
],
"start": 29,
"end": 47
},
"start": 25,
"end": 47
}
],
"content": {
"start": 23,
"end": 48,
"styles": "\n\tdiv {\n\t\tcolor: red;\n\t}\n"
}
}
}

@ -1,5 +1,4 @@
export default { export default {
skip_if_ssr: true,
props: { props: {
foo: false foo: false

@ -1,5 +1,13 @@
export default { export default {
skip_if_ssr: true, ssrHtml: `
<input type="radio" value="radio1">
<input type="radio" value="radio2" checked>
<input type="radio" value="radio3">
<input type="checkbox" value="check1">
<input type="checkbox" value="check2" checked>
<input type="checkbox" value="check3">
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const event = new window.MouseEvent('click'); const event = new window.MouseEvent('click');

@ -25,6 +25,21 @@ export default {
<p>Beta</p>`, <p>Beta</p>`,
ssrHtml: `
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p>Beta</p>`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);

@ -25,6 +25,21 @@ export default {
<p>Beta</p>`, <p>Beta</p>`,
ssrHtml: `
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p>Beta</p>`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);

@ -64,6 +64,54 @@ export default {
</div> </div>
`, `,
ssrHtml: `
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p>Beta</p>
</div>
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]"> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p></p>
</div>
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]"> Beta
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Gamma
</label>
<p>Gamma</p>
</div>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);

@ -12,6 +12,19 @@ export default {
<p>1, 2, 3</p>`, <p>1, 2, 3</p>`,
ssrHtml: `
<label>
<input type="checkbox" value="1" checked> 1
</label>
<label>
<input type="checkbox" value="2" checked> 2
</label>
<label>
<input type="checkbox" value="3" checked> 3
</label>
<p>1, 2, 3</p>`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);

@ -63,7 +63,53 @@ export default {
<p>Gamma</p> <p>Gamma</p>
</div> </div>
`, `,
ssrHtml: `
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p>Beta</p>
</div>
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]"> Beta
</label>
<label>
<input type="checkbox" value="[object Object]"> Gamma
</label>
<p></p>
</div>
<div>
<label>
<input type="checkbox" value="[object Object]"> Alpha
</label>
<label>
<input type="checkbox" value="[object Object]"> Beta
</label>
<label>
<input type="checkbox" value="[object Object]" checked> Gamma
</label>
<p>Gamma</p>
</div>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);

@ -17,7 +17,24 @@ export default {
<label><input type="checkbox" value="3"> 3</label> <label><input type="checkbox" value="3"> 3</label>
<p>3</p> <p>3</p>
`, `,
ssrHtml: `
<label><input type="checkbox" value="1" checked> 1</label>
<label><input type="checkbox" value="2"> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p>1</p>
<label><input type="checkbox" value="1"> 1</label>
<label><input type="checkbox" value="2" checked> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p>2</p>
<label><input type="checkbox" value="1"> 1</label>
<label><input type="checkbox" value="2"> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p></p>
<label><input type="checkbox" value="1"> 1</label>
<label><input type="checkbox" value="2"> 2</label>
<label><input type="checkbox" value="3" checked> 3</label>
<p>3</p>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);

@ -17,7 +17,24 @@ export default {
<label><input type="checkbox" value="3"> 3</label> <label><input type="checkbox" value="3"> 3</label>
<p>1</p> <p>1</p>
`, `,
ssrHtml: `
<label><input type="checkbox" value="1" checked> 1</label>
<label><input type="checkbox" value="2"> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p>1</p>
<label><input type="checkbox" value="1" checked> 1</label>
<label><input type="checkbox" value="2" checked> 2</label>
<label><input type="checkbox" value="3" checked> 3</label>
<p>1, 2, 3</p>
<label><input type="checkbox" value="1"> 1</label>
<label><input type="checkbox" value="2" checked> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p>2</p>
<label><input type="checkbox" value="1" checked> 1</label>
<label><input type="checkbox" value="2"> 2</label>
<label><input type="checkbox" value="3"> 3</label>
<p>1</p>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);

@ -13,7 +13,6 @@ export default {
<label><input type="checkbox" value="z"> z</label> <label><input type="checkbox" value="z"> z</label>
<p></p> <p></p>
`, `,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save