From c6cd2d43bba3cea957010de0bbb2700cc44fcd1f Mon Sep 17 00:00:00 2001 From: Noah Kaufman Date: Fri, 26 Jul 2019 14:44:42 -0400 Subject: [PATCH 01/41] clicking on 'keyed each block' link did nothing before, now it takes you to the each blocks section like it's supposed to --- site/content/docs/02-template-syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/docs/02-template-syntax.md b/site/content/docs/02-template-syntax.md index f8c79bca47..7ad57bbdb4 100644 --- a/site/content/docs/02-template-syntax.md +++ b/site/content/docs/02-template-syntax.md @@ -982,7 +982,7 @@ DOMRect { --- -An animation is triggered when the contents of a [keyed each block](docs#Each_blocks) are re-ordered. Animations do not run when an element is removed, only when the each block's data is reordered. Animate directives must be on an element that is an *immediate* child of a keyed each block. +An animation is triggered when the contents of a [keyed each block](docs#each) are re-ordered. Animations do not run when an element is removed, only when the each block's data is reordered. Animate directives must be on an element that is an *immediate* child of a keyed each block. Animations can be used with Svelte's [built-in animation functions](docs#svelte_animate) or [custom animation functions](docs#Custom_animation_functions). From efcd294731cf1f67d7acddc31116b87fc6faa4cb Mon Sep 17 00:00:00 2001 From: pngwn Date: Fri, 26 Jul 2019 20:22:24 +0100 Subject: [PATCH 02/41] Site: Document svelte/easing (#3292) --- site/content/docs/03-run-time.md | 18 +- .../examples/11-easing/00-easing/App.svelte | 106 ++++++++++ .../11-easing/00-easing/Controls.svelte | 186 ++++++++++++++++++ .../examples/11-easing/00-easing/Grid.svelte | 62 ++++++ .../examples/11-easing/00-easing/eases.js | 43 ++++ .../examples/11-easing/00-easing/meta.json | 3 + site/content/examples/11-easing/meta.json | 3 + .../{11-svg => 12-svg}/01-clock/App.svelte | 0 .../{11-svg => 12-svg}/01-clock/meta.json | 0 .../02-bar-chart/App.svelte | 0 .../{11-svg => 12-svg}/02-bar-chart/meta.json | 0 .../03-area-chart/App.svelte | 0 .../{11-svg => 12-svg}/03-area-chart/data.js | 0 .../03-area-chart/meta.json | 0 .../04-scatterplot/App.svelte | 0 .../04-scatterplot/Scatterplot.svelte | 0 .../{11-svg => 12-svg}/04-scatterplot/data.js | 0 .../04-scatterplot/meta.json | 0 .../05-svg-transitions/App.svelte | 0 .../05-svg-transitions/custom-transitions.js | 0 .../05-svg-transitions/meta.json | 0 .../05-svg-transitions/shape.js | 0 .../examples/{11-svg => 12-svg}/meta.json | 0 .../00-actions/App.svelte | 0 .../00-actions/meta.json | 0 .../00-actions/pannable.js | 0 .../App.svelte | 0 .../01-adding-parameters-to-actions/meta.json | 0 .../{12-actions => 13-actions}/meta.json | 0 .../00-classes/App.svelte | 0 .../00-classes/meta.json | 0 .../01-class-shorthand/App.svelte | 0 .../01-class-shorthand/meta.json | 0 .../{13-classes => 14-classes}/meta.json | 0 .../00-slots/App.svelte | 0 .../00-slots/Box.svelte | 0 .../00-slots/meta.json | 0 .../01-slot-fallbacks/App.svelte | 0 .../01-slot-fallbacks/Box.svelte | 0 .../01-slot-fallbacks/meta.json | 0 .../02-named-slots/App.svelte | 0 .../02-named-slots/ContactCard.svelte | 0 .../02-named-slots/meta.json | 0 .../03-slot-props/App.svelte | 0 .../03-slot-props/Hoverable.svelte | 0 .../03-slot-props/meta.json | 0 .../04-modal/App.svelte | 0 .../04-modal/Modal.svelte | 0 .../04-modal/meta.json | 0 .../meta.json | 0 .../00-context-api/App.svelte | 0 .../00-context-api/Map.svelte | 0 .../00-context-api/MapMarker.svelte | 0 .../00-context-api/mapbox.js | 0 .../00-context-api/meta.json | 0 .../{15-context => 16-context}/meta.json | 0 .../00-svelte-self/App.svelte | 0 .../00-svelte-self/File.svelte | 0 .../00-svelte-self/Folder.svelte | 0 .../00-svelte-self/meta.json | 0 .../01-svelte-component/App.svelte | 0 .../01-svelte-component/BlueThing.svelte | 0 .../01-svelte-component/GreenThing.svelte | 0 .../01-svelte-component/RedThing.svelte | 0 .../01-svelte-component/meta.json | 0 .../02-svelte-window/App.svelte | 0 .../02-svelte-window/meta.json | 0 .../03-svelte-window-bindings/App.svelte | 0 .../03-svelte-window-bindings/meta.json | 0 .../04-svelte-body/App.svelte | 0 .../04-svelte-body/meta.json | 0 .../05-svelte-head/App.svelte | 0 .../05-svelte-head/meta.json | 0 .../meta.json | 0 .../01-module-exports/App.svelte | 0 .../01-module-exports/AudioPlayer.svelte | 0 .../01-module-exports/meta.json | 0 .../meta.json | 0 .../00-debug/App.svelte | 0 .../00-debug/meta.json | 0 .../{18-debugging => 19-debugging}/meta.json | 0 .../01-7guis-counter/App.svelte | 0 .../01-7guis-counter/meta.json | 0 .../02-7guis-temperature/App.svelte | 0 .../02-7guis-temperature/meta.json | 0 .../03-7guis-flight-booker/App.svelte | 0 .../03-7guis-flight-booker/meta.json | 0 .../04-7guis-timer/App.svelte | 0 .../04-7guis-timer/meta.json | 0 .../05-7guis-crud/App.svelte | 0 .../05-7guis-crud/meta.json | 0 .../06-7guis-circles/App.svelte | 0 .../06-7guis-circles/meta.json | 0 .../examples/{19-7guis => 20-7guis}/meta.json | 0 .../01-hacker-news/App.svelte | 0 .../01-hacker-news/Comment.svelte | 0 .../01-hacker-news/Item.svelte | 0 .../01-hacker-news/List.svelte | 0 .../01-hacker-news/Summary.svelte | 0 .../01-hacker-news/meta.json | 0 .../02-immutable-data/App.svelte | 0 .../02-immutable-data/ImmutableTodo.svelte | 0 .../02-immutable-data/MutableTodo.svelte | 0 .../02-immutable-data/flash.js | 0 .../02-immutable-data/meta.json | 0 .../meta.json | 0 site/static/examples/thumbnails/easing.jpg | Bin 0 -> 4461 bytes 107 files changed, 420 insertions(+), 1 deletion(-) create mode 100644 site/content/examples/11-easing/00-easing/App.svelte create mode 100644 site/content/examples/11-easing/00-easing/Controls.svelte create mode 100644 site/content/examples/11-easing/00-easing/Grid.svelte create mode 100644 site/content/examples/11-easing/00-easing/eases.js create mode 100644 site/content/examples/11-easing/00-easing/meta.json create mode 100644 site/content/examples/11-easing/meta.json rename site/content/examples/{11-svg => 12-svg}/01-clock/App.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/01-clock/meta.json (100%) rename site/content/examples/{11-svg => 12-svg}/02-bar-chart/App.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/02-bar-chart/meta.json (100%) rename site/content/examples/{11-svg => 12-svg}/03-area-chart/App.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/03-area-chart/data.js (100%) rename site/content/examples/{11-svg => 12-svg}/03-area-chart/meta.json (100%) rename site/content/examples/{11-svg => 12-svg}/04-scatterplot/App.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/04-scatterplot/Scatterplot.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/04-scatterplot/data.js (100%) rename site/content/examples/{11-svg => 12-svg}/04-scatterplot/meta.json (100%) rename site/content/examples/{11-svg => 12-svg}/05-svg-transitions/App.svelte (100%) rename site/content/examples/{11-svg => 12-svg}/05-svg-transitions/custom-transitions.js (100%) rename site/content/examples/{11-svg => 12-svg}/05-svg-transitions/meta.json (100%) rename site/content/examples/{11-svg => 12-svg}/05-svg-transitions/shape.js (100%) rename site/content/examples/{11-svg => 12-svg}/meta.json (100%) rename site/content/examples/{12-actions => 13-actions}/00-actions/App.svelte (100%) rename site/content/examples/{12-actions => 13-actions}/00-actions/meta.json (100%) rename site/content/examples/{12-actions => 13-actions}/00-actions/pannable.js (100%) rename site/content/examples/{12-actions => 13-actions}/01-adding-parameters-to-actions/App.svelte (100%) rename site/content/examples/{12-actions => 13-actions}/01-adding-parameters-to-actions/meta.json (100%) rename site/content/examples/{12-actions => 13-actions}/meta.json (100%) rename site/content/examples/{13-classes => 14-classes}/00-classes/App.svelte (100%) rename site/content/examples/{13-classes => 14-classes}/00-classes/meta.json (100%) rename site/content/examples/{13-classes => 14-classes}/01-class-shorthand/App.svelte (100%) rename site/content/examples/{13-classes => 14-classes}/01-class-shorthand/meta.json (100%) rename site/content/examples/{13-classes => 14-classes}/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/00-slots/App.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/00-slots/Box.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/00-slots/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/01-slot-fallbacks/App.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/01-slot-fallbacks/Box.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/01-slot-fallbacks/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/02-named-slots/App.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/02-named-slots/ContactCard.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/02-named-slots/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/03-slot-props/App.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/03-slot-props/Hoverable.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/03-slot-props/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/04-modal/App.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/04-modal/Modal.svelte (100%) rename site/content/examples/{14-composition => 15-composition}/04-modal/meta.json (100%) rename site/content/examples/{14-composition => 15-composition}/meta.json (100%) rename site/content/examples/{15-context => 16-context}/00-context-api/App.svelte (100%) rename site/content/examples/{15-context => 16-context}/00-context-api/Map.svelte (100%) rename site/content/examples/{15-context => 16-context}/00-context-api/MapMarker.svelte (100%) rename site/content/examples/{15-context => 16-context}/00-context-api/mapbox.js (100%) rename site/content/examples/{15-context => 16-context}/00-context-api/meta.json (100%) rename site/content/examples/{15-context => 16-context}/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/00-svelte-self/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/00-svelte-self/File.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/00-svelte-self/Folder.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/00-svelte-self/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/01-svelte-component/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/01-svelte-component/BlueThing.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/01-svelte-component/GreenThing.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/01-svelte-component/RedThing.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/01-svelte-component/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/02-svelte-window/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/02-svelte-window/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/03-svelte-window-bindings/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/03-svelte-window-bindings/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/04-svelte-body/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/04-svelte-body/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/05-svelte-head/App.svelte (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/05-svelte-head/meta.json (100%) rename site/content/examples/{16-special-elements => 17-special-elements}/meta.json (100%) rename site/content/examples/{17-module-context => 18-module-context}/01-module-exports/App.svelte (100%) rename site/content/examples/{17-module-context => 18-module-context}/01-module-exports/AudioPlayer.svelte (100%) rename site/content/examples/{17-module-context => 18-module-context}/01-module-exports/meta.json (100%) rename site/content/examples/{17-module-context => 18-module-context}/meta.json (100%) rename site/content/examples/{18-debugging => 19-debugging}/00-debug/App.svelte (100%) rename site/content/examples/{18-debugging => 19-debugging}/00-debug/meta.json (100%) rename site/content/examples/{18-debugging => 19-debugging}/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/01-7guis-counter/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/01-7guis-counter/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/02-7guis-temperature/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/02-7guis-temperature/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/03-7guis-flight-booker/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/03-7guis-flight-booker/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/04-7guis-timer/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/04-7guis-timer/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/05-7guis-crud/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/05-7guis-crud/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/06-7guis-circles/App.svelte (100%) rename site/content/examples/{19-7guis => 20-7guis}/06-7guis-circles/meta.json (100%) rename site/content/examples/{19-7guis => 20-7guis}/meta.json (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/App.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/Comment.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/Item.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/List.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/Summary.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/01-hacker-news/meta.json (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/02-immutable-data/App.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/02-immutable-data/ImmutableTodo.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/02-immutable-data/MutableTodo.svelte (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/02-immutable-data/flash.js (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/02-immutable-data/meta.json (100%) rename site/content/examples/{20-miscellaneous => 21-miscellaneous}/meta.json (100%) create mode 100644 site/static/examples/thumbnails/easing.jpg diff --git a/site/content/docs/03-run-time.md b/site/content/docs/03-run-time.md index 6d5777aacd..dfd734b3c9 100644 --- a/site/content/docs/03-run-time.md +++ b/site/content/docs/03-run-time.md @@ -740,7 +740,23 @@ You can see a full example on the [animations tutorial](tutorial/animate) ### `svelte/easing` -* TODO could have nice little interactive widgets showing the different functions, maybe +Easing functions specificy the rate of change over time and are useful when working with Svelte's built-in transitions and animations as well as the tweened and spring utilities. `svelte/easing` contains 31 named exports, a `linear` ease and 3 variants of 10 different easing functions: `in`, `out` and `inOut`. + +You can explore the various eases using the [ease visualiser](examples#easing) in the [examples section](examples). + + +| ease | in | out | inOut | +| --- | --- | --- | --- | +| **back** | `backIn` | `backOut` | `backInOut` | +| **bounce** | `bounceIn` | `bounceOut` | `bounceInOut` | +| **circ** | `circIn` | `circOut` | `circInOut` | +| **cubic** | `cubicIn` | `cubicOut` | `cubicInOut` | +| **elastic** | `elasticIn` | `elasticOut` | `elasticInOut` | +| **expo** | `expoIn` | `expoOut` | `expoInOut` | +| **quad** | `quadIn` | `quadOut` | `quadInOut` | +| **quart** | `quartIn` | `quartOut` | `quartInOut` | +| **quint** | `quintIn` | `quintOut` | `quintInOut` | +| **sine** | `sineIn` | `sineOut` | `sineInOut` | ### `svelte/register` diff --git a/site/content/examples/11-easing/00-easing/App.svelte b/site/content/examples/11-easing/00-easing/App.svelte new file mode 100644 index 0000000000..c33e73518e --- /dev/null +++ b/site/content/examples/11-easing/00-easing/App.svelte @@ -0,0 +1,106 @@ + + + + +
+ + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/site/content/examples/11-easing/00-easing/Controls.svelte b/site/content/examples/11-easing/00-easing/Controls.svelte new file mode 100644 index 0000000000..66a297323f --- /dev/null +++ b/site/content/examples/11-easing/00-easing/Controls.svelte @@ -0,0 +1,186 @@ + + + + +
+
+

Ease

+ {#if mobile} + + {:else} +
    + {#each [...eases] as [name]} +
  • current_ease = name} + > + {name} +
  • + {/each} +
+ {/if} +

Type

+ {#if mobile } + + {:else} +
    + {#each types as [name, type]} +
  • current_type = type} + > + {name} +
  • + {/each} +
+ {/if} +
+

+ Duration +

+
+ + + + + + +
+
\ No newline at end of file diff --git a/site/content/examples/11-easing/00-easing/Grid.svelte b/site/content/examples/11-easing/00-easing/Grid.svelte new file mode 100644 index 0000000000..e704f46cf7 --- /dev/null +++ b/site/content/examples/11-easing/00-easing/Grid.svelte @@ -0,0 +1,62 @@ + + + + + + + + +{#each { length: 8 } as _, i} + {#if i < 6} + + {/if} + +{/each} + + + + \ No newline at end of file diff --git a/site/content/examples/11-easing/00-easing/eases.js b/site/content/examples/11-easing/00-easing/eases.js new file mode 100644 index 0000000000..a24246005a --- /dev/null +++ b/site/content/examples/11-easing/00-easing/eases.js @@ -0,0 +1,43 @@ +import * as eases from 'svelte/easing'; + +const processed_eases = {}; + +for (const ease in eases) { + if (ease === "linear") { + processed_eases.linear = eases.linear; + } else { + const name = ease.replace(/In$|InOut$|Out$/, ''); + const type = ease.match(/In$|InOut$|Out$/)[0]; + + if (!(name in processed_eases)) processed_eases[name] = {}; + processed_eases[name][type] = {}; + processed_eases[name][type].fn = eases[ease]; + + let shape = 'M0 1000'; + for (let i = 1; i <= 1000; i++) { + shape = `${shape} L${(i / 1000) * 1000} ${1000 - eases[ease](i / 1000) * 1000} `; + processed_eases[name][type].shape = shape; + } + } +} + +const sorted_eases = new Map([ + ['sine', processed_eases.sine], + ['quad', processed_eases.quad], + ['cubic', processed_eases.cubic], + ['quart', processed_eases.quart], + ['quint', processed_eases.quint], + ['expo', processed_eases.expo], + ['circ', processed_eases.circ], + ['back', processed_eases.back], + ['elastic', processed_eases.elastic], + ['bounce', processed_eases.bounce], +]); + +export const types = [ + ['Ease In', 'In'], + ['Ease Out', 'Out'], + ['Ease In Out', 'InOut'] +]; + +export { sorted_eases as eases }; \ No newline at end of file diff --git a/site/content/examples/11-easing/00-easing/meta.json b/site/content/examples/11-easing/00-easing/meta.json new file mode 100644 index 0000000000..59ad604b26 --- /dev/null +++ b/site/content/examples/11-easing/00-easing/meta.json @@ -0,0 +1,3 @@ +{ + "title": "Ease Visualiser" +} \ No newline at end of file diff --git a/site/content/examples/11-easing/meta.json b/site/content/examples/11-easing/meta.json new file mode 100644 index 0000000000..78341a522d --- /dev/null +++ b/site/content/examples/11-easing/meta.json @@ -0,0 +1,3 @@ +{ + "title": "Easing" +} \ No newline at end of file diff --git a/site/content/examples/11-svg/01-clock/App.svelte b/site/content/examples/12-svg/01-clock/App.svelte similarity index 100% rename from site/content/examples/11-svg/01-clock/App.svelte rename to site/content/examples/12-svg/01-clock/App.svelte diff --git a/site/content/examples/11-svg/01-clock/meta.json b/site/content/examples/12-svg/01-clock/meta.json similarity index 100% rename from site/content/examples/11-svg/01-clock/meta.json rename to site/content/examples/12-svg/01-clock/meta.json diff --git a/site/content/examples/11-svg/02-bar-chart/App.svelte b/site/content/examples/12-svg/02-bar-chart/App.svelte similarity index 100% rename from site/content/examples/11-svg/02-bar-chart/App.svelte rename to site/content/examples/12-svg/02-bar-chart/App.svelte diff --git a/site/content/examples/11-svg/02-bar-chart/meta.json b/site/content/examples/12-svg/02-bar-chart/meta.json similarity index 100% rename from site/content/examples/11-svg/02-bar-chart/meta.json rename to site/content/examples/12-svg/02-bar-chart/meta.json diff --git a/site/content/examples/11-svg/03-area-chart/App.svelte b/site/content/examples/12-svg/03-area-chart/App.svelte similarity index 100% rename from site/content/examples/11-svg/03-area-chart/App.svelte rename to site/content/examples/12-svg/03-area-chart/App.svelte diff --git a/site/content/examples/11-svg/03-area-chart/data.js b/site/content/examples/12-svg/03-area-chart/data.js similarity index 100% rename from site/content/examples/11-svg/03-area-chart/data.js rename to site/content/examples/12-svg/03-area-chart/data.js diff --git a/site/content/examples/11-svg/03-area-chart/meta.json b/site/content/examples/12-svg/03-area-chart/meta.json similarity index 100% rename from site/content/examples/11-svg/03-area-chart/meta.json rename to site/content/examples/12-svg/03-area-chart/meta.json diff --git a/site/content/examples/11-svg/04-scatterplot/App.svelte b/site/content/examples/12-svg/04-scatterplot/App.svelte similarity index 100% rename from site/content/examples/11-svg/04-scatterplot/App.svelte rename to site/content/examples/12-svg/04-scatterplot/App.svelte diff --git a/site/content/examples/11-svg/04-scatterplot/Scatterplot.svelte b/site/content/examples/12-svg/04-scatterplot/Scatterplot.svelte similarity index 100% rename from site/content/examples/11-svg/04-scatterplot/Scatterplot.svelte rename to site/content/examples/12-svg/04-scatterplot/Scatterplot.svelte diff --git a/site/content/examples/11-svg/04-scatterplot/data.js b/site/content/examples/12-svg/04-scatterplot/data.js similarity index 100% rename from site/content/examples/11-svg/04-scatterplot/data.js rename to site/content/examples/12-svg/04-scatterplot/data.js diff --git a/site/content/examples/11-svg/04-scatterplot/meta.json b/site/content/examples/12-svg/04-scatterplot/meta.json similarity index 100% rename from site/content/examples/11-svg/04-scatterplot/meta.json rename to site/content/examples/12-svg/04-scatterplot/meta.json diff --git a/site/content/examples/11-svg/05-svg-transitions/App.svelte b/site/content/examples/12-svg/05-svg-transitions/App.svelte similarity index 100% rename from site/content/examples/11-svg/05-svg-transitions/App.svelte rename to site/content/examples/12-svg/05-svg-transitions/App.svelte diff --git a/site/content/examples/11-svg/05-svg-transitions/custom-transitions.js b/site/content/examples/12-svg/05-svg-transitions/custom-transitions.js similarity index 100% rename from site/content/examples/11-svg/05-svg-transitions/custom-transitions.js rename to site/content/examples/12-svg/05-svg-transitions/custom-transitions.js diff --git a/site/content/examples/11-svg/05-svg-transitions/meta.json b/site/content/examples/12-svg/05-svg-transitions/meta.json similarity index 100% rename from site/content/examples/11-svg/05-svg-transitions/meta.json rename to site/content/examples/12-svg/05-svg-transitions/meta.json diff --git a/site/content/examples/11-svg/05-svg-transitions/shape.js b/site/content/examples/12-svg/05-svg-transitions/shape.js similarity index 100% rename from site/content/examples/11-svg/05-svg-transitions/shape.js rename to site/content/examples/12-svg/05-svg-transitions/shape.js diff --git a/site/content/examples/11-svg/meta.json b/site/content/examples/12-svg/meta.json similarity index 100% rename from site/content/examples/11-svg/meta.json rename to site/content/examples/12-svg/meta.json diff --git a/site/content/examples/12-actions/00-actions/App.svelte b/site/content/examples/13-actions/00-actions/App.svelte similarity index 100% rename from site/content/examples/12-actions/00-actions/App.svelte rename to site/content/examples/13-actions/00-actions/App.svelte diff --git a/site/content/examples/12-actions/00-actions/meta.json b/site/content/examples/13-actions/00-actions/meta.json similarity index 100% rename from site/content/examples/12-actions/00-actions/meta.json rename to site/content/examples/13-actions/00-actions/meta.json diff --git a/site/content/examples/12-actions/00-actions/pannable.js b/site/content/examples/13-actions/00-actions/pannable.js similarity index 100% rename from site/content/examples/12-actions/00-actions/pannable.js rename to site/content/examples/13-actions/00-actions/pannable.js diff --git a/site/content/examples/12-actions/01-adding-parameters-to-actions/App.svelte b/site/content/examples/13-actions/01-adding-parameters-to-actions/App.svelte similarity index 100% rename from site/content/examples/12-actions/01-adding-parameters-to-actions/App.svelte rename to site/content/examples/13-actions/01-adding-parameters-to-actions/App.svelte diff --git a/site/content/examples/12-actions/01-adding-parameters-to-actions/meta.json b/site/content/examples/13-actions/01-adding-parameters-to-actions/meta.json similarity index 100% rename from site/content/examples/12-actions/01-adding-parameters-to-actions/meta.json rename to site/content/examples/13-actions/01-adding-parameters-to-actions/meta.json diff --git a/site/content/examples/12-actions/meta.json b/site/content/examples/13-actions/meta.json similarity index 100% rename from site/content/examples/12-actions/meta.json rename to site/content/examples/13-actions/meta.json diff --git a/site/content/examples/13-classes/00-classes/App.svelte b/site/content/examples/14-classes/00-classes/App.svelte similarity index 100% rename from site/content/examples/13-classes/00-classes/App.svelte rename to site/content/examples/14-classes/00-classes/App.svelte diff --git a/site/content/examples/13-classes/00-classes/meta.json b/site/content/examples/14-classes/00-classes/meta.json similarity index 100% rename from site/content/examples/13-classes/00-classes/meta.json rename to site/content/examples/14-classes/00-classes/meta.json diff --git a/site/content/examples/13-classes/01-class-shorthand/App.svelte b/site/content/examples/14-classes/01-class-shorthand/App.svelte similarity index 100% rename from site/content/examples/13-classes/01-class-shorthand/App.svelte rename to site/content/examples/14-classes/01-class-shorthand/App.svelte diff --git a/site/content/examples/13-classes/01-class-shorthand/meta.json b/site/content/examples/14-classes/01-class-shorthand/meta.json similarity index 100% rename from site/content/examples/13-classes/01-class-shorthand/meta.json rename to site/content/examples/14-classes/01-class-shorthand/meta.json diff --git a/site/content/examples/13-classes/meta.json b/site/content/examples/14-classes/meta.json similarity index 100% rename from site/content/examples/13-classes/meta.json rename to site/content/examples/14-classes/meta.json diff --git a/site/content/examples/14-composition/00-slots/App.svelte b/site/content/examples/15-composition/00-slots/App.svelte similarity index 100% rename from site/content/examples/14-composition/00-slots/App.svelte rename to site/content/examples/15-composition/00-slots/App.svelte diff --git a/site/content/examples/14-composition/00-slots/Box.svelte b/site/content/examples/15-composition/00-slots/Box.svelte similarity index 100% rename from site/content/examples/14-composition/00-slots/Box.svelte rename to site/content/examples/15-composition/00-slots/Box.svelte diff --git a/site/content/examples/14-composition/00-slots/meta.json b/site/content/examples/15-composition/00-slots/meta.json similarity index 100% rename from site/content/examples/14-composition/00-slots/meta.json rename to site/content/examples/15-composition/00-slots/meta.json diff --git a/site/content/examples/14-composition/01-slot-fallbacks/App.svelte b/site/content/examples/15-composition/01-slot-fallbacks/App.svelte similarity index 100% rename from site/content/examples/14-composition/01-slot-fallbacks/App.svelte rename to site/content/examples/15-composition/01-slot-fallbacks/App.svelte diff --git a/site/content/examples/14-composition/01-slot-fallbacks/Box.svelte b/site/content/examples/15-composition/01-slot-fallbacks/Box.svelte similarity index 100% rename from site/content/examples/14-composition/01-slot-fallbacks/Box.svelte rename to site/content/examples/15-composition/01-slot-fallbacks/Box.svelte diff --git a/site/content/examples/14-composition/01-slot-fallbacks/meta.json b/site/content/examples/15-composition/01-slot-fallbacks/meta.json similarity index 100% rename from site/content/examples/14-composition/01-slot-fallbacks/meta.json rename to site/content/examples/15-composition/01-slot-fallbacks/meta.json diff --git a/site/content/examples/14-composition/02-named-slots/App.svelte b/site/content/examples/15-composition/02-named-slots/App.svelte similarity index 100% rename from site/content/examples/14-composition/02-named-slots/App.svelte rename to site/content/examples/15-composition/02-named-slots/App.svelte diff --git a/site/content/examples/14-composition/02-named-slots/ContactCard.svelte b/site/content/examples/15-composition/02-named-slots/ContactCard.svelte similarity index 100% rename from site/content/examples/14-composition/02-named-slots/ContactCard.svelte rename to site/content/examples/15-composition/02-named-slots/ContactCard.svelte diff --git a/site/content/examples/14-composition/02-named-slots/meta.json b/site/content/examples/15-composition/02-named-slots/meta.json similarity index 100% rename from site/content/examples/14-composition/02-named-slots/meta.json rename to site/content/examples/15-composition/02-named-slots/meta.json diff --git a/site/content/examples/14-composition/03-slot-props/App.svelte b/site/content/examples/15-composition/03-slot-props/App.svelte similarity index 100% rename from site/content/examples/14-composition/03-slot-props/App.svelte rename to site/content/examples/15-composition/03-slot-props/App.svelte diff --git a/site/content/examples/14-composition/03-slot-props/Hoverable.svelte b/site/content/examples/15-composition/03-slot-props/Hoverable.svelte similarity index 100% rename from site/content/examples/14-composition/03-slot-props/Hoverable.svelte rename to site/content/examples/15-composition/03-slot-props/Hoverable.svelte diff --git a/site/content/examples/14-composition/03-slot-props/meta.json b/site/content/examples/15-composition/03-slot-props/meta.json similarity index 100% rename from site/content/examples/14-composition/03-slot-props/meta.json rename to site/content/examples/15-composition/03-slot-props/meta.json diff --git a/site/content/examples/14-composition/04-modal/App.svelte b/site/content/examples/15-composition/04-modal/App.svelte similarity index 100% rename from site/content/examples/14-composition/04-modal/App.svelte rename to site/content/examples/15-composition/04-modal/App.svelte diff --git a/site/content/examples/14-composition/04-modal/Modal.svelte b/site/content/examples/15-composition/04-modal/Modal.svelte similarity index 100% rename from site/content/examples/14-composition/04-modal/Modal.svelte rename to site/content/examples/15-composition/04-modal/Modal.svelte diff --git a/site/content/examples/14-composition/04-modal/meta.json b/site/content/examples/15-composition/04-modal/meta.json similarity index 100% rename from site/content/examples/14-composition/04-modal/meta.json rename to site/content/examples/15-composition/04-modal/meta.json diff --git a/site/content/examples/14-composition/meta.json b/site/content/examples/15-composition/meta.json similarity index 100% rename from site/content/examples/14-composition/meta.json rename to site/content/examples/15-composition/meta.json diff --git a/site/content/examples/15-context/00-context-api/App.svelte b/site/content/examples/16-context/00-context-api/App.svelte similarity index 100% rename from site/content/examples/15-context/00-context-api/App.svelte rename to site/content/examples/16-context/00-context-api/App.svelte diff --git a/site/content/examples/15-context/00-context-api/Map.svelte b/site/content/examples/16-context/00-context-api/Map.svelte similarity index 100% rename from site/content/examples/15-context/00-context-api/Map.svelte rename to site/content/examples/16-context/00-context-api/Map.svelte diff --git a/site/content/examples/15-context/00-context-api/MapMarker.svelte b/site/content/examples/16-context/00-context-api/MapMarker.svelte similarity index 100% rename from site/content/examples/15-context/00-context-api/MapMarker.svelte rename to site/content/examples/16-context/00-context-api/MapMarker.svelte diff --git a/site/content/examples/15-context/00-context-api/mapbox.js b/site/content/examples/16-context/00-context-api/mapbox.js similarity index 100% rename from site/content/examples/15-context/00-context-api/mapbox.js rename to site/content/examples/16-context/00-context-api/mapbox.js diff --git a/site/content/examples/15-context/00-context-api/meta.json b/site/content/examples/16-context/00-context-api/meta.json similarity index 100% rename from site/content/examples/15-context/00-context-api/meta.json rename to site/content/examples/16-context/00-context-api/meta.json diff --git a/site/content/examples/15-context/meta.json b/site/content/examples/16-context/meta.json similarity index 100% rename from site/content/examples/15-context/meta.json rename to site/content/examples/16-context/meta.json diff --git a/site/content/examples/16-special-elements/00-svelte-self/App.svelte b/site/content/examples/17-special-elements/00-svelte-self/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/00-svelte-self/App.svelte rename to site/content/examples/17-special-elements/00-svelte-self/App.svelte diff --git a/site/content/examples/16-special-elements/00-svelte-self/File.svelte b/site/content/examples/17-special-elements/00-svelte-self/File.svelte similarity index 100% rename from site/content/examples/16-special-elements/00-svelte-self/File.svelte rename to site/content/examples/17-special-elements/00-svelte-self/File.svelte diff --git a/site/content/examples/16-special-elements/00-svelte-self/Folder.svelte b/site/content/examples/17-special-elements/00-svelte-self/Folder.svelte similarity index 100% rename from site/content/examples/16-special-elements/00-svelte-self/Folder.svelte rename to site/content/examples/17-special-elements/00-svelte-self/Folder.svelte diff --git a/site/content/examples/16-special-elements/00-svelte-self/meta.json b/site/content/examples/17-special-elements/00-svelte-self/meta.json similarity index 100% rename from site/content/examples/16-special-elements/00-svelte-self/meta.json rename to site/content/examples/17-special-elements/00-svelte-self/meta.json diff --git a/site/content/examples/16-special-elements/01-svelte-component/App.svelte b/site/content/examples/17-special-elements/01-svelte-component/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/01-svelte-component/App.svelte rename to site/content/examples/17-special-elements/01-svelte-component/App.svelte diff --git a/site/content/examples/16-special-elements/01-svelte-component/BlueThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/BlueThing.svelte similarity index 100% rename from site/content/examples/16-special-elements/01-svelte-component/BlueThing.svelte rename to site/content/examples/17-special-elements/01-svelte-component/BlueThing.svelte diff --git a/site/content/examples/16-special-elements/01-svelte-component/GreenThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/GreenThing.svelte similarity index 100% rename from site/content/examples/16-special-elements/01-svelte-component/GreenThing.svelte rename to site/content/examples/17-special-elements/01-svelte-component/GreenThing.svelte diff --git a/site/content/examples/16-special-elements/01-svelte-component/RedThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/RedThing.svelte similarity index 100% rename from site/content/examples/16-special-elements/01-svelte-component/RedThing.svelte rename to site/content/examples/17-special-elements/01-svelte-component/RedThing.svelte diff --git a/site/content/examples/16-special-elements/01-svelte-component/meta.json b/site/content/examples/17-special-elements/01-svelte-component/meta.json similarity index 100% rename from site/content/examples/16-special-elements/01-svelte-component/meta.json rename to site/content/examples/17-special-elements/01-svelte-component/meta.json diff --git a/site/content/examples/16-special-elements/02-svelte-window/App.svelte b/site/content/examples/17-special-elements/02-svelte-window/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/02-svelte-window/App.svelte rename to site/content/examples/17-special-elements/02-svelte-window/App.svelte diff --git a/site/content/examples/16-special-elements/02-svelte-window/meta.json b/site/content/examples/17-special-elements/02-svelte-window/meta.json similarity index 100% rename from site/content/examples/16-special-elements/02-svelte-window/meta.json rename to site/content/examples/17-special-elements/02-svelte-window/meta.json diff --git a/site/content/examples/16-special-elements/03-svelte-window-bindings/App.svelte b/site/content/examples/17-special-elements/03-svelte-window-bindings/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/03-svelte-window-bindings/App.svelte rename to site/content/examples/17-special-elements/03-svelte-window-bindings/App.svelte diff --git a/site/content/examples/16-special-elements/03-svelte-window-bindings/meta.json b/site/content/examples/17-special-elements/03-svelte-window-bindings/meta.json similarity index 100% rename from site/content/examples/16-special-elements/03-svelte-window-bindings/meta.json rename to site/content/examples/17-special-elements/03-svelte-window-bindings/meta.json diff --git a/site/content/examples/16-special-elements/04-svelte-body/App.svelte b/site/content/examples/17-special-elements/04-svelte-body/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/04-svelte-body/App.svelte rename to site/content/examples/17-special-elements/04-svelte-body/App.svelte diff --git a/site/content/examples/16-special-elements/04-svelte-body/meta.json b/site/content/examples/17-special-elements/04-svelte-body/meta.json similarity index 100% rename from site/content/examples/16-special-elements/04-svelte-body/meta.json rename to site/content/examples/17-special-elements/04-svelte-body/meta.json diff --git a/site/content/examples/16-special-elements/05-svelte-head/App.svelte b/site/content/examples/17-special-elements/05-svelte-head/App.svelte similarity index 100% rename from site/content/examples/16-special-elements/05-svelte-head/App.svelte rename to site/content/examples/17-special-elements/05-svelte-head/App.svelte diff --git a/site/content/examples/16-special-elements/05-svelte-head/meta.json b/site/content/examples/17-special-elements/05-svelte-head/meta.json similarity index 100% rename from site/content/examples/16-special-elements/05-svelte-head/meta.json rename to site/content/examples/17-special-elements/05-svelte-head/meta.json diff --git a/site/content/examples/16-special-elements/meta.json b/site/content/examples/17-special-elements/meta.json similarity index 100% rename from site/content/examples/16-special-elements/meta.json rename to site/content/examples/17-special-elements/meta.json diff --git a/site/content/examples/17-module-context/01-module-exports/App.svelte b/site/content/examples/18-module-context/01-module-exports/App.svelte similarity index 100% rename from site/content/examples/17-module-context/01-module-exports/App.svelte rename to site/content/examples/18-module-context/01-module-exports/App.svelte diff --git a/site/content/examples/17-module-context/01-module-exports/AudioPlayer.svelte b/site/content/examples/18-module-context/01-module-exports/AudioPlayer.svelte similarity index 100% rename from site/content/examples/17-module-context/01-module-exports/AudioPlayer.svelte rename to site/content/examples/18-module-context/01-module-exports/AudioPlayer.svelte diff --git a/site/content/examples/17-module-context/01-module-exports/meta.json b/site/content/examples/18-module-context/01-module-exports/meta.json similarity index 100% rename from site/content/examples/17-module-context/01-module-exports/meta.json rename to site/content/examples/18-module-context/01-module-exports/meta.json diff --git a/site/content/examples/17-module-context/meta.json b/site/content/examples/18-module-context/meta.json similarity index 100% rename from site/content/examples/17-module-context/meta.json rename to site/content/examples/18-module-context/meta.json diff --git a/site/content/examples/18-debugging/00-debug/App.svelte b/site/content/examples/19-debugging/00-debug/App.svelte similarity index 100% rename from site/content/examples/18-debugging/00-debug/App.svelte rename to site/content/examples/19-debugging/00-debug/App.svelte diff --git a/site/content/examples/18-debugging/00-debug/meta.json b/site/content/examples/19-debugging/00-debug/meta.json similarity index 100% rename from site/content/examples/18-debugging/00-debug/meta.json rename to site/content/examples/19-debugging/00-debug/meta.json diff --git a/site/content/examples/18-debugging/meta.json b/site/content/examples/19-debugging/meta.json similarity index 100% rename from site/content/examples/18-debugging/meta.json rename to site/content/examples/19-debugging/meta.json diff --git a/site/content/examples/19-7guis/01-7guis-counter/App.svelte b/site/content/examples/20-7guis/01-7guis-counter/App.svelte similarity index 100% rename from site/content/examples/19-7guis/01-7guis-counter/App.svelte rename to site/content/examples/20-7guis/01-7guis-counter/App.svelte diff --git a/site/content/examples/19-7guis/01-7guis-counter/meta.json b/site/content/examples/20-7guis/01-7guis-counter/meta.json similarity index 100% rename from site/content/examples/19-7guis/01-7guis-counter/meta.json rename to site/content/examples/20-7guis/01-7guis-counter/meta.json diff --git a/site/content/examples/19-7guis/02-7guis-temperature/App.svelte b/site/content/examples/20-7guis/02-7guis-temperature/App.svelte similarity index 100% rename from site/content/examples/19-7guis/02-7guis-temperature/App.svelte rename to site/content/examples/20-7guis/02-7guis-temperature/App.svelte diff --git a/site/content/examples/19-7guis/02-7guis-temperature/meta.json b/site/content/examples/20-7guis/02-7guis-temperature/meta.json similarity index 100% rename from site/content/examples/19-7guis/02-7guis-temperature/meta.json rename to site/content/examples/20-7guis/02-7guis-temperature/meta.json diff --git a/site/content/examples/19-7guis/03-7guis-flight-booker/App.svelte b/site/content/examples/20-7guis/03-7guis-flight-booker/App.svelte similarity index 100% rename from site/content/examples/19-7guis/03-7guis-flight-booker/App.svelte rename to site/content/examples/20-7guis/03-7guis-flight-booker/App.svelte diff --git a/site/content/examples/19-7guis/03-7guis-flight-booker/meta.json b/site/content/examples/20-7guis/03-7guis-flight-booker/meta.json similarity index 100% rename from site/content/examples/19-7guis/03-7guis-flight-booker/meta.json rename to site/content/examples/20-7guis/03-7guis-flight-booker/meta.json diff --git a/site/content/examples/19-7guis/04-7guis-timer/App.svelte b/site/content/examples/20-7guis/04-7guis-timer/App.svelte similarity index 100% rename from site/content/examples/19-7guis/04-7guis-timer/App.svelte rename to site/content/examples/20-7guis/04-7guis-timer/App.svelte diff --git a/site/content/examples/19-7guis/04-7guis-timer/meta.json b/site/content/examples/20-7guis/04-7guis-timer/meta.json similarity index 100% rename from site/content/examples/19-7guis/04-7guis-timer/meta.json rename to site/content/examples/20-7guis/04-7guis-timer/meta.json diff --git a/site/content/examples/19-7guis/05-7guis-crud/App.svelte b/site/content/examples/20-7guis/05-7guis-crud/App.svelte similarity index 100% rename from site/content/examples/19-7guis/05-7guis-crud/App.svelte rename to site/content/examples/20-7guis/05-7guis-crud/App.svelte diff --git a/site/content/examples/19-7guis/05-7guis-crud/meta.json b/site/content/examples/20-7guis/05-7guis-crud/meta.json similarity index 100% rename from site/content/examples/19-7guis/05-7guis-crud/meta.json rename to site/content/examples/20-7guis/05-7guis-crud/meta.json diff --git a/site/content/examples/19-7guis/06-7guis-circles/App.svelte b/site/content/examples/20-7guis/06-7guis-circles/App.svelte similarity index 100% rename from site/content/examples/19-7guis/06-7guis-circles/App.svelte rename to site/content/examples/20-7guis/06-7guis-circles/App.svelte diff --git a/site/content/examples/19-7guis/06-7guis-circles/meta.json b/site/content/examples/20-7guis/06-7guis-circles/meta.json similarity index 100% rename from site/content/examples/19-7guis/06-7guis-circles/meta.json rename to site/content/examples/20-7guis/06-7guis-circles/meta.json diff --git a/site/content/examples/19-7guis/meta.json b/site/content/examples/20-7guis/meta.json similarity index 100% rename from site/content/examples/19-7guis/meta.json rename to site/content/examples/20-7guis/meta.json diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/App.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/App.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/App.svelte rename to site/content/examples/21-miscellaneous/01-hacker-news/App.svelte diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Comment.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Comment.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/Comment.svelte rename to site/content/examples/21-miscellaneous/01-hacker-news/Comment.svelte diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Item.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Item.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/Item.svelte rename to site/content/examples/21-miscellaneous/01-hacker-news/Item.svelte diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/List.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/List.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/List.svelte rename to site/content/examples/21-miscellaneous/01-hacker-news/List.svelte diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Summary.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Summary.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/Summary.svelte rename to site/content/examples/21-miscellaneous/01-hacker-news/Summary.svelte diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/meta.json b/site/content/examples/21-miscellaneous/01-hacker-news/meta.json similarity index 100% rename from site/content/examples/20-miscellaneous/01-hacker-news/meta.json rename to site/content/examples/21-miscellaneous/01-hacker-news/meta.json diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/App.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/App.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/02-immutable-data/App.svelte rename to site/content/examples/21-miscellaneous/02-immutable-data/App.svelte diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/ImmutableTodo.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/ImmutableTodo.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/02-immutable-data/ImmutableTodo.svelte rename to site/content/examples/21-miscellaneous/02-immutable-data/ImmutableTodo.svelte diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/MutableTodo.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/MutableTodo.svelte similarity index 100% rename from site/content/examples/20-miscellaneous/02-immutable-data/MutableTodo.svelte rename to site/content/examples/21-miscellaneous/02-immutable-data/MutableTodo.svelte diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/flash.js b/site/content/examples/21-miscellaneous/02-immutable-data/flash.js similarity index 100% rename from site/content/examples/20-miscellaneous/02-immutable-data/flash.js rename to site/content/examples/21-miscellaneous/02-immutable-data/flash.js diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/meta.json b/site/content/examples/21-miscellaneous/02-immutable-data/meta.json similarity index 100% rename from site/content/examples/20-miscellaneous/02-immutable-data/meta.json rename to site/content/examples/21-miscellaneous/02-immutable-data/meta.json diff --git a/site/content/examples/20-miscellaneous/meta.json b/site/content/examples/21-miscellaneous/meta.json similarity index 100% rename from site/content/examples/20-miscellaneous/meta.json rename to site/content/examples/21-miscellaneous/meta.json diff --git a/site/static/examples/thumbnails/easing.jpg b/site/static/examples/thumbnails/easing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11c4871c2a9a9788bad3707654a255711f7f5fbb GIT binary patch literal 4461 zcmb7H2|SeR_kU+G3}VJCvS%(bvW{#m7>1B##**bCSrV19wJDTJ426bFwv3|9WXoDe zrYuE5q_Rw8D=k_i%l{qees2AK-TV7LGoSZ)&hnh+d(NEq%ySld7Y6~9mAR!k0D%Ai z1pEMt&j3>Z4ukQ&a2T8q4(CG%@*}{p0x2jUD7pfL5?vuGg2t@GqQ%6;L_~4YIB^LH zDJdxwRz^-nQf{TBlqAmx1kT5Y;6n)W^9xI&MbVP~@3Ghbpap9}S3#IW^CVt`mXM_!ZCQ7b0g$rK zN5k=eW;=K&7$1d6Fg8tga!&8PK&}yLqBeQ9z<>I-QOLN#v33!k(|PHtur|4b@I4mu z1r-M)d7g%dUjG<&CC4CX3?C{IN5KOmm<4d`PWlXv7vqq`(ca-KucgyL?UWH3%k;YtcUoqO_-o`b%0Xi_C_|YYS986-U3&cc{&4EpL zuUC*xX)F4UTJ)9OcneP=hv^)oU5~jde`{qy-fr!q2n-8^C%Qrr0DtIh*@<0kpcZI) z+6YW5GZX-ULZL`BKOX>v@lp#4fdeqK7~d)_?X@%q?@$y5C;tc8ep~R-*kr5%qE z1O-wU;||s|3UEoF=OEQAg=Z$g;0 zKg(h4iuQG%ulo9fw2s7yhlG9}9g$ikA#M~DNh^UQ{})nlZq4c8|AJ*1TJC6>s>`a# zLjTQwxB)sb_Bs!-R?bYqy}EP0VuzdM4c(9zF1IJy(?@K$6qoShq)v^KTk;MYQs(-q zD?2AJMTJV9E!}%!+OPS_J+$OD+`DjgJjT@`B`HaoG$%6qo^aLW8;)?lN2}1Ft93H2 zCR8bet!lv_>`~BZ$O+)D)SMLX%ik(oXg+f|?(5C);DWBz+uW>gr(PZ4&#`Yd+ARGj zzst20M^&^k%iS(n2qm`MMp|*=y{`L;wXeHfp`dJzq`^{qGomdxB zHPVbRT2?chX%xhqyI6Q5niQY2)f&H6+=66F0wmHkEZG zRl@IGo1S&=3vHjUhl!oKVzre~YK`FH2QSuX0W;EoDau0}`!?SOGJqpE^;75&)s*{9Svo3hVfnATy&c@TLJ6!;x8=ybA!fH)*Gh1# zx#Nj@^sBw|gTwAsWO`^GtroxKjEPFqx%G=+Ow;Z_(eVMU@|8>vEr;(r8tcCZ^{b~p znWpFe(D&&B*moq6S^k~micgAP7J;#oMI~ce6vF1>!clSSod-FclKsnPbts4ZQ?jj| zvnyNS_W}_jcrZ%a?dXC+)1QOWearZNlk=BiUp#-R$8=t!EKYKBe4G2RVSqpTpTl-@ z>pHw@W;L^1OcBc&rZ~}sAEo!^rzj1W+wZ)!y~g*pN>Rm~(VII@7(N!=yRENdW2ym| zk!#KfcvrqVxjdonyBi%;S6T#Aon=v+;347VX`R-L-9b%W)Yu#3<6kzc1gE%@Izs)n z>C24Ld)jVI0ah9l&s!N+5@sp+|YPc#2ti@?oYo^O4xmu6gH$Lw8Lwf0NGC;ZHY z&xLyn`p8qlMy_#M*+r{1-B9mHVR^R4dDqO*gDP)pc`TS!xO=9v7XiXEwuZHHRPyc~ z@qGBe&J$I-l{vTmL$ao>seF>&i5nRHGn_Mi=4(*5 zLt=@IwmSlQ`oecA`F?q0))#%f*^h{K!$}305OCO0(+D+R@+0k%-EI{j`|~V^OGaN_ zy}9q4&c62!%a-F#&gKTGRdYXb_J75{2tMSMe;Zn6af6mEw5g6X@Iq)>jv)3|2 zS3Smc_9FwiO*@cfDe0U=ZcV0;No!gKpZJ0J6O_hN z*WyJe=J?FStl!b2%%#|NlxXYY zi$qQa64xnPKJFPwkGpTe%KyM>Y<(ISVdATc>)l*yhfR`e@xHKnmI{#Sjm3^)DU`FfzH3m?QTPx9=_$RT$N_AO}qWW93aoN9zYn?K}o zt4yvHQL*w^W?&h?>{Ni(Stn;x*WnL6?&sYdJchXx3YJTWrPLv((opHeKWw=srNdO3 z${4;Qsfvz44;Xd&p)7l5gXU?--EA34XU}O;qf_FMcrFJ#-qpJ&+a;~rDkh}VM%yp` z#-WSLfQW^`UxXsp+yGeB?*x}8Nj3GH-6}!96xfL>o1{{EDUT!$x^c>YZnar9P@syc zBjXfYDV==u^WugH9Ufrrx-Tq=x(SJtc4$Y@^w=>YEuTS`(6$;>qLNmB=)?kLS>(y zWgo`TWX$c-e7LIN>sPG?E$g3fLj6v~9u#!~?*xH8f=4dO4&J>kpT;~)>Sk&xLLQv= z1_UlrHk%L>yPe`32A*bhGhc_|Za*M~7ueW}$?pcZmvGKv;tOP3l2D&sK@^qEmnA@kJ7;=%L2o_yI1O^gfjHwS!&YnT3XhYz`dS?V4I^hl$gOp zsBSoe$1+L}TycKkbTdqNyl-osMzYv3b(-~|7~bXSZewrk*n(&0CIwQz$h*|~j9x{K z$s#bhqE@|qeO8!+6@F;0CB|s_&+fmjL=4wFC4RqQK4OUt_2PK>C5=Olo6|^_qM=kk znUJ2W172@_6f)P7m|Y1>Qbx5>;Mtw%=*JgzEU~lzGs%GJjJ@3nuk4|wCILzoicsJM zZT-82M!U#p3fKA^seHKdoIG{phS-y;MDc+A+ zY7Obhv?-4|s%IrCf-O7M&yBouh#TRoe$gh0>*JHU)=_v1nQC&yq@W!y+jzTJHMzPr zZEP|*b3E}$@ztw^YseuAjuGefbcwT7Hnvtw2=#~@9c^$hG)LtWxzG)lc{tgTXP@{c zgk$)CVqW zxc_WiP;}?%se!1^LOnm5Fy|@#rR~p>E6Dv$$Bwh4uhAbmPvdhKn?ADps}JHQ~S71C>W|Gg&Trs!fUXn11XZS9t z(3Z%TsmjfBj(Mx!+b863tVmHfkPP`*g}380Pi4C1&6zh!$Hdpk?2r%5eey4hJ(lw0 zBZtG=vp3buuZ*lf>G^rQH#r0EH|$N1gxA*g!Xuj>O_GJOM9NTA|JwpM(H8q>SEOG4 e;|1dCIjB+Tdx4cHhVuiGzlF_n)G%uC>Hh%(f6O5O literal 0 HcmV?d00001 From e82d5d44c163ec24bb1f555be8196704de29a588 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 26 Jul 2019 15:45:23 -0400 Subject: [PATCH 03/41] site: deploy with --platform managed --- site/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/Makefile b/site/Makefile index c8d8b236a6..4c432dc6c9 100644 --- a/site/Makefile +++ b/site/Makefile @@ -19,4 +19,4 @@ docker: deploy: sapper docker @echo "\n~> deploying $(SERVICE) to Cloud Run servers" - @gcloud beta run deploy $(SERVICE) --allow-unauthenticated --region us-central1 --image $(IMAGE) --memory=512Mi + @gcloud beta run deploy $(SERVICE) --allow-unauthenticated --platform managed --region us-central1 --image $(IMAGE) --memory=512Mi From b33d600d4eef17b83bdf77cb51ee0309502cdfd8 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Fri, 26 Jul 2019 18:34:19 -0400 Subject: [PATCH 04/41] reuse unchanged spread levels - fixes #3289 --- .../wrappers/InlineComponent/index.ts | 4 ++-- .../samples/spread-reuse-levels/Nested.svelte | 21 +++++++++++++++++++ .../samples/spread-reuse-levels/_config.js | 20 ++++++++++++++++++ .../samples/spread-reuse-levels/main.svelte | 8 +++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 test/runtime/samples/spread-reuse-levels/Nested.svelte create mode 100644 test/runtime/samples/spread-reuse-levels/_config.js create mode 100644 test/runtime/samples/spread-reuse-levels/main.svelte diff --git a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts index c85f47cd54..c63879c06f 100644 --- a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts +++ b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts @@ -185,7 +185,7 @@ export default class InlineComponentWrapper extends Wrapper { add_to_set(all_dependencies, attr.dependencies); }); - this.node.attributes.forEach(attr => { + this.node.attributes.forEach((attr, i) => { const { name, dependencies } = attr; const condition = dependencies.size > 0 && (dependencies.size !== all_dependencies.size) @@ -201,7 +201,7 @@ export default class InlineComponentWrapper extends Wrapper { const obj = `{ ${quote_name_if_necessary(name)}: ${attr.get_value(block)} }`; initial_props.push(obj); - changes.push(condition ? `${condition} && ${obj}` : obj); + changes.push(condition ? `${condition} && ${obj}` : `${levels}[${i}]`); } }); diff --git a/test/runtime/samples/spread-reuse-levels/Nested.svelte b/test/runtime/samples/spread-reuse-levels/Nested.svelte new file mode 100644 index 0000000000..800d6cd602 --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/Nested.svelte @@ -0,0 +1,21 @@ + + +
{JSON.stringify({ a, b, c })}
+
{JSON.stringify(changed)}
\ No newline at end of file diff --git a/test/runtime/samples/spread-reuse-levels/_config.js b/test/runtime/samples/spread-reuse-levels/_config.js new file mode 100644 index 0000000000..5acd36bdf8 --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/_config.js @@ -0,0 +1,20 @@ +export default { + html: ` +
{"a":1,"b":[1],"c":42}
+
{"a":false,"b":false,"c":false}
+ `, + + ssrHtml: ` +
{"a":1,"b":[1],"c":42}
+
{}
+ `, + + test({ assert, component, target }) { + component.a = 2; + + assert.htmlEqual(target.innerHTML, ` +
{"a":2,"b":[1],"c":42}
+
{"a":true,"b":false,"c":false}
+ `); + } +}; diff --git a/test/runtime/samples/spread-reuse-levels/main.svelte b/test/runtime/samples/spread-reuse-levels/main.svelte new file mode 100644 index 0000000000..a22ecfc1bb --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/main.svelte @@ -0,0 +1,8 @@ + + + \ No newline at end of file From b3ef4e64beb7de62eeb16fb40281c50a0aa21dea Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Fri, 26 Jul 2019 18:49:12 -0400 Subject: [PATCH 05/41] always update reactive declarations with $$props - fixes #3286 --- src/compiler/compile/render_dom/index.ts | 10 ++----- .../samples/props-reactive-b/_config.js | 30 +++++++++++++++++++ .../samples/props-reactive-b/main.svelte | 8 +++++ 3 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 test/runtime/samples/props-reactive-b/_config.js create mode 100644 test/runtime/samples/props-reactive-b/main.svelte diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 9fdaa0cbaa..c6eb1f1bb8 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -359,15 +359,11 @@ export default function dom( component.reactive_declarations .forEach(d => { - let uses_props; + const dependencies = Array.from(d.dependencies); + const uses_props = !!dependencies.find(n => n === '$$props'); - const condition = Array.from(d.dependencies) + const condition = !uses_props && dependencies .filter(n => { - if (n === '$$props') { - uses_props = true; - return false; - } - const variable = component.var_lookup.get(n); return variable && (variable.writable || variable.mutated); }) diff --git a/test/runtime/samples/props-reactive-b/_config.js b/test/runtime/samples/props-reactive-b/_config.js new file mode 100644 index 0000000000..43eaee23aa --- /dev/null +++ b/test/runtime/samples/props-reactive-b/_config.js @@ -0,0 +1,30 @@ +export default { + props: { + a: 1, + b: 2 + }, + + html: ` +

a: 1

+

b: 2

+

c: 3

+ `, + + async test({ assert, component, target }) { + await component.$set({ a: 4 }); + + assert.htmlEqual(target.innerHTML, ` +

a: 4

+

b: 2

+

c: 6

+ `); + + await component.$set({ b: 5 }); + + assert.htmlEqual(target.innerHTML, ` +

a: 4

+

b: 5

+

c: 9

+ `); + } +}; \ No newline at end of file diff --git a/test/runtime/samples/props-reactive-b/main.svelte b/test/runtime/samples/props-reactive-b/main.svelte new file mode 100644 index 0000000000..45d6fc0cad --- /dev/null +++ b/test/runtime/samples/props-reactive-b/main.svelte @@ -0,0 +1,8 @@ + + +

a: {a}

+

b: {$$props.b}

+

c: {c}

\ No newline at end of file From fcfad5ae6bc0d715ac2e5938351bc792442fc238 Mon Sep 17 00:00:00 2001 From: pngwn Date: Sat, 27 Jul 2019 02:01:46 +0100 Subject: [PATCH 06/41] Document that context is not reactive. (#3296) --- site/content/docs/03-run-time.md | 2 ++ site/content/tutorial/15-context/01-context-api/text.md | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/site/content/docs/03-run-time.md b/site/content/docs/03-run-time.md index dfd734b3c9..b5bd966625 100644 --- a/site/content/docs/03-run-time.md +++ b/site/content/docs/03-run-time.md @@ -156,6 +156,8 @@ Like lifecycle functions, this must be called during component initialisation. ``` +> Context is not inherently reactive. If you need reactive values in context then you can pass a store into context, which *will* be reactive. + #### `getContext` ```js diff --git a/site/content/tutorial/15-context/01-context-api/text.md b/site/content/tutorial/15-context/01-context-api/text.md index 3d095dd679..ef146772c5 100644 --- a/site/content/tutorial/15-context/01-context-api/text.md +++ b/site/content/tutorial/15-context/01-context-api/text.md @@ -44,4 +44,6 @@ In `mapbox.js` you'll see this line: const key = {}; ``` -We can use anything as a key — we could do `setContext('mapbox', ...)` for example. The downside of using a string is that different component libraries might accidentally use the same one; using an object literal means the keys are guaranteed not to conflict in any circumstance, even when you have multiple different contexts operating across many component layers. \ No newline at end of file +We can use anything as a key — we could do `setContext('mapbox', ...)` for example. The downside of using a string is that different component libraries might accidentally use the same one; using an object literal means the keys are guaranteed not to conflict in any circumstance, even when you have multiple different contexts operating across many component layers. + +> Remember that context is not inherently reactive. If you need context values to be reactive then you can pass a store into context, which *will* be reactive. From f65ce85748ffb85f034f1dd001f953979e97faa0 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sat, 27 Jul 2019 06:50:23 -0400 Subject: [PATCH 07/41] site: fix animate directive section heading --- site/content/docs/02-template-syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/docs/02-template-syntax.md b/site/content/docs/02-template-syntax.md index 7ad57bbdb4..3d396f2f24 100644 --- a/site/content/docs/02-template-syntax.md +++ b/site/content/docs/02-template-syntax.md @@ -947,7 +947,7 @@ Unlike with `transition:`, transitions applied with `in:` and `out:` are not bid -#### animate: +#### animate:*fn* ```sv animate:name From 2328d5e6e8f8f1863a0573636b6ce328279235f1 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sun, 28 Jul 2019 13:13:21 -0400 Subject: [PATCH 08/41] use `change` event for `bind:files` (#3226) --- src/compiler/compile/render_dom/wrappers/Element/index.ts | 4 ++-- test/js/samples/input-files/expected.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts index 9d3f60ac7e..7c0fd62892 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/index.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts @@ -26,7 +26,7 @@ const events = [ event_names: ['input'], filter: (node: Element, _name: string) => node.name === 'textarea' || - node.name === 'input' && !/radio|checkbox|range/.test(node.get_static_attribute_value('type') as string) + node.name === 'input' && !/radio|checkbox|range|file/.test(node.get_static_attribute_value('type') as string) }, { event_names: ['input'], @@ -38,7 +38,7 @@ const events = [ event_names: ['change'], filter: (node: Element, _name: string) => node.name === 'select' || - node.name === 'input' && /radio|checkbox/.test(node.get_static_attribute_value('type') as string) + node.name === 'input' && /radio|checkbox|file/.test(node.get_static_attribute_value('type') as string) }, { event_names: ['change', 'input'], diff --git a/test/js/samples/input-files/expected.js b/test/js/samples/input-files/expected.js index ed11518df2..d4442d57ee 100644 --- a/test/js/samples/input-files/expected.js +++ b/test/js/samples/input-files/expected.js @@ -19,7 +19,7 @@ function create_fragment(ctx) { input = element("input"); attr(input, "type", "file"); input.multiple = true; - dispose = listen(input, "input", ctx.input_input_handler); + dispose = listen(input, "change", ctx.input_change_handler); }, m(target, anchor) { @@ -43,7 +43,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { files } = $$props; - function input_input_handler() { + function input_change_handler() { files = this.files; $$invalidate('files', files); } @@ -52,7 +52,7 @@ function instance($$self, $$props, $$invalidate) { if ('files' in $$props) $$invalidate('files', files = $$props.files); }; - return { files, input_input_handler }; + return { files, input_change_handler }; } class Component extends SvelteComponent { From b99ee7d5d177f4fb42b5821d63993248833ee48a Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sun, 28 Jul 2019 22:59:24 -0400 Subject: [PATCH 09/41] site: remove unused files --- site/static/curl.js | 22 -------- site/static/repl-runner.js | 105 ------------------------------------- 2 files changed, 127 deletions(-) delete mode 100644 site/static/curl.js delete mode 100644 site/static/repl-runner.js diff --git a/site/static/curl.js b/site/static/curl.js deleted file mode 100644 index b0ddc51a71..0000000000 --- a/site/static/curl.js +++ /dev/null @@ -1,22 +0,0 @@ -/* version: 0.8.13 */ -(function(){/* - MIT License (c) copyright 2010-2013 B Cavalier & J Hann */ - (function(m){function U(){}function u(a,b){return 0==aa.call(a).indexOf("[object "+b)}function I(a){return a&&"/"==a.charAt(a.length-1)?a.substr(0,a.length-1):a}function V(a,b){var d,c,e,f;d=1;c=a;"."==c.charAt(0)&&(e=!0,c=c.replace(ba,function(a,b,c,e){c&&d++;return e||""}));if(e){e=b.split("/");f=e.length-d;if(0>f)return a;e.splice(f,d);return e.concat(c||[]).join("/")}return c}function J(a){var b=a.indexOf("!");return{h:a.substr(b+1),f:0<=b&&a.substr(0,b)}}function P(){}function v(a,b){P.prototype= - a||Q;var d=new P;P.prototype=Q;for(var c in b)d[c]=b[c];return d}function K(){function a(a,b,d){c.push([a,b,d])}function b(a,b){for(var d,e=0;d=c[e++];)(d=d[a])&&d(b)}var d,c,e;d=this;c=[];e=function(d,g){a=d?function(a){a&&a(g)}:function(a,b){b&&b(g)};e=U;b(d?0:1,g);b=U;c=k};this.then=function(b,c,e){a(b,c,e);return d};this.resolve=function(a){d.va=a;e(!0,a)};this.reject=function(a){d.ua=a;e(!1,a)};this.D=function(a){b(2,a)}}function L(a){return a instanceof K||a instanceof B}function w(a,b,d,c){L(a)? - a.then(b,d,c):b(a)}function C(a,b,d){var c;return function(){0<=--a&&b&&(c=b.apply(k,arguments));0==a&&d&&d(c);return c}}function A(){var a,b;D="";a=[].slice.call(arguments);u(a[0],"Object")&&(b=a.shift(),b=M(b));return new B(a[0],a[1],a[2],b)}function M(a,b,d){var c;D="";if(a&&(h.V(a),x=h.a(a),"preloads"in a&&(c=new B(a.preloads,k,d,E,!0),h.m(function(){E=c})),a=a.main))return new B(a,b,d)}function B(a,b,d,c,e){var f;f=h.j(x,k,[].concat(a),e);this.then=this.then=a=function(a,b){w(f,function(b){a&& - a.apply(k,b)},function(a){if(b)b(a);else throw a;});return this};this.next=function(a,b,c){return new B(a,b,c,f)};this.config=M;(b||d)&&a(b,d);h.m(function(){w(e||E,function(){w(c,function(){h.w(f)},d)})})}function W(a){var b,d;b=a.id;b==k&&(F!==k?F={L:"Multiple anonymous defines encountered"}:(b=h.ha())||(F=a));if(b!=k){d=l[b];b in l||(d=h.i(b,x),d=h.I(d.a,b),l[b]=d);if(!L(d))throw Error("duplicate define: "+b);d.ja=!1;h.J(d,a)}}function R(){var a=h.ea(arguments);W(a)}var D,x,y,G,z=m.document,S= - z&&(z.head||z.getElementsByTagName("head")[0]),ca=S&&S.getElementsByTagName("base")[0]||null,X={},Y={},N={},da="addEventListener"in m?{}:{loaded:1,complete:1},Q={},aa=Q.toString,k,l={},O={},E=!1,F,Z=/^\/|^[^:]+:\/\/|^[A-Za-z]:[\\/]/,ba=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,ea=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,fa=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,ga=/\s*,\s*/,T,h;h={o:function(a,b,d){var c;a=V(a,b);if("."==a.charAt(0))return a;c=J(a);a=(b=c.f)||c.h;a in d.c&&(a=d.c[a].R||a);b&&(0> - b.indexOf("/")&&!(b in d.c)&&(a=I(d.T)+"/"+b),a=a+"!"+c.h);return a},j:function(a,b,d,c){function e(b,c){var d,f;d=h.o(b,g.id,a);if(!c)return d;f=J(d);if(!f.f)return d;d=l[f.f];f.h="normalize"in d?d.normalize(f.h,e,g.a)||"":e(f.h);return f.f+"!"+f.h}function f(b,d,f){var p;p=d&&function(a){d.apply(k,a)};if(u(b,"String")){if(p)throw Error("require(id, callback) not allowed");f=e(b,!0);b=l[f];if(!(f in l))throw Error("Module not resolved: "+f);return(f=L(b)&&b.b)||b}w(h.w(h.j(a,g.id,b,c)),p,f)}var g; - g=new K;g.id=b||"";g.ia=c;g.K=d;g.a=a;g.F=f;f.toUrl=function(b){return h.i(e(b,!0),a).url};g.o=e;return g},I:function(a,b,d){var c,e,f;c=h.j(a,b,k,d);e=c.resolve;f=C(1,function(a){c.v=a;try{return h.Z(c)}catch(b){c.reject(b)}});c.resolve=function(a){w(d||E,function(){e(l[c.id]=O[c.url]=f(a))})};c.M=function(a){w(d||E,function(){c.b&&(f(a),c.D(Y))})};return c},Y:function(a,b,d,c){return h.j(a,d,k,c)},ga:function(a){return a.F},N:function(a){return a.b||(a.b={})},fa:function(a){var b=a.A;b||(b=a.A= - {id:a.id,uri:h.O(a),exports:h.N(a),config:function(){return a.a}},b.b=b.exports);return b},O:function(a){return a.url||(a.url=h.H(a.F.toUrl(a.id),a.a))},V:function(a){var b,d,c,e,f;b="curl";d="define";c=e=m;if(a&&(f=a.overwriteApi||a.sa,b=a.apiName||a.la||b,c=a.apiContext||a.ka||c,d=a.defineName||a.na||d,e=a.defineContext||a.ma||e,y&&u(y,"Function")&&(m.curl=y),y=null,G&&u(G,"Function")&&(m.define=G),G=null,!f)){if(c[b]&&c[b]!=A)throw Error(b+" already exists");if(e[d]&&e[d]!=R)throw Error(d+" already exists"); - }c[b]=A;e[d]=R},a:function(a){function b(a,b){var d,c,g,n,q;for(q in a){g=a[q];u(g,"String")&&(g={path:a[q]});g.name=g.name||q;n=e;c=J(I(g.name));d=c.h;if(c=c.f)n=f[c],n||(n=f[c]=v(e),n.c=v(e.c),n.g=[]),delete a[q];c=g;var l=b,H=void 0;c.path=I(c.path||c.location||"");l&&(H=c.main||"./main","."==H.charAt(0)||(H="./"+H),c.R=V(H,c.name+"/"));c.a=c.config;c.a&&(c.a=v(e,c.a));c.W=d.split("/").length;d?(n.c[d]=c,n.g.push(d)):n.s=h.U(g.path,e)}}function d(a){var b=a.c;a.S=new RegExp("^("+a.g.sort(function(a, - c){return b[c].W-b[a].W}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete a.g}var c,e,f,g;"baseUrl"in a&&(a.s=a.baseUrl);"main"in a&&(a.R=a.main);"preloads"in a&&(a.ta=a.preloads);"pluginPath"in a&&(a.T=a.pluginPath);if("dontAddFileExt"in a||a.l)a.l=new RegExp(a.dontAddFileExt||a.l);c=x;e=v(c,a);e.c=v(c.c);f=a.plugins||{};e.plugins=v(c.plugins);e.C=v(c.C,a.C);e.B=v(c.B,a.B);e.g=[];b(a.packages,!0);b(a.paths,!1);for(g in f)a=h.o(g+"!","",e),e.plugins[a.substr(0,a.length-1)]=f[g];f=e.plugins; - for(g in f)if(f[g]=v(e,f[g]),a=f[g].g)f[g].g=a.concat(e.g),d(f[g]);for(g in c.c)e.c.hasOwnProperty(g)||e.g.push(g);d(e);return e},i:function(a,b){var d,c,e,f;d=b.c;e=Z.test(a)?a:a.replace(b.S,function(a){c=d[a]||{};f=c.a;return c.path||""});return{a:f||x,url:h.U(e,b)}},U:function(a,b){var d=b.s;return d&&!Z.test(a)?I(d)+"/"+a:a},H:function(a,b){return a+((b||x).l.test(a)?"":".js")},P:function(a,b,d){var c=z.createElement("script");c.onload=c.onreadystatechange=function(d){d=d||m.event;if("load"== - d.type||da[c.readyState])delete N[a.id],c.onload=c.onreadystatechange=c.onerror="",b()};c.onerror=function(){d(Error("Syntax or http error: "+a.url))};c.type=a.pa||"text/javascript";c.charset="utf-8";c.async=!a.ra;c.src=a.url;N[a.id]=c;S.insertBefore(c,ca);return c},$:function(a){var b=[],d;("string"==typeof a?a:a.toSource?a.toSource():a.toString()).replace(ea,"").replace(fa,function(a,e,f,g){g?d=d==g?k:d:d||b.push(f);return""});return b},ea:function(a){var b,d,c,e,f,g;f=a.length;c=a[f-1];e=u(c,"Function")? - c.length:-1;2==f?u(a[0],"Array")?d=a[0]:b=a[0]:3==f&&(b=a[0],d=a[1]);!d&&0 { - curl([`https://bundle.run/${id}`]).then(module => { - import_cache[id] = module; - fulfil(module); - }, err => { - console.error(err.stack); - reject(new Error(`Error loading ${id} from bundle.run`)); - }); - }); - } - - function fetch_imports(imports, progress_func) { - const missing_imports = imports.filter(x => !import_cache[x]); - let pending_imports = missing_imports.length; - - if (missing_imports.length) { - const promise = Promise.all( - missing_imports.map(id => fetch_import(id).then(() => { - pending_imports -= 1; - if (progress_func) progress_func(pending_imports); - })) - ); - - return promise; - } else { - return Promise.resolve(); - } - } - - function handle_message(ev) { - const { action, cmd_id } = ev.data; - const send_message = (payload) => parent.postMessage( { ...payload }, ev.origin); - const send_reply = (payload) => send_message({ ...payload, cmd_id }); - const send_ok = () => send_reply({ action: 'cmd_ok' }); - const send_error = (message, stack) => send_reply({ action: 'cmd_error', message, stack }); - - if (action === 'eval') { - try { - const { script } = ev.data.args; - eval(script); - send_ok(); - } catch (e) { - send_error(e.message, e.stack); - } - } - - if (action === 'catch_clicks') { - try { - const top_origin = ev.origin; - document.body.addEventListener('click', event => { - if (event.which !== 1) return; - if (event.metaKey || event.ctrlKey || event.shiftKey) return; - if (event.defaultPrevented) return; - - // ensure target is a link - let el = event.target; - while (el && el.nodeName !== 'A') el = el.parentNode; - if (!el || el.nodeName !== 'A') return; - - if (el.hasAttribute('download') || el.getAttribute('rel') === 'external' || el.target) return; - - event.preventDefault(); - - if (el.href.startsWith(top_origin)) { - const url = new URL(el.href); - if (url.hash[0] === '#') { - window.location.hash = url.hash; - return; - } - } - - window.open(el.href, '_blank'); - }); - send_ok(); - } catch (e) { - send_error(e.message, e.stack); - } - } - - if (action === 'fetch_imports') { - const { imports, import_map } = ev.data.args; - fetch_imports(imports, (remaining) => { - send_message({action: 'fetch_progress', args: { remaining }}); - }) - .then(() => { - imports.forEach(x => { - const module = import_cache[x]; - const name = import_map.get(x); - window[name] = module; - }); - send_ok(); - }) - .catch(e => { - send_error(e.message, e.stack); - }); - } - } - - window.addEventListener('message', handle_message, false); -})(); From ea7f61542be8565296df3f07a66f6d5c37d8314f Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 30 Jul 2019 04:52:49 -0400 Subject: [PATCH 10/41] site: update deps --- site/package-lock.json | 1851 +++++++--------------------------------- site/package.json | 25 +- 2 files changed, 330 insertions(+), 1546 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index 42a737dbe0..373c0505cb 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -14,38 +14,73 @@ } }, "@babel/core": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.4.tgz", - "integrity": "sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/helpers": "^7.5.4", - "@babel/parser": "^7.5.0", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.0", - "@babel/types": "^7.5.0", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz", - "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", "dev": true, "requires": { - "@babel/types": "^7.5.0", + "@babel/types": "^7.5.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "source-map": "^0.5.0", "trim-right": "^1.0.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-annotate-as-pure": { @@ -79,14 +114,27 @@ } }, "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-explode-assignable-expression": { @@ -129,12 +177,25 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.5.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { @@ -147,17 +208,30 @@ } }, "@babel/helper-module-transforms": { - "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { @@ -176,12 +250,12 @@ "dev": true }, "@babel/helper-regex": { - "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { @@ -198,15 +272,28 @@ } }, "@babel/helper-replace-supers": { - "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", + "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-member-expression-to-functions": "^7.5.5", "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-simple-access": { @@ -241,14 +328,27 @@ } }, "@babel/helpers": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.4.tgz", - "integrity": "sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", + "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", "dev": true, "requires": { "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.0", - "@babel/types": "^7.5.0" + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/highlight": { @@ -263,9 +363,9 @@ } }, "@babel/parser": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz", - "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -300,9 +400,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz", - "integrity": "sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", + "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -405,27 +505,27 @@ } }, "@babel/plugin-transform-block-scoping": { - "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz", + "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", + "@babel/helper-define-map": "^7.5.5", "@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.4", + "@babel/helper-replace-supers": "^7.5.5", "@babel/helper-split-export-declaration": "^7.4.4", "globals": "^11.1.0" } @@ -578,13 +678,13 @@ } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-replace-supers": "^7.5.5" } }, "@babel/plugin-transform-parameters": { @@ -626,9 +726,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.0.tgz", - "integrity": "sha512-LmPIZOAgTLl+86gR9KjLXex6P/lRz1fWEjTz6V6QZMmKie51ja3tvzdwORqhHc4RWR8TcZ5pClpRWs0mlaA2ng==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz", + "integrity": "sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -703,20 +803,12 @@ "requires": { "core-js": "^2.6.5", "regenerator-runtime": "^0.13.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@babel/preset-env": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.4.tgz", - "integrity": "sha512-hFnFnouyRNiH1rL8YkX1ANCNAUVC8Djwdqfev8i1415tnAG+7hlA5zhZ0Q/3Q5gkop4HioIPbCEWAalqcbxRoQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", + "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -724,7 +816,7 @@ "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.4", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", "@babel/plugin-syntax-async-generators": "^7.2.0", @@ -735,8 +827,8 @@ "@babel/plugin-transform-arrow-functions": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", + "@babel/plugin-transform-block-scoping": "^7.5.5", + "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", "@babel/plugin-transform-destructuring": "^7.5.0", "@babel/plugin-transform-dotall-regex": "^7.4.4", @@ -752,7 +844,7 @@ "@babel/plugin-transform-modules-umd": "^7.2.0", "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", "@babel/plugin-transform-regenerator": "^7.4.5", @@ -763,18 +855,31 @@ "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.5.0", + "@babel/types": "^7.5.5", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/runtime": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.4.tgz", - "integrity": "sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" @@ -792,20 +897,42 @@ } }, "@babel/traverse": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz", - "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.5.0", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.0", - "@babel/types": "^7.5.0", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/types": { @@ -828,14 +955,6 @@ "@jimp/utils": "^0.6.4", "bmp-js": "^0.1.0", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/core": { @@ -855,14 +974,6 @@ "phin": "^2.9.1", "pixelmatch": "^4.0.2", "tinycolor2": "^1.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/custom": { @@ -873,14 +984,6 @@ "requires": { "@jimp/core": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/gif": { @@ -892,14 +995,6 @@ "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "omggif": "^1.0.9" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/jpeg": { @@ -911,14 +1006,6 @@ "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "jpeg-js": "^0.3.4" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-blit": { @@ -929,14 +1016,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-blur": { @@ -947,14 +1026,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-color": { @@ -966,14 +1037,6 @@ "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "tinycolor2": "^1.4.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-contain": { @@ -984,14 +1047,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-cover": { @@ -1002,14 +1057,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-crop": { @@ -1020,14 +1067,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-displace": { @@ -1038,14 +1077,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-dither": { @@ -1056,14 +1087,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-flip": { @@ -1074,14 +1097,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-gaussian": { @@ -1092,14 +1107,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-invert": { @@ -1110,14 +1117,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-mask": { @@ -1128,14 +1127,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-normalize": { @@ -1146,14 +1137,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-print": { @@ -1165,14 +1148,6 @@ "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "load-bmfont": "^1.4.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-resize": { @@ -1183,14 +1158,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-rotate": { @@ -1201,14 +1168,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugin-scale": { @@ -1219,14 +1178,6 @@ "requires": { "@jimp/utils": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/plugins": { @@ -1254,14 +1205,6 @@ "@jimp/plugin-scale": "^0.6.4", "core-js": "^2.5.7", "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/png": { @@ -1273,14 +1216,6 @@ "@jimp/utils": "^0.6.4", "core-js": "^2.5.7", "pngjs": "^3.3.3" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/tiff": { @@ -1291,14 +1226,6 @@ "requires": { "core-js": "^2.5.7", "utif": "^2.0.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/types": { @@ -1314,14 +1241,6 @@ "@jimp/tiff": "^0.6.4", "core-js": "^2.5.7", "timm": "^1.6.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@jimp/utils": { @@ -1331,14 +1250,6 @@ "dev": true, "requires": { "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "@polka/redirect": { @@ -1437,9 +1348,9 @@ } }, "acorn": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", - "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", + "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", "dev": true }, "ansi-colors": { @@ -1478,24 +1389,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -1514,24 +1407,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "babel-plugin-dynamic-import-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", @@ -1547,61 +1422,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", @@ -1624,35 +1444,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -1660,13 +1451,13 @@ "dev": true }, "browserslist": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.4.tgz", - "integrity": "sha512-ErJT8qGfRt/VWHSr1HeqZzz50DvxHtr1fVL1m5wf20aGrG8e1ce8fpZ2EjZEfs09DDZYSvtRaDlMpWslBf8Low==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000981", - "electron-to-chromium": "^1.3.188", + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", "node-releases": "^1.1.25" } }, @@ -1708,23 +1499,6 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -1742,9 +1516,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000983", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000983.tgz", - "integrity": "sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ==", + "version": "1.0.30000986", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000986.tgz", + "integrity": "sha512-pM+LnkoAX0+QnIH3tpW5EnkmfpEoqOD8FAcoBvsl3Xh6DXkgctiCxeCbXphP/k3XJtJzm+zOAJbi6U6IVkpWZQ==", "dev": true }, "chalk": { @@ -1764,36 +1538,13 @@ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" + "source-map": "~0.6.0" }, "dependencies": { "source-map": { @@ -1838,16 +1589,6 @@ "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1869,12 +1610,6 @@ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, - "component-emitter": { - "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": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1912,10 +1647,10 @@ "safe-buffer": "~5.1.1" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", "dev": true }, "core-js-compat": { @@ -1930,9 +1665,9 @@ }, "dependencies": { "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -1977,12 +1712,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1992,47 +1721,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "degit": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/degit/-/degit-2.1.3.tgz", @@ -2089,9 +1777,9 @@ } }, "electron-to-chromium": { - "version": "1.3.188", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.188.tgz", - "integrity": "sha512-tEQcughYIMj8WDMc59EGEtNxdGgwal/oLLTDw+NEqJRJwGflQvH3aiyiexrWeZOETP4/ko78PVr6gwNhdozvuQ==", + "version": "1.3.203", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.203.tgz", + "integrity": "sha512-Z1FjJKEBhYrCNmnususVk8khiBabVI/bSJB/295V4ghVt4MFmtbP+mXgRZLQZinEBI469U6FtiGgpXnlLs6qiQ==", "dev": true }, "emoji-regex": { @@ -2194,171 +1882,12 @@ "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "file-type": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", "dev": true }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -2386,21 +1915,6 @@ "is-callable": "^1.1.3" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fs-minipass": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", @@ -2437,12 +1951,6 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -2476,7 +1984,8 @@ "golden-fleece": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/golden-fleece/-/golden-fleece-1.0.9.tgz", - "integrity": "sha512-YSwLaGMOgSBx9roJlNLL12c+FRiw7VECphinc6mGucphc/ZxTHgdEz6gmJqH6NOzYEd/yr64hwjom5pZ+tJVpg==" + "integrity": "sha512-YSwLaGMOgSBx9roJlNLL12c+FRiw7VECphinc6mGucphc/ZxTHgdEz6gmJqH6NOzYEd/yr64hwjom5pZ+tJVpg==", + "dev": true }, "good-listener": { "version": "1.2.2", @@ -2520,44 +2029,6 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2645,32 +2116,6 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2689,63 +2134,12 @@ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -2764,41 +2158,6 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-reference": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz", @@ -2832,12 +2191,6 @@ "has-symbols": "^1.0.0" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2850,12 +2203,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "jest-worker": { "version": "24.6.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", @@ -2888,14 +2235,6 @@ "@jimp/plugins": "^0.6.4", "@jimp/types": "^0.6.4", "core-js": "^2.5.7" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "jpeg-js": { @@ -2989,12 +2328,6 @@ "safe-buffer": "^5.0.1" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -3051,9 +2384,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash.deburr": { @@ -3139,21 +2472,6 @@ "p-defer": "^1.0.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "marked": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", @@ -3185,27 +2503,6 @@ "readable-stream": "^2.0.1" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, "mime": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", @@ -3260,27 +2557,6 @@ "minipass": "^2.2.1" } }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -3299,9 +2575,9 @@ } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", + "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -3380,25 +2656,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -3445,9 +2702,9 @@ } }, "node-releases": { - "version": "1.1.25", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", - "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", + "version": "1.1.26", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.26.tgz", + "integrity": "sha512-fZPsuhhUHMTlfkhDLGtfY80DSJTjOcx+qD1j5pqPkuhUHVS7xHZIg9EE4DHK8O3f0zTxXHX5VIkDG8pu98/wfQ==", "dev": true, "requires": { "semver": "^5.3.0" @@ -3497,58 +2754,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -3571,15 +2782,6 @@ "es-abstract": "^1.5.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "omggif": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", @@ -3710,12 +2912,6 @@ "json-parse-better-errors": "^1.0.1" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -3750,9 +2946,9 @@ } }, "pg": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-7.11.0.tgz", - "integrity": "sha512-YO4V7vCmEMGoF390LJaFaohWNKaA2ayoQOEZmiHVcAUF+YsRThpf/TaKCgSvsSE7cDm37Q/Cy3Gz41xiX/XjTw==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-7.12.0.tgz", + "integrity": "sha512-q54Ic0oBXfDZMwheP8ALeUX32TUXvF7SNgAlZjyhkDuFCJkQCgcLBz0Be5uOrAj3ljSok/CI9lRbYzEko0z1Zw==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -3781,9 +2977,9 @@ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.6.tgz", - "integrity": "sha512-hod2zYQxM8Gt482q+qONGTYcg/qVcV32VHVPtktbBJs0us3Dj7xibISw0BAAXVMCzt8A/jhfJvpZaxUlqtqs0g==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.7.tgz", + "integrity": "sha512-UiJyO5B9zZpu32GSlP0tXy8J2NsJ9EFGFfz5v6PSbdz/1hBLX1rNiiy5+mAm5iJJYwfCv4A0EBcQLGWwjbpzZw==" }, "pg-types": { "version": "2.0.1", @@ -3839,20 +3035,14 @@ "dev": true }, "polka": { - "version": "1.0.0-next.3", - "resolved": "https://registry.npmjs.org/polka/-/polka-1.0.0-next.3.tgz", - "integrity": "sha512-VmCsJK2uAqyjtV8e6ujEhgehibh+lvgdlrIgkTGsL+EKrCS/+BmGq57NV7yvkeGKI4XhsCw/J1YSeejmNfhbig==", + "version": "1.0.0-next.4", + "resolved": "https://registry.npmjs.org/polka/-/polka-1.0.0-next.4.tgz", + "integrity": "sha512-14UAMEVp6UjRepYIjJ/KZcFD0wD4TpDqBGmdgeg5SmhmBHBFR2LdTTXxx/y7GPa4537ZcK28Nsld+hynBE/qDw==", "requires": { "@polka/url": "^1.0.0-next.3", "trouter": "^3.0.2" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -3877,9 +3067,9 @@ } }, "prismjs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", - "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", + "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", "requires": { "clipboard": "^2.0.0" } @@ -3969,24 +3159,14 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", "dev": true, "requires": { "private": "^0.1.6" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexp-tree": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", @@ -3994,9 +3174,9 @@ "dev": true }, "regexparam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.2.1.tgz", - "integrity": "sha512-L/xx/JNXFvejDD9b4FukSh2wCyYUpxSTnLkMpcZc/ygnmaF6ETnphh+FDKZS8XBGmu2e3GoZ1why9qkTYqr1ag==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==" }, "regexpu-core": { "version": "4.5.4", @@ -4041,18 +3221,6 @@ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4080,18 +3248,6 @@ "path-parse": "^1.0.6" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -4102,14 +3258,14 @@ } }, "rollup": { - "version": "1.16.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.16.7.tgz", - "integrity": "sha512-P3GVcbVSLLjHWFLKGerYRe3Q/yggRXmTZFx/4WZf4wzGwO6hAg5jyMAFMQKc0dts8rFID4BQngfoz6yQbI7iMQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.17.0.tgz", + "integrity": "sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw==", "dev": true, "requires": { "@types/estree": "0.0.39", - "@types/node": "^12.0.10", - "acorn": "^6.1.1" + "@types/node": "^12.6.2", + "acorn": "^6.2.0" } }, "rollup-plugin-babel": { @@ -4123,19 +3279,8 @@ }, "dependencies": { "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } + "version": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" } } }, @@ -4157,15 +3302,6 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true - }, - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } } } }, @@ -4192,10 +3328,8 @@ }, "dependencies": { "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true + "version": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" }, "resolve": { "version": "1.11.1", @@ -4205,15 +3339,6 @@ "requires": { "path-parse": "^1.0.6" } - }, - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } } } }, @@ -4252,30 +3377,26 @@ }, "dependencies": { "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } + "version": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" } } }, "rollup-pluginutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.7.0.tgz", - "integrity": "sha512-FoP6L1YnMYTAR06Dpq5LE3jJtMwPE6H4VEOqFU23yoziZnqNRSiWcVy6YgEY5PdQB4G7278+8c4TvB0JKS1csA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", + "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", "dev": true, "requires": { - "estree-walker": "^0.6.0", - "micromatch": "^3.1.10" + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } } }, "safe-buffer": { @@ -4283,15 +3404,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "sander": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/sander/-/sander-0.6.0.tgz", @@ -4304,16 +3416,24 @@ } }, "sapper": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.27.4.tgz", - "integrity": "sha512-BYdiJSiyVguu2FZBbl87mn8KhSu+C8JRl7FurclXbMgpiMW7Yt74HPCcu/hXOubvvZw0kVTnzBlAGJCXZmldnA==", + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.27.8.tgz", + "integrity": "sha512-78K+56yu9nGOEU0B0XjBvNchRuPEv4aHbAKK4D874S4aoapMAkHCT0bHtPK12S3P7JPxvvT8GzHaq/8NetMmbg==", "dev": true, "requires": { "html-minifier": "^4.0.0", "http-link-header": "^1.0.2", - "shimport": "^1.0.0", - "sourcemap-codec": "^1.4.4", + "shimport": "^1.0.1", + "sourcemap-codec": "^1.4.6", "string-hash": "^1.1.3" + }, + "dependencies": { + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + } } }, "sax": { @@ -4345,29 +3465,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -4434,153 +3531,12 @@ } } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.12", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", @@ -4599,12 +3555,6 @@ } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "sourcemap-codec": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", @@ -4651,42 +3601,12 @@ "through": "2" } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -4771,9 +3691,9 @@ } }, "svelte": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.6.7.tgz", - "integrity": "sha512-9HzhPxWNLi+ZBhxL3HJ8jwwu+u+XfHtVF3uEJ2m8/JOdnaTC9D2qiEwOncgI7z/pN+VumgKQtZoHtvYCW6fHqg==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.6.9.tgz", + "integrity": "sha512-k72cp0LYzennT7xgnQU0jB2HJEZ/fQamZbrHJO6JlvsNX+z6a1YJaLrtN4qQ1yfozUkeGw1TOvDxo8a5grOZMg==", "dev": true }, "tar": { @@ -4839,54 +3759,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -4894,11 +3766,11 @@ "dev": true }, "trouter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/trouter/-/trouter-3.0.2.tgz", - "integrity": "sha512-wzUcM3oKmF8Fx5pd+3IxZj5LBugqW+hSQHm6cTHkpiZHL8w6YeZSzo3LPw0UdhlwaGPms3OxT7N4GEOIRTw+jw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/trouter/-/trouter-3.1.0.tgz", + "integrity": "sha512-3Swwu638QQWOefHLss9cdyLi5/9BKYmXZEXpH0KOFfB9YZwUAwHbDAcoYxaHfqAeFvbi/LqAK7rGkhCr1v1BJA==", "requires": { - "regexparam": "^1.2.0" + "regexparam": "^1.3.0" } }, "uglify-js": { @@ -4947,99 +3819,12 @@ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", "dev": true }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", diff --git a/site/package.json b/site/package.json index b3953ae7de..0b949f5da7 100644 --- a/site/package.json +++ b/site/package.json @@ -14,25 +14,24 @@ }, "dependencies": { "@polka/redirect": "^1.0.0-next.0", - "@polka/send": "^1.0.0-next.2", + "@polka/send": "^1.0.0-next.3", "devalue": "^2.0.0", "do-not-zip": "^1.0.0", - "golden-fleece": "^1.0.9", "httpie": "^1.1.2", "jsonwebtoken": "^8.5.1", "marked": "^0.7.0", - "pg": "^7.11.0", - "polka": "^1.0.0-next.2", - "prismjs": "^1.16.0", + "pg": "^7.12.0", + "polka": "^1.0.0-next.4", + "prismjs": "^1.17.1", "sirv": "^0.4.2", "yootils": "0.0.16" }, "devDependencies": { - "@babel/core": "^7.5.4", + "@babel/core": "^7.5.5", "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-transform-runtime": "^7.5.0", - "@babel/preset-env": "^7.5.4", - "@babel/runtime": "^7.5.4", + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/preset-env": "^7.5.5", + "@babel/runtime": "^7.5.5", "@sindresorhus/slugify": "^0.9.1", "@sveltejs/site-kit": "^1.1.1", "@sveltejs/svelte-repl": "^0.1.8", @@ -40,11 +39,11 @@ "dotenv": "^8.0.0", "esm": "^3.2.25", "jimp": "^0.6.4", - "mocha": "^6.1.4", + "mocha": "^6.2.0", "node-fetch": "^2.6.0", "node-pg-migrate": "^3.21.1", "npm-run-all": "^4.1.5", - "rollup": "^1.16.7", + "rollup": "^1.17.0", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.0.1", "rollup-plugin-json": "^4.0.0", @@ -52,9 +51,9 @@ "rollup-plugin-replace": "^2.2.0", "rollup-plugin-svelte": "^5.1.0", "rollup-plugin-terser": "^5.1.1", - "sapper": "^0.27.4", + "sapper": "^0.27.8", "shelljs": "^0.8.3", - "svelte": "^3.6.7" + "svelte": "^3.6.9" }, "engines": { "node": ">=10.0.0" From 0fe04561b27e509bd0fa992dc3f70ab3caf2746a Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 30 Jul 2019 14:32:53 -0400 Subject: [PATCH 11/41] quote props if necessary in SSR mode - fixes #3312 --- .../compile/render_ssr/handlers/InlineComponent.ts | 4 ++-- test/runtime/samples/prop-quoted/Nested.svelte | 1 + test/runtime/samples/prop-quoted/_config.js | 12 ++++++++++++ test/runtime/samples/prop-quoted/main.svelte | 7 +++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 test/runtime/samples/prop-quoted/Nested.svelte create mode 100644 test/runtime/samples/prop-quoted/_config.js create mode 100644 test/runtime/samples/prop-quoted/main.svelte diff --git a/src/compiler/compile/render_ssr/handlers/InlineComponent.ts b/src/compiler/compile/render_ssr/handlers/InlineComponent.ts index 320bf5e6a0..74d990a3d8 100644 --- a/src/compiler/compile/render_ssr/handlers/InlineComponent.ts +++ b/src/compiler/compile/render_ssr/handlers/InlineComponent.ts @@ -58,7 +58,7 @@ export default function(node: InlineComponent, renderer: Renderer, options: Rend if (attribute.is_spread) { return snip(attribute.expression); } else { - return `{ ${attribute.name}: ${get_attribute_value(attribute)} }`; + return `{ ${quote_name_if_necessary(attribute.name)}: ${get_attribute_value(attribute)} }`; } }) .concat(binding_props.map(p => `{ ${p} }`)) @@ -67,7 +67,7 @@ export default function(node: InlineComponent, renderer: Renderer, options: Rend } else { props = stringify_props( node.attributes - .map(attribute => `${attribute.name}: ${get_attribute_value(attribute)}`) + .map(attribute => `${quote_name_if_necessary(attribute.name)}: ${get_attribute_value(attribute)}`) .concat(binding_props) ); } diff --git a/test/runtime/samples/prop-quoted/Nested.svelte b/test/runtime/samples/prop-quoted/Nested.svelte new file mode 100644 index 0000000000..681f7126b2 --- /dev/null +++ b/test/runtime/samples/prop-quoted/Nested.svelte @@ -0,0 +1 @@ +{$$props['x-y-z']} \ No newline at end of file diff --git a/test/runtime/samples/prop-quoted/_config.js b/test/runtime/samples/prop-quoted/_config.js new file mode 100644 index 0000000000..d982bc87cc --- /dev/null +++ b/test/runtime/samples/prop-quoted/_config.js @@ -0,0 +1,12 @@ +export default { + props: { + foo: 1 + }, + + html: `1`, + + async test({ assert, component, target }) { + component.foo = 2; + assert.htmlEqual(target.innerHTML, `2`); + } +}; \ No newline at end of file diff --git a/test/runtime/samples/prop-quoted/main.svelte b/test/runtime/samples/prop-quoted/main.svelte new file mode 100644 index 0000000000..0249017762 --- /dev/null +++ b/test/runtime/samples/prop-quoted/main.svelte @@ -0,0 +1,7 @@ + + + \ No newline at end of file From 981f30d3e9848994f4eac6666fc4a30701c0be09 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 30 Jul 2019 14:52:23 -0400 Subject: [PATCH 12/41] -> v3.6.10 --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 553e83c735..55795f3c88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Svelte changelog +## 3.6.10 + +* Use `change` event for file inputs ([#3226](https://github.com/sveltejs/svelte/issues/3226)) +* Always fire reactive declarations with `$$props` ([#3286](https://github.com/sveltejs/svelte/issues/3286)) +* More conservative spread prop updates ([#3289](https://github.com/sveltejs/svelte/issues/3289)) +* Quote props if necessary in SSR mode ([#3312](https://github.com/sveltejs/svelte/issues/3312)) + ## 3.6.9 * Always update derived stores with a derived input whose value does not change ([#3191](https://github.com/sveltejs/svelte/issues/3191)) diff --git a/package.json b/package.json index 1f40d17821..93cf1f49ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "3.6.9", + "version": "3.6.10", "description": "Cybernetically enhanced web apps", "module": "index.mjs", "main": "index", From cf5dd8ff7554e69e21f3acc0d033ce05f3ed1be0 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 30 Jul 2019 17:12:17 -0400 Subject: [PATCH 13/41] support RxJS Observables in reassigned stores (#3304) --- src/compiler/compile/render_dom/index.ts | 8 ++++---- src/runtime/internal/ssr.ts | 13 ------------- src/runtime/internal/utils.ts | 15 +++++++++++---- src/runtime/store/index.ts | 11 +++++++++-- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index c6eb1f1bb8..52006e4d8a 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -267,9 +267,9 @@ export default function dom( return `$$subscribe_${name}()`; } - const subscribe = component.helper('subscribe'); + const component_subscribe = component.helper('component_subscribe'); - let insert = `${subscribe}($$self, ${name}, $${callback})`; + let insert = `${component_subscribe}($$self, ${name}, $${callback})`; if (component.compile_options.dev) { const validate_store = component.helper('validate_store'); insert = `${validate_store}(${name}, '${name}'); ${insert}`; @@ -343,7 +343,7 @@ export default function dom( }) .map(({ name }) => deindent` ${component.compile_options.dev && `@validate_store(${name.slice(1)}, '${name.slice(1)}');`} - @subscribe($$self, ${name.slice(1)}, $$value => { ${name} = $$value; $$invalidate('${name}', ${name}); }); + @component_subscribe($$self, ${name.slice(1)}, $$value => { ${name} = $$value; $$invalidate('${name}', ${name}); }); `); const resubscribable_reactive_store_unsubscribers = reactive_stores @@ -390,7 +390,7 @@ export default function dom( const store = component.var_lookup.get(name); if (store && store.reassigned) { - return `${$name}, $$unsubscribe_${name} = @noop, $$subscribe_${name} = () => { $$unsubscribe_${name}(); $$unsubscribe_${name} = ${name}.subscribe($$value => { ${$name} = $$value; $$invalidate('${$name}', ${$name}); }) }`; + return `${$name}, $$unsubscribe_${name} = @noop, $$subscribe_${name} = () => { $$unsubscribe_${name}(); $$unsubscribe_${name} = @subscribe(${name}, $$value => { ${$name} = $$value; $$invalidate('${$name}', ${$name}); }) }`; } return $name; diff --git a/src/runtime/internal/ssr.ts b/src/runtime/internal/ssr.ts index 1ae1ae1d12..d84efc7314 100644 --- a/src/runtime/internal/ssr.ts +++ b/src/runtime/internal/ssr.ts @@ -1,6 +1,5 @@ import { set_current_component, current_component } from './lifecycle'; import { run_all, blank_object } from './utils'; -import { Readable } from 'svelte/store'; export const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u; // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 @@ -121,18 +120,6 @@ export function create_ssr_component(fn) { }; } -/** - * Get the current value from a store by subscribing and immediately unsubscribing. - * @param store readable - */ -export function get_store_value(store: Readable): T | undefined { - let value; - const unsubscribe: any = store.subscribe(_ => value = _); - if (unsubscribe.unsubscribe) unsubscribe.unsubscribe(); - else unsubscribe(); - return value; -} - export function add_attribute(name, value) { if (!value) return ''; return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(value) : `"${value}"`}`}`; diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 08410ec33a..41a2ee890b 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -48,12 +48,19 @@ export function validate_store(store, name) { } } -export function subscribe(component, store, callback) { +export function subscribe(store, callback) { const unsub = store.subscribe(callback); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} + +export function get_store_value(store) { + let value; + subscribe(store, _ => value = _)(); + return value; +} - component.$$.on_destroy.push(unsub.unsubscribe - ? () => unsub.unsubscribe() - : unsub); +export function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); } export function create_slot(definition, ctx, fn) { diff --git a/src/runtime/store/index.ts b/src/runtime/store/index.ts index 6863730e4e..6df7be6cf6 100644 --- a/src/runtime/store/index.ts +++ b/src/runtime/store/index.ts @@ -1,5 +1,4 @@ -import { run_all, noop, safe_not_equal, is_function } from 'svelte/internal'; -export { get_store_value as get } from 'svelte/internal'; +import { run_all, noop, safe_not_equal, is_function, get_store_value } from 'svelte/internal'; /** Callback to inform of a value updates. */ type Subscriber = (value: T) => void; @@ -182,3 +181,11 @@ export function derived( }; }); } + +/** + * Get the current value from a store by subscribing and immediately unsubscribing. + * @param store readable + */ +export const get = get_store_value as { + (store: Readable): (T | undefined); +}; From 60af0d778197688338078348481802e2327e487b Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 30 Jul 2019 17:20:13 -0400 Subject: [PATCH 14/41] add test --- .../samples/store-resubscribe-observable/_config.js | 3 +++ .../samples/store-resubscribe-observable/main.svelte | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 test/runtime/samples/store-resubscribe-observable/_config.js create mode 100644 test/runtime/samples/store-resubscribe-observable/main.svelte diff --git a/test/runtime/samples/store-resubscribe-observable/_config.js b/test/runtime/samples/store-resubscribe-observable/_config.js new file mode 100644 index 0000000000..d043bbcd87 --- /dev/null +++ b/test/runtime/samples/store-resubscribe-observable/_config.js @@ -0,0 +1,3 @@ +export default { + html: `42`, +}; diff --git a/test/runtime/samples/store-resubscribe-observable/main.svelte b/test/runtime/samples/store-resubscribe-observable/main.svelte new file mode 100644 index 0000000000..4ea2112b11 --- /dev/null +++ b/test/runtime/samples/store-resubscribe-observable/main.svelte @@ -0,0 +1,11 @@ + + +{$foo} From d2ac3d880b7c8bbc92bf959e2d83b73c4768c1f8 Mon Sep 17 00:00:00 2001 From: Timothy Johnson Date: Tue, 30 Jul 2019 17:42:15 -0700 Subject: [PATCH 15/41] Missing globals --- src/compiler/utils/names.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/utils/names.ts b/src/compiler/utils/names.ts index c5a67a651b..8d9150bc18 100644 --- a/src/compiler/utils/names.ts +++ b/src/compiler/utils/names.ts @@ -15,15 +15,18 @@ export const globals = new Set([ 'encodeURIComponent', 'Error', 'EvalError', + 'history', 'Infinity', 'InternalError', 'Intl', 'isFinite', 'isNaN', 'JSON', + 'localStorage', 'Map', 'Math', 'NaN', + 'navigator', 'Number', 'Object', 'parseFloat', @@ -34,6 +37,7 @@ export const globals = new Set([ 'RangeError', 'ReferenceError', 'RegExp', + 'sessionStorage', 'Set', 'String', 'SyntaxError', From 9b5bbb556d0b8add11ccc571fff3ae4e3f0266b8 Mon Sep 17 00:00:00 2001 From: bre30kra69cs Date: Wed, 31 Jul 2019 15:14:18 +0300 Subject: [PATCH 16/41] fix Literally undefined class #3283 --- .../render_dom/wrappers/Element/Attribute.ts | 13 +++++-- .../attribute-null-classname/_config.js | 32 +++++++++++++++ .../attribute-null-classname/main.svelte | 11 ++++++ .../attribute-null-classnames/_config.js | 39 +++++++++++++++++++ .../attribute-null-classnames/main.svelte | 12 ++++++ 5 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 test/runtime/samples/attribute-null-classname/_config.js create mode 100644 test/runtime/samples/attribute-null-classname/main.svelte create mode 100644 test/runtime/samples/attribute-null-classnames/_config.js create mode 100644 test/runtime/samples/attribute-null-classnames/main.svelte diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index f55e731fdb..aff06e4150 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -91,9 +91,16 @@ export default class AttributeWrapper { if (chunk.type === 'Text') { return stringify(chunk.data); } else { - return chunk.get_precedence() <= 13 - ? `(${chunk.render()})` - : chunk.render(); + const renderedChunk = chunk.render(); + if (this.node.name === 'class') { + return chunk.get_precedence() <= 13 + ? `(${renderedChunk})` + : `(${renderedChunk} || '')`; + } else { + return chunk.get_precedence() <= 13 + ? `(${renderedChunk})` + : renderedChunk; + } } }) .join(' + '); diff --git a/test/runtime/samples/attribute-null-classname/_config.js b/test/runtime/samples/attribute-null-classname/_config.js new file mode 100644 index 0000000000..856bd8bcd0 --- /dev/null +++ b/test/runtime/samples/attribute-null-classname/_config.js @@ -0,0 +1,32 @@ +export default { + skip_if_ssr: true, + + props: { + testName: "testClassName" + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'testClassName svelte-x1o6ra'); + + component.testName = null; + assert.equal(div.className, ' svelte-x1o6ra'); + + component.testName = undefined; + assert.equal(div.className, ' svelte-x1o6ra'); + + component.testName = undefined + ''; + assert.equal(div.className, 'undefined svelte-x1o6ra'); + + component.testName = null + ''; + assert.equal(div.className, 'null svelte-x1o6ra'); + + component.testName = 1; + assert.equal(div.className, '1 svelte-x1o6ra'); + + component.testName = ''; + assert.equal(div.className, ' svelte-x1o6ra'); + } +}; diff --git a/test/runtime/samples/attribute-null-classname/main.svelte b/test/runtime/samples/attribute-null-classname/main.svelte new file mode 100644 index 0000000000..013647952d --- /dev/null +++ b/test/runtime/samples/attribute-null-classname/main.svelte @@ -0,0 +1,11 @@ + + + + +
diff --git a/test/runtime/samples/attribute-null-classnames/_config.js b/test/runtime/samples/attribute-null-classnames/_config.js new file mode 100644 index 0000000000..6eca569250 --- /dev/null +++ b/test/runtime/samples/attribute-null-classnames/_config.js @@ -0,0 +1,39 @@ +export default { + skip_if_ssr: true, + + props: { + testName1: "test1", + testName2: "test2", + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'test1test2 svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = null; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = "test"; + assert.equal(div.className, 'nulltest svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = "test"; + assert.equal(div.className, 'undefinedtest svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = undefined; + assert.equal(div.className, 'NaN svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = 1; + assert.equal(div.className, '1 svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = 1; + assert.equal(div.className, 'NaN svelte-x1o6ra'); + } +}; diff --git a/test/runtime/samples/attribute-null-classnames/main.svelte b/test/runtime/samples/attribute-null-classnames/main.svelte new file mode 100644 index 0000000000..06098fd50b --- /dev/null +++ b/test/runtime/samples/attribute-null-classnames/main.svelte @@ -0,0 +1,12 @@ + + + + +
From ccf2ad819a8cfd0b86d02e4991695b5369ef28e6 Mon Sep 17 00:00:00 2001 From: bre30kra69cs Date: Thu, 1 Aug 2019 15:46:53 +0300 Subject: [PATCH 17/41] optimize class name runtime calc & add tests & ref --- .../render_dom/wrappers/Element/Attribute.ts | 63 +++++++++++++------ src/runtime/internal/utils.ts | 4 ++ .../samples/attribute-false/_config.js | 5 ++ .../samples/attribute-false/main.svelte | 1 + .../_config.js | 44 +++++++++++++ .../main.svelte | 5 ++ .../_config.js | 12 ++++ .../main.svelte | 0 .../_config.js | 47 ++++++++++++++ .../main.svelte | 6 ++ .../_config.js | 8 +++ .../main.svelte | 0 .../_config.js | 44 +++++++++++++ .../main.svelte | 9 +++ .../_config.js | 44 +++++++++++++ .../main.svelte | 15 +++++ .../_config.js | 47 ++++++++++++++ .../main.svelte | 11 ++++ .../_config.js | 47 ++++++++++++++ .../main.svelte | 17 +++++ .../runtime/samples/attribute-null/_config.js | 5 ++ .../samples/attribute-null/main.svelte | 1 + .../samples/attribute-undefined/_config.js | 5 ++ .../samples/attribute-undefined/main.svelte | 1 + 24 files changed, 421 insertions(+), 20 deletions(-) create mode 100644 test/runtime/samples/attribute-false/_config.js create mode 100644 test/runtime/samples/attribute-false/main.svelte create mode 100644 test/runtime/samples/attribute-null-classname-no-style/_config.js create mode 100644 test/runtime/samples/attribute-null-classname-no-style/main.svelte rename test/runtime/samples/{attribute-null-classname => attribute-null-classname-with-style}/_config.js (70%) rename test/runtime/samples/{attribute-null-classname => attribute-null-classname-with-style}/main.svelte (100%) create mode 100644 test/runtime/samples/attribute-null-classnames-no-style/_config.js create mode 100644 test/runtime/samples/attribute-null-classnames-no-style/main.svelte rename test/runtime/samples/{attribute-null-classnames => attribute-null-classnames-with-style}/_config.js (81%) rename test/runtime/samples/{attribute-null-classnames => attribute-null-classnames-with-style}/main.svelte (100%) create mode 100644 test/runtime/samples/attribute-null-func-classname-no-style/_config.js create mode 100644 test/runtime/samples/attribute-null-func-classname-no-style/main.svelte create mode 100644 test/runtime/samples/attribute-null-func-classname-with-style/_config.js create mode 100644 test/runtime/samples/attribute-null-func-classname-with-style/main.svelte create mode 100644 test/runtime/samples/attribute-null-func-classnames-no-style/_config.js create mode 100644 test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte create mode 100644 test/runtime/samples/attribute-null-func-classnames-with-style/_config.js create mode 100644 test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte create mode 100644 test/runtime/samples/attribute-null/_config.js create mode 100644 test/runtime/samples/attribute-null/main.svelte create mode 100644 test/runtime/samples/attribute-undefined/_config.js create mode 100644 test/runtime/samples/attribute-undefined/main.svelte diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index aff06e4150..7c174acb46 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -5,6 +5,7 @@ import ElementWrapper from './index'; import { stringify } from '../../../utils/stringify'; import deindent from '../../../utils/deindent'; import Expression from '../../../nodes/shared/Expression'; +import Text from '../../../nodes/Text'; export default class AttributeWrapper { node: Attribute; @@ -84,26 +85,13 @@ export default class AttributeWrapper { value = (this.node.chunks[0] as Expression).render(block); } else { // '{foo} {bar}' — treat as string concatenation - value = - (this.node.chunks[0].type === 'Text' ? '' : `"" + `) + - this.node.chunks - .map((chunk) => { - if (chunk.type === 'Text') { - return stringify(chunk.data); - } else { - const renderedChunk = chunk.render(); - if (this.node.name === 'class') { - return chunk.get_precedence() <= 13 - ? `(${renderedChunk})` - : `(${renderedChunk} || '')`; - } else { - return chunk.get_precedence() <= 13 - ? `(${renderedChunk})` - : renderedChunk; - } - } - }) - .join(' + '); + const attrPrefix = this.node.chunks[0].type === 'Text' ? '' : `"" + `; + + const attrText = this.node.name === 'class' + ? this.get_class_name_text() + : this.get_attr_text(); + + value = `${attrPrefix}${attrText}`; } const is_select_value_attribute = @@ -217,6 +205,41 @@ export default class AttributeWrapper { } } + get_class_name_text() { + const isStyled = this.node.chunks + .filter((chunk) => chunk.type === 'Text') + .some((chunk: Text) => !chunk.start && !chunk.end); + + const classNameStringArray = this.render_attr(); + + + if (!isStyled || classNameStringArray.length !== 2) { + return classNameStringArray.join(' + '); + } + + const targetToken = 0; + return classNameStringArray + .map((token, index) => index === targetToken ? `@class_name_resolver(${token})` : token) + .join(' + '); + } + + get_attr_text() { + return this.render_attr().join(' + '); + } + + render_attr() { + return this.node.chunks.map((chunk) => { + if (chunk.type === 'Text') { + return stringify(chunk.data); + } + + const renderedChunk = chunk.render(); + return chunk.get_precedence() <= 13 + ? `(${renderedChunk})` + : renderedChunk; + }); + } + stringify() { if (this.node.is_true) return ''; diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 08410ec33a..1aec30ef2f 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -89,3 +89,7 @@ export function once(fn) { fn.call(this, ...args); }; } + +export function class_name_resolver(nextClassName) { + return nextClassName == undefined ? '' : nextClassName; +} \ No newline at end of file diff --git a/test/runtime/samples/attribute-false/_config.js b/test/runtime/samples/attribute-false/_config.js new file mode 100644 index 0000000000..0f37392806 --- /dev/null +++ b/test/runtime/samples/attribute-false/_config.js @@ -0,0 +1,5 @@ +export default { + skip_if_ssr: true, + + html: `
`, +}; diff --git a/test/runtime/samples/attribute-false/main.svelte b/test/runtime/samples/attribute-false/main.svelte new file mode 100644 index 0000000000..ca78020a39 --- /dev/null +++ b/test/runtime/samples/attribute-false/main.svelte @@ -0,0 +1 @@ +
diff --git a/test/runtime/samples/attribute-null-classname-no-style/_config.js b/test/runtime/samples/attribute-null-classname-no-style/_config.js new file mode 100644 index 0000000000..e2098430e4 --- /dev/null +++ b/test/runtime/samples/attribute-null-classname-no-style/_config.js @@ -0,0 +1,44 @@ +export default { + skip_if_ssr: true, + + props: { + testName: "testClassName" + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'testClassName'); + + component.testName = null; + assert.equal(div.className, ''); + + component.testName = undefined; + assert.equal(div.className, ''); + + component.testName = undefined + ''; + assert.equal(div.className, 'undefined'); + + component.testName = null + ''; + assert.equal(div.className, 'null'); + + component.testName = 1; + assert.equal(div.className, '1'); + + component.testName = 0; + assert.equal(div.className, '0'); + + component.testName = false; + assert.equal(div.className, 'false'); + + component.testName = true; + assert.equal(div.className, 'true'); + + component.testName = {}; + assert.equal(div.className, '[object Object]'); + + component.testName = ''; + assert.equal(div.className, ''); + } +}; diff --git a/test/runtime/samples/attribute-null-classname-no-style/main.svelte b/test/runtime/samples/attribute-null-classname-no-style/main.svelte new file mode 100644 index 0000000000..8dfcd7af54 --- /dev/null +++ b/test/runtime/samples/attribute-null-classname-no-style/main.svelte @@ -0,0 +1,5 @@ + + +
diff --git a/test/runtime/samples/attribute-null-classname/_config.js b/test/runtime/samples/attribute-null-classname-with-style/_config.js similarity index 70% rename from test/runtime/samples/attribute-null-classname/_config.js rename to test/runtime/samples/attribute-null-classname-with-style/_config.js index 856bd8bcd0..635dd058ca 100644 --- a/test/runtime/samples/attribute-null-classname/_config.js +++ b/test/runtime/samples/attribute-null-classname-with-style/_config.js @@ -26,6 +26,18 @@ export default { component.testName = 1; assert.equal(div.className, '1 svelte-x1o6ra'); + component.testName = 0; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName = false; + assert.equal(div.className, 'false svelte-x1o6ra'); + + component.testName = true; + assert.equal(div.className, 'true svelte-x1o6ra'); + + component.testName = {}; + assert.equal(div.className, '[object Object] svelte-x1o6ra'); + component.testName = ''; assert.equal(div.className, ' svelte-x1o6ra'); } diff --git a/test/runtime/samples/attribute-null-classname/main.svelte b/test/runtime/samples/attribute-null-classname-with-style/main.svelte similarity index 100% rename from test/runtime/samples/attribute-null-classname/main.svelte rename to test/runtime/samples/attribute-null-classname-with-style/main.svelte diff --git a/test/runtime/samples/attribute-null-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-classnames-no-style/_config.js new file mode 100644 index 0000000000..6a734efff5 --- /dev/null +++ b/test/runtime/samples/attribute-null-classnames-no-style/_config.js @@ -0,0 +1,47 @@ +export default { + skip_if_ssr: true, + + props: { + testName1: "test1", + testName2: "test2", + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'test1test2'); + + component.testName1 = null; + component.testName2 = null; + assert.equal(div.className, '0'); + + component.testName1 = null; + component.testName2 = "test"; + assert.equal(div.className, 'nulltest'); + + component.testName1 = undefined; + component.testName2 = "test"; + assert.equal(div.className, 'undefinedtest'); + + component.testName1 = undefined; + component.testName2 = undefined; + assert.equal(div.className, 'NaN'); + + component.testName1 = null; + component.testName2 = 1; + assert.equal(div.className, '1'); + + component.testName1 = undefined; + component.testName2 = 1; + assert.equal(div.className, 'NaN'); + + component.testName1 = null; + component.testName2 = 0; + assert.equal(div.className, '0'); + + component.testName1 = undefined; + component.testName2 = 0; + assert.equal(div.className, 'NaN'); + } +}; diff --git a/test/runtime/samples/attribute-null-classnames-no-style/main.svelte b/test/runtime/samples/attribute-null-classnames-no-style/main.svelte new file mode 100644 index 0000000000..f8cf7d803e --- /dev/null +++ b/test/runtime/samples/attribute-null-classnames-no-style/main.svelte @@ -0,0 +1,6 @@ + + +
diff --git a/test/runtime/samples/attribute-null-classnames/_config.js b/test/runtime/samples/attribute-null-classnames-with-style/_config.js similarity index 81% rename from test/runtime/samples/attribute-null-classnames/_config.js rename to test/runtime/samples/attribute-null-classnames-with-style/_config.js index 6eca569250..22f7a4d7e2 100644 --- a/test/runtime/samples/attribute-null-classnames/_config.js +++ b/test/runtime/samples/attribute-null-classnames-with-style/_config.js @@ -35,5 +35,13 @@ export default { component.testName1 = undefined; component.testName2 = 1; assert.equal(div.className, 'NaN svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = 0; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = 0; + assert.equal(div.className, 'NaN svelte-x1o6ra'); } }; diff --git a/test/runtime/samples/attribute-null-classnames/main.svelte b/test/runtime/samples/attribute-null-classnames-with-style/main.svelte similarity index 100% rename from test/runtime/samples/attribute-null-classnames/main.svelte rename to test/runtime/samples/attribute-null-classnames-with-style/main.svelte diff --git a/test/runtime/samples/attribute-null-func-classname-no-style/_config.js b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js new file mode 100644 index 0000000000..e2098430e4 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js @@ -0,0 +1,44 @@ +export default { + skip_if_ssr: true, + + props: { + testName: "testClassName" + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'testClassName'); + + component.testName = null; + assert.equal(div.className, ''); + + component.testName = undefined; + assert.equal(div.className, ''); + + component.testName = undefined + ''; + assert.equal(div.className, 'undefined'); + + component.testName = null + ''; + assert.equal(div.className, 'null'); + + component.testName = 1; + assert.equal(div.className, '1'); + + component.testName = 0; + assert.equal(div.className, '0'); + + component.testName = false; + assert.equal(div.className, 'false'); + + component.testName = true; + assert.equal(div.className, 'true'); + + component.testName = {}; + assert.equal(div.className, '[object Object]'); + + component.testName = ''; + assert.equal(div.className, ''); + } +}; diff --git a/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte b/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte new file mode 100644 index 0000000000..e2754cd421 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte @@ -0,0 +1,9 @@ + + +
diff --git a/test/runtime/samples/attribute-null-func-classname-with-style/_config.js b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js new file mode 100644 index 0000000000..635dd058ca --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js @@ -0,0 +1,44 @@ +export default { + skip_if_ssr: true, + + props: { + testName: "testClassName" + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'testClassName svelte-x1o6ra'); + + component.testName = null; + assert.equal(div.className, ' svelte-x1o6ra'); + + component.testName = undefined; + assert.equal(div.className, ' svelte-x1o6ra'); + + component.testName = undefined + ''; + assert.equal(div.className, 'undefined svelte-x1o6ra'); + + component.testName = null + ''; + assert.equal(div.className, 'null svelte-x1o6ra'); + + component.testName = 1; + assert.equal(div.className, '1 svelte-x1o6ra'); + + component.testName = 0; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName = false; + assert.equal(div.className, 'false svelte-x1o6ra'); + + component.testName = true; + assert.equal(div.className, 'true svelte-x1o6ra'); + + component.testName = {}; + assert.equal(div.className, '[object Object] svelte-x1o6ra'); + + component.testName = ''; + assert.equal(div.className, ' svelte-x1o6ra'); + } +}; diff --git a/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte b/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte new file mode 100644 index 0000000000..bcb858ab8d --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte @@ -0,0 +1,15 @@ + + + + +
diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js new file mode 100644 index 0000000000..6a734efff5 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js @@ -0,0 +1,47 @@ +export default { + skip_if_ssr: true, + + props: { + testName1: "test1", + testName2: "test2", + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'test1test2'); + + component.testName1 = null; + component.testName2 = null; + assert.equal(div.className, '0'); + + component.testName1 = null; + component.testName2 = "test"; + assert.equal(div.className, 'nulltest'); + + component.testName1 = undefined; + component.testName2 = "test"; + assert.equal(div.className, 'undefinedtest'); + + component.testName1 = undefined; + component.testName2 = undefined; + assert.equal(div.className, 'NaN'); + + component.testName1 = null; + component.testName2 = 1; + assert.equal(div.className, '1'); + + component.testName1 = undefined; + component.testName2 = 1; + assert.equal(div.className, 'NaN'); + + component.testName1 = null; + component.testName2 = 0; + assert.equal(div.className, '0'); + + component.testName1 = undefined; + component.testName2 = 0; + assert.equal(div.className, 'NaN'); + } +}; diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte b/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte new file mode 100644 index 0000000000..e1cdf51412 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte @@ -0,0 +1,11 @@ + + +
diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js new file mode 100644 index 0000000000..22f7a4d7e2 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js @@ -0,0 +1,47 @@ +export default { + skip_if_ssr: true, + + props: { + testName1: "test1", + testName2: "test2", + }, + + html: `
`, + + test({ assert, component, target }) { + const div = target.querySelector('div'); + assert.equal(div.className, 'test1test2 svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = null; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = "test"; + assert.equal(div.className, 'nulltest svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = "test"; + assert.equal(div.className, 'undefinedtest svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = undefined; + assert.equal(div.className, 'NaN svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = 1; + assert.equal(div.className, '1 svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = 1; + assert.equal(div.className, 'NaN svelte-x1o6ra'); + + component.testName1 = null; + component.testName2 = 0; + assert.equal(div.className, '0 svelte-x1o6ra'); + + component.testName1 = undefined; + component.testName2 = 0; + assert.equal(div.className, 'NaN svelte-x1o6ra'); + } +}; diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte b/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte new file mode 100644 index 0000000000..af43778365 --- /dev/null +++ b/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte @@ -0,0 +1,17 @@ + + + + +
diff --git a/test/runtime/samples/attribute-null/_config.js b/test/runtime/samples/attribute-null/_config.js new file mode 100644 index 0000000000..938d525cf6 --- /dev/null +++ b/test/runtime/samples/attribute-null/_config.js @@ -0,0 +1,5 @@ +export default { + skip_if_ssr: true, + + html: `
`, +}; diff --git a/test/runtime/samples/attribute-null/main.svelte b/test/runtime/samples/attribute-null/main.svelte new file mode 100644 index 0000000000..9b7f48eda3 --- /dev/null +++ b/test/runtime/samples/attribute-null/main.svelte @@ -0,0 +1 @@ +
diff --git a/test/runtime/samples/attribute-undefined/_config.js b/test/runtime/samples/attribute-undefined/_config.js new file mode 100644 index 0000000000..938d525cf6 --- /dev/null +++ b/test/runtime/samples/attribute-undefined/_config.js @@ -0,0 +1,5 @@ +export default { + skip_if_ssr: true, + + html: `
`, +}; diff --git a/test/runtime/samples/attribute-undefined/main.svelte b/test/runtime/samples/attribute-undefined/main.svelte new file mode 100644 index 0000000000..5108aa873f --- /dev/null +++ b/test/runtime/samples/attribute-undefined/main.svelte @@ -0,0 +1 @@ +
From 42717e893b91c6d398e2a405841a1bb1b35aa1f2 Mon Sep 17 00:00:00 2001 From: bre30kra69cs Date: Thu, 1 Aug 2019 15:58:50 +0300 Subject: [PATCH 18/41] ref spaces --- src/compiler/compile/render_dom/wrappers/Element/Attribute.ts | 1 - src/runtime/internal/utils.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index 7c174acb46..eb242e994b 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -212,7 +212,6 @@ export default class AttributeWrapper { const classNameStringArray = this.render_attr(); - if (!isStyled || classNameStringArray.length !== 2) { return classNameStringArray.join(' + '); } diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 1aec30ef2f..3cef77e7be 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -92,4 +92,4 @@ export function once(fn) { export function class_name_resolver(nextClassName) { return nextClassName == undefined ? '' : nextClassName; -} \ No newline at end of file +} From 6d962c5d95578e655f82a105e42290aa33e21ee9 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Fri, 2 Aug 2019 09:11:02 -0400 Subject: [PATCH 19/41] make code style more consistent --- src/compiler/compile/nodes/Element.ts | 12 ++++-- src/compiler/compile/nodes/Text.ts | 2 + .../render_dom/wrappers/Element/Attribute.ts | 37 +++++++------------ src/runtime/internal/utils.ts | 4 +- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/compiler/compile/nodes/Element.ts b/src/compiler/compile/nodes/Element.ts index a3030f52a5..c5f7852750 100644 --- a/src/compiler/compile/nodes/Element.ts +++ b/src/compiler/compile/nodes/Element.ts @@ -702,16 +702,20 @@ export default class Element extends Node { return this.name === 'audio' || this.name === 'video'; } - add_css_class(class_name = this.component.stylesheet.id) { + add_css_class() { + const { id } = this.component.stylesheet; + const class_attribute = this.attributes.find(a => a.name === 'class'); + if (class_attribute && !class_attribute.is_true) { if (class_attribute.chunks.length === 1 && class_attribute.chunks[0].type === 'Text') { - (class_attribute.chunks[0] as Text).data += ` ${class_name}`; + (class_attribute.chunks[0] as Text).data += ` ${id}`; } else { (class_attribute.chunks as Node[]).push( new Text(this.component, this, this.scope, { type: 'Text', - data: ` ${class_name}` + data: ` ${id}`, + synthetic: true }) ); } @@ -720,7 +724,7 @@ export default class Element extends Node { new Attribute(this.component, this, this.scope, { type: 'Attribute', name: 'class', - value: [{ type: 'Text', data: class_name }] + value: [{ type: 'Text', data: id, synthetic: true }] }) ); } diff --git a/src/compiler/compile/nodes/Text.ts b/src/compiler/compile/nodes/Text.ts index eff3efe06e..bfd28a5073 100644 --- a/src/compiler/compile/nodes/Text.ts +++ b/src/compiler/compile/nodes/Text.ts @@ -6,9 +6,11 @@ import { INode } from './interfaces'; export default class Text extends Node { type: 'Text'; data: string; + synthetic: boolean; constructor(component: Component, parent: INode, scope: TemplateScope, info: any) { super(component, parent, scope, info); this.data = info.data; + this.synthetic = info.synthetic || false; } } diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index eb242e994b..f83b1f2acf 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -85,13 +85,13 @@ export default class AttributeWrapper { value = (this.node.chunks[0] as Expression).render(block); } else { // '{foo} {bar}' — treat as string concatenation - const attrPrefix = this.node.chunks[0].type === 'Text' ? '' : `"" + `; + const prefix = this.node.chunks[0].type === 'Text' ? '' : `"" + `; - const attrText = this.node.name === 'class' + const text = this.node.name === 'class' ? this.get_class_name_text() - : this.get_attr_text(); + : this.render_chunks().join(' + '); - value = `${attrPrefix}${attrText}`; + value = `${prefix}${text}`; } const is_select_value_attribute = @@ -206,36 +206,27 @@ export default class AttributeWrapper { } get_class_name_text() { - const isStyled = this.node.chunks - .filter((chunk) => chunk.type === 'Text') - .some((chunk: Text) => !chunk.start && !chunk.end); + const scoped_css = this.node.chunks.some((chunk: Text) => chunk.synthetic); + const rendered = this.render_chunks(); - const classNameStringArray = this.render_attr(); - - if (!isStyled || classNameStringArray.length !== 2) { - return classNameStringArray.join(' + '); + if (scoped_css && rendered.length === 2) { + // we have a situation like class={possiblyUndefined} + rendered[0] = `@null_to_empty(${rendered[0]})`; } - const targetToken = 0; - return classNameStringArray - .map((token, index) => index === targetToken ? `@class_name_resolver(${token})` : token) - .join(' + '); - } - - get_attr_text() { - return this.render_attr().join(' + '); + return rendered.join(' + '); } - render_attr() { + render_chunks() { return this.node.chunks.map((chunk) => { if (chunk.type === 'Text') { return stringify(chunk.data); } - const renderedChunk = chunk.render(); + const rendered = chunk.render(); return chunk.get_precedence() <= 13 - ? `(${renderedChunk})` - : renderedChunk; + ? `(${rendered})` + : rendered; }); } diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 3cef77e7be..47ada924ae 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -90,6 +90,6 @@ export function once(fn) { }; } -export function class_name_resolver(nextClassName) { - return nextClassName == undefined ? '' : nextClassName; +export function null_to_empty(value) { + return value == null ? '' : value; } From 886961b927da0f72eaee6a45a37cc3d1d16ade18 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Fri, 2 Aug 2019 09:11:22 -0400 Subject: [PATCH 20/41] remove unused code --- .../render_dom/wrappers/Element/index.ts | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts index 9d3f60ac7e..b769eb7931 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/index.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts @@ -816,29 +816,4 @@ export default class ElementWrapper extends Wrapper { } }); } - - // todo: looks to be dead code copypasted from Element.add_css_class in src/compile/nodes/Element.ts - // add_css_class(class_name = this.component.stylesheet.id) { - // const class_attribute = this.attributes.find(a => a.name === 'class'); - // if (class_attribute && !class_attribute.is_true) { - // if (class_attribute.chunks.length === 1 && class_attribute.chunks[0].type === 'Text') { - // (class_attribute.chunks[0] as Text).data += ` ${class_name}`; - // } else { - // (class_attribute.chunks as Node[]).push( - // new Text(this.component, this, this.scope, { - // type: 'Text', - // data: ` ${class_name}` - // }) - // ); - // } - // } else { - // this.attributes.push( - // new Attribute(this.component, this, this.scope, { - // type: 'Attribute', - // name: 'class', - // value: [{ type: 'Text', data: class_name }] - // }) - // ); - // } - // } } From c53563b2073058205c6221a6ac7e57cdfaf66c8e Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Fri, 2 Aug 2019 09:33:20 -0400 Subject: [PATCH 21/41] failing SSR test, plus some adjacent changes --- src/compiler/compile/render_ssr/handlers/Element.ts | 3 +-- src/runtime/internal/ssr.ts | 2 +- test/runtime/samples/attribute-false/_config.js | 2 -- .../attribute-null-classname-no-style/_config.js | 2 -- .../attribute-null-classname-with-style/_config.js | 12 ++++-------- .../attribute-null-classnames-no-style/_config.js | 2 -- .../attribute-null-classnames-with-style/_config.js | 2 -- .../_config.js | 2 -- .../_config.js | 2 -- .../_config.js | 2 -- .../_config.js | 2 -- test/runtime/samples/attribute-null/_config.js | 2 -- test/runtime/samples/attribute-undefined/_config.js | 2 -- 13 files changed, 6 insertions(+), 31 deletions(-) diff --git a/src/compiler/compile/render_ssr/handlers/Element.ts b/src/compiler/compile/render_ssr/handlers/Element.ts index 0cd101df72..8b64361c4f 100644 --- a/src/compiler/compile/render_ssr/handlers/Element.ts +++ b/src/compiler/compile/render_ssr/handlers/Element.ts @@ -140,8 +140,7 @@ export default function(node: Element, renderer: Renderer, options: RenderOption } else if (attribute.chunks.length === 1 && attribute.chunks[0].type !== 'Text') { const { name } = attribute; const snippet = snip(attribute.chunks[0]); - - opening_tag += '${(v => v == null ? "" : ` ' + name + '="${@escape(' + snippet + ')}"`)(' + snippet + ')}'; + opening_tag += '${@add_attribute("' + name + '", ' + snippet + ')}'; } else { opening_tag += ` ${attribute.name}="${stringify_attribute(attribute, true)}"`; } diff --git a/src/runtime/internal/ssr.ts b/src/runtime/internal/ssr.ts index 1ae1ae1d12..4bc06f4351 100644 --- a/src/runtime/internal/ssr.ts +++ b/src/runtime/internal/ssr.ts @@ -134,7 +134,7 @@ export function get_store_value(store: Readable): T | undefined { } export function add_attribute(name, value) { - if (!value) return ''; + if (value == null) return ''; return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(value) : `"${value}"`}`}`; } diff --git a/test/runtime/samples/attribute-false/_config.js b/test/runtime/samples/attribute-false/_config.js index 0f37392806..9fd08a2a48 100644 --- a/test/runtime/samples/attribute-false/_config.js +++ b/test/runtime/samples/attribute-false/_config.js @@ -1,5 +1,3 @@ export default { - skip_if_ssr: true, - html: `
`, }; diff --git a/test/runtime/samples/attribute-null-classname-no-style/_config.js b/test/runtime/samples/attribute-null-classname-no-style/_config.js index e2098430e4..4a78b680ef 100644 --- a/test/runtime/samples/attribute-null-classname-no-style/_config.js +++ b/test/runtime/samples/attribute-null-classname-no-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName: "testClassName" }, diff --git a/test/runtime/samples/attribute-null-classname-with-style/_config.js b/test/runtime/samples/attribute-null-classname-with-style/_config.js index 635dd058ca..3ebc593b5d 100644 --- a/test/runtime/samples/attribute-null-classname-with-style/_config.js +++ b/test/runtime/samples/attribute-null-classname-with-style/_config.js @@ -1,15 +1,8 @@ export default { - skip_if_ssr: true, - - props: { - testName: "testClassName" - }, - - html: `
`, + html: `
`, test({ assert, component, target }) { const div = target.querySelector('div'); - assert.equal(div.className, 'testClassName svelte-x1o6ra'); component.testName = null; assert.equal(div.className, ' svelte-x1o6ra'); @@ -40,5 +33,8 @@ export default { component.testName = ''; assert.equal(div.className, ' svelte-x1o6ra'); + + component.testName = 'testClassName'; + assert.equal(div.className, 'testClassName svelte-x1o6ra'); } }; diff --git a/test/runtime/samples/attribute-null-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-classnames-no-style/_config.js index 6a734efff5..917cf565c0 100644 --- a/test/runtime/samples/attribute-null-classnames-no-style/_config.js +++ b/test/runtime/samples/attribute-null-classnames-no-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName1: "test1", testName2: "test2", diff --git a/test/runtime/samples/attribute-null-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-classnames-with-style/_config.js index 22f7a4d7e2..5762f628fb 100644 --- a/test/runtime/samples/attribute-null-classnames-with-style/_config.js +++ b/test/runtime/samples/attribute-null-classnames-with-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName1: "test1", testName2: "test2", diff --git a/test/runtime/samples/attribute-null-func-classname-no-style/_config.js b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js index e2098430e4..4a78b680ef 100644 --- a/test/runtime/samples/attribute-null-func-classname-no-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName: "testClassName" }, diff --git a/test/runtime/samples/attribute-null-func-classname-with-style/_config.js b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js index 635dd058ca..1ed43d05b9 100644 --- a/test/runtime/samples/attribute-null-func-classname-with-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName: "testClassName" }, diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js index 6a734efff5..917cf565c0 100644 --- a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName1: "test1", testName2: "test2", diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js index 22f7a4d7e2..5762f628fb 100644 --- a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js @@ -1,6 +1,4 @@ export default { - skip_if_ssr: true, - props: { testName1: "test1", testName2: "test2", diff --git a/test/runtime/samples/attribute-null/_config.js b/test/runtime/samples/attribute-null/_config.js index 938d525cf6..ae2f0a8af6 100644 --- a/test/runtime/samples/attribute-null/_config.js +++ b/test/runtime/samples/attribute-null/_config.js @@ -1,5 +1,3 @@ export default { - skip_if_ssr: true, - html: `
`, }; diff --git a/test/runtime/samples/attribute-undefined/_config.js b/test/runtime/samples/attribute-undefined/_config.js index 938d525cf6..ae2f0a8af6 100644 --- a/test/runtime/samples/attribute-undefined/_config.js +++ b/test/runtime/samples/attribute-undefined/_config.js @@ -1,5 +1,3 @@ export default { - skip_if_ssr: true, - html: `
`, }; From 276eb8e553422a2377832876fd48bb3526236691 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 2 Aug 2019 12:24:07 -0400 Subject: [PATCH 22/41] fix erroneous a11y warning with input type='image' (#3331) --- src/compiler/compile/nodes/Element.ts | 11 ++++++----- test/validator/samples/a11y-alt-text/input.svelte | 4 +++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/compiler/compile/nodes/Element.ts b/src/compiler/compile/nodes/Element.ts index a3030f52a5..999b4df8e1 100644 --- a/src/compiler/compile/nodes/Element.ts +++ b/src/compiler/compile/nodes/Element.ts @@ -451,11 +451,12 @@ export default class Element extends Node { if (this.name === 'input') { const type = attribute_map.get('type'); if (type && type.get_static_value() === 'image') { - should_have_attribute( - this, - ['alt', 'aria-label', 'aria-labelledby'], - 'input type="image"' - ); + const required_attributes = ['alt', 'aria-label', 'aria-labelledby']; + const has_attribute = required_attributes.some(name => attribute_map.has(name)); + + if (!has_attribute) { + should_have_attribute(this, required_attributes, 'input type="image"'); + } } } } diff --git a/test/validator/samples/a11y-alt-text/input.svelte b/test/validator/samples/a11y-alt-text/input.svelte index f17638af76..1c3b5ac5ce 100644 --- a/test/validator/samples/a11y-alt-text/input.svelte +++ b/test/validator/samples/a11y-alt-text/input.svelte @@ -6,4 +6,6 @@ - \ No newline at end of file + + + From bfa0bc98b7b37ec693585b424e86a49f22e149a3 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 2 Aug 2019 16:47:26 -0400 Subject: [PATCH 23/41] preserve async/generator-ness of hoisted function expressions (#3179) --- src/compiler/compile/nodes/shared/Expression.ts | 2 +- test/runtime/samples/event-handler-async/_config.js | 5 +++++ test/runtime/samples/event-handler-async/main.svelte | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/event-handler-async/_config.js create mode 100644 test/runtime/samples/event-handler-async/main.svelte diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index 3702800c7b..938cd8433f 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -363,7 +363,7 @@ export default class Expression { } const fn = deindent` - function ${name}(${args.join(', ')}) ${body} + ${node.async && 'async '}function${node.generator && '*'} ${name}(${args.join(', ')}) ${body} `; if (dependencies.size === 0 && contextual_dependencies.size === 0) { diff --git a/test/runtime/samples/event-handler-async/_config.js b/test/runtime/samples/event-handler-async/_config.js new file mode 100644 index 0000000000..fab4d998b6 --- /dev/null +++ b/test/runtime/samples/event-handler-async/_config.js @@ -0,0 +1,5 @@ +export default { + html: ` + + `, +}; diff --git a/test/runtime/samples/event-handler-async/main.svelte b/test/runtime/samples/event-handler-async/main.svelte new file mode 100644 index 0000000000..b22a6af92e --- /dev/null +++ b/test/runtime/samples/event-handler-async/main.svelte @@ -0,0 +1 @@ + From b44a876ff4807c5d7876b28bc8dc9aeb119f8e6e Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 2 Aug 2019 18:40:48 -0400 Subject: [PATCH 24/41] make raf a noop on server (#3324) --- src/runtime/internal/environment.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/runtime/internal/environment.ts b/src/runtime/internal/environment.ts index a1d50b5521..7123399180 100644 --- a/src/runtime/internal/environment.ts +++ b/src/runtime/internal/environment.ts @@ -1,10 +1,12 @@ +import { noop } from './utils'; + export const is_client = typeof window !== 'undefined'; export let now: () => number = is_client ? () => window.performance.now() : () => Date.now(); -export let raf = cb => requestAnimationFrame(cb); +export let raf = is_client ? cb => requestAnimationFrame(cb) : noop; // used internally for testing export function set_now(fn) { From 45a54c1aa4ef7221bff85dcbf14592f3afdbb3ce Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 2 Aug 2019 19:31:04 -0400 Subject: [PATCH 25/41] use bindings when matching attribute selector against element (#3281) --- src/compiler/compile/css/Selector.ts | 2 ++ test/css/samples/attribute-selector-bind/expected.css | 1 + test/css/samples/attribute-selector-bind/input.svelte | 11 +++++++++++ 3 files changed, 14 insertions(+) create mode 100644 test/css/samples/attribute-selector-bind/expected.css create mode 100644 test/css/samples/attribute-selector-bind/input.svelte diff --git a/src/compiler/compile/css/Selector.ts b/src/compiler/compile/css/Selector.ts index ef54f789fc..0d4ea82bb5 100644 --- a/src/compiler/compile/css/Selector.ts +++ b/src/compiler/compile/css/Selector.ts @@ -219,6 +219,8 @@ function attribute_matches(node: Node, name: string, expected_value: string, ope const spread = node.attributes.find(attr => attr.type === 'Spread'); if (spread) return true; + if (node.bindings.some((binding: Node) => binding.name === name)) return true; + const attr = node.attributes.find((attr: Node) => attr.name === name); if (!attr) return false; if (attr.is_true) return operator === null; diff --git a/test/css/samples/attribute-selector-bind/expected.css b/test/css/samples/attribute-selector-bind/expected.css new file mode 100644 index 0000000000..20543c5c8e --- /dev/null +++ b/test/css/samples/attribute-selector-bind/expected.css @@ -0,0 +1 @@ +details[open].svelte-xyz{color:red} \ No newline at end of file diff --git a/test/css/samples/attribute-selector-bind/input.svelte b/test/css/samples/attribute-selector-bind/input.svelte new file mode 100644 index 0000000000..eb1d03e762 --- /dev/null +++ b/test/css/samples/attribute-selector-bind/input.svelte @@ -0,0 +1,11 @@ + + +
Hello
+ + From c04def9081a89baf920e2e619beaa8e2e9539cb9 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sat, 3 Aug 2019 00:30:38 -0400 Subject: [PATCH 26/41] don't warn when using each index in key (#3274) --- src/compiler/compile/nodes/EachBlock.ts | 10 +++++----- test/validator/samples/undefined-value/input.svelte | 10 +++++----- test/validator/samples/undefined-value/warnings.json | 12 ++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/compiler/compile/nodes/EachBlock.ts b/src/compiler/compile/nodes/EachBlock.ts index adaa46b8db..225f3b441e 100644 --- a/src/compiler/compile/nodes/EachBlock.ts +++ b/src/compiler/compile/nodes/EachBlock.ts @@ -83,16 +83,16 @@ export default class EachBlock extends AbstractBlock { this.scope.add(context.key.name, this.expression.dependencies, this); }); - this.key = info.key - ? new Expression(component, this, this.scope, info.key) - : null; - if (this.index) { // index can only change if this is a keyed each block - const dependencies = this.key ? this.expression.dependencies : new Set([]); + const dependencies = info.key ? this.expression.dependencies : new Set([]); this.scope.add(this.index, dependencies, this); } + this.key = info.key + ? new Expression(component, this, this.scope, info.key) + : null; + this.has_animation = false; this.children = map_children(component, this, this.scope, info.children); diff --git a/test/validator/samples/undefined-value/input.svelte b/test/validator/samples/undefined-value/input.svelte index 03dda2c44f..0dec9632a7 100644 --- a/test/validator/samples/undefined-value/input.svelte +++ b/test/validator/samples/undefined-value/input.svelte @@ -1,6 +1,6 @@ - -

{potato}

-

{Math.max(1, 2)}

\ No newline at end of file +

{Math.max(1, 2)}

+ +{#each window.something as foo, i (foo.x + i)} + hello +{/each} diff --git a/test/validator/samples/undefined-value/warnings.json b/test/validator/samples/undefined-value/warnings.json index c1813e6ab0..790f83acfd 100644 --- a/test/validator/samples/undefined-value/warnings.json +++ b/test/validator/samples/undefined-value/warnings.json @@ -1,15 +1,15 @@ [{ "code": "missing-declaration", - "message": "'potato' is not defined", - "pos": 67, + "message": "'potato' is not defined. Consider adding a - -
-
\ No newline at end of file diff --git a/test/js/samples/dont-use-dataset-in-svg/expected.js b/test/js/samples/dont-use-dataset-in-svg/expected.js deleted file mode 100644 index 0862d1bbc6..0000000000 --- a/test/js/samples/dont-use-dataset-in-svg/expected.js +++ /dev/null @@ -1,66 +0,0 @@ -/* generated by Svelte vX.Y.Z */ -import { - SvelteComponent, - append, - attr, - detach, - init, - insert, - noop, - safe_not_equal, - svg_element -} from "svelte/internal"; - -function create_fragment(ctx) { - var svg, g0, g1; - - return { - c() { - svg = svg_element("svg"); - g0 = svg_element("g"); - g1 = svg_element("g"); - attr(g0, "data-foo", "bar"); - attr(g1, "data-foo", ctx.bar); - }, - - m(target, anchor) { - insert(target, svg, anchor); - append(svg, g0); - append(svg, g1); - }, - - p(changed, ctx) { - if (changed.bar) { - attr(g1, "data-foo", ctx.bar); - } - }, - - i: noop, - o: noop, - - d(detaching) { - if (detaching) { - detach(svg); - } - } - }; -} - -function instance($$self, $$props, $$invalidate) { - let { bar } = $$props; - - $$self.$set = $$props => { - if ('bar' in $$props) $$invalidate('bar', bar = $$props.bar); - }; - - return { bar }; -} - -class Component extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance, create_fragment, safe_not_equal, ["bar"]); - } -} - -export default Component; \ No newline at end of file diff --git a/test/js/samples/dont-use-dataset-in-svg/input.svelte b/test/js/samples/dont-use-dataset-in-svg/input.svelte deleted file mode 100644 index 969377de33..0000000000 --- a/test/js/samples/dont-use-dataset-in-svg/input.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file