From 7ec1bdb7126b185ef2dcf2a7105a8f5f57d6e44c Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Sat, 27 Apr 2019 21:35:32 +0200 Subject: [PATCH 01/41] Don't show 'Empty block' warnings for non-existent await branches --- src/compile/nodes/CatchBlock.ts | 6 +++-- src/compile/nodes/PendingBlock.ts | 6 +++-- src/compile/nodes/ThenBlock.ts | 6 +++-- src/parse/state/mustache.ts | 25 ++++++++++++++----- .../samples/await-then-catch/output.json | 5 +++- .../samples/await-no-catch/input.svelte | 9 +++++++ .../samples/await-no-catch/warnings.json | 1 + .../await-shorthand-no-catch/input.svelte | 7 ++++++ .../await-shorthand-no-catch/warnings.json | 1 + 9 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 test/validator/samples/await-no-catch/input.svelte create mode 100644 test/validator/samples/await-no-catch/warnings.json create mode 100644 test/validator/samples/await-shorthand-no-catch/input.svelte create mode 100644 test/validator/samples/await-shorthand-no-catch/warnings.json diff --git a/src/compile/nodes/CatchBlock.ts b/src/compile/nodes/CatchBlock.ts index f728c1b850..0941e68d5b 100644 --- a/src/compile/nodes/CatchBlock.ts +++ b/src/compile/nodes/CatchBlock.ts @@ -15,6 +15,8 @@ export default class CatchBlock extends Node { this.scope.add(parent.error, parent.expression.dependencies, this); this.children = map_children(component, parent, this.scope, info.children); - this.warn_if_empty_block(); + if (!info.skip) { + this.warn_if_empty_block(); + } } -} \ No newline at end of file +} diff --git a/src/compile/nodes/PendingBlock.ts b/src/compile/nodes/PendingBlock.ts index 720442fab6..61e315481e 100644 --- a/src/compile/nodes/PendingBlock.ts +++ b/src/compile/nodes/PendingBlock.ts @@ -10,6 +10,8 @@ export default class PendingBlock extends Node { super(component, parent, scope, info); this.children = map_children(component, parent, scope, info.children); - this.warn_if_empty_block(); + if (!info.skip) { + this.warn_if_empty_block(); + } } -} \ No newline at end of file +} diff --git a/src/compile/nodes/ThenBlock.ts b/src/compile/nodes/ThenBlock.ts index 54319a7ae5..ace5cfb5c1 100644 --- a/src/compile/nodes/ThenBlock.ts +++ b/src/compile/nodes/ThenBlock.ts @@ -15,6 +15,8 @@ export default class ThenBlock extends Node { this.scope.add(parent.value, parent.expression.dependencies, this); this.children = map_children(component, parent, this.scope, info.children); - this.warn_if_empty_block(); + if (!info.skip) { + this.warn_if_empty_block(); + } } -} \ No newline at end of file +} diff --git a/src/parse/state/mustache.ts b/src/parse/state/mustache.ts index 1acae36c9c..c24b5995a2 100644 --- a/src/parse/state/mustache.ts +++ b/src/parse/state/mustache.ts @@ -172,7 +172,8 @@ export default function mustache(parser: Parser) { start, end: null, type: 'ThenBlock', - children: [] + children: [], + skip: false }; await_block.then = then_block; @@ -196,7 +197,8 @@ export default function mustache(parser: Parser) { start, end: null, type: 'CatchBlock', - children: [] + children: [], + skip: false }; await_block.catch = catch_block; @@ -235,19 +237,22 @@ export default function mustache(parser: Parser) { start: null, end: null, type: 'PendingBlock', - children: [] + children: [], + skip: true }, then: { start: null, end: null, type: 'ThenBlock', - children: [] + children: [], + skip: true }, catch: { start: null, end: null, type: 'CatchBlock', - children: [] + children: [], + skip: true }, } : { @@ -310,7 +315,15 @@ export default function mustache(parser: Parser) { parser.stack.push(block); if (type === 'AwaitBlock') { - const child_block = await_block_shorthand ? block.then : block.pending; + let child_block; + if (await_block_shorthand) { + block.then.skip = false; + child_block = block.then; + } else { + block.pending.skip = false; + child_block = block.pending; + } + child_block.start = parser.index; parser.stack.push(child_block); } diff --git a/test/parser/samples/await-then-catch/output.json b/test/parser/samples/await-then-catch/output.json index 21fc13eff9..f62ad16574 100644 --- a/test/parser/samples/await-then-catch/output.json +++ b/test/parser/samples/await-then-catch/output.json @@ -19,6 +19,7 @@ "pending": { "start": 19, "end": 39, + "skip": false, "type": "PendingBlock", "children": [ { @@ -53,6 +54,7 @@ "then": { "start": 39, "end": 88, + "skip": false, "type": "ThenBlock", "children": [ { @@ -98,6 +100,7 @@ "catch": { "start": 88, "end": 140, + "skip": false, "type": "CatchBlock", "children": [ { @@ -158,4 +161,4 @@ "css": null, "instance": null, "module": null -} \ No newline at end of file +} diff --git a/test/validator/samples/await-no-catch/input.svelte b/test/validator/samples/await-no-catch/input.svelte new file mode 100644 index 0000000000..1d332f0e32 --- /dev/null +++ b/test/validator/samples/await-no-catch/input.svelte @@ -0,0 +1,9 @@ + + +{#await promise} +

Loading

+{:then data} +

Data: {data}

+{/await} diff --git a/test/validator/samples/await-no-catch/warnings.json b/test/validator/samples/await-no-catch/warnings.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/test/validator/samples/await-no-catch/warnings.json @@ -0,0 +1 @@ +[] diff --git a/test/validator/samples/await-shorthand-no-catch/input.svelte b/test/validator/samples/await-shorthand-no-catch/input.svelte new file mode 100644 index 0000000000..e106f8d842 --- /dev/null +++ b/test/validator/samples/await-shorthand-no-catch/input.svelte @@ -0,0 +1,7 @@ + + +{#await promise then data} +

Data: {data}

+{/await} diff --git a/test/validator/samples/await-shorthand-no-catch/warnings.json b/test/validator/samples/await-shorthand-no-catch/warnings.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/test/validator/samples/await-shorthand-no-catch/warnings.json @@ -0,0 +1 @@ +[] From 6ebd72fc2214dc5850a3fc0327ebb07acc05d640 Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Sun, 28 Apr 2019 19:09:50 +0200 Subject: [PATCH 02/41] Check if a figcaption's first element ancestor is a figure --- src/compile/nodes/Element.ts | 16 +++++++++++++++- .../input.svelte | 10 ++++++++++ .../warnings.json | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/validator/samples/a11y-figcaption-in-non-element-block/input.svelte create mode 100644 test/validator/samples/a11y-figcaption-in-non-element-block/warnings.json diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index b38ee5b6fb..ac2b81b3e7 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -224,7 +224,21 @@ export default class Element extends Node { } if (this.name === 'figcaption') { - if (this.parent.name !== 'figure') { + let { parent } = this; + let is_figure_parent = false; + + while (parent) { + if (parent.name === 'figure') { + is_figure_parent = true; + break; + } + if (parent.type === 'Element') { + break; + } + parent = parent.parent; + } + + if (!is_figure_parent) { this.component.warn(this, { code: `a11y-structure`, message: `A11y:
must be an immediate child of
` diff --git a/test/validator/samples/a11y-figcaption-in-non-element-block/input.svelte b/test/validator/samples/a11y-figcaption-in-non-element-block/input.svelte new file mode 100644 index 0000000000..9d4b6ded4d --- /dev/null +++ b/test/validator/samples/a11y-figcaption-in-non-element-block/input.svelte @@ -0,0 +1,10 @@ + + +
+ a picture of a foo + {#if caption} +
{caption}
+ {/if} +
diff --git a/test/validator/samples/a11y-figcaption-in-non-element-block/warnings.json b/test/validator/samples/a11y-figcaption-in-non-element-block/warnings.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/test/validator/samples/a11y-figcaption-in-non-element-block/warnings.json @@ -0,0 +1 @@ +[] From 2484b9e597dc3d065dc5e7e7bec5e06879b36c27 Mon Sep 17 00:00:00 2001 From: thollander Date: Sun, 28 Apr 2019 20:20:35 +0200 Subject: [PATCH 03/41] Create a new abstraction level to handle `Block` - `AbstractBlock` contains the Block' specific rules - extends a `Node` - has a `block` and `children` - can warn if empty --- src/compile/nodes/CatchBlock.ts | 11 ++++------ src/compile/nodes/EachBlock.ts | 8 +++----- src/compile/nodes/ElseBlock.ts | 9 +++----- src/compile/nodes/IfBlock.ts | 10 +++------ src/compile/nodes/PendingBlock.ts | 9 +++----- src/compile/nodes/ThenBlock.ts | 9 +++----- src/compile/nodes/shared/AbstractBlock.ts | 25 +++++++++++++++++++++++ src/compile/nodes/shared/Node.ts | 16 ++------------- 8 files changed, 46 insertions(+), 51 deletions(-) create mode 100644 src/compile/nodes/shared/AbstractBlock.ts diff --git a/src/compile/nodes/CatchBlock.ts b/src/compile/nodes/CatchBlock.ts index f728c1b850..5171631845 100644 --- a/src/compile/nodes/CatchBlock.ts +++ b/src/compile/nodes/CatchBlock.ts @@ -1,12 +1,9 @@ -import Node from './shared/Node'; -import Block from '../render-dom/Block'; import map_children from './shared/map_children'; import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; -export default class CatchBlock extends Node { - block: Block; +export default class CatchBlock extends AbstractBlock { scope: TemplateScope; - children: Node[]; constructor(component, parent, scope, info) { super(component, parent, scope, info); @@ -14,7 +11,7 @@ export default class CatchBlock extends Node { this.scope = scope.child(); this.scope.add(parent.error, parent.expression.dependencies, this); this.children = map_children(component, parent, this.scope, info.children); - + this.warn_if_empty_block(); } -} \ No newline at end of file +} diff --git a/src/compile/nodes/EachBlock.ts b/src/compile/nodes/EachBlock.ts index ce9b63fe47..d143cdd1ec 100644 --- a/src/compile/nodes/EachBlock.ts +++ b/src/compile/nodes/EachBlock.ts @@ -1,9 +1,9 @@ import Node from './shared/Node'; import ElseBlock from './ElseBlock'; -import Block from '../render-dom/Block'; import Expression from './shared/Expression'; import map_children from './shared/map_children'; import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; import { Node as INode } from '../../interfaces'; function unpack_destructuring(contexts: Array<{ name: string, tail: string }>, node: INode, tail: string) { @@ -25,10 +25,9 @@ function unpack_destructuring(contexts: Array<{ name: string, tail: string }>, n } } -export default class EachBlock extends Node { +export default class EachBlock extends AbstractBlock { type: 'EachBlock'; - block: Block; expression: Expression; context_node: Node; @@ -41,7 +40,6 @@ export default class EachBlock extends Node { has_animation: boolean; has_binding = false; - children: Node[]; else?: ElseBlock; constructor(component, parent, scope, info) { @@ -85,7 +83,7 @@ export default class EachBlock extends Node { } } - this.warn_if_empty_block(); // TODO would be better if EachBlock, IfBlock etc extended an abstract Block class + this.warn_if_empty_block(); this.else = info.else ? new ElseBlock(component, this, this.scope, info.else) diff --git a/src/compile/nodes/ElseBlock.ts b/src/compile/nodes/ElseBlock.ts index 90886f8fdc..61c1aa5455 100644 --- a/src/compile/nodes/ElseBlock.ts +++ b/src/compile/nodes/ElseBlock.ts @@ -1,11 +1,8 @@ -import Node from './shared/Node'; -import Block from '../render-dom/Block'; import map_children from './shared/map_children'; +import AbstractBlock from './shared/AbstractBlock'; -export default class ElseBlock extends Node { +export default class ElseBlock extends AbstractBlock { type: 'ElseBlock'; - children: Node[]; - block: Block; constructor(component, parent, scope, info) { super(component, parent, scope, info); @@ -13,4 +10,4 @@ export default class ElseBlock extends Node { this.warn_if_empty_block(); } -} \ No newline at end of file +} diff --git a/src/compile/nodes/IfBlock.ts b/src/compile/nodes/IfBlock.ts index 5b79d16385..ae6aede834 100644 --- a/src/compile/nodes/IfBlock.ts +++ b/src/compile/nodes/IfBlock.ts @@ -1,17 +1,13 @@ -import Node from './shared/Node'; import ElseBlock from './ElseBlock'; -import Block from '../render-dom/Block'; import Expression from './shared/Expression'; import map_children from './shared/map_children'; +import AbstractBlock from './shared/AbstractBlock'; -export default class IfBlock extends Node { +export default class IfBlock extends AbstractBlock { type: 'IfBlock'; expression: Expression; - children: any[]; else: ElseBlock; - block: Block; - constructor(component, parent, scope, info) { super(component, parent, scope, info); @@ -24,4 +20,4 @@ export default class IfBlock extends Node { this.warn_if_empty_block(); } -} \ No newline at end of file +} diff --git a/src/compile/nodes/PendingBlock.ts b/src/compile/nodes/PendingBlock.ts index 720442fab6..688039c2ec 100644 --- a/src/compile/nodes/PendingBlock.ts +++ b/src/compile/nodes/PendingBlock.ts @@ -1,10 +1,7 @@ -import Node from './shared/Node'; -import Block from '../render-dom/Block'; import map_children from './shared/map_children'; +import AbstractBlock from './shared/AbstractBlock'; -export default class PendingBlock extends Node { - block: Block; - children: Node[]; +export default class PendingBlock extends AbstractBlock { constructor(component, parent, scope, info) { super(component, parent, scope, info); @@ -12,4 +9,4 @@ export default class PendingBlock extends Node { this.warn_if_empty_block(); } -} \ No newline at end of file +} diff --git a/src/compile/nodes/ThenBlock.ts b/src/compile/nodes/ThenBlock.ts index 54319a7ae5..d8d251e1d7 100644 --- a/src/compile/nodes/ThenBlock.ts +++ b/src/compile/nodes/ThenBlock.ts @@ -1,12 +1,9 @@ -import Node from './shared/Node'; -import Block from '../render-dom/Block'; import map_children from './shared/map_children'; import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; -export default class ThenBlock extends Node { - block: Block; +export default class ThenBlock extends AbstractBlock { scope: TemplateScope; - children: Node[]; constructor(component, parent, scope, info) { super(component, parent, scope, info); @@ -17,4 +14,4 @@ export default class ThenBlock extends Node { this.warn_if_empty_block(); } -} \ No newline at end of file +} diff --git a/src/compile/nodes/shared/AbstractBlock.ts b/src/compile/nodes/shared/AbstractBlock.ts new file mode 100644 index 0000000000..1dfebd51f0 --- /dev/null +++ b/src/compile/nodes/shared/AbstractBlock.ts @@ -0,0 +1,25 @@ +import Block from '../../render-dom/Block'; +import Component from './../../Component'; +import Node from './Node'; + +export default class AbstractBlock extends Node { + block: Block; + children: Node[]; + + constructor(component: Component, parent, scope, info: any) { + super(component, parent, scope, info); + } + + warn_if_empty_block() { + if (!this.children || this.children.length > 1) return; + + const child = this.children[0]; + + if (!child || (child.type === 'Text' && !/[^ \r\n\f\v\t]/.test(child.data))) { + this.component.warn(this, { + code: 'empty-block', + message: 'Empty block' + }); + } + } +} diff --git a/src/compile/nodes/shared/Node.ts b/src/compile/nodes/shared/Node.ts index 92c1cc40d7..b6eaf9965d 100644 --- a/src/compile/nodes/shared/Node.ts +++ b/src/compile/nodes/shared/Node.ts @@ -1,3 +1,4 @@ +import Attribute from './../Attribute'; import Component from './../../Component'; export default class Node { @@ -12,6 +13,7 @@ export default class Node { can_use_innerhtml: boolean; var: string; + attributes: Attribute[]; constructor(component: Component, parent, scope, info: any) { this.start = info.start; @@ -64,18 +66,4 @@ export default class Node { this.parent.type === type || this.parent.has_ancestor(type) : false; } - - warn_if_empty_block() { - if (!/Block$/.test(this.type) || !this.children) return; - if (this.children.length > 1) return; - - const child = this.children[0]; - - if (!child || (child.type === 'Text' && !/[^ \r\n\f\v\t]/.test(child.data))) { - this.component.warn(this, { - code: 'empty-block', - message: 'Empty block' - }); - } - } } From 4cbbabecb575f6adedeb149545105a3040c3208d Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Mon, 29 Apr 2019 22:31:35 +0200 Subject: [PATCH 04/41] Make null the default anchor of insertBefore --- src/internal/dom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/dom.js b/src/internal/dom.js index db1b95e4da..b84568a988 100644 --- a/src/internal/dom.js +++ b/src/internal/dom.js @@ -3,7 +3,7 @@ export function append(target, node) { } export function insert(target, node, anchor) { - target.insertBefore(node, anchor); + target.insertBefore(node, anchor || null); } export function detach(node) { From 5813248e5a958670c8c22648697e04e2efa17dc0 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Sun, 28 Apr 2019 20:12:01 +0100 Subject: [PATCH 05/41] Site: add anchors to blog posts Closes #2609 --- site/src/routes/blog/[slug].svelte | 44 +++++++++++++++++++++++++++++- site/src/routes/blog/_posts.js | 18 +++++++++++- site/src/utils/slug.js | 8 +++++- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/site/src/routes/blog/[slug].svelte b/site/src/routes/blog/[slug].svelte index c64130efe5..610fb6506b 100644 --- a/site/src/routes/blog/[slug].svelte +++ b/site/src/routes/blog/[slug].svelte @@ -133,6 +133,48 @@ border: 0.8rem solid var(--second); } + /* headers anchors */ + + .post :global(.offset-anchor) { + position: relative; + display: block; + top: calc(-1 * (var(--nav-h) + var(--top-offset) - 1rem)); + width: 0; + height: 0; + } + + .post :global(.anchor) { + position: absolute; + display: block; + background: url(/icons/link.svg) 0 50% no-repeat; + background-size: 1em 1em; + width: 1.4em; + height: 1em; + top: calc((var(--h3) - 24px) / 2); + left: -1.4em; + opacity: 0; + transition: opacity 0.2s; + border: none !important; /* TODO get rid of linkify */ + } + + .post :global(h2):hover :global(.anchor), + .post :global(h3):hover :global(.anchor), + .post :global(h4):hover :global(.anchor), + .post :global(h5):hover :global(.anchor), + .post :global(h6):hover :global(.anchor) { + opacity: 1; + } + + + @media (max-width: 768px) { + .post :global(.anchor) { + transform: scale(0.6); + opacity: 1; + top: calc((1em - 0.6 * 24px) / 2); + left: -1.0em; + } + } + @media (min-width: 910px) { .post :global(.max) { width: calc(100vw - 2 * var(--side-nav)); @@ -164,4 +206,4 @@ height: 640px; } } */ - \ No newline at end of file + diff --git a/site/src/routes/blog/_posts.js b/site/src/routes/blog/_posts.js index 7a99011c95..bc8c479f1b 100644 --- a/site/src/routes/blog/_posts.js +++ b/site/src/routes/blog/_posts.js @@ -1,10 +1,15 @@ import fs from 'fs'; import path from 'path'; -import { extract_frontmatter, langs, link_renderer } from '../../utils/markdown.js'; import marked from 'marked'; import PrismJS from 'prismjs'; import 'prismjs/components/prism-bash'; +import { extract_frontmatter, langs, link_renderer } from '../../utils/markdown'; +import { makeSlugProcessor } from '../../utils/slug'; +import { SLUG_PRESERVE_UNICODE } from '../../../config'; + +const makeSlug = makeSlugProcessor(SLUG_PRESERVE_UNICODE); + export default function get_posts() { return fs .readdirSync('content/blog') @@ -39,6 +44,17 @@ export default function get_posts() { return `
${highlighted}
`; }; + renderer.heading = (text, level, rawtext) => { + const fragment = makeSlug(rawtext); + + return ` + + + + ${text} + `; + }; + const html = marked( content.replace(/^\t+/gm, match => match.split('\t').join(' ')), { renderer } diff --git a/site/src/utils/slug.js b/site/src/utils/slug.js index 79b82c12ce..d99bc50ecb 100644 --- a/site/src/utils/slug.js +++ b/site/src/utils/slug.js @@ -55,10 +55,16 @@ export const unicodeSafeProcessor = string => }, []) .join(SLUG_SEPARATOR); +/* processor */ + +export const makeSlugProcessor = (preserveUnicode = false) => preserveUnicode + ? unicodeSafeProcessor + : urlsafeSlugProcessor; + /* session processor */ export const makeSessionSlugProcessor = (preserveUnicode = false) => { - const processor = preserveUnicode ? unicodeSafeProcessor : urlsafeSlugProcessor; + const processor = makeSlugProcessor(preserveUnicode); const seen = new Set(); return string => { From 0d890b1359ac5dfd04310c7ac9e6118f49d9d01c Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 29 Apr 2019 21:22:08 -0400 Subject: [PATCH 06/41] fix resubscriptions inside script block (#2435) --- src/compile/render-dom/index.ts | 2 +- test/runtime/samples/store-resubscribe-b/_config.js | 3 +++ test/runtime/samples/store-resubscribe-b/main.svelte | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/store-resubscribe-b/_config.js create mode 100644 test/runtime/samples/store-resubscribe-b/main.svelte diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index a6ef0ac69c..5c095edb42 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -201,7 +201,7 @@ export default function dom( const variable = component.var_lookup.get(name); if (variable && (variable.hoistable || variable.global || variable.module)) return; - if (single) { + if (single && !(variable.subscribable && variable.reassigned)) { code.prependRight(node.start, `$$invalidate('${name}', `); code.appendLeft(node.end, `)`); } else { diff --git a/test/runtime/samples/store-resubscribe-b/_config.js b/test/runtime/samples/store-resubscribe-b/_config.js new file mode 100644 index 0000000000..d043bbcd87 --- /dev/null +++ b/test/runtime/samples/store-resubscribe-b/_config.js @@ -0,0 +1,3 @@ +export default { + html: `42`, +}; diff --git a/test/runtime/samples/store-resubscribe-b/main.svelte b/test/runtime/samples/store-resubscribe-b/main.svelte new file mode 100644 index 0000000000..0bc321f698 --- /dev/null +++ b/test/runtime/samples/store-resubscribe-b/main.svelte @@ -0,0 +1,7 @@ + + +{$foo} From d2b202d30a3f793691ea4820eca8d71c8c63642a Mon Sep 17 00:00:00 2001 From: Loren Brichter Date: Tue, 30 Apr 2019 12:21:45 -0400 Subject: [PATCH 07/41] Subtle tweaks to spring animations Use verlet-style integration for spring animations. Rather than keeping track of "value" and velocity over time, keep track of value and previous-value, and derive velocity from the delta every tick. This has a few benefits, including greater stability (position and velocity can't drift) and simplifying signature of tick_spring (no need to pass velocity back up). Pulling "settled" flag out of the return signature as well means return value is just "next value", simplifying code mapping over objects and arrays, and eliminating duplicated code across get_initial_velocity, get_threshold and tick_spring. Refactored "threshold" calcs, extremely inexpensive to do inline in tick_spring rather than create a parallel structure. Also fixes a rare pathological case where springs will never settle (reading through the code, could happen if velocity was non-zero during a set() where target==current, threshold will be calculated to be zero and settled will always be set to false, leading to infinite animations). Functional changes: In my experience dealing with spring animations, there are a handful of edge-cases where it is nice to have library support. 99% of the time, the only times you'd want to fudge 'stiffness' and 'damping' is during a live interaction (e.g. dragging something around). By providing an idiomatic mechanism hopefully the code around dealing with that could be simpler. I propose an additional "options" parameter to 'set()' and 'update()'. If passed {hard:true} the set will be considered a "hard" set, where you want the value to be set to the target value immediately. This could be extremely useful when implementing dragging for instance. If passed {soft:true} or {soft:}, the set will be considered a "soft" set, where momentum will be preserved for some duration before settling. This could be useful when implementing "throwing", e.g. after a drag, on mouseup, 'soft set' to some position and the user's previous momentum will be honored before settling down. Technically momentum preservation happens to a degree now, but aggressive stiffness and/or damping values make it nearly unapparent. This handles the case where you may want more aggressive or heavily underdamped springs but without the apparent velocity discontinuity that happens on throw. (As a real example, in FaceTime, note behavior when tossing around the picture-in-picture, or the iPhone X gestural behavior when tossing apps back to the home screen). Internally this is implemented by temporarily setting mass to infinity and ramping back to normal over some duration. "Hard sets" are also special-cased to trigger a same-frame set and fulfilment, leading to more responsive dragging. Best case is a one frame improvement in drag latency (noticed in Safari). This also handles the "old way" method of munging 'stiffness' and 'damping' to 1, so the improvement applies to existing code. --- src/motion/spring.js | 182 ++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 117 deletions(-) diff --git a/src/motion/spring.js b/src/motion/spring.js index 2a5824f088..1f23d103f6 100644 --- a/src/motion/spring.js +++ b/src/motion/spring.js @@ -2,144 +2,92 @@ import { writable } from 'svelte/store'; // eslint-disable-line import/no-unreso import { loop } from 'svelte/internal'; // eslint-disable-line import/no-unresolved import { is_date } from './utils.js'; -function get_initial_velocity(value) { - if (typeof value === 'number' || is_date(value)) return 0; - - if (Array.isArray(value)) return value.map(get_initial_velocity); - - if (value && typeof value === 'object') { - const velocities = {}; - for (const k in value) velocities[k] = get_initial_velocity(value[k]); - return velocities; - } - - throw new Error(`Cannot spring ${typeof value} values`); -} - -function get_threshold(value, target_value, precision) { - if (typeof value === 'number' || is_date(value)) return precision * Math.abs((target_value - value)); - - if (Array.isArray(value)) return value.map((v, i) => get_threshold(v, target_value[i], precision)); - - if (value && typeof value === 'object') { - const threshold = {}; - for (const k in value) threshold[k] = get_threshold(value[k], target_value[k], precision); - return threshold; - } - - throw new Error(`Cannot spring ${typeof value} values`); -} - -function tick_spring(velocity, current_value, target_value, stiffness, damping, multiplier, threshold) { - let settled = true; - let value; - +function tick_spring(ctx, last_value, current_value, target_value) { if (typeof current_value === 'number' || is_date(current_value)) { const delta = target_value - current_value; - const spring = stiffness * delta; - const damper = damping * velocity; - - const acceleration = spring - damper; - - velocity += acceleration; - const d = velocity * multiplier; - - if (is_date(current_value)) { - value = new Date(current_value.getTime() + d); + const velocity = (current_value - last_value) / (ctx.dt||1/60); // guard div by 0 + const spring = ctx.opts.stiffness * delta; + const damper = ctx.opts.damping * velocity; + const acceleration = (spring - damper) * ctx.inv_mass; + const d = (velocity + acceleration) * ctx.dt; + + if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) { + return target_value; // settled } else { - value = current_value + d; - } - - if (Math.abs(d) > threshold || Math.abs(delta) > threshold) settled = false; - } - - else if (Array.isArray(current_value)) { - value = current_value.map((v, i) => { - const result = tick_spring( - velocity[i], - v, - target_value[i], - stiffness, - damping, - multiplier, - threshold[i] - ); - - velocity[i] = result.velocity; - if (!result.settled) settled = false; - return result.value; - }); - } - - else if (typeof current_value === 'object') { - value = {}; - for (const k in current_value) { - const result = tick_spring( - velocity[k], - current_value[k], - target_value[k], - stiffness, - damping, - multiplier, - threshold[k] - ); - - velocity[k] = result.velocity; - if (!result.settled) settled = false; - value[k] = result.value; + ctx.settled = false; // signal loop to keep ticking + return is_date(current_value) ? + new Date(current_value.getTime() + d) : current_value + d; } - } - - else { + } else if (Array.isArray(current_value)) { + return current_value.map((_, i) => + tick_spring(ctx, last_value[i], current_value[i], target_value[i])); + } else if (typeof current_value === 'object') { + let next_value = {}; + for (const k in current_value) + next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]); + return next_value; + } else { throw new Error(`Cannot spring ${typeof value} values`); } - - return { velocity, value, settled }; } export function spring(value, opts = {}) { const store = writable(value); + const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts; - const { stiffness = 0.15, damping = 0.8, precision = 0.001 } = opts; - const velocity = get_initial_velocity(value); - - let task; + let last_time, task, current_token; + let last_value = value; let target_value = value; - let last_time; - let settled; - let threshold; - let current_token; - function set(new_value) { - target_value = new_value; - threshold = get_threshold(value, target_value, spring.precision); + let inv_mass = 1; + let inv_mass_recovery_rate = 0; + let cancel_task = false; + function set(new_value, opts = {}) { + target_value = new_value; const token = current_token = {}; + + if (opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) { + cancel_task = true; // cancel any running animation + last_time = window.performance.now(); + last_value = value; + store.set(value = target_value); + return new Promise(f => f()); // fulfil immediately + } else if (opts.soft) { + let rate = opts.soft === true ? .5 : +opts.soft; + inv_mass_recovery_rate = 1 / (rate * 60); + inv_mass = 0; // infinite mass, unaffected by spring forces + } if (!task) { last_time = window.performance.now(); - settled = false; - + cancel_task = false; + task = loop(now => { - ({ value, settled } = tick_spring( - velocity, - value, - target_value, - spring.stiffness, - spring.damping, - (now - last_time) * 60 / 1000, - threshold - )); + + if (cancel_task) { + cancel_task = false; + task = null; + return false; + } + + inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1); + + const ctx = { + inv_mass, + opts: spring, + settled: true, // tick_spring may signal false + dt: (now - last_time) * 60 / 1000 + }; + const next_value = tick_spring(ctx, last_value, value, target_value); last_time = now; + last_value = value; + store.set(value = next_value); - if (settled) { - value = target_value; + if (ctx.settled) task = null; - } - - store.set(value); - return !settled; + return !ctx.settled; }); } @@ -152,7 +100,7 @@ export function spring(value, opts = {}) { const spring = { set, - update: fn => set(fn(target_value, value)), + update: (fn, opts) => set(fn(target_value, value), opts), subscribe: store.subscribe, stiffness, damping, @@ -160,4 +108,4 @@ export function spring(value, opts = {}) { }; return spring; -} \ No newline at end of file +} From 0e0da70917f5d1487c10d0848d4dbac1f5329885 Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Tue, 30 Apr 2019 22:56:47 +0200 Subject: [PATCH 08/41] Check 'injected' and 'fixed_reactive_declarations' independently --- src/compile/render-dom/index.ts | 5 +++-- test/runtime/samples/reactive-values-fixed/_config.js | 11 +++++++++++ .../runtime/samples/reactive-values-fixed/main.svelte | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 test/runtime/samples/reactive-values-fixed/_config.js create mode 100644 test/runtime/samples/reactive-values-fixed/main.svelte diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index a6ef0ac69c..af33a5b2f0 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -423,14 +423,15 @@ export default function dom( ${set && `$$self.$set = ${set};`} - ${reactive_declarations.length > 0 && deindent` ${injected.length && `let ${injected.join(', ')};`} + + ${reactive_declarations.length > 0 && deindent` $$self.$$.update = ($$dirty = { ${Array.from(all_reactive_dependencies).map(n => `${n}: 1`).join(', ')} }) => { ${reactive_declarations} }; + `} ${fixed_reactive_declarations} - `} return ${stringify_props(filtered_declarations)}; } diff --git a/test/runtime/samples/reactive-values-fixed/_config.js b/test/runtime/samples/reactive-values-fixed/_config.js new file mode 100644 index 0000000000..58aee09c35 --- /dev/null +++ b/test/runtime/samples/reactive-values-fixed/_config.js @@ -0,0 +1,11 @@ +export default { + html: ` +

4

+ `, + + test({ assert, component, target }) { + assert.htmlEqual(target.innerHTML, ` +

4

+ `); + } +}; diff --git a/test/runtime/samples/reactive-values-fixed/main.svelte b/test/runtime/samples/reactive-values-fixed/main.svelte new file mode 100644 index 0000000000..53445e03ba --- /dev/null +++ b/test/runtime/samples/reactive-values-fixed/main.svelte @@ -0,0 +1,6 @@ + + +

{squared}

From df602b74b066b014456f85b46482f84fb29fdfac Mon Sep 17 00:00:00 2001 From: Jon Ross Date: Tue, 30 Apr 2019 17:30:14 -0700 Subject: [PATCH 09/41] Add barebones description of `svelte/register` I don't know if this is correct, but it works for me and this is better than nothing. --- site/content/docs/03-run-time.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/site/content/docs/03-run-time.md b/site/content/docs/03-run-time.md index 5c012ebfa9..76cb1a9bb1 100644 --- a/site/content/docs/03-run-time.md +++ b/site/content/docs/03-run-time.md @@ -558,8 +558,17 @@ You can see a full example on the [animations tutorial](tutorial/animate) ### `svelte/register` -TODO +To render Svelte components server-side, use `require('svelte/register')`; after this, you can use `require` to include any `.svelte` file. + +```js +require('svelte/register'); + +const App = require('./App.svelte'); +... + +App.default.render({ title: 'name' }); +``` ### Client-side component API @@ -569,8 +578,6 @@ TODO const component = new Component(options) ``` ---- - A client-side component — that is, a component compiled with `generate: 'dom'` (or the `generate` option left unspecified) is a JavaScript class. ```js From 10f6da3109983535bcb3393ac23d80fda3821daa Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 30 Apr 2019 20:54:17 -0400 Subject: [PATCH 10/41] fix invalidating stores with UpdateExpression (#2625) --- src/compile/render-dom/index.ts | 26 ++++++------------- .../_config.js | 8 ++++++ .../main.svelte | 11 ++++++++ 3 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 test/runtime/samples/store-increment-updates-reactive/_config.js create mode 100644 test/runtime/samples/store-increment-updates-reactive/main.svelte diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index a6ef0ac69c..622fc034fd 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -169,14 +169,15 @@ export default function dom( scope = scope.parent; } - if (node.type === 'AssignmentExpression') { + if (node.type === 'AssignmentExpression' || node.type === 'UpdateExpression') { + const assignee = node.type === 'AssignmentExpression' ? node.left : node.argument; let names = []; - if (node.left.type === 'MemberExpression') { - const left_object_name = get_object(node.left).name; + if (assignee.type === 'MemberExpression') { + const left_object_name = get_object(assignee).name; left_object_name && (names = [left_object_name]); } else { - names = extract_names(node.left); + names = extract_names(assignee); } if (node.operator === '=' && nodes_match(node.left, node.right)) { @@ -189,9 +190,10 @@ export default function dom( code.overwrite(node.start, node.end, dirty.map(n => component.invalidate(n)).join('; ')); } else { const single = ( - node.left.type === 'Identifier' && + node.type === 'AssignmentExpression' && + assignee.type === 'Identifier' && parent.type === 'ExpressionStatement' && - node.left.name[0] !== '$' + assignee.name[0] !== '$' ); names.forEach(name => { @@ -213,18 +215,6 @@ export default function dom( } } - else if (node.type === 'UpdateExpression') { - const { name } = get_object(node.argument); - - if (scope.find_owner(name) !== component.instance_scope) return; - - const variable = component.var_lookup.get(name); - if (variable && variable.hoistable) return; - - pending_assignments.add(name); - component.has_reactive_assignments = true; - } - if (pending_assignments.size > 0) { if (node.type === 'ArrowFunctionExpression') { const insert = Array.from(pending_assignments).map(name => component.invalidate(name)).join('; '); diff --git a/test/runtime/samples/store-increment-updates-reactive/_config.js b/test/runtime/samples/store-increment-updates-reactive/_config.js new file mode 100644 index 0000000000..f919d724f8 --- /dev/null +++ b/test/runtime/samples/store-increment-updates-reactive/_config.js @@ -0,0 +1,8 @@ +export default { + html: `0`, + + async test({ assert, component, target }) { + await component.increment(); + assert.htmlEqual(target.innerHTML, `1`); + } +}; diff --git a/test/runtime/samples/store-increment-updates-reactive/main.svelte b/test/runtime/samples/store-increment-updates-reactive/main.svelte new file mode 100644 index 0000000000..ceec177f7a --- /dev/null +++ b/test/runtime/samples/store-increment-updates-reactive/main.svelte @@ -0,0 +1,11 @@ + + +{$foo} From 511060ba9480028d1305f3e6f481754ba1ea1f11 Mon Sep 17 00:00:00 2001 From: raveling Date: Wed, 1 May 2019 11:46:28 +1000 Subject: [PATCH 11/41] improve referencing to code editor for mobile readers (#2632) * improve referencing to code editor for mobile readers The current documentation mentions "to the right" which is not accurate for people reading the tutorial on narrow-viewport devices. I changed it to "the code editor", but this may be improved upon to match other more common references. * typo --- site/content/tutorial/01-introduction/01-basics/text.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/tutorial/01-introduction/01-basics/text.md b/site/content/tutorial/01-introduction/01-basics/text.md index 95375edb25..c0fa2f48a3 100644 --- a/site/content/tutorial/01-introduction/01-basics/text.md +++ b/site/content/tutorial/01-introduction/01-basics/text.md @@ -29,4 +29,4 @@ Each tutorial chapter will have a 'Show me' button that you can click if you get ## Understanding components -In Svelte, an application is composed from one or more *components*. A component is a reusable self-contained block of code that encapsulates HTML, CSS and JavaScript that belong together, written into a `.svelte` file. The 'hello world' example on the right is a simple component. \ No newline at end of file +In Svelte, an application is composed from one or more *components*. A component is a reusable self-contained block of code that encapsulates HTML, CSS and JavaScript that belong together, written into a `.svelte` file. The 'hello world' example in the code editor is a simple component. From e73084b6affd9ebfc275857897a51df58095b6b4 Mon Sep 17 00:00:00 2001 From: Benjamin Milde Date: Wed, 1 May 2019 03:51:51 +0200 Subject: [PATCH 12/41] Hint at the reactivity limitation of array methods in the api docs (#2622) * Hint at the reactivity limitation of array methods in the api docs * tweaks --- site/content/docs/01-component-format.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/site/content/docs/01-component-format.md b/site/content/docs/01-component-format.md index d116dd8ff4..93af09b283 100644 --- a/site/content/docs/01-component-format.md +++ b/site/content/docs/01-component-format.md @@ -56,6 +56,8 @@ To change component state and trigger a re-render, just assign to a locally decl Update expressions (`count += 1`) and property assignments (`obj.x = y`) have the same effect. +Because Svelte's reactivity is based on assignments, using array methods like `.push()` and `.splice()` won't automatically trigger updates. Options for getting around this can be found in the [tutorial](tutorial/updating-arrays-and-objects). + ```html \ No newline at end of file diff --git a/test/runtime/samples/dev-warning-missing-data-component/Foo.svelte b/test/runtime/samples/dev-warning-missing-data-component/Foo.svelte index 95422444cc..99e26245ae 100644 --- a/test/runtime/samples/dev-warning-missing-data-component/Foo.svelte +++ b/test/runtime/samples/dev-warning-missing-data-component/Foo.svelte @@ -1,6 +1,7 @@
{x} {y}
\ No newline at end of file From 5a0be42006603944559130e5f4b85f49d9e23420 Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Tue, 30 Apr 2019 01:08:27 +0200 Subject: [PATCH 15/41] Remove the scope key from props when calculating spread --- src/internal/spread.js | 4 ++-- .../component-slot-spread-props/Nested.svelte | 4 ++++ .../component-slot-spread-props/_config.js | 19 +++++++++++++++++++ .../component-slot-spread-props/main.svelte | 8 ++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/runtime/samples/component-slot-spread-props/Nested.svelte create mode 100644 test/runtime/samples/component-slot-spread-props/_config.js create mode 100644 test/runtime/samples/component-slot-spread-props/main.svelte diff --git a/src/internal/spread.js b/src/internal/spread.js index 2b4c8c42d5..0075c947cd 100644 --- a/src/internal/spread.js +++ b/src/internal/spread.js @@ -2,7 +2,7 @@ export function get_spread_update(levels, updates) { const update = {}; const to_null_out = {}; - const accounted_for = {}; + const accounted_for = { $$scope: 1 }; let i = levels.length; while (i--) { @@ -34,4 +34,4 @@ export function get_spread_update(levels, updates) { } return update; -} \ No newline at end of file +} diff --git a/test/runtime/samples/component-slot-spread-props/Nested.svelte b/test/runtime/samples/component-slot-spread-props/Nested.svelte new file mode 100644 index 0000000000..08fb4697a9 --- /dev/null +++ b/test/runtime/samples/component-slot-spread-props/Nested.svelte @@ -0,0 +1,4 @@ +
+ +
+
diff --git a/test/runtime/samples/component-slot-spread-props/_config.js b/test/runtime/samples/component-slot-spread-props/_config.js new file mode 100644 index 0000000000..042bdca6ec --- /dev/null +++ b/test/runtime/samples/component-slot-spread-props/_config.js @@ -0,0 +1,19 @@ +export default { + html: ` +
+ +
+
+ `, + + async test({ assert, component, target }) { + component.value = 'foo'; + + assert.htmlEqual(target.innerHTML, ` +
+ +
+
+ `); + } +}; diff --git a/test/runtime/samples/component-slot-spread-props/main.svelte b/test/runtime/samples/component-slot-spread-props/main.svelte new file mode 100644 index 0000000000..69d1269217 --- /dev/null +++ b/test/runtime/samples/component-slot-spread-props/main.svelte @@ -0,0 +1,8 @@ + + + + + From 3b244a6fdefa35e84a13ac6dcd3b113783b19b06 Mon Sep 17 00:00:00 2001 From: Achim Vedam Date: Wed, 1 May 2019 23:13:13 +0200 Subject: [PATCH 16/41] Consistent sidebars 2641 (#2642) * consistent sidebar tutorial - added css-var for light sidebar-text for easy handling - provide higher contrast for better readability in code and blockquotes - push SHOW ME with higher contrast (on dark instead on white) * minor fixes on opacities and color * adjust sidebar-styles of docs and examples closes #2641 --- site/src/routes/docs/_GuideContents.svelte | 28 +++++----- .../routes/examples/_TableOfContents.svelte | 54 ++++++++++--------- .../tutorial/[slug]/_TableOfContents.svelte | 8 ++- site/src/routes/tutorial/[slug]/index.svelte | 31 +++++------ site/static/global.css | 1 + 5 files changed, 67 insertions(+), 55 deletions(-) diff --git a/site/src/routes/docs/_GuideContents.svelte b/site/src/routes/docs/_GuideContents.svelte index fb2a9dc177..f5407164e4 100644 --- a/site/src/routes/docs/_GuideContents.svelte +++ b/site/src/routes/docs/_GuideContents.svelte @@ -48,19 +48,12 @@ a { position: relative; - opacity: 0.75; - transition: opacity 0.2s; + transition: color 0.2s; border-bottom: none; padding: 0; color: var(--second); } - @media (min-width: 832px) { - a { - color: white; - } - } - .section { display: block; padding: 0 0 .8rem 0; @@ -78,22 +71,33 @@ } .section:hover, - .subsection:hover { + .subsection:hover, + .active { color: var(--flash); - opacity: 1 } .subsection[data-level="4"] { padding-left: 1.2rem; } - .active { opacity: 1 } - .icon-container { position: absolute; top: -.2rem; right: 2.4rem; } + + @media (min-width: 832px) { + a { + color: var(--sidebar-text); + } + + a:hover, + .section:hover, + .subsection:hover, + .active { + color: white + } + }
    diff --git a/site/src/routes/tutorial/[slug]/_TableOfContents.svelte b/site/src/routes/tutorial/[slug]/_TableOfContents.svelte index 4796a71587..b74cc46046 100644 --- a/site/src/routes/tutorial/[slug]/_TableOfContents.svelte +++ b/site/src/routes/tutorial/[slug]/_TableOfContents.svelte @@ -30,13 +30,17 @@ display: block; padding: 0.7em 0; text-align: center; - opacity: 0.7; + opacity: 0.75; color: white; } + a:hover { + opacity: 1; + } + a.disabled, a.disabled:hover, a.disabled:active { color: white; - opacity: 0.4; + opacity: 0.3; } span { diff --git a/site/src/routes/tutorial/[slug]/index.svelte b/site/src/routes/tutorial/[slug]/index.svelte index 5b2c2a6398..9afc3d40df 100644 --- a/site/src/routes/tutorial/[slug]/index.svelte +++ b/site/src/routes/tutorial/[slug]/index.svelte @@ -151,7 +151,7 @@ height: 100%; border-right: 1px solid var(--second); background-color: var(--second); - color: white; + color: var(--sidebar-text); } .chapter-markup { @@ -165,6 +165,7 @@ margin: 4rem 0 1.6rem 0; font-size: var(--h3); line-height: 1; + font-weight: 400; color: white; } @@ -173,16 +174,21 @@ } .chapter-markup :global(a) { + color: var(--sidebar-text); + } + + .chapter-markup :global(a:hover) { color: white; } + .chapter-markup :global(ul) { padding: 0 0 0 2em; } .chapter-markup :global(blockquote) { - background-color: rgba(255,255,255,.1); - color: white; + background-color: rgba(0,0,0,.17); + color: var(--sidebar-text); } .chapter-markup::-webkit-scrollbar { @@ -198,22 +204,22 @@ .chapter-markup :global(p) > :global(code), .chapter-markup :global(ul) :global(code) { - color: white; - background: rgba(255,255,255,.1); - padding: .2em .4em; + color: var(--sidebar-text); + background: rgba(0,0,0,.12); + padding: .2em .4em .3em; white-space: nowrap; position: relative; top: -0.1em; } .controls { - border-top: 1px solid rgba(255,255,255,.1); + border-top: 1px solid rgba(255,255,255,.15); padding: 1em 0 0 0; display: flex; } .show { - background: rgba(255,255,255,.1); + background: rgba(0,0,0,.4); padding: .2em .7em .3em; border-radius: var(--border-r); top: .1em; @@ -223,22 +229,17 @@ } .show:hover { - background: rgba(255,255,255,.2); + background: rgba(0,0,0,.65); + color: white; } a.next { - /* border-bottom: none; */ padding-right: 1.2em; background: no-repeat 100% 50% url(/icons/arrow-right.svg); background-size: 1em 1em; margin-left: auto; } - a.next:hover { - /* border-bottom: 2px solid currentColor; */ - /* text-decoration: underline; */ - } - .improve-chapter { padding: 1em 0 .5em 0; } diff --git a/site/static/global.css b/site/static/global.css index 4553898006..6c84f1abee 100644 --- a/site/static/global.css +++ b/site/static/global.css @@ -46,6 +46,7 @@ --flash: #40b3ff; --heading: var(--second); --text: #444; + --sidebar-text: rgba(255, 255, 255, .75); --border-w: .3rem; /* border-width */ --border-r: .4rem; /* border-radius */ } From b0e057233cf4caeae4c1e62527b6476c9b8c375f Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Thu, 2 May 2019 09:32:06 +0200 Subject: [PATCH 17/41] Add alert, confirm, and prompt to globals --- src/utils/names.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/utils/names.ts b/src/utils/names.ts index 1f0a9cc29e..2eafdf06a3 100644 --- a/src/utils/names.ts +++ b/src/utils/names.ts @@ -2,8 +2,10 @@ import { isIdentifierStart, isIdentifierChar } from 'acorn'; import full_char_code_at from './full_char_code_at'; export const globals = new Set([ + 'alert', 'Array', 'Boolean', + 'confirm', 'console', 'Date', 'decodeURI', @@ -24,6 +26,7 @@ export const globals = new Set([ 'parseInt', 'process', 'Promise', + 'prompt', 'RegExp', 'Set', 'String', From b0447bf41ef5baa5c7087e22c78c3c32f17ca7a4 Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Thu, 2 May 2019 13:11:24 +0200 Subject: [PATCH 18/41] Remove v1 each key parsing --- src/parse/state/mustache.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/parse/state/mustache.ts b/src/parse/state/mustache.ts index 1acae36c9c..48a467a5c1 100644 --- a/src/parse/state/mustache.ts +++ b/src/parse/state/mustache.ts @@ -36,7 +36,7 @@ export default function mustache(parser: Parser) { parser.allow_whitespace(); - // {/if} or {/each} + // {/if}, {/each} or {/await} if (parser.eat('/')) { let block = parser.current(); let expected; @@ -287,13 +287,6 @@ export default function mustache(parser: Parser) { parser.allow_whitespace(); parser.eat(')', true); parser.allow_whitespace(); - } else if (parser.eat('@')) { - block.key = parser.read_identifier(); - if (!block.key) parser.error({ - code: `expected-name`, - message: `Expected name` - }); - parser.allow_whitespace(); } } From d53fd611f375695128927bfba1cfff34d72f06af Mon Sep 17 00:00:00 2001 From: Scotty Simpson Date: Thu, 2 May 2019 08:24:43 -0700 Subject: [PATCH 19/41] clarify autosubscription scope requirement (#2653) --- site/content/tutorial/08-stores/02-auto-subscriptions/text.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/site/content/tutorial/08-stores/02-auto-subscriptions/text.md b/site/content/tutorial/08-stores/02-auto-subscriptions/text.md index 87306f3354..af584261f4 100644 --- a/site/content/tutorial/08-stores/02-auto-subscriptions/text.md +++ b/site/content/tutorial/08-stores/02-auto-subscriptions/text.md @@ -39,6 +39,8 @@ It starts to get a bit boilerplatey though, especially if your component subscri

    The count is {$count}

    ``` +> Auto-subscription only works with store variables that are declared (or imported) at the top-level scope of a component. + You're not limited to using `$count` inside the markup, either — you can use it anywhere in the ` {#if $preloading} From 85b1850b77a0c0ac91bfde3b929a4c623989e7b4 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 2 May 2019 11:37:18 -0400 Subject: [PATCH 23/41] Move some stuff into @sveltejs/site-kit --- package-lock.json | 2 +- package.json | 3 +- site/content/docs/00-introduction.md | 2 +- site/package-lock.json | 1029 ++++++++--------- site/package.json | 1 + site/src/client.js | 1 + site/src/components/Icon.svelte | 39 - site/src/components/InlineSvg.svelte | 115 -- site/src/components/TopNav.svelte | 279 ----- site/src/components/unused/Logo.svelte | 28 - site/src/components/unused/debug-css.html | 68 -- site/src/components/unused/isometry.html | 28 - site/src/components/unused/theme-input.html | 81 -- site/src/components/unused/toaster.html | 49 - site/src/routes/_components/Example.svelte | 52 + site/src/routes/_layout.svelte | 28 +- site/src/routes/blog/_posts.js | 2 +- site/src/routes/docs/_sections.js | 11 +- site/src/routes/docs/index.svelte | 379 +----- site/src/routes/examples/index.svelte | 2 +- site/src/routes/index.svelte | 223 +--- .../repl/_components/AppControls/index.svelte | 2 +- .../tutorial/[slug]/_TableOfContents.svelte | 2 +- site/src/routes/tutorial/[slug]/index.json.js | 2 +- site/src/routes/tutorial/[slug]/index.svelte | 2 +- site/src/routes/tutorial/index.json.js | 2 +- site/src/template.html | 1 - site/src/utils/markdown.js | 61 - site/src/utils/navigation.js | 1 - site/static/svelte-logo-mask.svg | 17 +- site/static/svelte-logo-outline.svg | 21 +- site/static/svelte-logo.svg | 21 +- 32 files changed, 686 insertions(+), 1868 deletions(-) delete mode 100644 site/src/components/Icon.svelte delete mode 100644 site/src/components/InlineSvg.svelte delete mode 100644 site/src/components/TopNav.svelte delete mode 100644 site/src/components/unused/Logo.svelte delete mode 100644 site/src/components/unused/debug-css.html delete mode 100644 site/src/components/unused/isometry.html delete mode 100644 site/src/components/unused/theme-input.html delete mode 100644 site/src/components/unused/toaster.html create mode 100644 site/src/routes/_components/Example.svelte delete mode 100644 site/src/utils/markdown.js delete mode 100644 site/src/utils/navigation.js diff --git a/package-lock.json b/package-lock.json index 79b4a3d5fa..7c7363db2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "3.0.0-beta.25", + "version": "3.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 85836aaa14..5659f4215d 100644 --- a/package.json +++ b/package.json @@ -92,5 +92,6 @@ ], "sourceMap": true, "instrument": true - } + }, + "dependencies": {} } diff --git a/site/content/docs/00-introduction.md b/site/content/docs/00-introduction.md index 4730a0c1d5..c218cdfb5f 100644 --- a/site/content/docs/00-introduction.md +++ b/site/content/docs/00-introduction.md @@ -2,7 +2,7 @@ title: Before we begin --- -> Temporary note: This document is a work-in-progress. Please forgive any missing or misleading parts, and don't be shy about asking for help in the [Discord chatroom](https://discord.gg/yy75DKs). The [tutorial](tutorial) is more complete; start there. +> Temporary note: This document is a work-in-progress. Please forgive any missing or misleading parts, and don't be shy about asking for help in the [Discord chatroom](https://discord.gg/yy75DKs). The [tutorial](tutorial) is more complete; start there. This page contains detailed API reference documentation. It's intended to be a resource for people who already have some familiarity with Svelte. diff --git a/site/package-lock.json b/site/package-lock.json index 52f4c2693b..1e642a2479 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -14,18 +14,18 @@ } }, "@babel/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", - "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", + "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helpers": "^7.4.3", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -53,12 +53,12 @@ } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", @@ -85,24 +85,24 @@ } }, "@babel/helper-call-delegate": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", - "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.0", - "@babel/traverse": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-define-map": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", - "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", + "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.0", + "@babel/types": "^7.4.4", "lodash": "^4.17.11" } }, @@ -137,12 +137,12 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", - "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-member-expression-to-functions": { @@ -164,16 +164,16 @@ } }, "@babel/helper-module-transforms": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", - "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", + "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.4.4", "lodash": "^4.17.11" } }, @@ -193,9 +193,9 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", - "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", + "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", "dev": true, "requires": { "lodash": "^4.17.11" @@ -215,15 +215,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", - "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", + "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.0.0", "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-simple-access": { @@ -237,12 +237,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-wrap-function": { @@ -258,14 +258,14 @@ } }, "@babel/helpers": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", - "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "dev": true, "requires": { - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -280,9 +280,9 @@ } }, "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -307,9 +307,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", - "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", + "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -327,13 +327,13 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", - "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", + "@babel/helper-regex": "^7.4.4", "regexpu-core": "^4.5.4" } }, @@ -392,9 +392,9 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", - "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", + "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -412,9 +412,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", - "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -422,18 +422,18 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", - "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", + "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.0", + "@babel/helper-define-map": "^7.4.4", "@babel/helper-function-name": "^7.1.0", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.0", - "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4", "globals": "^11.1.0" } }, @@ -447,22 +447,22 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", - "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", + "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", - "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.3", + "@babel/helper-regex": "^7.4.4", "regexpu-core": "^4.5.4" } }, @@ -486,18 +486,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", - "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", - "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", @@ -533,23 +533,23 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", - "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", + "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.3", + "@babel/helper-module-transforms": "^7.4.4", "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-simple-access": "^7.1.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", - "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", + "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.0", + "@babel/helper-hoist-variables": "^7.4.4", "@babel/helper-plugin-utils": "^7.0.0" } }, @@ -564,18 +564,18 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", - "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz", + "integrity": "sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA==", "dev": true, "requires": { "regexp-tree": "^0.1.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", - "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -592,12 +592,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", - "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.0", + "@babel/helper-call-delegate": "^7.4.4", "@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } @@ -612,9 +612,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", - "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz", + "integrity": "sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g==", "dev": true, "requires": { "regenerator-transform": "^0.13.4" @@ -630,9 +630,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.3.tgz", - "integrity": "sha512-7Q61bU+uEI7bCUFReT1NKn7/X6sDQsZ7wL1sJ9IYMAO7cI+eg6x9re1cEw2fCRMbbTVyoeUKWSV1M6azEfKCfg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz", + "integrity": "sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -670,9 +670,9 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", @@ -689,20 +689,20 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", - "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.3", + "@babel/helper-regex": "^7.4.4", "regexpu-core": "^4.5.4" } }, "@babel/polyfill": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.3.tgz", - "integrity": "sha512-rkv8WIvJshA5Ev8iNMGgz5WZkRtgtiPexiT7w5qevGTuT7ZBfM3de9ox1y9JR5/OXb/sWGBbWlHNa7vQKqku3Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", "dev": true, "requires": { "core-js": "^2.6.5", @@ -718,54 +718,54 @@ } }, "@babel/preset-env": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz", - "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.4.tgz", + "integrity": "sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.3", + "@babel/plugin-proposal-object-rest-spread": "^7.4.4", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-async-to-generator": "^7.4.4", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.0", - "@babel/plugin-transform-classes": "^7.4.3", + "@babel/plugin-transform-block-scoping": "^7.4.4", + "@babel/plugin-transform-classes": "^7.4.4", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.3", - "@babel/plugin-transform-dotall-regex": "^7.4.3", + "@babel/plugin-transform-destructuring": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/plugin-transform-duplicate-keys": "^7.2.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.3", - "@babel/plugin-transform-function-name": "^7.4.3", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.3", - "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-modules-systemjs": "^7.4.4", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", - "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.4", + "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.4.3", + "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.3", + "@babel/plugin-transform-regenerator": "^7.4.4", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", "@babel/plugin-transform-spread": "^7.2.0", "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.3", - "@babel/types": "^7.4.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.4.4", "browserslist": "^4.5.2", "core-js-compat": "^3.0.0", "invariant": "^2.2.2", @@ -774,37 +774,37 @@ } }, "@babel/runtime": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", - "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz", + "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" } }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", + "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" @@ -828,9 +828,9 @@ } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -839,12 +839,12 @@ } }, "@jimp/bmp": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.0.tgz", - "integrity": "sha512-zZOcVT1zK/1QL5a7qirkzPPgDKB1ianER7pBdpR2J71vx/g8MnrPbL3h/jEVPxjdci2Hph/VWhc/oLBtTbqO8w==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.4.tgz", + "integrity": "sha512-dhKM7Cjw4XoOefx3/we2+vWyTP6hQPpM7mEsziGjtsrK2f/e3/+hhHbEsQNgO9BOA1FPJRXAOiYHts9IlMH1mg==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "bmp-js": "^0.1.0", "core-js": "^2.5.7" }, @@ -858,12 +858,12 @@ } }, "@jimp/core": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.0.tgz", - "integrity": "sha512-ngAkyCLtX7buc2QyFy0ql/j4R2wGYQVsVhW2G3Y0GVAAklRIFIUYpyNKrqs228xA8f2O6XStbDStFlYkt7uNeg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.4.tgz", + "integrity": "sha512-nyiAXI8/uU54fGO53KrRB8pdn1s+IODZ+rj0jG2owsNJlTlagFrsZAy8IVTUCOiiXjh9TbwFo7D5XMrmi4KUww==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "any-base": "^1.1.0", "buffer": "^5.2.0", "core-js": "^2.5.7", @@ -885,12 +885,12 @@ } }, "@jimp/custom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.0.tgz", - "integrity": "sha512-+YZIWhf03Rfbi+VPbHomKInu3tcntF/aij/JrIJd1QZq13f8m3mRNxakXupiL18KH0C8BPNDk8RiwFX+HaOw3A==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.4.tgz", + "integrity": "sha512-sdBHrBoVr1+PFx4dlUAgXvvu4dG0esQobhg7qhpSLRje1ScavIgE2iXdJKpycgzrqwAOL8vW4/E5w2/rONlaoQ==", "dev": true, "requires": { - "@jimp/core": "^0.6.0", + "@jimp/core": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -903,12 +903,12 @@ } }, "@jimp/gif": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.0.tgz", - "integrity": "sha512-aWQ02P0ymTN1eh0BVsY+84wMdb/QeiVpCNQZl9y50cRnpuMM8TTmF/ZdCEBDiTRFcwXzHsqBXcLwEcYp3X2lTw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.4.tgz", + "integrity": "sha512-14mLoyG0UrYJsGNRoXBFvSJdFtBD0BSBwQ1zCNeW+HpQqdl+Kh5E1Pz4nqT2KNylJe1jypyR51Q2yndgcfGVyg==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "omggif": "^1.0.9" }, @@ -922,12 +922,12 @@ } }, "@jimp/jpeg": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.0.tgz", - "integrity": "sha512-quYb+lM4h57jQvr2q9dEIkc0laTljws4dunIdFhJRfa5UlNL5mHInk8h5MxyALo0mZdT07TAcxiDHw5QXZ28JQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.4.tgz", + "integrity": "sha512-NrFla9fZC/Bhw1Aa9vJ6cBOqpB5ylEPb9jD+yZ0fzcAw5HwILguS//oXv9EWLApIY1XsOMFFe0XWpY653rv8hw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "jpeg-js": "^0.3.4" }, @@ -941,12 +941,12 @@ } }, "@jimp/plugin-blit": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.0.tgz", - "integrity": "sha512-LjiCa+8OT2fgmvBpZt0ogurg/eu5kB8ZFWDRwHPcf8i+058sZC20dar/qrjVd5Knssq4ynjb5oAHsGuJq16Rqw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.4.tgz", + "integrity": "sha512-suVznd4XozkQIuECX0u8kMl+cAQpZN3WcbWXUcJaVxRi+VBvHIetG1Qs5qGLzuEg9627+kE7ppv0UgZ5mkE6lg==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -959,12 +959,12 @@ } }, "@jimp/plugin-blur": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.0.tgz", - "integrity": "sha512-/vjGcEiHda6OLTCYqXPFkfSTbL+RatZoGcp1vewcWqChUccn9QVINTlxB7nEI/3Nb/i7KdhOPNEQh1k6q6QXsw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.4.tgz", + "integrity": "sha512-M2fDMYUUtEKVNnCJZk5J0KSMzzISobmWfnG88RdHXJCkOn98kdawQFwTsYOfJJfCM8jWfhIxwZLFhC/2lkTN2w==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -977,12 +977,12 @@ } }, "@jimp/plugin-color": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.0.tgz", - "integrity": "sha512-mvDeAwN8ZpDkOaABMJ0w9zUzo9OOtu1qvvPkSirXDTMiXt1nsbfz8BoeoD7nU2MFhQj5MiGjH65UDnsH5ZzYuw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.4.tgz", + "integrity": "sha512-6Nfr2l9KSb6zH2fij8G6fQOw85TTkyRaBlqMvDmsQp/I1IlaDbXzA2C2Eh9jkQYZQDPu61B1MkmlEhJp/TUx6Q==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "tinycolor2": "^1.4.1" }, @@ -996,12 +996,12 @@ } }, "@jimp/plugin-contain": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.0.tgz", - "integrity": "sha512-gPHnoQkDztMbvnTVo01BaMoM/hhDJdeJ7FRToD4p4Qvdor4V0I6NXtjOeUPXfD94miTgh/UTyJDqeG4GZzi4sA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.4.tgz", + "integrity": "sha512-qI1MxU1noS6NbEPu/bDDeP405aMviuIsfpOz8J3En8IwIwrJV22qt6QIHmF+eyng8CYgivwIPjEPzFzLR566Nw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1014,12 +1014,12 @@ } }, "@jimp/plugin-cover": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.1.tgz", - "integrity": "sha512-mYDchAeP9gcBCgi7vX2cYBNygY1s/YaEKEUvSh2H5+DJfxtp/eynW+bInypCfbQJArZZX+26F5GufWnkB8BOnw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.4.tgz", + "integrity": "sha512-z6eafPonj3LJY8cTEfRkXmOfCDi1+f0tbYaNvmiu+OrWJ3Ojw2hMt+BVVvJ8pKe1dWIFkCjxOjyjZWj1gEkaLw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1032,12 +1032,12 @@ } }, "@jimp/plugin-crop": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.1.tgz", - "integrity": "sha512-rnxkgLvm1oC7yCg8mOIUqLNjAzzRC0eVTD3hfYq3LzDMe2LfpU208WhtVw0IjSJ2N7OSrRztJcw+jkVF8nUJJg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.4.tgz", + "integrity": "sha512-w9TR+pn+GeWbznscGe2HRkPxInge0whAF3TLPWhPwBVjZChTT8dSDXsUpUlxQqvI4SfzuKp8z3/0SBqYDCzxxA==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1050,12 +1050,12 @@ } }, "@jimp/plugin-displace": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.0.tgz", - "integrity": "sha512-kkva5Fy3r7J7QmiqYQ5c9NeUKKkN7+KSfCGsZ6tkRHK4REMIXhQO/OnJN8XG6RReV29O6QykdyeTXDiHUDiROw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.4.tgz", + "integrity": "sha512-MEvtBXOAio/3iGJkKBrTtFs3Q38ez2Wy/wTD0Ruas+L8fjJR7l4mDgV+zjRr57CqB5mpY+L48VEoa2/gNXh9cg==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1068,12 +1068,12 @@ } }, "@jimp/plugin-dither": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.0.tgz", - "integrity": "sha512-ILSG7bl3SOqmcIa9C4nBvs0h0E0ObnMbeKWUZiNuz6i0OAlbxryiIfU4j0UVQD5XqT9ksC5mviVNrvOMw4SZLw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.4.tgz", + "integrity": "sha512-w+AGLcIMUeJZ4CI0FvFomahgKLcW+ICsLidUNOqyLzceluPAfug4X7vDhQ41pNkzKg0M1+Q1j0aWV8bdyF+LhA==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1086,12 +1086,12 @@ } }, "@jimp/plugin-flip": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.0.tgz", - "integrity": "sha512-MXGGwABjERvfqVadEzJuVAmbsEQfjxXD0O/mMBegU1Qh7/JmnKAVplQCnojsMPxUdao/FKZjQqOnB/j4LLJtOQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.4.tgz", + "integrity": "sha512-ukINMegMUM9KYjyDCiyYKYdSsbhNRLHDwOJN0xVRalmOKqNaZmjNbiMbaVxKlYt6sHW76RhSMOekw9f6GQB9tQ==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1104,12 +1104,12 @@ } }, "@jimp/plugin-gaussian": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.0.tgz", - "integrity": "sha512-RUsBCyj6Ukxgn/TU8v6c6WRbSFqKM0iknLVqDkKIuiOyJB7ougv66fqomh/i/h3ihIkEnf50BuO0c3ovrczfvw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.4.tgz", + "integrity": "sha512-C1P6ohzIddpNb7CX5X+ygbp+ow8Fpt64ZLoIgdjYPs/42HxKluvY62fVfMhY6m5zUGKIMbg0uYeAtz/9LRJPyw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1122,12 +1122,12 @@ } }, "@jimp/plugin-invert": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.0.tgz", - "integrity": "sha512-zTCqK8el6eqcNKAxw0y57gHBFgxygI5iM8dQDPyqsvVWO71i8XII7ubnJhEvPPN7vhIKlOSnS9XXglezvJoX4Q==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.4.tgz", + "integrity": "sha512-sleGz1jXaNEsP/5Ayqw8oez/6KesWcyCqovIuK4Z4kDmMc2ncuhsXIJQXDWtIF4tTQVzNEgrxUDNA4bi9xpCUA==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1140,12 +1140,12 @@ } }, "@jimp/plugin-mask": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.0.tgz", - "integrity": "sha512-zkZVqAA7lxWhkn5EbPjBQ6tPluYIGfLMSX4kD1gksj+MVJJnVAd459AVuEXCvkUvv4wG5AlH8m6ve5NZj9vvxw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.4.tgz", + "integrity": "sha512-3D4FbRxnpO9nzwa6cF8AImgO1aVReYbfRRO4I4bku4/iZ+kuU3fBLV+SRhB4c7di3ejG5u+rGsIfaNc94iYYvw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1158,12 +1158,12 @@ } }, "@jimp/plugin-normalize": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.0.tgz", - "integrity": "sha512-7bNGT+S0rw9gvmxpkNsA19JSqBZYFrAn9QhEmoN4HIimdKtJaoLJh/GnxrPuOBLuv1IPJntoTOOWvOmfrQ6/ww==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.4.tgz", + "integrity": "sha512-nOFMwOaVkOKArHkD/T6/1HKAPj3jlW6l0JduVDn1A5eIPCtlnyhlE9zdjgi5Q9IBR/gRjwW6tTzBKuJenS51kg==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1176,12 +1176,12 @@ } }, "@jimp/plugin-print": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.1.tgz", - "integrity": "sha512-gZOrYEOFtohRYsGJNh9fQkBgpiKjDfNXpiXmwdolqBF39pPxRvo9ivTIJ7sHCLpDL+SnQRdR0EHiJ08BFt5Yow==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.4.tgz", + "integrity": "sha512-3z5DLVCKg0NfZhHATEaYH/4XanIboPP1pOUoxIUeF++qOnGiGgH2giFJlRprHmx2l3E3DukR1v8pt54PGvfrFw==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "load-bmfont": "^1.4.0" }, @@ -1195,12 +1195,12 @@ } }, "@jimp/plugin-resize": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.0.tgz", - "integrity": "sha512-m0AA/mPkJG++RuftBFDUMRenqgIN/uSh88Kqs33VURYaabApni4ML3QslE1TCJtl2Lnu1eosxYlbzODjHx49eg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.4.tgz", + "integrity": "sha512-fk2+KheUNClrOWj6aDNWj1r4byVQb6Qxy4aT1UHX5GXPHDA+nhlej7ghaYdzeWZYodeM3lpasYtByu1XE2qScQ==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1213,12 +1213,12 @@ } }, "@jimp/plugin-rotate": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.1.tgz", - "integrity": "sha512-+YYjO4Y664k0IfsPJVz4Er3pX+C8vYDWD9L2am01Jls4LT7GtUZbgIKuqwl8qXX0ENc/aF9UssuWIYVVzEoapw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.4.tgz", + "integrity": "sha512-44VgV5D4xQIYInJAVevdW9J3SOhGKyz0OEr2ciA8Q3ktonKx0O5Q1g2kbruiqxFSkK/u2CKPLeKXZzYCFrmJGQ==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1231,12 +1231,12 @@ } }, "@jimp/plugin-scale": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.0.tgz", - "integrity": "sha512-le/ttYwYioNPRoMlMaoJMCTv+m8d1v0peo/3J8E6Rf9ok7Bw3agkvjL9ILnsmr8jXj1YLrBSPKRs5nJ6ziM/qA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.4.tgz", + "integrity": "sha512-RAQRaDiCHmEz+A8QS5d/Z38EnlNsQizz3Mu3NsjA8uFtJsv1yMKWXZSQuzniofZw8tlMV6oI3VdM0eQVE07/5w==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -1249,28 +1249,28 @@ } }, "@jimp/plugins": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.1.tgz", - "integrity": "sha512-gCgYxsQn3z5qifM8G4RfP6vQFKfwK/waVIE3I/mUY9QHZrf94sLuhcws+72hTLQ3It3m3QKaA1kSXrD9nkRdUw==", - "dev": true, - "requires": { - "@jimp/plugin-blit": "^0.6.0", - "@jimp/plugin-blur": "^0.6.0", - "@jimp/plugin-color": "^0.6.0", - "@jimp/plugin-contain": "^0.6.0", - "@jimp/plugin-cover": "^0.6.1", - "@jimp/plugin-crop": "^0.6.1", - "@jimp/plugin-displace": "^0.6.0", - "@jimp/plugin-dither": "^0.6.0", - "@jimp/plugin-flip": "^0.6.0", - "@jimp/plugin-gaussian": "^0.6.0", - "@jimp/plugin-invert": "^0.6.0", - "@jimp/plugin-mask": "^0.6.0", - "@jimp/plugin-normalize": "^0.6.0", - "@jimp/plugin-print": "^0.6.1", - "@jimp/plugin-resize": "^0.6.0", - "@jimp/plugin-rotate": "^0.6.1", - "@jimp/plugin-scale": "^0.6.0", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.4.tgz", + "integrity": "sha512-NpO/87CKnF4Q9r8gMl6w+jPKOM/C089qExkViD9cPvcFZEnyVOu7ucGzcMmTcabWOU62iQTOkRViPYr6XaK0LQ==", + "dev": true, + "requires": { + "@jimp/plugin-blit": "^0.6.4", + "@jimp/plugin-blur": "^0.6.4", + "@jimp/plugin-color": "^0.6.4", + "@jimp/plugin-contain": "^0.6.4", + "@jimp/plugin-cover": "^0.6.4", + "@jimp/plugin-crop": "^0.6.4", + "@jimp/plugin-displace": "^0.6.4", + "@jimp/plugin-dither": "^0.6.4", + "@jimp/plugin-flip": "^0.6.4", + "@jimp/plugin-gaussian": "^0.6.4", + "@jimp/plugin-invert": "^0.6.4", + "@jimp/plugin-mask": "^0.6.4", + "@jimp/plugin-normalize": "^0.6.4", + "@jimp/plugin-print": "^0.6.4", + "@jimp/plugin-resize": "^0.6.4", + "@jimp/plugin-rotate": "^0.6.4", + "@jimp/plugin-scale": "^0.6.4", "core-js": "^2.5.7", "timm": "^1.6.1" }, @@ -1284,12 +1284,12 @@ } }, "@jimp/png": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.0.tgz", - "integrity": "sha512-DBtMyQyrJxuKI7/1dVqLek+rCMM8U6BSOTHgo05wU7lhJKTB6fn2tbYfsnHQKzd9ld1M2qKuC+O1GTVdB2yl6w==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.4.tgz", + "integrity": "sha512-qv3oo6ll3XWVIToBwVC1wQX0MFKwpxbe2o+1ld9B4ZDavqvAHzalzcmTd/iyooI85CVDAcC3RRDo66oiizGZCQ==", "dev": true, "requires": { - "@jimp/utils": "^0.6.0", + "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "pngjs": "^3.3.3" }, @@ -1303,9 +1303,9 @@ } }, "@jimp/tiff": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.0.tgz", - "integrity": "sha512-PV95CquEsolFziq0zZrAEJIzZSKwMK89TvkOXTPDi/xesgdXGC2rtG1IZFpC9L4UX5hi/M5GaeJa49xULX6Nqw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.4.tgz", + "integrity": "sha512-8/vD4qleexmhPdppiu6fSstj/n/kGNTn8iIlf1emiqOuMN2PL9q5GOPDWU0xWdGNyJMMIDXJPgUFUkKfqXdg7w==", "dev": true, "requires": { "core-js": "^2.5.7", @@ -1321,16 +1321,16 @@ } }, "@jimp/types": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.0.tgz", - "integrity": "sha512-j4tm82huEWpLrwave/2NYnMTY6us/6K9Js6Vd/CHoM/ki8M71tMXEVzc8tly92wtnEzQ9+FEk0Ue6pYo68m/5A==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.4.tgz", + "integrity": "sha512-/EMbipQDg5U6DnBAgcSiydlMBRYoKhnaK7MJRImeTzhDJ6xfgNOF7lYq66o0kmaezKdG/cIwZ1CLecn2y3D8SQ==", "dev": true, "requires": { - "@jimp/bmp": "^0.6.0", - "@jimp/gif": "^0.6.0", - "@jimp/jpeg": "^0.6.0", - "@jimp/png": "^0.6.0", - "@jimp/tiff": "^0.6.0", + "@jimp/bmp": "^0.6.4", + "@jimp/gif": "^0.6.4", + "@jimp/jpeg": "^0.6.4", + "@jimp/png": "^0.6.4", + "@jimp/tiff": "^0.6.4", "core-js": "^2.5.7", "timm": "^1.6.1" }, @@ -1344,9 +1344,9 @@ } }, "@jimp/utils": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.0.tgz", - "integrity": "sha512-z5iYEfqc45vlYweROneNkjv32en6jS7lPL/eMLIvaEcQAHaoza20Dw8fUoJ0Ht9S92kR74xeTunAZq+gK2w67Q==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.4.tgz", + "integrity": "sha512-EFQurCyEnZLSM2Q1BYDTUmsOJPSOYEQd18Fvq8bGo8hnBHoGLWLWWyNi2l4cYhtpKmIXyhvQqa6/WaEpKPzvqA==", "dev": true, "requires": { "core-js": "^2.5.7" @@ -1366,9 +1366,9 @@ "integrity": "sha512-eq8gUzykpYPuOMrnyAzsL4KunhQXZKFiNsbThAwh19PrBAz2v8mECsj3YnxjYYifbB1w1vhR74nsXQWDi80oAg==" }, "@polka/url": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", - "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" + "version": "1.0.0-next.1", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.1.tgz", + "integrity": "sha512-6d8YbKW4hjJMnU6ZJSDLtALWiB4J//OIPaP885ruf5U8MLZHigocDxhjgvLwbV6bGkikhllgTjD9eWioKWAQdA==" }, "@sindresorhus/slugify": { "version": "0.9.1", @@ -1380,6 +1380,16 @@ "lodash.deburr": "^4.1.0" } }, + "@sveltejs/site-kit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sveltejs/site-kit/-/site-kit-1.0.3.tgz", + "integrity": "sha512-JFwFnzTGyCFI/j2qHiHaD3cvth2jurIgF72MwHayfmzJedcIEwEhj5qlKrDOjMc7Z95UV5Uuo20d2iVaF94slQ==", + "dev": true, + "requires": { + "@sindresorhus/slugify": "^0.9.1", + "golden-fleece": "^1.0.9" + } + }, "@sveltejs/svelte-repl": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/@sveltejs/svelte-repl/-/svelte-repl-0.0.10.tgz", @@ -1397,9 +1407,9 @@ "dev": true }, "@types/node": { - "version": "11.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.4.tgz", - "integrity": "sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ==", + "version": "11.13.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz", + "integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==", "dev": true }, "@types/resolve": { @@ -1523,9 +1533,9 @@ "dev": true }, "async-each": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", - "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "atob": { @@ -1667,14 +1677,14 @@ "dev": true }, "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.6.tgz", + "integrity": "sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" + "caniuse-lite": "^1.0.30000963", + "electron-to-chromium": "^1.3.127", + "node-releases": "^1.1.17" } }, "buffer": { @@ -1739,9 +1749,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000958", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000958.tgz", - "integrity": "sha512-+KfdlJj6IOOrYmX723ZymUttwietVOGQfVKPAkjn+hxWg6FyPVaaIq+euUDu5mK1lblkRcF4Nlw949Lrac72sA==", + "version": "1.0.30000963", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz", + "integrity": "sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ==", "dev": true }, "chalk": { @@ -1850,9 +1860,9 @@ "dev": true }, "codemirror": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.45.0.tgz", - "integrity": "sha512-c19j644usCE8gQaXa0jqn2B/HN9MnB2u6qPIrrhrMkB+QAP42y8G4QnTwuwbVSoUS1jEl7JU9HZMGhCDL0nsAw==" + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.46.0.tgz", + "integrity": "sha512-3QpMge0vg4QEhHW3hBAtCipJEWjTJrqLLXdIaWptJOblf1vHFeXLNtFhPai/uX2lnFCehWNk4yOdaMR853Z02w==" }, "collection-visit": { "version": "1.0.0", @@ -1886,9 +1896,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -2061,6 +2071,11 @@ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", "optional": true }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, "devalue": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devalue/-/devalue-1.1.0.tgz", @@ -2090,9 +2105,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", - "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", + "version": "1.3.129", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.129.tgz", + "integrity": "sha512-puirJsgZnedlFEmRa7WEUIaS8ZgHHn7d7inph+RiapCc0x80hdoDyEEpR9z3aRUSZy4fGxOTOFcxnGmySlrmhA==", "dev": true }, "emoji-regex": { @@ -2249,13 +2264,6 @@ "parseurl": "~1.3.2", "safe-buffer": "5.1.2", "uid-safe": "~2.1.5" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - } } }, "extend-shallow": { @@ -2448,41 +2456,36 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2492,17 +2495,13 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2510,74 +2509,61 @@ }, "chownr": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2586,15 +2572,13 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2610,8 +2594,7 @@ }, "glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2625,15 +2608,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2642,8 +2623,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2652,8 +2632,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2663,58 +2642,46 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "minipass": { "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2722,8 +2689,7 @@ }, "minizlib": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2732,37 +2698,32 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.1", + "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", + "version": "2.3.0", + "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", - "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", + "version": "0.12.0", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2780,8 +2741,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2790,16 +2750,14 @@ } }, "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "version": "1.0.6", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", + "version": "1.4.1", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2809,8 +2767,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2822,46 +2779,38 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2871,22 +2820,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2898,8 +2844,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -2907,8 +2852,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2923,8 +2867,7 @@ }, "rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2933,52 +2876,43 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.0", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2987,8 +2921,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2997,25 +2930,21 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -3030,15 +2959,13 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -3047,17 +2974,13 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "yallist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true + "bundled": true, + "dev": true } } }, @@ -3133,9 +3056,9 @@ } }, "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "golden-fleece": { @@ -3538,15 +3461,15 @@ } }, "jimp": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.1.tgz", - "integrity": "sha512-R46NBV0mbdC+1DwP/xbTmXULfxxAok5KA+XtZTPVku1S0mXvsaxZ65cQz1MhiPjxcIIQYidI3ZFIf2F+th3wMQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.4.tgz", + "integrity": "sha512-WQVMoNhkcq/fgthZOWeMdIguCVPg+t4PDFfSxvbNcrECwl8eq3/Ou2whcFWWjyW45m43yAJEY2UT7acDKl6uSQ==", "dev": true, "requires": { "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.6.0", - "@jimp/plugins": "^0.6.1", - "@jimp/types": "^0.6.0", + "@jimp/custom": "^0.6.4", + "@jimp/plugins": "^0.6.4", + "@jimp/types": "^0.6.4", "core-js": "^2.5.7" }, "dependencies": { @@ -3559,9 +3482,9 @@ } }, "jpeg-js": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", - "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.5.tgz", + "integrity": "sha512-hvaExqwmQDS8O9qnZAVDXGWU43Tbu1V0wMZmjROjT11jloSgGICZpscG+P6Nyi1BVAvyu2ARRx8qmEW30sxgdQ==", "dev": true }, "js-levenshtein": { @@ -3577,9 +3500,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", - "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -3650,6 +3573,14 @@ "phin": "^2.9.1", "xhr": "^2.0.1", "xtend": "^4.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } } }, "load-json-file": { @@ -3796,10 +3727,9 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", + "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==" }, "mimic-fn": { "version": "2.1.0", @@ -3888,9 +3818,9 @@ } }, "mocha": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.3.tgz", - "integrity": "sha512-QdE/w//EPHrqgT5PNRUjRVHy6IJAzAf1R8n2O8W8K2RZ+NbPfOD5cBDp+PGa2Gptep37C/TdBiaNwakppEzEbg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", + "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -3902,7 +3832,7 @@ "glob": "7.1.3", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.0", + "js-yaml": "3.13.1", "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", @@ -4007,14 +3937,14 @@ } }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz", + "integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw==" }, "node-releases": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.14.tgz", - "integrity": "sha512-d58EpVZRhQE60kWiWUaaPlK9dyC4zg3ZoMcHcky2d4hDksyQj0rUozwInOl0C66mBsqo01Tuns8AvxnL5S7PKg==", + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.17.tgz", + "integrity": "sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q==", "dev": true, "requires": { "semver": "^5.3.0" @@ -4287,9 +4217,9 @@ } }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -4413,13 +4343,6 @@ "requires": { "@polka/url": "^1.0.0-next.1", "trouter": "^3.0.1" - }, - "dependencies": { - "@polka/url": { - "version": "1.0.0-next.1", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.1.tgz", - "integrity": "sha512-6d8YbKW4hjJMnU6ZJSDLtALWiB4J//OIPaP885ruf5U8MLZHigocDxhjgvLwbV6bGkikhllgTjD9eWioKWAQdA==" - } } }, "posix-character-classes": { @@ -4555,9 +4478,9 @@ } }, "regexp-tree": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", - "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.6.tgz", + "integrity": "sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==", "dev": true }, "regexparam": { @@ -4645,9 +4568,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", "requires": { "path-parse": "^1.0.6" } @@ -4679,13 +4602,13 @@ } }, "rollup": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.0.tgz", - "integrity": "sha512-U9t/JaKtO0+X0pSmLVKMrAZEixrbVzITf193TiEhfoVKCnd7pDimIFo94IxUCgbn6+v5VmduHkubx2VV1s0Ftw==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.1.tgz", + "integrity": "sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw==", "dev": true, "requires": { "@types/estree": "0.0.39", - "@types/node": "^11.13.4", + "@types/node": "^11.13.5", "acorn": "^6.1.1" } }, @@ -4840,9 +4763,9 @@ "dev": true }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, "session-file-store": { @@ -4938,10 +4861,10 @@ "mime": "^2.3.1" }, "dependencies": { - "mime": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", - "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==" + "@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" } } }, diff --git a/site/package.json b/site/package.json index 9621d06600..7e56eaad54 100644 --- a/site/package.json +++ b/site/package.json @@ -37,6 +37,7 @@ "@babel/preset-env": "^7.3.1", "@babel/runtime": "^7.3.1", "@sindresorhus/slugify": "^0.9.1", + "@sveltejs/site-kit": "^1.0.3", "@sveltejs/svelte-repl": "0.0.10", "chokidar": "^2.1.2", "degit": "^2.1.3", diff --git a/site/src/client.js b/site/src/client.js index cec91725f0..bda299367b 100644 --- a/site/src/client.js +++ b/site/src/client.js @@ -1,3 +1,4 @@ +import '@sveltejs/site-kit/base.css'; import * as sapper from '@sapper/app'; sapper.start({ diff --git a/site/src/components/Icon.svelte b/site/src/components/Icon.svelte deleted file mode 100644 index 366b923911..0000000000 --- a/site/src/components/Icon.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - diff --git a/site/src/components/InlineSvg.svelte b/site/src/components/InlineSvg.svelte deleted file mode 100644 index 741ab7ec9e..0000000000 --- a/site/src/components/InlineSvg.svelte +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/src/components/TopNav.svelte b/site/src/components/TopNav.svelte deleted file mode 100644 index 8238f2a01d..0000000000 --- a/site/src/components/TopNav.svelte +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - -
    - -
    diff --git a/site/src/components/unused/Logo.svelte b/site/src/components/unused/Logo.svelte deleted file mode 100644 index 811e5b9442..0000000000 --- a/site/src/components/unused/Logo.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/site/src/components/unused/debug-css.html b/site/src/components/unused/debug-css.html deleted file mode 100644 index 745d7a11b1..0000000000 --- a/site/src/components/unused/debug-css.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - -{#if show} -
    -
    -
    -
    -
    -{/if} - - \ No newline at end of file diff --git a/site/src/components/unused/isometry.html b/site/src/components/unused/isometry.html deleted file mode 100644 index 6c2260ae50..0000000000 --- a/site/src/components/unused/isometry.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/site/src/components/unused/theme-input.html b/site/src/components/unused/theme-input.html deleted file mode 100644 index 8465cd8890..0000000000 --- a/site/src/components/unused/theme-input.html +++ /dev/null @@ -1,81 +0,0 @@ - -{#if color} - {/if} - -{#if text} - -{/if} - - - - - \ No newline at end of file diff --git a/site/src/components/unused/toaster.html b/site/src/components/unused/toaster.html deleted file mode 100644 index 6145efc568..0000000000 --- a/site/src/components/unused/toaster.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - diff --git a/site/src/routes/_components/Example.svelte b/site/src/routes/_components/Example.svelte new file mode 100644 index 0000000000..c07b4be0b5 --- /dev/null +++ b/site/src/routes/_components/Example.svelte @@ -0,0 +1,52 @@ + + + + +
    +
    + + +
    + + {#if intersecting} + + + {/if} + +
    +
    +
    \ No newline at end of file diff --git a/site/src/routes/_layout.svelte b/site/src/routes/_layout.svelte index 560fb9fcad..bc557fb4da 100644 --- a/site/src/routes/_layout.svelte +++ b/site/src/routes/_layout.svelte @@ -1,21 +1,37 @@ + + {#if $preloading} {/if} - {#if $page.path !== '/repl/embed'} -