, refCallees: Node[]) {
diff --git a/src/validate/js/index.ts b/src/validate/js/index.ts
index 01754b7d00..be120c5a4a 100644
--- a/src/validate/js/index.ts
+++ b/src/validate/js/index.ts
@@ -3,6 +3,7 @@ import fuzzymatch from '../utils/fuzzymatch';
import checkForDupes from './utils/checkForDupes';
import checkForComputedKeys from './utils/checkForComputedKeys';
import namespaces from '../../utils/namespaces';
+import getName from '../../utils/getName';
import { Validator } from '../';
import { Node } from '../../interfaces';
@@ -29,7 +30,7 @@ export default function validateJs(validator: Validator, js: Node) {
const props = validator.properties;
node.declaration.properties.forEach((prop: Node) => {
- props.set(prop.key.name, prop);
+ props.set(getName(prop.key), prop);
});
// Remove these checks in version 2
@@ -49,25 +50,26 @@ export default function validateJs(validator: Validator, js: Node) {
// ensure all exported props are valid
node.declaration.properties.forEach((prop: Node) => {
- const propValidator = propValidators[prop.key.name];
+ const name = getName(prop.key);
+ const propValidator = propValidators[name];
if (propValidator) {
propValidator(validator, prop);
} else {
- const match = fuzzymatch(prop.key.name, validPropList);
+ const match = fuzzymatch(name, validPropList);
if (match) {
validator.error(
- `Unexpected property '${prop.key.name}' (did you mean '${match}'?)`,
+ `Unexpected property '${name}' (did you mean '${match}'?)`,
prop.start
);
} else if (/FunctionExpression/.test(prop.value.type)) {
validator.error(
- `Unexpected property '${prop.key.name}' (did you mean to include it in 'methods'?)`,
+ `Unexpected property '${name}' (did you mean to include it in 'methods'?)`,
prop.start
);
} else {
validator.error(
- `Unexpected property '${prop.key.name}'`,
+ `Unexpected property '${name}'`,
prop.start
);
}
@@ -86,7 +88,7 @@ export default function validateJs(validator: Validator, js: Node) {
['components', 'methods', 'helpers', 'transitions'].forEach(key => {
if (validator.properties.has(key)) {
validator.properties.get(key).value.properties.forEach((prop: Node) => {
- validator[key].set(prop.key.name, prop.value);
+ validator[key].set(getName(prop.key), prop.value);
});
}
});
diff --git a/src/validate/js/propValidators/components.ts b/src/validate/js/propValidators/components.ts
index a7ca5eb990..943d4b005f 100644
--- a/src/validate/js/propValidators/components.ts
+++ b/src/validate/js/propValidators/components.ts
@@ -1,5 +1,6 @@
import checkForDupes from '../utils/checkForDupes';
import checkForComputedKeys from '../utils/checkForComputedKeys';
+import getName from '../../../utils/getName';
import { Validator } from '../../';
import { Node } from '../../../interfaces';
@@ -9,21 +10,22 @@ export default function components(validator: Validator, prop: Node) {
`The 'components' property must be an object literal`,
prop.start
);
- return;
}
checkForDupes(validator, prop.value.properties);
checkForComputedKeys(validator, prop.value.properties);
prop.value.properties.forEach((component: Node) => {
- if (component.key.name === 'state') {
+ const name = getName(component.key);
+
+ if (name === 'state') {
validator.error(
`Component constructors cannot be called 'state' due to technical limitations`,
component.start
);
}
- if (!/^[A-Z]/.test(component.key.name)) {
+ if (!/^[A-Z]/.test(name)) {
validator.warn(`Component names should be capitalised`, component.start);
}
});
diff --git a/src/validate/js/propValidators/computed.ts b/src/validate/js/propValidators/computed.ts
index 7456963e90..a54d7856b0 100644
--- a/src/validate/js/propValidators/computed.ts
+++ b/src/validate/js/propValidators/computed.ts
@@ -14,7 +14,6 @@ export default function computed(validator: Validator, prop: Node) {
`The 'computed' property must be an object literal`,
prop.start
);
- return;
}
checkForDupes(validator, prop.value.properties);
@@ -26,7 +25,6 @@ export default function computed(validator: Validator, prop: Node) {
`Computed properties can be function expressions or arrow function expressions`,
computation.value.start
);
- return;
}
const params = computation.value.params;
@@ -36,7 +34,6 @@ export default function computed(validator: Validator, prop: Node) {
`A computed value must depend on at least one property`,
computation.value.start
);
- return;
}
params.forEach((param: Node) => {
diff --git a/src/validate/js/propValidators/events.ts b/src/validate/js/propValidators/events.ts
index 1bbf75d1e6..0f81fd7f4d 100644
--- a/src/validate/js/propValidators/events.ts
+++ b/src/validate/js/propValidators/events.ts
@@ -9,7 +9,6 @@ export default function events(validator: Validator, prop: Node) {
`The 'events' property must be an object literal`,
prop.start
);
- return;
}
checkForDupes(validator, prop.value.properties);
diff --git a/src/validate/js/propValidators/helpers.ts b/src/validate/js/propValidators/helpers.ts
index d5d51c99ea..4345257e55 100644
--- a/src/validate/js/propValidators/helpers.ts
+++ b/src/validate/js/propValidators/helpers.ts
@@ -10,7 +10,6 @@ export default function helpers(validator: Validator, prop: Node) {
`The 'helpers' property must be an object literal`,
prop.start
);
- return;
}
checkForDupes(validator, prop.value.properties);
diff --git a/src/validate/js/propValidators/methods.ts b/src/validate/js/propValidators/methods.ts
index 7d8547ef39..c5b9bc220f 100644
--- a/src/validate/js/propValidators/methods.ts
+++ b/src/validate/js/propValidators/methods.ts
@@ -2,6 +2,7 @@ import checkForAccessors from '../utils/checkForAccessors';
import checkForDupes from '../utils/checkForDupes';
import checkForComputedKeys from '../utils/checkForComputedKeys';
import usesThisOrArguments from '../utils/usesThisOrArguments';
+import getName from '../../../utils/getName';
import { Validator } from '../../';
import { Node } from '../../../interfaces';
@@ -13,7 +14,6 @@ export default function methods(validator: Validator, prop: Node) {
`The 'methods' property must be an object literal`,
prop.start
);
- return;
}
checkForAccessors(validator, prop.value.properties, 'Methods');
@@ -21,9 +21,11 @@ export default function methods(validator: Validator, prop: Node) {
checkForComputedKeys(validator, prop.value.properties);
prop.value.properties.forEach((prop: Node) => {
- if (builtin.has(prop.key.name)) {
+ const name = getName(prop.key);
+
+ if (builtin.has(name)) {
validator.error(
- `Cannot overwrite built-in method '${prop.key.name}'`,
+ `Cannot overwrite built-in method '${name}'`,
prop.start
);
}
diff --git a/src/validate/js/propValidators/transitions.ts b/src/validate/js/propValidators/transitions.ts
index 6470beee6f..1bd8e677bc 100644
--- a/src/validate/js/propValidators/transitions.ts
+++ b/src/validate/js/propValidators/transitions.ts
@@ -9,7 +9,6 @@ export default function transitions(validator: Validator, prop: Node) {
`The 'transitions' property must be an object literal`,
prop.start
);
- return;
}
checkForDupes(validator, prop.value.properties);
diff --git a/src/validate/js/utils/checkForDupes.ts b/src/validate/js/utils/checkForDupes.ts
index 8565ab5388..0473d7a265 100644
--- a/src/validate/js/utils/checkForDupes.ts
+++ b/src/validate/js/utils/checkForDupes.ts
@@ -1,5 +1,6 @@
import { Validator } from '../../';
import { Node } from '../../../interfaces';
+import getName from '../../../utils/getName';
export default function checkForDupes(
validator: Validator,
@@ -8,10 +9,12 @@ export default function checkForDupes(
const seen = new Set();
properties.forEach(prop => {
- if (seen.has(prop.key.name)) {
- validator.error(`Duplicate property '${prop.key.name}'`, prop.start);
+ const name = getName(prop.key);
+
+ if (seen.has(name)) {
+ validator.error(`Duplicate property '${name}'`, prop.start);
}
- seen.add(prop.key.name);
+ seen.add(name);
});
}
diff --git a/test/css/samples/attribute-selector-only-name/_config.js b/test/css/samples/attribute-selector-only-name/_config.js
new file mode 100644
index 0000000000..b37866f9b6
--- /dev/null
+++ b/test/css/samples/attribute-selector-only-name/_config.js
@@ -0,0 +1,3 @@
+export default {
+ cascade: false
+};
\ No newline at end of file
diff --git a/test/css/samples/attribute-selector-only-name/expected.css b/test/css/samples/attribute-selector-only-name/expected.css
new file mode 100644
index 0000000000..2217e804d9
--- /dev/null
+++ b/test/css/samples/attribute-selector-only-name/expected.css
@@ -0,0 +1 @@
+[foo][svelte-xyz]{color:red}[baz][svelte-xyz]{color:blue}
\ No newline at end of file
diff --git a/test/css/samples/attribute-selector-only-name/input.html b/test/css/samples/attribute-selector-only-name/input.html
new file mode 100644
index 0000000000..bb3d98b6bc
--- /dev/null
+++ b/test/css/samples/attribute-selector-only-name/input.html
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/test/css/samples/unknown-at-rule/expected.css b/test/css/samples/unknown-at-rule/expected.css
new file mode 100644
index 0000000000..bc350108ba
--- /dev/null
+++ b/test/css/samples/unknown-at-rule/expected.css
@@ -0,0 +1 @@
+div[svelte-xyz],[svelte-xyz] div{@apply --funky-div;}
\ No newline at end of file
diff --git a/test/css/samples/unknown-at-rule/input.html b/test/css/samples/unknown-at-rule/input.html
new file mode 100644
index 0000000000..165a40d9bc
--- /dev/null
+++ b/test/css/samples/unknown-at-rule/input.html
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/test/custom-elements/index.js b/test/custom-elements/index.js
index 54aefa3885..917261ddec 100644
--- a/test/custom-elements/index.js
+++ b/test/custom-elements/index.js
@@ -50,7 +50,9 @@ describe('custom-elements', function() {
fs.readdirSync('test/custom-elements/samples').forEach(dir => {
if (dir[0] === '.') return;
- it(dir, () => {
+ const solo = /\.solo$/.test(dir);
+
+ (solo ? it.only : it)(dir, () => {
return rollup({
input: `test/custom-elements/samples/${dir}/test.js`,
plugins: [
diff --git a/test/custom-elements/samples/escaped-css/main.html b/test/custom-elements/samples/escaped-css/main.html
new file mode 100644
index 0000000000..1f86593b8f
--- /dev/null
+++ b/test/custom-elements/samples/escaped-css/main.html
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/test/custom-elements/samples/escaped-css/test.js b/test/custom-elements/samples/escaped-css/test.js
new file mode 100644
index 0000000000..bd148ad5a7
--- /dev/null
+++ b/test/custom-elements/samples/escaped-css/test.js
@@ -0,0 +1,13 @@
+import * as assert from 'assert';
+import CustomElement from './main.html';
+
+export default function (target) {
+ new CustomElement({
+ target
+ });
+
+ const icon = target.querySelector('custom-element').shadowRoot.querySelector('.icon');
+ const before = getComputedStyle(icon, '::before');
+
+ assert.equal(before.content, JSON.stringify(String.fromCharCode(0xff)));
+}
\ No newline at end of file
diff --git a/test/formats/index.js b/test/formats/index.js
index b69bde817a..dee4f2c1be 100644
--- a/test/formats/index.js
+++ b/test/formats/index.js
@@ -157,6 +157,51 @@ describe("formats", () => {
return testIife(code, "Foo", { answer: 42 }, `42
`);
});
+
+ it('requires options.name', () => {
+ assert.throws(() => {
+ svelte.compile('', {
+ format: 'iife'
+ });
+ }, /Missing required 'name' option for IIFE export/);
+ });
+
+ it('suggests using options.globals for default imports', () => {
+ const warnings = [];
+
+ svelte.compile(`
+
+ `,
+ {
+ format: 'iife',
+ name: 'App',
+ onwarn: warning => {
+ warnings.push(warning);
+ }
+ }
+ );
+
+ assert.deepEqual(warnings, [{
+ message: `No name was supplied for imported module 'lodash'. Guessing '_', but you should use options.globals`
+ }]);
+ });
+
+ it('insists on options.globals for named imports', () => {
+ assert.throws(() => {
+ svelte.compile(`
+
+ `,
+ {
+ format: 'iife',
+ name: 'App'
+ }
+ );
+ }, /Could not determine name for imported module 'svelte-transitions' – use options.globals/);
+ });
});
describe("umd", () => {
@@ -190,6 +235,14 @@ describe("formats", () => {
testCjs(code, { answer: 42 }, `42
`);
testIife(code, "Foo", { answer: 42 }, `42
`);
});
+
+ it('requires options.name', () => {
+ assert.throws(() => {
+ svelte.compile('', {
+ format: 'umd'
+ });
+ }, /Missing required 'name' option for UMD export/);
+ });
});
describe("eval", () => {
@@ -218,4 +271,14 @@ describe("formats", () => {
return testEval(code, "Foo", { answer: 42 }, `42
`);
});
});
+
+ describe('unknown format', () => {
+ it('throws an error', () => {
+ assert.throws(() => {
+ svelte.compile('', {
+ format: 'nope'
+ });
+ }, /options.format is invalid \(must be es, amd, cjs, iife, umd or eval\)/);
+ });
+ });
});
diff --git a/test/helpers.js b/test/helpers.js
index 620e359096..cc90e1f9bd 100644
--- a/test/helpers.js
+++ b/test/helpers.js
@@ -8,11 +8,9 @@ import chalk from 'chalk';
// for coverage purposes, we need to test source files,
// but for sanity purposes, we need to test dist files
export function loadSvelte(test) {
- if (test) global.__svelte_test = true;
+ process.env.TEST = test ? 'true' : '';
- const resolved = process.env.COVERAGE
- ? require.resolve('../src/index.js')
- : require.resolve('../compiler/svelte.js');
+ const resolved = require.resolve('../compiler/svelte.js');
delete require.cache[resolved];
return require(resolved);
diff --git a/test/hydration/samples/each-block-arg-clash/_after.html b/test/hydration/samples/each-block-arg-clash/_after.html
new file mode 100644
index 0000000000..36cd79642a
--- /dev/null
+++ b/test/hydration/samples/each-block-arg-clash/_after.html
@@ -0,0 +1,5 @@
+
+ - animal
+ - vegetable
+ - mineral
+
\ No newline at end of file
diff --git a/test/hydration/samples/each-block-arg-clash/_before.html b/test/hydration/samples/each-block-arg-clash/_before.html
new file mode 100644
index 0000000000..36cd79642a
--- /dev/null
+++ b/test/hydration/samples/each-block-arg-clash/_before.html
@@ -0,0 +1,5 @@
+
+ - animal
+ - vegetable
+ - mineral
+
\ No newline at end of file
diff --git a/test/hydration/samples/each-block-arg-clash/_config.js b/test/hydration/samples/each-block-arg-clash/_config.js
new file mode 100644
index 0000000000..3efdf81cec
--- /dev/null
+++ b/test/hydration/samples/each-block-arg-clash/_config.js
@@ -0,0 +1,31 @@
+export default {
+ data: {
+ things: {
+ foo: [
+ 'animal',
+ 'vegetable',
+ 'mineral'
+ ]
+ }
+ },
+
+ snapshot(target) {
+ const ul = target.querySelector('ul');
+ const lis = ul.querySelectorAll('li');
+
+ return {
+ ul,
+ lis
+ };
+ },
+
+ test(assert, target, snapshot) {
+ const ul = target.querySelector('ul');
+ const lis = ul.querySelectorAll('li');
+
+ assert.equal(ul, snapshot.ul);
+ assert.equal(lis[0], snapshot.lis[0]);
+ assert.equal(lis[1], snapshot.lis[1]);
+ assert.equal(lis[2], snapshot.lis[2]);
+ }
+};
diff --git a/test/hydration/samples/each-block-arg-clash/main.html b/test/hydration/samples/each-block-arg-clash/main.html
new file mode 100644
index 0000000000..b093160f6a
--- /dev/null
+++ b/test/hydration/samples/each-block-arg-clash/main.html
@@ -0,0 +1,5 @@
+
+ {{#each things.foo as foo}}
+ - {{foo}}
+ {{/each}}
+
diff --git a/test/js/samples/collapses-text-around-comments/expected-bundle.js b/test/js/samples/collapses-text-around-comments/expected-bundle.js
index ea2c075c72..8f4918006e 100644
--- a/test/js/samples/collapses-text-around-comments/expected-bundle.js
+++ b/test/js/samples/collapses-text-around-comments/expected-bundle.js
@@ -96,7 +96,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -158,9 +157,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
diff --git a/test/js/samples/component-static/expected-bundle.js b/test/js/samples/component-static/expected-bundle.js
index 12c0a0cd4b..94f69ca2ca 100644
--- a/test/js/samples/component-static/expected-bundle.js
+++ b/test/js/samples/component-static/expected-bundle.js
@@ -72,7 +72,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -134,9 +133,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -198,7 +200,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/component-static/expected.js b/test/js/samples/component-static/expected.js
index 039ef606ed..421a7adda6 100644
--- a/test/js/samples/component-static/expected.js
+++ b/test/js/samples/component-static/expected.js
@@ -33,7 +33,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/computed-collapsed-if/expected-bundle.js b/test/js/samples/computed-collapsed-if/expected-bundle.js
index 41c35ea754..c378d78026 100644
--- a/test/js/samples/computed-collapsed-if/expected-bundle.js
+++ b/test/js/samples/computed-collapsed-if/expected-bundle.js
@@ -72,7 +72,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -134,9 +133,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -191,7 +193,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._recompute({ x: 1 }, this._state);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/computed-collapsed-if/expected.js b/test/js/samples/computed-collapsed-if/expected.js
index bc3fcc37d5..c2f5e3c2be 100644
--- a/test/js/samples/computed-collapsed-if/expected.js
+++ b/test/js/samples/computed-collapsed-if/expected.js
@@ -26,7 +26,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._recompute({ x: 1 }, this._state);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/css-media-query/expected-bundle.js b/test/js/samples/css-media-query/expected-bundle.js
index 7e21043b5d..c66d8c10ab 100644
--- a/test/js/samples/css-media-query/expected-bundle.js
+++ b/test/js/samples/css-media-query/expected-bundle.js
@@ -92,7 +92,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -154,9 +153,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -226,7 +228,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!document.getElementById("svelte-2363328337-style")) add_css();
diff --git a/test/js/samples/css-media-query/expected.js b/test/js/samples/css-media-query/expected.js
index 0fcf96eaaf..7341f40623 100644
--- a/test/js/samples/css-media-query/expected.js
+++ b/test/js/samples/css-media-query/expected.js
@@ -41,7 +41,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!document.getElementById("svelte-2363328337-style")) add_css();
diff --git a/test/js/samples/css-shadow-dom-keyframes/expected-bundle.js b/test/js/samples/css-shadow-dom-keyframes/expected-bundle.js
index e45b0faa15..cb58137c6a 100644
--- a/test/js/samples/css-shadow-dom-keyframes/expected-bundle.js
+++ b/test/js/samples/css-shadow-dom-keyframes/expected-bundle.js
@@ -84,7 +84,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -146,9 +145,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -205,7 +207,7 @@ class SvelteComponent extends HTMLElement {
constructor(options = {}) {
super();
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = ``;
diff --git a/test/js/samples/css-shadow-dom-keyframes/expected.js b/test/js/samples/css-shadow-dom-keyframes/expected.js
index 54fe34c63b..ba5139511a 100644
--- a/test/js/samples/css-shadow-dom-keyframes/expected.js
+++ b/test/js/samples/css-shadow-dom-keyframes/expected.js
@@ -28,7 +28,7 @@ class SvelteComponent extends HTMLElement {
constructor(options = {}) {
super();
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = ``;
diff --git a/test/js/samples/do-use-dataset/expected-bundle.js b/test/js/samples/do-use-dataset/expected-bundle.js
new file mode 100644
index 0000000000..42de89fd93
--- /dev/null
+++ b/test/js/samples/do-use-dataset/expected-bundle.js
@@ -0,0 +1,239 @@
+function noop() {}
+
+function assign(target) {
+ var k,
+ source,
+ i = 1,
+ len = arguments.length;
+ for (; i < len; i++) {
+ source = arguments[i];
+ for (k in source) target[k] = source[k];
+ }
+
+ return target;
+}
+
+function insertNode(node, target, anchor) {
+ target.insertBefore(node, anchor);
+}
+
+function detachNode(node) {
+ node.parentNode.removeChild(node);
+}
+
+function createElement(name) {
+ return document.createElement(name);
+}
+
+function createText(data) {
+ return document.createTextNode(data);
+}
+
+function blankObject() {
+ return Object.create(null);
+}
+
+function destroy(detach) {
+ this.destroy = noop;
+ this.fire('destroy');
+ this.set = this.get = noop;
+
+ if (detach !== false) this._fragment.u();
+ this._fragment.d();
+ this._fragment = this._state = null;
+}
+
+function differs(a, b) {
+ return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
+}
+
+function dispatchObservers(component, group, changed, newState, oldState) {
+ for (var key in group) {
+ if (!changed[key]) continue;
+
+ var newValue = newState[key];
+ var oldValue = oldState[key];
+
+ var callbacks = group[key];
+ if (!callbacks) continue;
+
+ for (var i = 0; i < callbacks.length; i += 1) {
+ var callback = callbacks[i];
+ if (callback.__calling) continue;
+
+ callback.__calling = true;
+ callback.call(component, newValue, oldValue);
+ callback.__calling = false;
+ }
+ }
+}
+
+function fire(eventName, data) {
+ var handlers =
+ eventName in this._handlers && this._handlers[eventName].slice();
+ if (!handlers) return;
+
+ for (var i = 0; i < handlers.length; i += 1) {
+ handlers[i].call(this, data);
+ }
+}
+
+function get(key) {
+ return key ? this._state[key] : this._state;
+}
+
+function init(component, options) {
+ component.options = options;
+
+ component._observers = { pre: blankObject(), post: blankObject() };
+ component._handlers = blankObject();
+ component._root = options._root || component;
+ component._bind = options._bind;
+}
+
+function observe(key, callback, options) {
+ var group = options && options.defer
+ ? this._observers.post
+ : this._observers.pre;
+
+ (group[key] || (group[key] = [])).push(callback);
+
+ if (!options || options.init !== false) {
+ callback.__calling = true;
+ callback.call(this, this._state[key]);
+ callback.__calling = false;
+ }
+
+ return {
+ cancel: function() {
+ var index = group[key].indexOf(callback);
+ if (~index) group[key].splice(index, 1);
+ }
+ };
+}
+
+function on(eventName, handler) {
+ if (eventName === 'teardown') return this.on('destroy', handler);
+
+ var handlers = this._handlers[eventName] || (this._handlers[eventName] = []);
+ handlers.push(handler);
+
+ return {
+ cancel: function() {
+ var index = handlers.indexOf(handler);
+ if (~index) handlers.splice(index, 1);
+ }
+ };
+}
+
+function set(newState) {
+ this._set(assign({}, newState));
+ if (this._root._lock) return;
+ this._root._lock = true;
+ callAll(this._root._beforecreate);
+ callAll(this._root._oncreate);
+ callAll(this._root._aftercreate);
+ this._root._lock = false;
+}
+
+function _set(newState) {
+ var oldState = this._state,
+ changed = {},
+ dirty = false;
+
+ for (var key in newState) {
+ if (differs(newState[key], oldState[key])) changed[key] = dirty = true;
+ }
+ if (!dirty) return;
+
+ this._state = assign({}, oldState, newState);
+ this._recompute(changed, this._state);
+ if (this._bind) this._bind(changed, this._state);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
+}
+
+function callAll(fns) {
+ while (fns && fns.length) fns.pop()();
+}
+
+function _mount(target, anchor) {
+ this._fragment.m(target, anchor);
+}
+
+function _unmount() {
+ this._fragment.u();
+}
+
+var proto = {
+ destroy: destroy,
+ get: get,
+ fire: fire,
+ observe: observe,
+ on: on,
+ set: set,
+ teardown: destroy,
+ _recompute: noop,
+ _set: _set,
+ _mount: _mount,
+ _unmount: _unmount
+};
+
+/* generated by Svelte vX.Y.Z */
+function create_main_fragment(state, component) {
+ var div, text, div_1;
+
+ return {
+ c: function create() {
+ div = createElement("div");
+ text = createText("\n");
+ div_1 = createElement("div");
+ this.h();
+ },
+
+ h: function hydrate() {
+ div.dataset.foo = "bar";
+ div_1.dataset.foo = state.bar;
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(div, target, anchor);
+ insertNode(text, target, anchor);
+ insertNode(div_1, target, anchor);
+ },
+
+ p: function update(changed, state) {
+ if (changed.bar) {
+ div_1.dataset.foo = state.bar;
+ }
+ },
+
+ u: function unmount() {
+ detachNode(div);
+ detachNode(text);
+ detachNode(div_1);
+ },
+
+ d: noop
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+
+export default SvelteComponent;
diff --git a/test/js/samples/do-use-dataset/expected.js b/test/js/samples/do-use-dataset/expected.js
new file mode 100644
index 0000000000..1ae7417469
--- /dev/null
+++ b/test/js/samples/do-use-dataset/expected.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import { assign, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
+
+function create_main_fragment(state, component) {
+ var div, text, div_1;
+
+ return {
+ c: function create() {
+ div = createElement("div");
+ text = createText("\n");
+ div_1 = createElement("div");
+ this.h();
+ },
+
+ h: function hydrate() {
+ div.dataset.foo = "bar";
+ div_1.dataset.foo = state.bar;
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(div, target, anchor);
+ insertNode(text, target, anchor);
+ insertNode(div_1, target, anchor);
+ },
+
+ p: function update(changed, state) {
+ if (changed.bar) {
+ div_1.dataset.foo = state.bar;
+ }
+ },
+
+ u: function unmount() {
+ detachNode(div);
+ detachNode(text);
+ detachNode(div_1);
+ },
+
+ d: noop
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+export default SvelteComponent;
\ No newline at end of file
diff --git a/test/js/samples/do-use-dataset/input.html b/test/js/samples/do-use-dataset/input.html
new file mode 100644
index 0000000000..acd9d623b4
--- /dev/null
+++ b/test/js/samples/do-use-dataset/input.html
@@ -0,0 +1,2 @@
+
+
diff --git a/test/js/samples/dont-use-dataset-in-legacy/_config.js b/test/js/samples/dont-use-dataset-in-legacy/_config.js
new file mode 100644
index 0000000000..67924a4ffe
--- /dev/null
+++ b/test/js/samples/dont-use-dataset-in-legacy/_config.js
@@ -0,0 +1,5 @@
+export default {
+ options: {
+ legacy: true
+ }
+};
diff --git a/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js b/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js
new file mode 100644
index 0000000000..2d25e23a10
--- /dev/null
+++ b/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js
@@ -0,0 +1,243 @@
+function noop() {}
+
+function assign(target) {
+ var k,
+ source,
+ i = 1,
+ len = arguments.length;
+ for (; i < len; i++) {
+ source = arguments[i];
+ for (k in source) target[k] = source[k];
+ }
+
+ return target;
+}
+
+function insertNode(node, target, anchor) {
+ target.insertBefore(node, anchor);
+}
+
+function detachNode(node) {
+ node.parentNode.removeChild(node);
+}
+
+function createElement(name) {
+ return document.createElement(name);
+}
+
+function createText(data) {
+ return document.createTextNode(data);
+}
+
+function setAttribute(node, attribute, value) {
+ node.setAttribute(attribute, value);
+}
+
+function blankObject() {
+ return Object.create(null);
+}
+
+function destroy(detach) {
+ this.destroy = noop;
+ this.fire('destroy');
+ this.set = this.get = noop;
+
+ if (detach !== false) this._fragment.u();
+ this._fragment.d();
+ this._fragment = this._state = null;
+}
+
+function differs(a, b) {
+ return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
+}
+
+function dispatchObservers(component, group, changed, newState, oldState) {
+ for (var key in group) {
+ if (!changed[key]) continue;
+
+ var newValue = newState[key];
+ var oldValue = oldState[key];
+
+ var callbacks = group[key];
+ if (!callbacks) continue;
+
+ for (var i = 0; i < callbacks.length; i += 1) {
+ var callback = callbacks[i];
+ if (callback.__calling) continue;
+
+ callback.__calling = true;
+ callback.call(component, newValue, oldValue);
+ callback.__calling = false;
+ }
+ }
+}
+
+function fire(eventName, data) {
+ var handlers =
+ eventName in this._handlers && this._handlers[eventName].slice();
+ if (!handlers) return;
+
+ for (var i = 0; i < handlers.length; i += 1) {
+ handlers[i].call(this, data);
+ }
+}
+
+function get(key) {
+ return key ? this._state[key] : this._state;
+}
+
+function init(component, options) {
+ component.options = options;
+
+ component._observers = { pre: blankObject(), post: blankObject() };
+ component._handlers = blankObject();
+ component._root = options._root || component;
+ component._bind = options._bind;
+}
+
+function observe(key, callback, options) {
+ var group = options && options.defer
+ ? this._observers.post
+ : this._observers.pre;
+
+ (group[key] || (group[key] = [])).push(callback);
+
+ if (!options || options.init !== false) {
+ callback.__calling = true;
+ callback.call(this, this._state[key]);
+ callback.__calling = false;
+ }
+
+ return {
+ cancel: function() {
+ var index = group[key].indexOf(callback);
+ if (~index) group[key].splice(index, 1);
+ }
+ };
+}
+
+function on(eventName, handler) {
+ if (eventName === 'teardown') return this.on('destroy', handler);
+
+ var handlers = this._handlers[eventName] || (this._handlers[eventName] = []);
+ handlers.push(handler);
+
+ return {
+ cancel: function() {
+ var index = handlers.indexOf(handler);
+ if (~index) handlers.splice(index, 1);
+ }
+ };
+}
+
+function set(newState) {
+ this._set(assign({}, newState));
+ if (this._root._lock) return;
+ this._root._lock = true;
+ callAll(this._root._beforecreate);
+ callAll(this._root._oncreate);
+ callAll(this._root._aftercreate);
+ this._root._lock = false;
+}
+
+function _set(newState) {
+ var oldState = this._state,
+ changed = {},
+ dirty = false;
+
+ for (var key in newState) {
+ if (differs(newState[key], oldState[key])) changed[key] = dirty = true;
+ }
+ if (!dirty) return;
+
+ this._state = assign({}, oldState, newState);
+ this._recompute(changed, this._state);
+ if (this._bind) this._bind(changed, this._state);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
+}
+
+function callAll(fns) {
+ while (fns && fns.length) fns.pop()();
+}
+
+function _mount(target, anchor) {
+ this._fragment.m(target, anchor);
+}
+
+function _unmount() {
+ this._fragment.u();
+}
+
+var proto = {
+ destroy: destroy,
+ get: get,
+ fire: fire,
+ observe: observe,
+ on: on,
+ set: set,
+ teardown: destroy,
+ _recompute: noop,
+ _set: _set,
+ _mount: _mount,
+ _unmount: _unmount
+};
+
+/* generated by Svelte vX.Y.Z */
+function create_main_fragment(state, component) {
+ var div, text, div_1;
+
+ return {
+ c: function create() {
+ div = createElement("div");
+ text = createText("\n");
+ div_1 = createElement("div");
+ this.h();
+ },
+
+ h: function hydrate() {
+ setAttribute(div, "data-foo", "bar");
+ setAttribute(div_1, "data-foo", state.bar);
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(div, target, anchor);
+ insertNode(text, target, anchor);
+ insertNode(div_1, target, anchor);
+ },
+
+ p: function update(changed, state) {
+ if (changed.bar) {
+ setAttribute(div_1, "data-foo", state.bar);
+ }
+ },
+
+ u: function unmount() {
+ detachNode(div);
+ detachNode(text);
+ detachNode(div_1);
+ },
+
+ d: noop
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+
+export default SvelteComponent;
diff --git a/test/js/samples/dont-use-dataset-in-legacy/expected.js b/test/js/samples/dont-use-dataset-in-legacy/expected.js
new file mode 100644
index 0000000000..03eef26ced
--- /dev/null
+++ b/test/js/samples/dont-use-dataset-in-legacy/expected.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import { assign, createElement, createText, detachNode, init, insertNode, noop, proto, setAttribute } from "svelte/shared.js";
+
+function create_main_fragment(state, component) {
+ var div, text, div_1;
+
+ return {
+ c: function create() {
+ div = createElement("div");
+ text = createText("\n");
+ div_1 = createElement("div");
+ this.h();
+ },
+
+ h: function hydrate() {
+ setAttribute(div, "data-foo", "bar");
+ setAttribute(div_1, "data-foo", state.bar);
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(div, target, anchor);
+ insertNode(text, target, anchor);
+ insertNode(div_1, target, anchor);
+ },
+
+ p: function update(changed, state) {
+ if (changed.bar) {
+ setAttribute(div_1, "data-foo", state.bar);
+ }
+ },
+
+ u: function unmount() {
+ detachNode(div);
+ detachNode(text);
+ detachNode(div_1);
+ },
+
+ d: noop
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+export default SvelteComponent;
\ No newline at end of file
diff --git a/test/js/samples/dont-use-dataset-in-legacy/input.html b/test/js/samples/dont-use-dataset-in-legacy/input.html
new file mode 100644
index 0000000000..acd9d623b4
--- /dev/null
+++ b/test/js/samples/dont-use-dataset-in-legacy/input.html
@@ -0,0 +1,2 @@
+
+
diff --git a/test/js/samples/each-block-changed-check/expected-bundle.js b/test/js/samples/each-block-changed-check/expected-bundle.js
index 9033bcc787..eafa43b498 100644
--- a/test/js/samples/each-block-changed-check/expected-bundle.js
+++ b/test/js/samples/each-block-changed-check/expected-bundle.js
@@ -116,7 +116,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -178,9 +177,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -304,8 +306,8 @@ function create_each_block(state, comments, comment, i, component) {
},
h: function hydrate() {
- div.className = "comment";
span.className = "meta";
+ div.className = "comment";
},
m: function mount(target, anchor) {
@@ -348,7 +350,7 @@ function create_each_block(state, comments, comment, i, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/each-block-changed-check/expected.js b/test/js/samples/each-block-changed-check/expected.js
index fafbc74a2f..c7d0fad748 100644
--- a/test/js/samples/each-block-changed-check/expected.js
+++ b/test/js/samples/each-block-changed-check/expected.js
@@ -95,8 +95,8 @@ function create_each_block(state, comments, comment, i, component) {
},
h: function hydrate() {
- div.className = "comment";
span.className = "meta";
+ div.className = "comment";
},
m: function mount(target, anchor) {
@@ -139,7 +139,7 @@ function create_each_block(state, comments, comment, i, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/event-handlers-custom/expected-bundle.js b/test/js/samples/event-handlers-custom/expected-bundle.js
index daa862c46b..760d00c2dc 100644
--- a/test/js/samples/event-handlers-custom/expected-bundle.js
+++ b/test/js/samples/event-handlers-custom/expected-bundle.js
@@ -84,7 +84,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -146,9 +145,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -223,7 +225,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/event-handlers-custom/expected.js b/test/js/samples/event-handlers-custom/expected.js
index fd771891a5..e8afb012e1 100644
--- a/test/js/samples/event-handlers-custom/expected.js
+++ b/test/js/samples/event-handlers-custom/expected.js
@@ -46,7 +46,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/if-block-no-update/expected-bundle.js b/test/js/samples/if-block-no-update/expected-bundle.js
index f850184972..cfe1f70667 100644
--- a/test/js/samples/if-block-no-update/expected-bundle.js
+++ b/test/js/samples/if-block-no-update/expected-bundle.js
@@ -88,7 +88,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -150,9 +149,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -272,7 +274,7 @@ function select_block_type(state) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/if-block-no-update/expected.js b/test/js/samples/if-block-no-update/expected.js
index f7aaa3a445..3c4d482965 100644
--- a/test/js/samples/if-block-no-update/expected.js
+++ b/test/js/samples/if-block-no-update/expected.js
@@ -91,7 +91,7 @@ function select_block_type(state) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/if-block-simple/expected-bundle.js b/test/js/samples/if-block-simple/expected-bundle.js
index 726f40fb5f..1b75bffec4 100644
--- a/test/js/samples/if-block-simple/expected-bundle.js
+++ b/test/js/samples/if-block-simple/expected-bundle.js
@@ -88,7 +88,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -150,9 +149,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -248,7 +250,7 @@ function create_if_block(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/if-block-simple/expected.js b/test/js/samples/if-block-simple/expected.js
index a7da883000..28cafc47cf 100644
--- a/test/js/samples/if-block-simple/expected.js
+++ b/test/js/samples/if-block-simple/expected.js
@@ -67,7 +67,7 @@ function create_if_block(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized-multiple/expected-bundle.js b/test/js/samples/inline-style-optimized-multiple/expected-bundle.js
index a30f2d5ccf..8469e844e3 100644
--- a/test/js/samples/inline-style-optimized-multiple/expected-bundle.js
+++ b/test/js/samples/inline-style-optimized-multiple/expected-bundle.js
@@ -88,7 +88,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -150,9 +149,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -220,7 +222,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized-multiple/expected.js b/test/js/samples/inline-style-optimized-multiple/expected.js
index 94e2b0d6e7..26b75f9e8a 100644
--- a/test/js/samples/inline-style-optimized-multiple/expected.js
+++ b/test/js/samples/inline-style-optimized-multiple/expected.js
@@ -39,7 +39,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized-url/expected-bundle.js b/test/js/samples/inline-style-optimized-url/expected-bundle.js
index 637450cf01..74a8fbcb66 100644
--- a/test/js/samples/inline-style-optimized-url/expected-bundle.js
+++ b/test/js/samples/inline-style-optimized-url/expected-bundle.js
@@ -88,7 +88,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -150,9 +149,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -215,7 +217,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized-url/expected.js b/test/js/samples/inline-style-optimized-url/expected.js
index 2125564ba8..0ebc22d930 100644
--- a/test/js/samples/inline-style-optimized-url/expected.js
+++ b/test/js/samples/inline-style-optimized-url/expected.js
@@ -34,7 +34,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized/expected-bundle.js b/test/js/samples/inline-style-optimized/expected-bundle.js
index a68762755b..ccfeafc359 100644
--- a/test/js/samples/inline-style-optimized/expected-bundle.js
+++ b/test/js/samples/inline-style-optimized/expected-bundle.js
@@ -88,7 +88,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -150,9 +149,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -215,7 +217,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-optimized/expected.js b/test/js/samples/inline-style-optimized/expected.js
index 55c8e6a0e7..c01196de24 100644
--- a/test/js/samples/inline-style-optimized/expected.js
+++ b/test/js/samples/inline-style-optimized/expected.js
@@ -34,7 +34,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-unoptimized/expected-bundle.js b/test/js/samples/inline-style-unoptimized/expected-bundle.js
index d86f482934..d074b03550 100644
--- a/test/js/samples/inline-style-unoptimized/expected-bundle.js
+++ b/test/js/samples/inline-style-unoptimized/expected-bundle.js
@@ -90,7 +90,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -152,9 +151,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -226,7 +228,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/inline-style-unoptimized/expected.js b/test/js/samples/inline-style-unoptimized/expected.js
index 45794da65d..91c497f456 100644
--- a/test/js/samples/inline-style-unoptimized/expected.js
+++ b/test/js/samples/inline-style-unoptimized/expected.js
@@ -43,7 +43,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/input-without-blowback-guard/expected-bundle.js b/test/js/samples/input-without-blowback-guard/expected-bundle.js
index 1d81ccf594..9393d00f6b 100644
--- a/test/js/samples/input-without-blowback-guard/expected-bundle.js
+++ b/test/js/samples/input-without-blowback-guard/expected-bundle.js
@@ -92,7 +92,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -154,9 +153,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -200,8 +202,8 @@ function create_main_fragment(state, component) {
},
h: function hydrate() {
- input.type = "checkbox";
addListener(input, "change", input_change_handler);
+ input.type = "checkbox";
},
m: function mount(target, anchor) {
@@ -226,7 +228,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/input-without-blowback-guard/expected.js b/test/js/samples/input-without-blowback-guard/expected.js
index 404d04a5e2..e39756f304 100644
--- a/test/js/samples/input-without-blowback-guard/expected.js
+++ b/test/js/samples/input-without-blowback-guard/expected.js
@@ -15,8 +15,8 @@ function create_main_fragment(state, component) {
},
h: function hydrate() {
- input.type = "checkbox";
addListener(input, "change", input_change_handler);
+ input.type = "checkbox";
},
m: function mount(target, anchor) {
@@ -41,7 +41,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/legacy-input-type/expected-bundle.js b/test/js/samples/legacy-input-type/expected-bundle.js
index 2d8ca35854..438b08ae2b 100644
--- a/test/js/samples/legacy-input-type/expected-bundle.js
+++ b/test/js/samples/legacy-input-type/expected-bundle.js
@@ -90,7 +90,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -152,9 +151,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -213,7 +215,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/legacy-input-type/expected.js b/test/js/samples/legacy-input-type/expected.js
index 445215eff5..99d54c5617 100644
--- a/test/js/samples/legacy-input-type/expected.js
+++ b/test/js/samples/legacy-input-type/expected.js
@@ -30,7 +30,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/legacy-quote-class/expected-bundle.js b/test/js/samples/legacy-quote-class/expected-bundle.js
index 6f6fc44d2c..36c9d4ec97 100644
--- a/test/js/samples/legacy-quote-class/expected-bundle.js
+++ b/test/js/samples/legacy-quote-class/expected-bundle.js
@@ -107,7 +107,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -169,9 +168,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -238,7 +240,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/legacy-quote-class/expected.js b/test/js/samples/legacy-quote-class/expected.js
index adbee28704..c301cc6894 100644
--- a/test/js/samples/legacy-quote-class/expected.js
+++ b/test/js/samples/legacy-quote-class/expected.js
@@ -38,7 +38,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/media-bindings/expected-bundle.js b/test/js/samples/media-bindings/expected-bundle.js
index 8101b19469..8539b0463c 100644
--- a/test/js/samples/media-bindings/expected-bundle.js
+++ b/test/js/samples/media-bindings/expected-bundle.js
@@ -100,7 +100,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -162,9 +161,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -195,78 +197,51 @@ var proto = {
/* generated by Svelte vX.Y.Z */
function create_main_fragment(state, component) {
- var audio, audio_updating = false, audio_animationframe, audio_paused_value = true;
-
- function audio_progress_loadedmetadata_handler() {
- audio_updating = true;
- component.set({ buffered: timeRangesToArray(audio.buffered) });
- audio_updating = false;
- }
-
- function audio_loadedmetadata_handler() {
- audio_updating = true;
- component.set({ seekable: timeRangesToArray(audio.seekable) });
- audio_updating = false;
- }
+ var audio, audio_is_paused = true, audio_updating = false, audio_animationframe;
function audio_timeupdate_handler() {
- audio_updating = true;
- component.set({ played: timeRangesToArray(audio.played) });
- audio_updating = false;
- }
-
- function audio_timeupdate_handler_1() {
- audio_updating = true;
cancelAnimationFrame(audio_animationframe);
- if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler_1);
- component.set({ currentTime: audio.currentTime });
+ if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler);
+ audio_updating = true;
+ component.set({ played: timeRangesToArray(audio.played), currentTime: audio.currentTime });
audio_updating = false;
}
function audio_durationchange_handler() {
- audio_updating = true;
component.set({ duration: audio.duration });
- audio_updating = false;
}
- function audio_pause_handler() {
+ function audio_play_pause_handler() {
audio_updating = true;
component.set({ paused: audio.paused });
audio_updating = false;
}
+ function audio_progress_handler() {
+ component.set({ buffered: timeRangesToArray(audio.buffered) });
+ }
+
+ function audio_loadedmetadata_handler() {
+ component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) });
+ }
+
return {
c: function create() {
audio = createElement("audio");
- addListener(audio, "play", audio_pause_handler);
this.h();
},
h: function hydrate() {
- component._root._beforecreate.push(audio_progress_loadedmetadata_handler);
-
- addListener(audio, "progress", audio_progress_loadedmetadata_handler);
- addListener(audio, "loadedmetadata", audio_progress_loadedmetadata_handler);
-
- component._root._beforecreate.push(audio_loadedmetadata_handler);
-
- addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
-
- component._root._beforecreate.push(audio_timeupdate_handler);
-
addListener(audio, "timeupdate", audio_timeupdate_handler);
-
- component._root._beforecreate.push(audio_timeupdate_handler_1);
-
- addListener(audio, "timeupdate", audio_timeupdate_handler_1);
-
- component._root._beforecreate.push(audio_durationchange_handler);
-
+ if (!('played' in state && 'currentTime' in state)) component._root._beforecreate.push(audio_timeupdate_handler);
addListener(audio, "durationchange", audio_durationchange_handler);
-
- component._root._beforecreate.push(audio_pause_handler);
-
- addListener(audio, "pause", audio_pause_handler);
+ if (!('duration' in state)) component._root._beforecreate.push(audio_durationchange_handler);
+ addListener(audio, "play", audio_play_pause_handler);
+ addListener(audio, "pause", audio_play_pause_handler);
+ addListener(audio, "progress", audio_progress_handler);
+ if (!('buffered' in state)) component._root._beforecreate.push(audio_progress_handler);
+ addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
+ if (!('buffered' in state && 'seekable' in state)) component._root._beforecreate.push(audio_loadedmetadata_handler);
},
m: function mount(target, anchor) {
@@ -274,13 +249,8 @@ function create_main_fragment(state, component) {
},
p: function update(changed, state) {
- if (!audio_updating && !isNaN(state.currentTime )) {
- audio.currentTime = state.currentTime ;
- }
-
- if (audio_paused_value !== (audio_paused_value = state.paused)) {
- audio[audio_paused_value ? "pause" : "play"]();
- }
+ if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ;
+ if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused)) audio[audio_is_paused ? "pause" : "play"]();
},
u: function unmount() {
@@ -288,21 +258,19 @@ function create_main_fragment(state, component) {
},
d: function destroy$$1() {
- removeListener(audio, "progress", audio_progress_loadedmetadata_handler);
- removeListener(audio, "loadedmetadata", audio_progress_loadedmetadata_handler);
- removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
removeListener(audio, "timeupdate", audio_timeupdate_handler);
- removeListener(audio, "timeupdate", audio_timeupdate_handler_1);
removeListener(audio, "durationchange", audio_durationchange_handler);
- removeListener(audio, "pause", audio_pause_handler);
- removeListener(audio, "play", audio_pause_handler);
+ removeListener(audio, "play", audio_play_pause_handler);
+ removeListener(audio, "pause", audio_play_pause_handler);
+ removeListener(audio, "progress", audio_progress_handler);
+ removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
}
};
}
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/media-bindings/expected.js b/test/js/samples/media-bindings/expected.js
index ada2cc66a5..58fd4ba2bc 100644
--- a/test/js/samples/media-bindings/expected.js
+++ b/test/js/samples/media-bindings/expected.js
@@ -2,78 +2,51 @@
import { addListener, assign, callAll, createElement, detachNode, init, insert, proto, removeListener, timeRangesToArray } from "svelte/shared.js";
function create_main_fragment(state, component) {
- var audio, audio_updating = false, audio_animationframe, audio_paused_value = true;
-
- function audio_progress_loadedmetadata_handler() {
- audio_updating = true;
- component.set({ buffered: timeRangesToArray(audio.buffered) });
- audio_updating = false;
- }
-
- function audio_loadedmetadata_handler() {
- audio_updating = true;
- component.set({ seekable: timeRangesToArray(audio.seekable) });
- audio_updating = false;
- }
+ var audio, audio_is_paused = true, audio_updating = false, audio_animationframe;
function audio_timeupdate_handler() {
- audio_updating = true;
- component.set({ played: timeRangesToArray(audio.played) });
- audio_updating = false;
- }
-
- function audio_timeupdate_handler_1() {
- audio_updating = true;
cancelAnimationFrame(audio_animationframe);
- if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler_1);
- component.set({ currentTime: audio.currentTime });
+ if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler);
+ audio_updating = true;
+ component.set({ played: timeRangesToArray(audio.played), currentTime: audio.currentTime });
audio_updating = false;
}
function audio_durationchange_handler() {
- audio_updating = true;
component.set({ duration: audio.duration });
- audio_updating = false;
}
- function audio_pause_handler() {
+ function audio_play_pause_handler() {
audio_updating = true;
component.set({ paused: audio.paused });
audio_updating = false;
}
+ function audio_progress_handler() {
+ component.set({ buffered: timeRangesToArray(audio.buffered) });
+ }
+
+ function audio_loadedmetadata_handler() {
+ component.set({ buffered: timeRangesToArray(audio.buffered), seekable: timeRangesToArray(audio.seekable) });
+ }
+
return {
c: function create() {
audio = createElement("audio");
- addListener(audio, "play", audio_pause_handler);
this.h();
},
h: function hydrate() {
- component._root._beforecreate.push(audio_progress_loadedmetadata_handler);
-
- addListener(audio, "progress", audio_progress_loadedmetadata_handler);
- addListener(audio, "loadedmetadata", audio_progress_loadedmetadata_handler);
-
- component._root._beforecreate.push(audio_loadedmetadata_handler);
-
- addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
-
- component._root._beforecreate.push(audio_timeupdate_handler);
-
addListener(audio, "timeupdate", audio_timeupdate_handler);
-
- component._root._beforecreate.push(audio_timeupdate_handler_1);
-
- addListener(audio, "timeupdate", audio_timeupdate_handler_1);
-
- component._root._beforecreate.push(audio_durationchange_handler);
-
+ if (!('played' in state && 'currentTime' in state)) component._root._beforecreate.push(audio_timeupdate_handler);
addListener(audio, "durationchange", audio_durationchange_handler);
-
- component._root._beforecreate.push(audio_pause_handler);
-
- addListener(audio, "pause", audio_pause_handler);
+ if (!('duration' in state)) component._root._beforecreate.push(audio_durationchange_handler);
+ addListener(audio, "play", audio_play_pause_handler);
+ addListener(audio, "pause", audio_play_pause_handler);
+ addListener(audio, "progress", audio_progress_handler);
+ if (!('buffered' in state)) component._root._beforecreate.push(audio_progress_handler);
+ addListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
+ if (!('buffered' in state && 'seekable' in state)) component._root._beforecreate.push(audio_loadedmetadata_handler);
},
m: function mount(target, anchor) {
@@ -81,13 +54,8 @@ function create_main_fragment(state, component) {
},
p: function update(changed, state) {
- if (!audio_updating && !isNaN(state.currentTime )) {
- audio.currentTime = state.currentTime ;
- }
-
- if (audio_paused_value !== (audio_paused_value = state.paused)) {
- audio[audio_paused_value ? "pause" : "play"]();
- }
+ if (!audio_updating && !isNaN(state.currentTime )) audio.currentTime = state.currentTime ;
+ if (!audio_updating && audio_is_paused !== (audio_is_paused = state.paused)) audio[audio_is_paused ? "pause" : "play"]();
},
u: function unmount() {
@@ -95,21 +63,19 @@ function create_main_fragment(state, component) {
},
d: function destroy() {
- removeListener(audio, "progress", audio_progress_loadedmetadata_handler);
- removeListener(audio, "loadedmetadata", audio_progress_loadedmetadata_handler);
- removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
removeListener(audio, "timeupdate", audio_timeupdate_handler);
- removeListener(audio, "timeupdate", audio_timeupdate_handler_1);
removeListener(audio, "durationchange", audio_durationchange_handler);
- removeListener(audio, "pause", audio_pause_handler);
- removeListener(audio, "play", audio_pause_handler);
+ removeListener(audio, "play", audio_play_pause_handler);
+ removeListener(audio, "pause", audio_play_pause_handler);
+ removeListener(audio, "progress", audio_progress_handler);
+ removeListener(audio, "loadedmetadata", audio_loadedmetadata_handler);
}
};
}
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/non-imported-component/expected-bundle.js b/test/js/samples/non-imported-component/expected-bundle.js
index 3227ccb55f..4ca0c05a39 100644
--- a/test/js/samples/non-imported-component/expected-bundle.js
+++ b/test/js/samples/non-imported-component/expected-bundle.js
@@ -86,7 +86,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -148,9 +147,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -221,7 +223,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/non-imported-component/expected.js b/test/js/samples/non-imported-component/expected.js
index e442f30083..ee58adf505 100644
--- a/test/js/samples/non-imported-component/expected.js
+++ b/test/js/samples/non-imported-component/expected.js
@@ -45,7 +45,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
if (!options._root) {
this._oncreate = [];
diff --git a/test/js/samples/onrender-onteardown-rewritten/expected-bundle.js b/test/js/samples/onrender-onteardown-rewritten/expected-bundle.js
index 28dafe0c0d..f1e701bd04 100644
--- a/test/js/samples/onrender-onteardown-rewritten/expected-bundle.js
+++ b/test/js/samples/onrender-onteardown-rewritten/expected-bundle.js
@@ -72,7 +72,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -134,9 +133,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -187,7 +189,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._handlers.destroy = [ondestroy];
diff --git a/test/js/samples/onrender-onteardown-rewritten/expected.js b/test/js/samples/onrender-onteardown-rewritten/expected.js
index 95f923e4d4..19b85a62e0 100644
--- a/test/js/samples/onrender-onteardown-rewritten/expected.js
+++ b/test/js/samples/onrender-onteardown-rewritten/expected.js
@@ -22,7 +22,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._handlers.destroy = [ondestroy]
diff --git a/test/js/samples/setup-method/expected-bundle.js b/test/js/samples/setup-method/expected-bundle.js
index 42eed6868b..0c545ea70c 100644
--- a/test/js/samples/setup-method/expected-bundle.js
+++ b/test/js/samples/setup-method/expected-bundle.js
@@ -72,7 +72,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -134,9 +133,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -199,7 +201,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/setup-method/expected.js b/test/js/samples/setup-method/expected.js
index f49817bb99..092a32ed3b 100644
--- a/test/js/samples/setup-method/expected.js
+++ b/test/js/samples/setup-method/expected.js
@@ -34,7 +34,7 @@ function create_main_fragment(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js b/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js
index 6ea9ece9d4..9a466e06ae 100644
--- a/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js
+++ b/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js
@@ -5,7 +5,7 @@ SvelteComponent.data = function() {
};
SvelteComponent.render = function(state, options) {
- state = state || {};
+ state = Object.assign({}, state);
return ``.trim();
};
diff --git a/test/js/samples/ssr-no-oncreate-etc/expected.js b/test/js/samples/ssr-no-oncreate-etc/expected.js
index 6de85e548c..51c10c7656 100644
--- a/test/js/samples/ssr-no-oncreate-etc/expected.js
+++ b/test/js/samples/ssr-no-oncreate-etc/expected.js
@@ -7,7 +7,7 @@ SvelteComponent.data = function() {
};
SvelteComponent.render = function(state, options) {
- state = state || {};
+ state = Object.assign({}, state);
return ``.trim();
};
diff --git a/test/js/samples/use-elements-as-anchors/expected-bundle.js b/test/js/samples/use-elements-as-anchors/expected-bundle.js
index a673a37a36..733ac757c1 100644
--- a/test/js/samples/use-elements-as-anchors/expected-bundle.js
+++ b/test/js/samples/use-elements-as-anchors/expected-bundle.js
@@ -108,7 +108,6 @@ function init(component, options) {
component._observers = { pre: blankObject(), post: blankObject() };
component._handlers = blankObject();
component._root = options._root || component;
- component._yield = options._yield;
component._bind = options._bind;
}
@@ -170,9 +169,12 @@ function _set(newState) {
this._state = assign({}, oldState, newState);
this._recompute(changed, this._state);
if (this._bind) this._bind(changed, this._state);
- dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
- this._fragment.p(changed, this._state);
- dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
}
function callAll(fns) {
@@ -447,7 +449,7 @@ function create_if_block_4(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/use-elements-as-anchors/expected.js b/test/js/samples/use-elements-as-anchors/expected.js
index 1fde7125e7..1f70108ab4 100644
--- a/test/js/samples/use-elements-as-anchors/expected.js
+++ b/test/js/samples/use-elements-as-anchors/expected.js
@@ -246,7 +246,7 @@ function create_if_block_4(state, component) {
function SvelteComponent(options) {
init(this, options);
- this._state = options.data || {};
+ this._state = assign({}, options.data);
this._fragment = create_main_fragment(this._state, this);
diff --git a/test/js/samples/window-binding-scroll/expected-bundle.js b/test/js/samples/window-binding-scroll/expected-bundle.js
new file mode 100644
index 0000000000..6c357ef732
--- /dev/null
+++ b/test/js/samples/window-binding-scroll/expected-bundle.js
@@ -0,0 +1,253 @@
+function noop() {}
+
+function assign(target) {
+ var k,
+ source,
+ i = 1,
+ len = arguments.length;
+ for (; i < len; i++) {
+ source = arguments[i];
+ for (k in source) target[k] = source[k];
+ }
+
+ return target;
+}
+
+function appendNode(node, target) {
+ target.appendChild(node);
+}
+
+function insertNode(node, target, anchor) {
+ target.insertBefore(node, anchor);
+}
+
+function detachNode(node) {
+ node.parentNode.removeChild(node);
+}
+
+function createElement(name) {
+ return document.createElement(name);
+}
+
+function createText(data) {
+ return document.createTextNode(data);
+}
+
+function blankObject() {
+ return Object.create(null);
+}
+
+function destroy(detach) {
+ this.destroy = noop;
+ this.fire('destroy');
+ this.set = this.get = noop;
+
+ if (detach !== false) this._fragment.u();
+ this._fragment.d();
+ this._fragment = this._state = null;
+}
+
+function differs(a, b) {
+ return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
+}
+
+function dispatchObservers(component, group, changed, newState, oldState) {
+ for (var key in group) {
+ if (!changed[key]) continue;
+
+ var newValue = newState[key];
+ var oldValue = oldState[key];
+
+ var callbacks = group[key];
+ if (!callbacks) continue;
+
+ for (var i = 0; i < callbacks.length; i += 1) {
+ var callback = callbacks[i];
+ if (callback.__calling) continue;
+
+ callback.__calling = true;
+ callback.call(component, newValue, oldValue);
+ callback.__calling = false;
+ }
+ }
+}
+
+function fire(eventName, data) {
+ var handlers =
+ eventName in this._handlers && this._handlers[eventName].slice();
+ if (!handlers) return;
+
+ for (var i = 0; i < handlers.length; i += 1) {
+ handlers[i].call(this, data);
+ }
+}
+
+function get(key) {
+ return key ? this._state[key] : this._state;
+}
+
+function init(component, options) {
+ component.options = options;
+
+ component._observers = { pre: blankObject(), post: blankObject() };
+ component._handlers = blankObject();
+ component._root = options._root || component;
+ component._bind = options._bind;
+}
+
+function observe(key, callback, options) {
+ var group = options && options.defer
+ ? this._observers.post
+ : this._observers.pre;
+
+ (group[key] || (group[key] = [])).push(callback);
+
+ if (!options || options.init !== false) {
+ callback.__calling = true;
+ callback.call(this, this._state[key]);
+ callback.__calling = false;
+ }
+
+ return {
+ cancel: function() {
+ var index = group[key].indexOf(callback);
+ if (~index) group[key].splice(index, 1);
+ }
+ };
+}
+
+function on(eventName, handler) {
+ if (eventName === 'teardown') return this.on('destroy', handler);
+
+ var handlers = this._handlers[eventName] || (this._handlers[eventName] = []);
+ handlers.push(handler);
+
+ return {
+ cancel: function() {
+ var index = handlers.indexOf(handler);
+ if (~index) handlers.splice(index, 1);
+ }
+ };
+}
+
+function set(newState) {
+ this._set(assign({}, newState));
+ if (this._root._lock) return;
+ this._root._lock = true;
+ callAll(this._root._beforecreate);
+ callAll(this._root._oncreate);
+ callAll(this._root._aftercreate);
+ this._root._lock = false;
+}
+
+function _set(newState) {
+ var oldState = this._state,
+ changed = {},
+ dirty = false;
+
+ for (var key in newState) {
+ if (differs(newState[key], oldState[key])) changed[key] = dirty = true;
+ }
+ if (!dirty) return;
+
+ this._state = assign({}, oldState, newState);
+ this._recompute(changed, this._state);
+ if (this._bind) this._bind(changed, this._state);
+
+ if (this._fragment) {
+ dispatchObservers(this, this._observers.pre, changed, this._state, oldState);
+ this._fragment.p(changed, this._state);
+ dispatchObservers(this, this._observers.post, changed, this._state, oldState);
+ }
+}
+
+function callAll(fns) {
+ while (fns && fns.length) fns.pop()();
+}
+
+function _mount(target, anchor) {
+ this._fragment.m(target, anchor);
+}
+
+function _unmount() {
+ this._fragment.u();
+}
+
+var proto = {
+ destroy: destroy,
+ get: get,
+ fire: fire,
+ observe: observe,
+ on: on,
+ set: set,
+ teardown: destroy,
+ _recompute: noop,
+ _set: _set,
+ _mount: _mount,
+ _unmount: _unmount
+};
+
+/* generated by Svelte vX.Y.Z */
+function create_main_fragment(state, component) {
+ var window_updating = false, p, text, text_1;
+
+ function onwindowscroll(event) {
+ window_updating = true;
+
+ component.set({
+ y: this.scrollY
+ });
+ window_updating = false;
+ }
+ window.addEventListener("scroll", onwindowscroll);
+
+ component.observe("y", function(y) {
+ if (window_updating) return;
+ window.scrollTo(window.scrollX, y);
+ });
+
+ return {
+ c: function create() {
+ p = createElement("p");
+ text = createText("scrolled to ");
+ text_1 = createText(state.y);
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(p, target, anchor);
+ appendNode(text, p);
+ appendNode(text_1, p);
+ },
+
+ p: function update(changed, state) {
+ if (changed.y) {
+ text_1.data = state.y;
+ }
+ },
+
+ u: function unmount() {
+ detachNode(p);
+ },
+
+ d: function destroy$$1() {
+ window.removeEventListener("scroll", onwindowscroll);
+ }
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+ this._state.y = window.scrollY;
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+
+export default SvelteComponent;
diff --git a/test/js/samples/window-binding-scroll/expected.js b/test/js/samples/window-binding-scroll/expected.js
new file mode 100644
index 0000000000..0387b24a05
--- /dev/null
+++ b/test/js/samples/window-binding-scroll/expected.js
@@ -0,0 +1,65 @@
+/* generated by Svelte vX.Y.Z */
+import { appendNode, assign, createElement, createText, detachNode, init, insertNode, proto } from "svelte/shared.js";
+
+function create_main_fragment(state, component) {
+ var window_updating = false, p, text, text_1;
+
+ function onwindowscroll(event) {
+ window_updating = true;
+
+ component.set({
+ y: this.scrollY
+ });
+ window_updating = false;
+ }
+ window.addEventListener("scroll", onwindowscroll);
+
+ component.observe("y", function(y) {
+ if (window_updating) return;
+ window.scrollTo(window.scrollX, y);
+ });
+
+ return {
+ c: function create() {
+ p = createElement("p");
+ text = createText("scrolled to ");
+ text_1 = createText(state.y);
+ },
+
+ m: function mount(target, anchor) {
+ insertNode(p, target, anchor);
+ appendNode(text, p);
+ appendNode(text_1, p);
+ },
+
+ p: function update(changed, state) {
+ if (changed.y) {
+ text_1.data = state.y;
+ }
+ },
+
+ u: function unmount() {
+ detachNode(p);
+ },
+
+ d: function destroy() {
+ window.removeEventListener("scroll", onwindowscroll);
+ }
+ };
+}
+
+function SvelteComponent(options) {
+ init(this, options);
+ this._state = assign({}, options.data);
+ this._state.y = window.scrollY;
+
+ this._fragment = create_main_fragment(this._state, this);
+
+ if (options.target) {
+ this._fragment.c();
+ this._fragment.m(options.target, options.anchor || null);
+ }
+}
+
+assign(SvelteComponent.prototype, proto);
+export default SvelteComponent;
\ No newline at end of file
diff --git a/test/js/samples/window-binding-scroll/input.html b/test/js/samples/window-binding-scroll/input.html
new file mode 100644
index 0000000000..2365bfcc96
--- /dev/null
+++ b/test/js/samples/window-binding-scroll/input.html
@@ -0,0 +1,3 @@
+<:Window bind:scrollY=y/>
+
+scrolled to {{y}}
\ No newline at end of file
diff --git a/test/parser/samples/each-block-destructured/input.html b/test/parser/samples/each-block-destructured/input.html
new file mode 100644
index 0000000000..7209f5503d
--- /dev/null
+++ b/test/parser/samples/each-block-destructured/input.html
@@ -0,0 +1,3 @@
+{{#each animals as [key, value]}}
+ {{key}}: {{value}}
+{{/each}}
diff --git a/test/parser/samples/each-block-destructured/output.json b/test/parser/samples/each-block-destructured/output.json
new file mode 100644
index 0000000000..897fec88b8
--- /dev/null
+++ b/test/parser/samples/each-block-destructured/output.json
@@ -0,0 +1,67 @@
+{
+ "hash": 2621498076,
+ "html": {
+ "start": 0,
+ "end": 70,
+ "type": "Fragment",
+ "children": [
+ {
+ "start": 0,
+ "end": 70,
+ "type": "EachBlock",
+ "expression": {
+ "type": "Identifier",
+ "start": 8,
+ "end": 15,
+ "name": "animals"
+ },
+ "children": [
+ {
+ "start": 35,
+ "end": 60,
+ "type": "Element",
+ "name": "p",
+ "attributes": [],
+ "children": [
+ {
+ "start": 38,
+ "end": 45,
+ "type": "MustacheTag",
+ "expression": {
+ "type": "Identifier",
+ "start": 40,
+ "end": 43,
+ "name": "key"
+ }
+ },
+ {
+ "start": 45,
+ "end": 47,
+ "type": "Text",
+ "data": ": "
+ },
+ {
+ "start": 47,
+ "end": 56,
+ "type": "MustacheTag",
+ "expression": {
+ "type": "Identifier",
+ "start": 49,
+ "end": 54,
+ "name": "value"
+ }
+ }
+ ]
+ }
+ ],
+ "destructuredContexts": [
+ "key",
+ "value"
+ ],
+ "context": "key_value"
+ }
+ ]
+ },
+ "css": null,
+ "js": null
+}
\ No newline at end of file
diff --git a/test/runtime/samples/attribute-boolean-indeterminate/_config.js b/test/runtime/samples/attribute-boolean-indeterminate/_config.js
new file mode 100644
index 0000000000..33acd07948
--- /dev/null
+++ b/test/runtime/samples/attribute-boolean-indeterminate/_config.js
@@ -0,0 +1,21 @@
+export default {
+ // This is a bit of a funny one — there's no equivalent attribute,
+ // so it can't be server-rendered
+ 'skip-ssr': true,
+
+ data: {
+ indeterminate: true
+ },
+
+ html: `
+
+ `,
+
+ test(assert, component, target) {
+ const input = target.querySelector('input');
+
+ assert.ok(input.indeterminate);
+ component.set({ indeterminate: false });
+ assert.ok(!input.indeterminate);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/attribute-boolean-indeterminate/main.html b/test/runtime/samples/attribute-boolean-indeterminate/main.html
new file mode 100644
index 0000000000..e7ab75dcc1
--- /dev/null
+++ b/test/runtime/samples/attribute-boolean-indeterminate/main.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-indirect-computed/_config.js b/test/runtime/samples/binding-indirect-computed/_config.js
new file mode 100644
index 0000000000..f7ac841f21
--- /dev/null
+++ b/test/runtime/samples/binding-indirect-computed/_config.js
@@ -0,0 +1,32 @@
+export default {
+ dev: true,
+
+ html: `
+
+ `,
+
+ test(assert, component, target, window) {
+ const select = target.querySelector('select');
+ const options = target.querySelectorAll('option');
+
+ const change = new window.Event('change');
+
+ options[1].selected = true;
+ select.dispatchEvent(change);
+
+ assert.equal(component.get('selected').letter, 'B');
+ assert.htmlEqual(target.innerHTML, `
+
+
+ B
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/binding-indirect-computed/main.html b/test/runtime/samples/binding-indirect-computed/main.html
new file mode 100644
index 0000000000..88e638bf30
--- /dev/null
+++ b/test/runtime/samples/binding-indirect-computed/main.html
@@ -0,0 +1,27 @@
+
+
+{{selected.letter}}
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-input-checkbox-group/_config.js b/test/runtime/samples/binding-input-checkbox-group/_config.js
index fac1795eca..bff66c903b 100644
--- a/test/runtime/samples/binding-input-checkbox-group/_config.js
+++ b/test/runtime/samples/binding-input-checkbox-group/_config.js
@@ -16,15 +16,15 @@ export default {
-
+
-
+
-
+
Beta
`,
test ( assert, component, target, window ) {
@@ -42,15 +42,15 @@ export default {
-
+
-
+
-
+
Alpha, Beta
` );
@@ -63,15 +63,15 @@ export default {
-
+
-
+
-
+
Beta, Gamma
` );
}
diff --git a/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js b/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js
new file mode 100644
index 0000000000..3d905e5a9e
--- /dev/null
+++ b/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js
@@ -0,0 +1,42 @@
+export default {
+ 'skip-ssr': true,
+
+ data: {
+ indeterminate: true,
+ },
+
+ html: `
+
+ checked? false
+ indeterminate? true
+ `,
+
+ test(assert, component, target, window) {
+ const input = target.querySelector('input');
+ assert.equal(input.checked, false);
+ assert.equal(input.indeterminate, true);
+
+ const event = new window.Event('change');
+
+ input.checked = true;
+ input.indeterminate = false;
+ input.dispatchEvent(event);
+
+ assert.equal(component.get('indeterminate'), false);
+ assert.equal(component.get('checked'), true);
+ assert.htmlEqual(target.innerHTML, `
+
+ checked? true
+ indeterminate? false
+ `);
+
+ component.set({ indeterminate: true });
+ assert.equal(input.indeterminate, true);
+ assert.equal(input.checked, true);
+ assert.htmlEqual(target.innerHTML, `
+
+ checked? true
+ indeterminate? true
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-input-checkbox-indeterminate/main.html b/test/runtime/samples/binding-input-checkbox-indeterminate/main.html
new file mode 100644
index 0000000000..e4c83224f9
--- /dev/null
+++ b/test/runtime/samples/binding-input-checkbox-indeterminate/main.html
@@ -0,0 +1,3 @@
+
+checked? {{checked}}
+indeterminate? {{indeterminate}}
diff --git a/test/runtime/samples/binding-select-implicit-option-value/_config.js b/test/runtime/samples/binding-select-implicit-option-value/_config.js
new file mode 100644
index 0000000000..40a7364797
--- /dev/null
+++ b/test/runtime/samples/binding-select-implicit-option-value/_config.js
@@ -0,0 +1,40 @@
+export default {
+ data: {
+ values: [1, 2, 3],
+ foo: 2
+ },
+
+ html: `
+
+
+ foo: 2
+ `,
+
+ test(assert, component, target, window) {
+ const select = target.querySelector('select');
+ const options = [...target.querySelectorAll('option')];
+
+ assert.ok(options[1].selected);
+ assert.equal(component.get('foo'), 2);
+
+ const change = new window.Event('change');
+
+ options[2].selected = true;
+ select.dispatchEvent(change);
+
+ assert.equal(component.get('foo'), 3);
+ assert.htmlEqual( target.innerHTML, `
+
+
+ foo: 3
+ ` );
+ }
+};
diff --git a/test/runtime/samples/binding-select-implicit-option-value/main.html b/test/runtime/samples/binding-select-implicit-option-value/main.html
new file mode 100644
index 0000000000..ec5cc84a8d
--- /dev/null
+++ b/test/runtime/samples/binding-select-implicit-option-value/main.html
@@ -0,0 +1,7 @@
+
+
+foo: {{foo}}
\ No newline at end of file
diff --git a/test/runtime/samples/binding-select-initial-value-undefined/_config.js b/test/runtime/samples/binding-select-initial-value-undefined/_config.js
index d5944ae815..f625000edb 100644
--- a/test/runtime/samples/binding-select-initial-value-undefined/_config.js
+++ b/test/runtime/samples/binding-select-initial-value-undefined/_config.js
@@ -5,9 +5,9 @@ export default {
selected: a
selected: a
diff --git a/test/runtime/samples/binding-select-initial-value/_config.js b/test/runtime/samples/binding-select-initial-value/_config.js
index 99a7129262..7338af165f 100644
--- a/test/runtime/samples/binding-select-initial-value/_config.js
+++ b/test/runtime/samples/binding-select-initial-value/_config.js
@@ -3,9 +3,9 @@ export default {
selected: b
selected: b
diff --git a/test/runtime/samples/binding-select-late/_config.js b/test/runtime/samples/binding-select-late/_config.js
index 2fffa0e4ed..04b94613fc 100644
--- a/test/runtime/samples/binding-select-late/_config.js
+++ b/test/runtime/samples/binding-select-late/_config.js
@@ -22,9 +22,9 @@ export default {
assert.htmlEqual( target.innerHTML, `
selected: two
` );
diff --git a/test/runtime/samples/binding-select-optgroup/_config.js b/test/runtime/samples/binding-select-optgroup/_config.js
new file mode 100644
index 0000000000..0d651b6654
--- /dev/null
+++ b/test/runtime/samples/binding-select-optgroup/_config.js
@@ -0,0 +1,39 @@
+export default {
+ skip: true, // JSDOM
+
+ html: `
+ Hello Harry!
+
+
+ `,
+
+ test(assert, component, target, window) {
+ const select = target.querySelector('select');
+ const options = [...target.querySelectorAll('option')];
+
+ assert.deepEqual(options, select.options);
+ assert.equal(component.get('name'), 'Harry');
+
+ const change = new window.Event('change');
+
+ options[1].selected = true;
+ select.dispatchEvent(change);
+
+ assert.equal(component.get('name'), 'World');
+ assert.htmlEqual(target.innerHTML, `
+ Hello World!
+
+
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-select-optgroup/main.html b/test/runtime/samples/binding-select-optgroup/main.html
new file mode 100644
index 0000000000..2160d0e2a8
--- /dev/null
+++ b/test/runtime/samples/binding-select-optgroup/main.html
@@ -0,0 +1,8 @@
+Hello {{name}}!
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-select/_config.js b/test/runtime/samples/binding-select/_config.js
index 7fce00f327..8c8eced7bc 100644
--- a/test/runtime/samples/binding-select/_config.js
+++ b/test/runtime/samples/binding-select/_config.js
@@ -3,9 +3,9 @@ export default {
selected: one
selected: one
@@ -32,9 +32,9 @@ export default {
selected: two
selected: two
diff --git a/test/runtime/samples/component-binding-self-destroying/Nested.html b/test/runtime/samples/component-binding-self-destroying/Nested.html
new file mode 100644
index 0000000000..3fb5ca4da3
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/Nested.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-binding-self-destroying/_config.js b/test/runtime/samples/component-binding-self-destroying/_config.js
new file mode 100644
index 0000000000..27a7ab108e
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/_config.js
@@ -0,0 +1,27 @@
+export default {
+ data: {
+ show: true
+ },
+
+ html: `
+
+ `,
+
+ test(assert, component, target, window) {
+ const click = new window.MouseEvent('click');
+
+ target.querySelector('button').dispatchEvent(click);
+
+ assert.equal(component.get('show'), false);
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+
+ target.querySelector('button').dispatchEvent(click);
+
+ assert.equal(component.get('show'), true);
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-binding-self-destroying/main.html b/test/runtime/samples/component-binding-self-destroying/main.html
new file mode 100644
index 0000000000..74fa144d02
--- /dev/null
+++ b/test/runtime/samples/component-binding-self-destroying/main.html
@@ -0,0 +1,14 @@
+{{#if show}}
+
+{{else}}
+
+{{/if}}
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-each-block/Nested.html b/test/runtime/samples/component-slot-each-block/Nested.html
new file mode 100644
index 0000000000..8213363fa0
--- /dev/null
+++ b/test/runtime/samples/component-slot-each-block/Nested.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-each-block/_config.js b/test/runtime/samples/component-slot-each-block/_config.js
new file mode 100644
index 0000000000..34b2302332
--- /dev/null
+++ b/test/runtime/samples/component-slot-each-block/_config.js
@@ -0,0 +1,24 @@
+export default {
+ data: {
+ things: [1, 2, 3]
+ },
+
+ html: `
+
+ 1
+ 2
+ 3
+
`,
+
+ test(assert, component, target) {
+ component.set({ things: [1, 2, 3, 4] });
+ assert.htmlEqual(target.innerHTML, `
+
+ 1
+ 2
+ 3
+ 4
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-slot-each-block/main.html b/test/runtime/samples/component-slot-each-block/main.html
new file mode 100644
index 0000000000..b503c5af53
--- /dev/null
+++ b/test/runtime/samples/component-slot-each-block/main.html
@@ -0,0 +1,13 @@
+
+ {{#each things as thing}}
+ {{thing}}
+ {{/each}}
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-destructured-array/_config.js b/test/runtime/samples/each-block-destructured-array/_config.js
new file mode 100644
index 0000000000..99933effcf
--- /dev/null
+++ b/test/runtime/samples/each-block-destructured-array/_config.js
@@ -0,0 +1,20 @@
+export default {
+ data: {
+ animalPawsEntries: [
+ ['raccoon', 'hands'],
+ ['eagle', 'wings']
+ ]
+ },
+
+ html: `
+ raccoon: hands
+ eagle: wings
+ `,
+
+ test ( assert, component, target ) {
+ component.set({ animalPawsEntries: [['foo', 'bar']] });
+ assert.htmlEqual( target.innerHTML, `
+ foo: bar
+ `);
+ },
+};
diff --git a/test/runtime/samples/each-block-destructured-array/main.html b/test/runtime/samples/each-block-destructured-array/main.html
new file mode 100644
index 0000000000..6ee90537ab
--- /dev/null
+++ b/test/runtime/samples/each-block-destructured-array/main.html
@@ -0,0 +1,3 @@
+{{#each animalPawsEntries as [animal, pawType]}}
+ {{animal}}: {{pawType}}
+{{/each}}
diff --git a/test/runtime/samples/escaped-text/_config.js b/test/runtime/samples/escaped-text/_config.js
index 43644dde82..206a1afb51 100644
--- a/test/runtime/samples/escaped-text/_config.js
+++ b/test/runtime/samples/escaped-text/_config.js
@@ -1,7 +1,29 @@
export default {
html: `
+ @x
@@x
+ #foo
+ ##foo
%1
%%2
+
+
+ @x
+ @@x
+ #foo
+ ##foo
+ %1
+ %%2
+
+
+
+ @x
+ @@x
+ #foo
+ ##foo
+ %1
+ %%2
+ inner
+
`
-};
\ No newline at end of file
+};
diff --git a/test/runtime/samples/escaped-text/main.html b/test/runtime/samples/escaped-text/main.html
index 603b331ca6..cbcb7fdbb0 100644
--- a/test/runtime/samples/escaped-text/main.html
+++ b/test/runtime/samples/escaped-text/main.html
@@ -1,3 +1,25 @@
+@x
@@x
+#foo
+##foo
%1
-%%2
\ No newline at end of file
+%%2
+
+
+ @x
+ @@x
+ #foo
+ ##foo
+ %1
+ %%2
+
+
+
+ @x
+ @@x
+ #foo
+ ##foo
+ %1
+ %%2
+ inner
+
diff --git a/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js b/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js
new file mode 100644
index 0000000000..a10750e1a0
--- /dev/null
+++ b/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js
@@ -0,0 +1,61 @@
+export default {
+ html: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+
+ data: {
+ todos: {
+ first: {
+ description: 'Buy some milk',
+ done: true,
+ },
+ second: {
+ description: 'Do the laundry',
+ done: true,
+ },
+ third: {
+ description: "Find life's true purpose",
+ done: false,
+ },
+ },
+ },
+
+ test(assert, component, target, window) {
+ const input = document.querySelectorAll('input[type="checkbox"]')[2];
+ const change = new window.Event('change');
+
+ input.checked = true;
+ input.dispatchEvent(change);
+
+ assert.ok(component.get('todos').third.done);
+ assert.htmlEqual(target.innerHTML, `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `);
+ },
+};
diff --git a/test/runtime/samples/globals-not-overwritten-by-bindings/main.html b/test/runtime/samples/globals-not-overwritten-by-bindings/main.html
new file mode 100644
index 0000000000..ca6c6ccb35
--- /dev/null
+++ b/test/runtime/samples/globals-not-overwritten-by-bindings/main.html
@@ -0,0 +1,6 @@
+{{#each Object.keys(todos) as key}}
+
+
+
+
+{{/each}}
\ No newline at end of file
diff --git a/test/runtime/samples/oncreate-async-arrow-block/_config.js b/test/runtime/samples/oncreate-async-arrow-block/_config.js
new file mode 100644
index 0000000000..a5ed4ad14f
--- /dev/null
+++ b/test/runtime/samples/oncreate-async-arrow-block/_config.js
@@ -0,0 +1,3 @@
+export default {
+ skip: +(/^v(\d)/.exec(process.version)[1]) < 8
+};
diff --git a/test/runtime/samples/oncreate-async-arrow-block/main.html b/test/runtime/samples/oncreate-async-arrow-block/main.html
new file mode 100644
index 0000000000..6a3f4c48f1
--- /dev/null
+++ b/test/runtime/samples/oncreate-async-arrow-block/main.html
@@ -0,0 +1,7 @@
+
diff --git a/test/runtime/samples/oncreate-async-arrow/_config.js b/test/runtime/samples/oncreate-async-arrow/_config.js
new file mode 100644
index 0000000000..a5ed4ad14f
--- /dev/null
+++ b/test/runtime/samples/oncreate-async-arrow/_config.js
@@ -0,0 +1,3 @@
+export default {
+ skip: +(/^v(\d)/.exec(process.version)[1]) < 8
+};
diff --git a/test/runtime/samples/oncreate-async-arrow/main.html b/test/runtime/samples/oncreate-async-arrow/main.html
new file mode 100644
index 0000000000..b37145dd17
--- /dev/null
+++ b/test/runtime/samples/oncreate-async-arrow/main.html
@@ -0,0 +1,5 @@
+
diff --git a/test/runtime/samples/oncreate-async/_config.js b/test/runtime/samples/oncreate-async/_config.js
new file mode 100644
index 0000000000..a5ed4ad14f
--- /dev/null
+++ b/test/runtime/samples/oncreate-async/_config.js
@@ -0,0 +1,3 @@
+export default {
+ skip: +(/^v(\d)/.exec(process.version)[1]) < 8
+};
diff --git a/test/runtime/samples/oncreate-async/main.html b/test/runtime/samples/oncreate-async/main.html
new file mode 100644
index 0000000000..b8b74050b2
--- /dev/null
+++ b/test/runtime/samples/oncreate-async/main.html
@@ -0,0 +1,7 @@
+
diff --git a/test/runtime/samples/set-mutated-data/_config.js b/test/runtime/samples/set-mutated-data/_config.js
new file mode 100644
index 0000000000..bae3fab689
--- /dev/null
+++ b/test/runtime/samples/set-mutated-data/_config.js
@@ -0,0 +1,14 @@
+const data = { foo: 0 };
+
+export default {
+ data,
+
+ html: '0',
+
+ test(assert, component, target) {
+ data.foo = 42;
+ component.set(data);
+
+ assert.htmlEqual(target.innerHTML, '42');
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/set-mutated-data/main.html b/test/runtime/samples/set-mutated-data/main.html
new file mode 100644
index 0000000000..24369f73a4
--- /dev/null
+++ b/test/runtime/samples/set-mutated-data/main.html
@@ -0,0 +1 @@
+{{foo}}
\ No newline at end of file
diff --git a/test/runtime/samples/svg-child-component-declared-namespace-shorthand/_config.js b/test/runtime/samples/svg-child-component-declared-namespace-shorthand/_config.js
index 2944111fd9..37d94a1609 100644
--- a/test/runtime/samples/svg-child-component-declared-namespace-shorthand/_config.js
+++ b/test/runtime/samples/svg-child-component-declared-namespace-shorthand/_config.js
@@ -7,7 +7,7 @@ export default {
},
html: ``,
-
+
test ( assert, component, target ) {
const svg = target.querySelector( 'svg' );
const rect = target.querySelector( 'rect' );
diff --git a/test/server-side-rendering/index.js b/test/server-side-rendering/index.js
index 0082934277..a9bf847b29 100644
--- a/test/server-side-rendering/index.js
+++ b/test/server-side-rendering/index.js
@@ -21,9 +21,9 @@ function tryToReadFile(file) {
describe("ssr", () => {
before(() => {
- require(process.env.COVERAGE
- ? "../../src/server-side-rendering/register.js"
- : "../../ssr/register");
+ require("../../ssr/register")({
+ extensions: ['.svelte', '.html']
+ });
return setupHtmlEqual();
});
@@ -43,7 +43,15 @@ describe("ssr", () => {
(solo ? it.only : it)(dir, () => {
dir = path.resolve("test/server-side-rendering/samples", dir);
try {
- const component = require(`${dir}/main.html`);
+ let component;
+
+ const mainHtmlFile = `${dir}/main.html`;
+ const mainSvelteFile = `${dir}/main.svelte`;
+ if (fs.existsSync(mainHtmlFile)) {
+ component = require(mainHtmlFile);
+ } else if (fs.existsSync(mainSvelteFile)) {
+ component = require(mainSvelteFile);
+ }
const expectedHtml = tryToReadFile(`${dir}/_expected.html`);
const expectedCss = tryToReadFile(`${dir}/_expected.css`) || "";
diff --git a/test/server-side-rendering/samples/component-with-different-extension/Widget.svelte b/test/server-side-rendering/samples/component-with-different-extension/Widget.svelte
new file mode 100644
index 0000000000..460a2a1c01
--- /dev/null
+++ b/test/server-side-rendering/samples/component-with-different-extension/Widget.svelte
@@ -0,0 +1 @@
+i am a widget
diff --git a/test/server-side-rendering/samples/component-with-different-extension/_expected.html b/test/server-side-rendering/samples/component-with-different-extension/_expected.html
new file mode 100644
index 0000000000..3551c5971e
--- /dev/null
+++ b/test/server-side-rendering/samples/component-with-different-extension/_expected.html
@@ -0,0 +1 @@
+
diff --git a/test/server-side-rendering/samples/component-with-different-extension/main.svelte b/test/server-side-rendering/samples/component-with-different-extension/main.svelte
new file mode 100644
index 0000000000..4f02f2f94e
--- /dev/null
+++ b/test/server-side-rendering/samples/component-with-different-extension/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/test/setup.js b/test/setup.js
index f45953b026..8307fdd67f 100644
--- a/test/setup.js
+++ b/test/setup.js
@@ -4,6 +4,8 @@ const path = require('path');
require('console-group').install();
require('source-map-support').install();
+process.env.TEST = true;
+
require.extensions['.js'] = function(module, filename) {
const exports = [];
diff --git a/test/sourcemaps/index.js b/test/sourcemaps/index.js
index f2bc509748..939ae38d86 100644
--- a/test/sourcemaps/index.js
+++ b/test/sourcemaps/index.js
@@ -34,9 +34,11 @@ describe("sourcemaps", () => {
cascade: config.cascade
});
+ const _code = code.replace(/Svelte v\d+\.\d+\.\d+/, match => match.replace(/\d/g, 'x'));
+
fs.writeFileSync(
`${outputFilename}.js`,
- `${code}\n//# sourceMappingURL=output.js.map`
+ `${_code}\n//# sourceMappingURL=output.js.map`
);
fs.writeFileSync(
`${outputFilename}.js.map`,
@@ -62,12 +64,12 @@ describe("sourcemaps", () => {
const locateInSource = getLocator(input);
const smc = new SourceMapConsumer(map);
- const locateInGenerated = getLocator(code);
+ const locateInGenerated = getLocator(_code);
const smcCss = cssMap && new SourceMapConsumer(cssMap);
const locateInGeneratedCss = getLocator(css || '');
- test({ assert, code, map, smc, smcCss, locateInSource, locateInGenerated, locateInGeneratedCss });
+ test({ assert, code: _code, map, smc, smcCss, locateInSource, locateInGenerated, locateInGeneratedCss });
});
});
});
diff --git a/test/validator/samples/binding-input-type-boolean/errors.json b/test/validator/samples/binding-input-type-boolean/errors.json
new file mode 100644
index 0000000000..feed6e0d5d
--- /dev/null
+++ b/test/validator/samples/binding-input-type-boolean/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "'type' attribute must be specified",
+ "loc": {
+ "line": 1,
+ "column": 24
+ },
+ "pos": 24
+}]
\ No newline at end of file
diff --git a/test/validator/samples/binding-input-type-boolean/input.html b/test/validator/samples/binding-input-type-boolean/input.html
new file mode 100644
index 0000000000..6277fd7484
--- /dev/null
+++ b/test/validator/samples/binding-input-type-boolean/input.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/binding-input-static-type/errors.json b/test/validator/samples/binding-input-type-dynamic/errors.json
similarity index 100%
rename from test/validator/samples/binding-input-static-type/errors.json
rename to test/validator/samples/binding-input-type-dynamic/errors.json
diff --git a/test/validator/samples/binding-input-static-type/input.html b/test/validator/samples/binding-input-type-dynamic/input.html
similarity index 100%
rename from test/validator/samples/binding-input-static-type/input.html
rename to test/validator/samples/binding-input-type-dynamic/input.html
diff --git a/test/validator/samples/each-block-invalid-context-destructured/errors.json b/test/validator/samples/each-block-invalid-context-destructured/errors.json
new file mode 100644
index 0000000000..b14ef63251
--- /dev/null
+++ b/test/validator/samples/each-block-invalid-context-destructured/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "'case' is a reserved word in JavaScript and cannot be used here",
+ "loc": {
+ "line": 1,
+ "column": 18
+ },
+ "pos": 18
+}]
\ No newline at end of file
diff --git a/test/validator/samples/each-block-invalid-context-destructured/input.html b/test/validator/samples/each-block-invalid-context-destructured/input.html
new file mode 100644
index 0000000000..ce31634a85
--- /dev/null
+++ b/test/validator/samples/each-block-invalid-context-destructured/input.html
@@ -0,0 +1,3 @@
+{{#each cases as [case]}}
+ {{case.title}}
+{{/each}}
\ No newline at end of file
diff --git a/test/validator/samples/each-block-invalid-context/errors.json b/test/validator/samples/each-block-invalid-context/errors.json
new file mode 100644
index 0000000000..eecb97266b
--- /dev/null
+++ b/test/validator/samples/each-block-invalid-context/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "'case' is a reserved word in JavaScript and cannot be used here",
+ "loc": {
+ "line": 1,
+ "column": 17
+ },
+ "pos": 17
+}]
\ No newline at end of file
diff --git a/test/validator/samples/each-block-invalid-context/input.html b/test/validator/samples/each-block-invalid-context/input.html
new file mode 100644
index 0000000000..212c29ecdc
--- /dev/null
+++ b/test/validator/samples/each-block-invalid-context/input.html
@@ -0,0 +1,3 @@
+{{#each cases as case}}
+ {{case.title}}
+{{/each}}
\ No newline at end of file
diff --git a/test/validator/samples/method-nonexistent-helper/warnings.json b/test/validator/samples/method-nonexistent-helper/warnings.json
index d090c4df94..88a5b7e03c 100644
--- a/test/validator/samples/method-nonexistent-helper/warnings.json
+++ b/test/validator/samples/method-nonexistent-helper/warnings.json
@@ -1,5 +1,5 @@
[{
- "message": "'foo' is an invalid callee (should be one of this.*, event.*, console.*, set, fire, destroy or bar). 'foo' exists on 'helpers', did you put it in the wrong place?",
+ "message": "'foo' is an invalid callee (should be one of this.*, event.*, options.*, console.*, set, fire, destroy or bar). 'foo' exists on 'helpers', did you put it in the wrong place?",
"pos": 18,
"loc": {
"line": 1,
diff --git a/test/validator/samples/method-nonexistent/warnings.json b/test/validator/samples/method-nonexistent/warnings.json
index d8f4e0e0cf..c5117ae98c 100644
--- a/test/validator/samples/method-nonexistent/warnings.json
+++ b/test/validator/samples/method-nonexistent/warnings.json
@@ -1,5 +1,5 @@
[{
- "message": "'foo' is an invalid callee (should be one of this.*, event.*, console.*, set, fire, destroy or bar)",
+ "message": "'foo' is an invalid callee (should be one of this.*, event.*, options.*, console.*, set, fire, destroy or bar)",
"pos": 18,
"loc": {
"line": 1,
diff --git a/test/validator/samples/method-quoted/errors.json b/test/validator/samples/method-quoted/errors.json
new file mode 100644
index 0000000000..fe51488c70
--- /dev/null
+++ b/test/validator/samples/method-quoted/errors.json
@@ -0,0 +1 @@
+[]
diff --git a/test/validator/samples/method-quoted/input.html b/test/validator/samples/method-quoted/input.html
new file mode 100644
index 0000000000..790276eebc
--- /dev/null
+++ b/test/validator/samples/method-quoted/input.html
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/namespace-invalid-unguessable/errors.json b/test/validator/samples/namespace-invalid-unguessable/errors.json
new file mode 100644
index 0000000000..5c5d55ad13
--- /dev/null
+++ b/test/validator/samples/namespace-invalid-unguessable/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "Invalid namespace 'lol'",
+ "pos": 29,
+ "loc": {
+ "line": 3,
+ "column": 2
+ }
+}]
diff --git a/test/validator/samples/namespace-invalid-unguessable/input.html b/test/validator/samples/namespace-invalid-unguessable/input.html
new file mode 100644
index 0000000000..26494e2112
--- /dev/null
+++ b/test/validator/samples/namespace-invalid-unguessable/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/namespace-non-literal/errors.json b/test/validator/samples/namespace-non-literal/errors.json
new file mode 100644
index 0000000000..75e1bd7712
--- /dev/null
+++ b/test/validator/samples/namespace-non-literal/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'namespace' property must be a string literal representing a valid namespace",
+ "pos": 79,
+ "loc": {
+ "line": 5,
+ "column": 2
+ }
+}]
diff --git a/test/validator/samples/namespace-non-literal/input.html b/test/validator/samples/namespace-non-literal/input.html
new file mode 100644
index 0000000000..41bb790c37
--- /dev/null
+++ b/test/validator/samples/namespace-non-literal/input.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-components/errors.json b/test/validator/samples/non-object-literal-components/errors.json
new file mode 100644
index 0000000000..3133a80e5d
--- /dev/null
+++ b/test/validator/samples/non-object-literal-components/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'components' property must be an object literal",
+ "loc": {
+ "line": 3,
+ "column": 2
+ },
+ "pos": 29
+}]
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-components/input.html b/test/validator/samples/non-object-literal-components/input.html
new file mode 100644
index 0000000000..1b863e97a9
--- /dev/null
+++ b/test/validator/samples/non-object-literal-components/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-events/errors.json b/test/validator/samples/non-object-literal-events/errors.json
new file mode 100644
index 0000000000..b0ff728675
--- /dev/null
+++ b/test/validator/samples/non-object-literal-events/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'events' property must be an object literal",
+ "loc": {
+ "line": 3,
+ "column": 2
+ },
+ "pos": 29
+}]
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-events/input.html b/test/validator/samples/non-object-literal-events/input.html
new file mode 100644
index 0000000000..51f0940c17
--- /dev/null
+++ b/test/validator/samples/non-object-literal-events/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-helpers/errors.json b/test/validator/samples/non-object-literal-helpers/errors.json
new file mode 100644
index 0000000000..602f89ff96
--- /dev/null
+++ b/test/validator/samples/non-object-literal-helpers/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'helpers' property must be an object literal",
+ "loc": {
+ "line": 3,
+ "column": 2
+ },
+ "pos": 29
+}]
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-helpers/input.html b/test/validator/samples/non-object-literal-helpers/input.html
new file mode 100644
index 0000000000..196ffa2018
--- /dev/null
+++ b/test/validator/samples/non-object-literal-helpers/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-methods/errors.json b/test/validator/samples/non-object-literal-methods/errors.json
new file mode 100644
index 0000000000..7a7f107f1e
--- /dev/null
+++ b/test/validator/samples/non-object-literal-methods/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'methods' property must be an object literal",
+ "loc": {
+ "line": 3,
+ "column": 2
+ },
+ "pos": 29
+}]
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-methods/input.html b/test/validator/samples/non-object-literal-methods/input.html
new file mode 100644
index 0000000000..662dce59ba
--- /dev/null
+++ b/test/validator/samples/non-object-literal-methods/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-transitions/errors.json b/test/validator/samples/non-object-literal-transitions/errors.json
new file mode 100644
index 0000000000..640706b4ed
--- /dev/null
+++ b/test/validator/samples/non-object-literal-transitions/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "The 'transitions' property must be an object literal",
+ "loc": {
+ "line": 3,
+ "column": 2
+ },
+ "pos": 29
+}]
\ No newline at end of file
diff --git a/test/validator/samples/non-object-literal-transitions/input.html b/test/validator/samples/non-object-literal-transitions/input.html
new file mode 100644
index 0000000000..3acd31fc0f
--- /dev/null
+++ b/test/validator/samples/non-object-literal-transitions/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/slot-attribute-invalid/errors.json b/test/validator/samples/slot-attribute-invalid/errors.json
new file mode 100644
index 0000000000..aea1fa7db1
--- /dev/null
+++ b/test/validator/samples/slot-attribute-invalid/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "Element with a slot='...' attribute must be a descendant of a component or custom element",
+ "loc": {
+ "line": 1,
+ "column": 5
+ },
+ "pos": 5
+}]
diff --git a/test/validator/samples/slot-attribute-invalid/input.html b/test/validator/samples/slot-attribute-invalid/input.html
new file mode 100644
index 0000000000..ed407bb894
--- /dev/null
+++ b/test/validator/samples/slot-attribute-invalid/input.html
@@ -0,0 +1 @@
+invalid
\ No newline at end of file
diff --git a/test/validator/samples/tag-invalid/errors.json b/test/validator/samples/tag-invalid/errors.json
new file mode 100644
index 0000000000..7ce908daee
--- /dev/null
+++ b/test/validator/samples/tag-invalid/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "tag name must be two or more words joined by the '-' character",
+ "loc": {
+ "line": 3,
+ "column": 7
+ },
+ "pos": 34
+}]
\ No newline at end of file
diff --git a/test/validator/samples/tag-invalid/input.html b/test/validator/samples/tag-invalid/input.html
new file mode 100644
index 0000000000..3b6cc30fbe
--- /dev/null
+++ b/test/validator/samples/tag-invalid/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/tag-non-string/errors.json b/test/validator/samples/tag-non-string/errors.json
new file mode 100644
index 0000000000..d617b031ff
--- /dev/null
+++ b/test/validator/samples/tag-non-string/errors.json
@@ -0,0 +1,8 @@
+[{
+ "message": "'tag' must be a string literal",
+ "loc": {
+ "line": 3,
+ "column": 7
+ },
+ "pos": 34
+}]
\ No newline at end of file
diff --git a/test/validator/samples/tag-non-string/input.html b/test/validator/samples/tag-non-string/input.html
new file mode 100644
index 0000000000..bbb14e387c
--- /dev/null
+++ b/test/validator/samples/tag-non-string/input.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/window-binding-invalid/errors.json b/test/validator/samples/window-binding-invalid/errors.json
index f2a36540ec..26d82c444b 100644
--- a/test/validator/samples/window-binding-invalid/errors.json
+++ b/test/validator/samples/window-binding-invalid/errors.json
@@ -1,5 +1,5 @@
[{
- "message": "'potato' is not a valid binding on <:Window> — valid bindings are innerWidth, innerHeight, outerWidth, outerHeight, scrollX or scrollY",
+ "message": "'potato' is not a valid binding on <:Window> — valid bindings are innerWidth, innerHeight, outerWidth, outerHeight, scrollX, scrollY or online",
"loc": {
"line": 1,
"column": 9
diff --git a/test/validator/samples/window-binding-online/errors.json b/test/validator/samples/window-binding-online/errors.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/test/validator/samples/window-binding-online/errors.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/test/validator/samples/window-binding-online/input.html b/test/validator/samples/window-binding-online/input.html
new file mode 100644
index 0000000000..7932cc140b
--- /dev/null
+++ b/test/validator/samples/window-binding-online/input.html
@@ -0,0 +1 @@
+<:Window bind:online/>
\ No newline at end of file
diff --git a/test/validator/samples/window-event-invalid/warnings.json b/test/validator/samples/window-event-invalid/warnings.json
index 20dc4c79fa..5dca33bf5c 100644
--- a/test/validator/samples/window-event-invalid/warnings.json
+++ b/test/validator/samples/window-event-invalid/warnings.json
@@ -1,8 +1,8 @@
[{
- "message": "'resize' is an invalid callee (should be one of this.*, event.*, console.*, set, fire or destroy)",
+ "message": "'resize' is an invalid callee (should be one of this.*, event.*, options.*, console.*, set, fire or destroy)",
"loc": {
"line": 1,
"column": 20
},
"pos": 20
-}]
\ No newline at end of file
+}]
diff --git a/tsconfig.json b/tsconfig.json
index 75be5f0764..8dc5a51c1d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,11 +1,11 @@
{
"compilerOptions": {
- "noImplicitAny": true,
"diagnostics": true,
"noImplicitThis": true,
"noEmitOnError": true,
"allowJs": true,
- "lib": ["es5", "es6", "dom"]
+ "lib": ["es5", "es6", "dom"],
+ "importHelpers": true
},
"target": "ES5",
"include": [
diff --git a/yarn.lock b/yarn.lock
index 89033f2f0b..ae736a946c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3,34 +3,30 @@
"@types/mocha@^2.2.41":
- version "2.2.41"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.41.tgz#e27cf0817153eb9f2713b2d3f6c68f1e1c3ca608"
+ version "2.2.44"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e"
-"@types/node@^6.0.46":
- version "6.0.85"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.85.tgz#ec02bfe54a61044f2be44f13b389c6a0e8ee05ae"
+"@types/node@*", "@types/node@^8.0.17":
+ version "8.0.53"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8"
-"@types/node@^8.0.17":
- version "8.0.19"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.19.tgz#e46e2b0243de7d03f15b26b45c59ebb84f657a4e"
-
-"@types/node@^8.0.24":
- version "8.0.28"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.28.tgz#86206716f8d9251cf41692e384264cbd7058ad60"
+"@types/node@^7.0.18", "@types/node@^7.0.48":
+ version "7.0.48"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.48.tgz#24bfdc0aa82e8f6dbd017159c58094a2e06d0abb"
abab@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
abbrev@1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-acorn-globals@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+acorn-globals@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
dependencies:
- acorn "^4.0.4"
+ acorn "^5.0.0"
acorn-jsx@^3.0.0, acorn-jsx@^3.0.1:
version "3.0.1"
@@ -48,33 +44,33 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-acorn@^4.0.1, acorn@^4.0.4:
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+acorn@^5.0.0, acorn@^5.1.1, acorn@^5.1.2, acorn@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
-acorn@^5.0.1, acorn@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
+acorn@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
-ajv-keywords@^1.0.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+ajv-keywords@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
-ajv@^4.7.0, ajv@^4.9.1:
+ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
-ajv@^5.2.0:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39"
+ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.4.0.tgz#32d1cf08dbc80c432f426f12e10b2511f6b46474"
dependencies:
co "^4.6.0"
fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
- json-stable-stringify "^1.0.1"
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
@@ -88,9 +84,9 @@ amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-ansi-escapes@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
+ansi-escapes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
ansi-regex@^2.0.0:
version "2.1.1"
@@ -124,8 +120,8 @@ append-transform@^0.4.0:
default-require-extensions "^1.0.0"
aproba@^1.0.3:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
archy@^1.0.0:
version "1.0.0"
@@ -212,29 +208,33 @@ aws-sign2@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-aws4@^1.2.1:
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+
+aws4@^1.2.1, aws4@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-babel-code-frame@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
- chalk "^1.1.0"
+ chalk "^1.1.3"
esutils "^2.0.2"
- js-tokens "^3.0.0"
+ js-tokens "^3.0.2"
babel-generator@^6.18.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
dependencies:
babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
detect-indent "^4.0.0"
jsesc "^1.3.0"
- lodash "^4.2.0"
- source-map "^0.5.0"
+ lodash "^4.17.4"
+ source-map "^0.5.6"
trim-right "^1.0.1"
babel-messages@^6.23.0:
@@ -243,49 +243,49 @@ babel-messages@^6.23.0:
dependencies:
babel-runtime "^6.22.0"
-babel-runtime@^6.22.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c"
+babel-runtime@^6.22.0, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
dependencies:
core-js "^2.4.0"
- regenerator-runtime "^0.10.0"
+ regenerator-runtime "^0.11.0"
babel-template@^6.16.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- lodash "^4.2.0"
+ babel-runtime "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ lodash "^4.17.4"
-babel-traverse@^6.18.0, babel-traverse@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
+babel-traverse@^6.18.0, babel-traverse@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
dependencies:
- babel-code-frame "^6.22.0"
+ babel-code-frame "^6.26.0"
babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- debug "^2.2.0"
- globals "^9.0.0"
- invariant "^2.2.0"
- lodash "^4.2.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ debug "^2.6.8"
+ globals "^9.18.0"
+ invariant "^2.2.2"
+ lodash "^4.17.4"
-babel-types@^6.18.0, babel-types@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
+babel-types@^6.18.0, babel-types@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
dependencies:
- babel-runtime "^6.22.0"
+ babel-runtime "^6.26.0"
esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^1.0.1"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
-babylon@^6.17.2, babylon@^6.17.4:
- version "6.17.4"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
balanced-match@^1.0.0:
version "1.0.0"
@@ -298,8 +298,8 @@ bcrypt-pbkdf@^1.0.0:
tweetnacl "^0.14.3"
binary-extensions@^1.0.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b"
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
block-stream@*:
version "0.0.9"
@@ -313,6 +313,18 @@ boom@2.x.x:
dependencies:
hoek "2.x.x"
+boom@4.x.x:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
+ dependencies:
+ hoek "4.x.x"
+
+boom@5.x.x:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
+ dependencies:
+ hoek "4.x.x"
+
brace-expansion@^1.1.7:
version "1.1.8"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
@@ -328,6 +340,10 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+browser-process-hrtime@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
+
browser-resolve@^1.11.0:
version "1.11.2"
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
@@ -387,14 +403,14 @@ camelcase@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-camelcase@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-
camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -406,7 +422,7 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
-chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
@@ -416,14 +432,18 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
+chardet@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.0.tgz#0bbe1355ac44d7a3ed4a925707c4ef70f8190f6c"
+
chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -450,8 +470,8 @@ cli-cursor@^2.1.0:
restore-cursor "^2.0.0"
cli-width@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
cliui@^2.1.0:
version "2.1.0"
@@ -470,8 +490,8 @@ cliui@^3.2.0:
wrap-ansi "^2.0.0"
clone@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
co@^4.6.0:
version "4.6.0"
@@ -482,16 +502,16 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
codecov@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.3.0.tgz#ad25a2c6e0442d13740d9d4ddbb9a3e2714330f4"
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.3.1.tgz#7dda945cd58a1f6081025b5b03ee01a2ef20f86e"
dependencies:
argv "0.0.2"
- request "2.81.0"
+ request "2.77.0"
urlgrey "0.4.4"
color-convert@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
dependencies:
color-name "^1.1.1"
@@ -517,6 +537,12 @@ commander@2.9.0:
dependencies:
graceful-readlink ">= 1.0.0"
+commander@^2.9.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.0.tgz#2f13615c39c687a77926aa68ef25c099db1e72fb"
+ dependencies:
+ "@types/node" "^7.0.48"
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -550,16 +576,16 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
content-type-parser@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
convert-source-map@^1.3.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
core-js@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -586,6 +612,12 @@ cryptiles@2.x.x:
dependencies:
boom "2.x.x"
+cryptiles@3.x.x:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
+ dependencies:
+ boom "5.x.x"
+
css-tree@1.0.0-alpha22:
version "1.0.0-alpha22"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha22.tgz#338a006e331c7b4f9dab7b6af539ece56ff78af2"
@@ -619,18 +651,24 @@ debug-log@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
-debug@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
- dependencies:
- ms "0.7.1"
-
-debug@2.6.8, debug@^2.1.3, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8:
+debug@2.6.8:
version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies:
ms "2.0.0"
+debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.6.8:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.0.1, debug@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ dependencies:
+ ms "2.0.0"
+
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -687,10 +725,18 @@ detect-indent@^4.0.0:
dependencies:
repeating "^2.0.0"
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+
diff@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+diff@^3.1.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+
doctrine@1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@@ -720,6 +766,10 @@ domelementtype@~1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.0.tgz#81fe5df81b3f057052cde3a9fa9bf536a85b9ab0"
+
domhandler@^2.3.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
@@ -754,10 +804,10 @@ electron-download@^3.0.1:
sumchecker "^1.2.0"
electron@^1.4.4:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.0.tgz#896f429b1e664f496f62b9cc7ee6a67a71375f31"
+ version "1.7.9"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.9.tgz#add54e9f8f83ed02f6519ec10135f698b19336cf"
dependencies:
- "@types/node" "^8.0.24"
+ "@types/node" "^7.0.18"
electron-download "^3.0.1"
extract-zip "^1.0.3"
@@ -785,16 +835,16 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-escodegen@^1.6.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+escodegen@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
dependencies:
- esprima "^2.7.1"
- estraverse "^1.9.1"
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
- source-map "~0.2.0"
+ source-map "~0.5.6"
eslint-import-resolver-node@^0.3.1:
version "0.3.1"
@@ -811,14 +861,15 @@ eslint-module-utils@^2.1.1:
pkg-dir "^1.0.0"
eslint-plugin-html@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.1.1.tgz#d6c03796e89ac6b735da6fef9ca9162b423daee3"
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz#ef7093621d3a93de3206fd1f92f347ea9a1a4dfa"
dependencies:
htmlparser2 "^3.8.2"
+ semver "^5.4.1"
eslint-plugin-import@^2.2.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f"
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
dependencies:
builtin-modules "^1.1.1"
contains-path "^0.1.0"
@@ -839,18 +890,18 @@ eslint-scope@^3.7.1:
estraverse "^4.1.1"
eslint@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.3.0.tgz#fcd7c96376bbf34c85ee67ed0012a299642b108f"
+ version "4.11.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34"
dependencies:
- ajv "^5.2.0"
+ ajv "^5.3.0"
babel-code-frame "^6.22.0"
- chalk "^1.1.3"
+ chalk "^2.1.0"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
- debug "^2.6.8"
+ debug "^3.0.1"
doctrine "^2.0.0"
eslint-scope "^3.7.1"
- espree "^3.4.3"
+ espree "^3.5.2"
esquery "^1.0.0"
estraverse "^4.2.0"
esutils "^2.0.2"
@@ -862,8 +913,8 @@ eslint@^4.3.0:
imurmurhash "^0.1.4"
inquirer "^3.0.6"
is-resolvable "^1.0.0"
- js-yaml "^3.8.4"
- json-stable-stringify "^1.0.1"
+ js-yaml "^3.9.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
lodash "^4.17.4"
minimatch "^3.0.2"
@@ -871,24 +922,25 @@ eslint@^4.3.0:
natural-compare "^1.4.0"
optionator "^0.8.2"
path-is-inside "^1.0.2"
- pluralize "^4.0.0"
+ pluralize "^7.0.0"
progress "^2.0.0"
require-uncached "^1.0.3"
semver "^5.3.0"
+ strip-ansi "^4.0.0"
strip-json-comments "~2.0.1"
table "^4.0.1"
text-table "~0.2.0"
-espree@^3.4.3:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
+espree@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca"
dependencies:
- acorn "^5.0.1"
+ acorn "^5.2.1"
acorn-jsx "^3.0.0"
-esprima@^2.7.1:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+esprima@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
esprima@^4.0.0:
version "4.0.0"
@@ -907,10 +959,6 @@ esrecurse@^4.1.0:
estraverse "^4.1.0"
object-assign "^4.0.1"
-estraverse@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
@@ -923,9 +971,9 @@ estree-walker@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
-estree-walker@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.0.tgz#aae3b57c42deb8010e349c892462f0e71c5dd1aa"
+estree-walker@^0.5.0, estree-walker@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.1.tgz#64fc375053abc6f57d73e9bd2f004644ad3c5854"
esutils@^2.0.2:
version "2.0.2"
@@ -955,17 +1003,17 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-extend@~3.0.0:
+extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
external-editor@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
dependencies:
+ chardet "^0.4.0"
iconv-lite "^0.4.17"
- jschardet "^1.4.2"
- tmp "^0.0.31"
+ tmp "^0.0.33"
extglob@^0.3.1:
version "0.3.2"
@@ -974,11 +1022,11 @@ extglob@^0.3.1:
is-extglob "^1.0.0"
extract-zip@^1.0.3:
- version "1.6.5"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440"
+ version "1.6.6"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c"
dependencies:
concat-stream "1.6.0"
- debug "2.2.0"
+ debug "2.6.9"
mkdirp "0.5.0"
yauzl "2.4.1"
@@ -990,6 +1038,10 @@ fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+
fast-levenshtein@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
@@ -1049,8 +1101,8 @@ find-up@^2.0.0, find-up@^2.1.0:
locate-path "^2.0.0"
flat-cache@^1.2.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481"
dependencies:
circular-json "^0.3.1"
del "^2.0.2"
@@ -1086,6 +1138,14 @@ form-data@~2.1.1:
combined-stream "^1.0.5"
mime-types "^2.1.12"
+form-data@~2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
fs-extra@^0.30.0:
version "0.30.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
@@ -1101,11 +1161,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
fsevents@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
dependencies:
nan "^2.3.0"
- node-pre-gyp "^0.6.36"
+ node-pre-gyp "^0.6.39"
fstream-ignore@^1.0.5:
version "1.0.5"
@@ -1125,8 +1185,8 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
rimraf "2"
function-bind@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
function-source@^0.1.0:
version "0.1.0"
@@ -1149,6 +1209,16 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ dependencies:
+ is-property "^1.0.0"
+
get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
@@ -1202,7 +1272,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
-globals@^9.0.0, globals@^9.17.0:
+globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -1230,8 +1300,8 @@ growl@1.9.2:
resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
handlebars@^4.0.3:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
dependencies:
async "^1.4.0"
optimist "^0.6.1"
@@ -1243,6 +1313,19 @@ har-schema@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
har-validator@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -1250,6 +1333,13 @@ har-validator@~4.2.1:
ajv "^4.9.1"
har-schema "^1.0.5"
+har-validator@~5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
+ dependencies:
+ ajv "^5.1.0"
+ har-schema "^2.0.0"
+
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -1274,7 +1364,7 @@ has@^1.0.1:
dependencies:
function-bind "^1.0.2"
-hawk@~3.1.3:
+hawk@3.1.3, hawk@~3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
dependencies:
@@ -1283,21 +1373,44 @@ hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
+hawk@~6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
+ dependencies:
+ boom "4.x.x"
+ cryptiles "3.x.x"
+ hoek "4.x.x"
+ sntp "2.x.x"
+
+he@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+
hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+hoek@4.x.x:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
+
home-path@^1.0.1:
version "1.0.5"
resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f"
+homedir-polyfill@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+ dependencies:
+ parse-passwd "^1.0.0"
+
hosted-git-info@^2.1.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
html-encoding-sniffer@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
dependencies:
whatwg-encoding "^1.0.1"
@@ -1320,17 +1433,21 @@ http-signature@~1.1.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-iconv-lite@0.4.13:
- version "0.4.13"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
-iconv-lite@^0.4.17:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
+iconv-lite@0.4.19, iconv-lite@^0.4.17:
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
ignore@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
imurmurhash@^0.1.4:
version "0.1.4"
@@ -1354,14 +1471,14 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1,
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
ini@~1.3.0:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
inquirer@^3.0.6:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.1.tgz#06ceb0f540f45ca548c17d6840959878265fa175"
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
- ansi-escapes "^2.0.0"
+ ansi-escapes "^3.0.0"
chalk "^2.0.0"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
@@ -1376,7 +1493,7 @@ inquirer@^3.0.6:
strip-ansi "^4.0.0"
through "^2.3.6"
-invariant@^2.2.0:
+invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
@@ -1397,8 +1514,8 @@ is-binary-path@^1.0.0:
binary-extensions "^1.0.0"
is-buffer@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
is-builtin-module@^1.0.0:
version "1.0.0"
@@ -1450,6 +1567,15 @@ is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+is-my-json-valid@^2.12.4:
+ version "2.16.1"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -1490,6 +1616,10 @@ is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
is-resolvable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
@@ -1534,56 +1664,56 @@ istanbul-lib-coverage@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
-istanbul-lib-hook@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc"
+istanbul-lib-hook@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
dependencies:
append-transform "^0.4.0"
-istanbul-lib-instrument@^1.7.4:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8"
+istanbul-lib-instrument@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
- babylon "^6.17.4"
+ babylon "^6.18.0"
istanbul-lib-coverage "^1.1.1"
semver "^5.3.0"
-istanbul-lib-report@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9"
+istanbul-lib-report@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
dependencies:
istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
-istanbul-lib-source-maps@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c"
+istanbul-lib-source-maps@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
dependencies:
- debug "^2.6.3"
+ debug "^3.1.0"
istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
-istanbul-reports@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e"
+istanbul-reports@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
dependencies:
handlebars "^4.0.3"
-js-tokens@^3.0.0:
+js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@^3.8.4:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
+js-yaml@^3.9.1:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -1592,34 +1722,32 @@ jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-jschardet@^1.4.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.0.tgz#a61f310306a5a71188e1b1acd08add3cfbb08b1e"
-
jsdom@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.1.0.tgz#6c48d7a48ffc5c300283c312904d15da8360509b"
+ version "11.4.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.4.0.tgz#a3941a9699cbb0d61f8ab86f6f28f4ad5ea60d04"
dependencies:
abab "^1.0.3"
- acorn "^4.0.4"
- acorn-globals "^3.1.0"
+ acorn "^5.1.2"
+ acorn-globals "^4.0.0"
array-equal "^1.0.0"
+ browser-process-hrtime "^0.1.2"
content-type-parser "^1.0.1"
cssom ">= 0.3.2 < 0.4.0"
cssstyle ">= 0.2.37 < 0.3.0"
- escodegen "^1.6.1"
+ domexception "^1.0.0"
+ escodegen "^1.9.0"
html-encoding-sniffer "^1.0.1"
- nwmatcher "^1.4.1"
+ nwmatcher "^1.4.3"
parse5 "^3.0.2"
pn "^1.0.0"
- request "^2.79.0"
+ request "^2.83.0"
request-promise-native "^1.0.3"
sax "^1.2.1"
symbol-tree "^3.2.1"
- tough-cookie "^2.3.2"
- webidl-conversions "^4.0.0"
+ tough-cookie "^2.3.3"
+ webidl-conversions "^4.0.2"
whatwg-encoding "^1.0.1"
- whatwg-url "^6.1.0"
+ whatwg-url "^6.3.0"
xml-name-validator "^2.0.1"
jsesc@^0.5.0:
@@ -1638,6 +1766,10 @@ json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+
json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
@@ -1662,6 +1794,10 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -1799,7 +1935,7 @@ lodash@3.0.x:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.0.1.tgz#14d49028a38bc740241d11e2ecd57ec06d73c19a"
-lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0:
+lodash@^4.13.1, lodash@^4.17.4, lodash@^4.3.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -1833,18 +1969,16 @@ magic-string@^0.14.0:
dependencies:
vlq "^0.2.1"
-magic-string@^0.19.0:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
- dependencies:
- vlq "^0.2.1"
-
-magic-string@^0.22.3:
+magic-string@^0.22.3, magic-string@^0.22.4:
version "0.22.4"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff"
dependencies:
vlq "^0.2.1"
+make-error@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96"
+
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
@@ -1908,15 +2042,15 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-mime-db@~1.29.0:
- version "1.29.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878"
+mime-db@~1.30.0:
+ version "1.30.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
-mime-types@^2.1.12, mime-types@~2.1.7:
- version "2.1.16"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23"
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7:
+ version "2.1.17"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
dependencies:
- mime-db "~1.29.0"
+ mime-db "~1.30.0"
mimic-fn@^1.0.0:
version "1.1.0"
@@ -1928,7 +2062,7 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@0.0.8, minimist@~0.0.1:
+minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
@@ -1936,6 +2070,22 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+
+minipass@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.1.tgz#5ada97538b1027b4cf7213432428578cb564011f"
+ dependencies:
+ yallist "^3.0.0"
+
+minizlib@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.0.4.tgz#8ebb51dd8bbe40b0126b5633dbb36b284a2f523c"
+ dependencies:
+ minipass "^2.2.1"
+
minstache@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minstache/-/minstache-1.2.0.tgz#ff1cc403ac2844f68dbf18c662129be7eb0efc41"
@@ -1955,8 +2105,8 @@ mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1:
minimist "0.0.8"
mocha@^3.2.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.0.tgz#1328567d2717f997030f8006234bce9b8cd72465"
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
dependencies:
browser-stdout "1.3.0"
commander "2.9.0"
@@ -1965,15 +2115,12 @@ mocha@^3.2.0:
escape-string-regexp "1.0.5"
glob "7.1.1"
growl "1.9.2"
+ he "1.1.1"
json3 "3.3.2"
lodash.create "3.1.1"
mkdirp "0.5.1"
supports-color "3.1.2"
-ms@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -1983,8 +2130,8 @@ mute-stream@0.0.7:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
nan@^2.3.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
natural-compare@^1.4.0:
version "1.4.0"
@@ -2008,15 +2155,17 @@ nightmare@^2.10.0:
sliced "1.0.1"
split2 "^2.0.1"
-node-pre-gyp@^0.6.36:
- version "0.6.36"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786"
+node-pre-gyp@^0.6.39:
+ version "0.6.39"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
dependencies:
+ detect-libc "^1.0.2"
+ hawk "3.1.3"
mkdirp "^0.5.1"
nopt "^4.0.1"
npmlog "^4.0.2"
rc "^1.1.7"
- request "^2.81.0"
+ request "2.81.0"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^2.2.1"
@@ -2029,6 +2178,10 @@ node-resolve@^1.3.3:
is-builtin-module "^1.0.0"
lodash "^4.13.1"
+node-uuid@~1.4.7:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
+
nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
@@ -2082,13 +2235,13 @@ number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-nwmatcher@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f"
+nwmatcher@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
nyc@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.1.0.tgz#d6b3c5e16892a25af63138ba484676aa8a22eda7"
+ version "11.3.0"
+ resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.3.0.tgz#a42bc17b3cfa41f7b15eb602bc98b2633ddd76f0"
dependencies:
archy "^1.0.0"
arrify "^1.0.1"
@@ -2101,11 +2254,11 @@ nyc@^11.1.0:
foreground-child "^1.5.3"
glob "^7.0.6"
istanbul-lib-coverage "^1.1.1"
- istanbul-lib-hook "^1.0.7"
- istanbul-lib-instrument "^1.7.4"
- istanbul-lib-report "^1.1.1"
- istanbul-lib-source-maps "^1.2.1"
- istanbul-reports "^1.1.1"
+ istanbul-lib-hook "^1.1.0"
+ istanbul-lib-instrument "^1.9.1"
+ istanbul-lib-report "^1.1.2"
+ istanbul-lib-source-maps "^1.2.2"
+ istanbul-reports "^1.1.3"
md5-hex "^1.2.0"
merge-source-map "^1.0.2"
micromatch "^2.3.11"
@@ -2113,12 +2266,12 @@ nyc@^11.1.0:
resolve-from "^2.0.0"
rimraf "^2.5.4"
signal-exit "^3.0.1"
- spawn-wrap "^1.3.8"
+ spawn-wrap "=1.3.8"
test-exclude "^4.1.1"
- yargs "^8.0.1"
- yargs-parser "^5.0.0"
+ yargs "^10.0.3"
+ yargs-parser "^8.0.0"
-oauth-sign@~0.8.1:
+oauth-sign@~0.8.1, oauth-sign@~0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
@@ -2179,7 +2332,7 @@ os-locale@^2.0.0:
lcid "^1.0.0"
mem "^1.1.0"
-os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -2219,11 +2372,15 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+
parse5@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510"
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
dependencies:
- "@types/node" "^6.0.46"
+ "@types/node" "*"
path-exists@^2.0.0, path-exists@^2.1.0:
version "2.1.0"
@@ -2273,6 +2430,10 @@ performance-now@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -2293,9 +2454,9 @@ pkg-dir@^1.0.0:
dependencies:
find-up "^1.0.0"
-pluralize@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762"
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
pn@^1.0.0:
version "1.0.0"
@@ -2309,9 +2470,9 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-prettier@^1.4.1:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe"
+prettier@^1.7.0:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8"
pretty-bytes@^1.0.2:
version "1.0.4"
@@ -2343,10 +2504,22 @@ punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+punycode@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+
+qs@~6.3.0:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+
qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+qs@~6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+
randomatic@^1.1.3:
version "1.1.7"
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
@@ -2355,8 +2528,8 @@ randomatic@^1.1.3:
kind-of "^4.0.0"
rc@^1.1.2, rc@^1.1.7:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
dependencies:
deep-extend "~0.4.0"
ini "~1.3.0"
@@ -2430,20 +2603,27 @@ redent@^1.0.0:
indent-string "^2.1.0"
strip-indent "^1.0.1"
-regenerator-runtime@^0.10.0:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
+regenerator-runtime@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
regex-cache@^0.4.2:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
dependencies:
is-equal-shallow "^0.1.3"
- is-primitive "^2.0.0"
+
+reify@^0.12.3:
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/reify/-/reify-0.12.3.tgz#b1aa0c196e7dc7fb7e9ad42b87c1e10fe7f97f97"
+ dependencies:
+ acorn "~5.1.1"
+ minizlib "^1.0.3"
+ semver "^5.3.0"
remove-trailing-separator@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
repeat-element@^1.1.2:
version "1.1.2"
@@ -2466,14 +2646,39 @@ request-promise-core@1.1.1:
lodash "^4.13.1"
request-promise-native@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.4.tgz#86988ec8eee408e45579fce83bfd05b3adf9a155"
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
dependencies:
request-promise-core "1.1.1"
stealthy-require "^1.1.0"
- tough-cookie ">=2.3.0"
+ tough-cookie ">=2.3.3"
+
+request@2.77.0:
+ version "2.77.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.77.0.tgz#2b00d82030ededcc97089ffa5d8810a9c2aa314b"
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ node-uuid "~1.4.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
-request@2.81.0, request@^2.45.0, request@^2.79.0, request@^2.81.0:
+request@2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@@ -2500,6 +2705,33 @@ request@2.81.0, request@^2.45.0, request@^2.79.0, request@^2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
+request@^2.45.0, request@^2.83.0:
+ version "2.83.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.6.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.1"
+ forever-agent "~0.6.1"
+ form-data "~2.3.1"
+ har-validator "~5.0.3"
+ hawk "~6.0.2"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.17"
+ oauth-sign "~0.8.2"
+ performance-now "^2.1.0"
+ qs "~6.5.1"
+ safe-buffer "^5.1.1"
+ stringstream "~0.0.5"
+ tough-cookie "~2.3.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.1.0"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -2531,9 +2763,9 @@ resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
+resolve@^1.1.6, resolve@^1.2.0, resolve@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
dependencies:
path-parse "^1.0.5"
@@ -2551,8 +2783,8 @@ right-align@^0.1.1:
align-text "^0.1.1"
rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
glob "^7.0.5"
@@ -2564,13 +2796,13 @@ rollup-plugin-buble@^0.15.0:
rollup-pluginutils "^1.5.0"
rollup-plugin-commonjs@^8.0.2:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.1.0.tgz#8ac9a87e6ea4c0d136e3e0e25ef41058957622b0"
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz#27e5b9069ff94005bb01e01bb46a1e4873784677"
dependencies:
- acorn "^4.0.1"
- estree-walker "^0.3.0"
- magic-string "^0.19.0"
- resolve "^1.1.7"
+ acorn "^5.2.1"
+ estree-walker "^0.5.0"
+ magic-string "^0.22.4"
+ resolve "^1.4.0"
rollup-pluginutils "^2.0.1"
rollup-plugin-json@^2.1.0:
@@ -2588,6 +2820,14 @@ rollup-plugin-node-resolve@^3.0.0:
is-module "^1.0.0"
resolve "^1.1.6"
+rollup-plugin-replace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.0.0.tgz#19074089c8ed57184b8cc64e967a03d095119277"
+ dependencies:
+ magic-string "^0.22.4"
+ minimatch "^3.0.2"
+ rollup-pluginutils "^2.0.1"
+
rollup-plugin-typescript@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/rollup-plugin-typescript/-/rollup-plugin-typescript-0.8.1.tgz#2ff7eecc21cf6bb2b43fc27e5b688952ce71924a"
@@ -2644,7 +2884,7 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -2652,7 +2892,7 @@ sax@^1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
@@ -2684,9 +2924,11 @@ single-line-log@^1.1.2:
dependencies:
string-width "^1.0.1"
-slice-ansi@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
sliced@0.0.5:
version "0.0.5"
@@ -2706,9 +2948,15 @@ sntp@1.x.x:
dependencies:
hoek "2.x.x"
-source-map-support@^0.4.8:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
+sntp@2.x.x:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
+ dependencies:
+ hoek "4.x.x"
+
+source-map-support@^0.4.0, source-map-support@^0.4.8:
+ version "0.4.18"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
dependencies:
source-map "^0.5.6"
@@ -2718,17 +2966,11 @@ source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1:
- version "0.5.6"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-
-source-map@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
- dependencies:
- amdefine ">=0.0.4"
+source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-spawn-wrap@^1.3.8:
+spawn-wrap@=1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31"
dependencies:
@@ -2758,8 +3000,8 @@ speedometer@~0.1.2:
resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
split2@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/split2/-/split2-2.1.1.tgz#7a1f551e176a90ecd3345f7246a0cfe175ef4fd0"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
dependencies:
through2 "^2.0.2"
@@ -2793,7 +3035,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0, string-width@^2.1.0:
+string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
@@ -2810,7 +3052,7 @@ string_decoder@~1.0.3:
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4:
+stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
@@ -2846,7 +3088,7 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
-strip-json-comments@~2.0.1:
+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -2857,7 +3099,7 @@ sumchecker@^1.2.0:
debug "^2.2.0"
es6-promise "^4.0.5"
-supports-color@3.1.2, supports-color@^3.1.2:
+supports-color@3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
dependencies:
@@ -2867,9 +3109,15 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+supports-color@^3.1.2:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ dependencies:
+ has-flag "^1.0.0"
+
supports-color@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836"
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
dependencies:
has-flag "^2.0.0"
@@ -2878,19 +3126,19 @@ symbol-tree@^3.2.1:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
table@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435"
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
dependencies:
- ajv "^4.7.0"
- ajv-keywords "^1.0.0"
- chalk "^1.1.1"
- lodash "^4.0.0"
- slice-ansi "0.0.4"
- string-width "^2.0.0"
+ ajv "^5.2.3"
+ ajv-keywords "^2.1.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
tar-pack@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
dependencies:
debug "^2.2.0"
fstream "^1.0.10"
@@ -2949,25 +3197,27 @@ tippex@^2.1.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tippex/-/tippex-2.3.1.tgz#a2fd5b7087d7cbfb20c9806a6c16108c2c0fafda"
-tmp@^0.0.31:
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
dependencies:
- os-tmpdir "~1.0.1"
+ os-tmpdir "~1.0.2"
-to-fast-properties@^1.0.1:
+to-fast-properties@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-tough-cookie@>=2.3.0, tough-cookie@^2.3.2, tough-cookie@~2.3.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
dependencies:
punycode "^1.4.1"
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+tr46@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ dependencies:
+ punycode "^2.1.0"
trim-newlines@^1.0.0:
version "1.0.0"
@@ -2981,12 +3231,42 @@ tryit@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+ts-node@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69"
+ dependencies:
+ arrify "^1.0.0"
+ chalk "^2.0.0"
+ diff "^3.1.0"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.0"
+ tsconfig "^6.0.0"
+ v8flags "^3.0.0"
+ yn "^2.0.0"
+
+tsconfig@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
+ dependencies:
+ strip-bom "^3.0.0"
+ strip-json-comments "^2.0.0"
+
+tslib@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6"
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
dependencies:
safe-buffer "^5.0.1"
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -3005,9 +3285,9 @@ typescript@^1.8.9:
version "1.8.10"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e"
-typescript@^2.3.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844"
+typescript@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631"
uglify-js@^2.6:
version "2.8.29"
@@ -3034,10 +3314,16 @@ util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-uuid@^3.0.0:
+uuid@^3.0.0, uuid@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+v8flags@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
validate-npm-package-license@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
@@ -3054,25 +3340,25 @@ verror@1.10.0:
extsprintf "^1.2.0"
vlq@^0.2.1:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1"
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
-webidl-conversions@^4.0.0, webidl-conversions@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0"
+webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
whatwg-encoding@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3"
dependencies:
- iconv-lite "0.4.13"
+ iconv-lite "0.4.19"
-whatwg-url@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.1.0.tgz#5fc8279b93d75483b9ced8b26239854847a18578"
+whatwg-url@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.3.0.tgz#597ee5488371abe7922c843397ddec1ae94c048d"
dependencies:
lodash.sortby "^4.7.0"
- tr46 "~0.0.3"
+ tr46 "^1.0.0"
webidl-conversions "^4.0.1"
which-module@^2.0.0:
@@ -3136,16 +3422,16 @@ xml-name-validator@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
xtend@~2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
dependencies:
object-keys "~0.4.0"
-xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
@@ -3154,35 +3440,32 @@ yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-yargs-parser@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
- dependencies:
- camelcase "^3.0.0"
+yallist@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
-yargs-parser@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+yargs-parser@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.0.0.tgz#21d476330e5a82279a4b881345bf066102e219c6"
dependencies:
camelcase "^4.1.0"
-yargs@^8.0.1:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+yargs@^10.0.3:
+ version "10.0.3"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae"
dependencies:
- camelcase "^4.1.0"
cliui "^3.2.0"
decamelize "^1.1.1"
+ find-up "^2.1.0"
get-caller-file "^1.0.1"
os-locale "^2.0.0"
- read-pkg-up "^2.0.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^2.0.0"
which-module "^2.0.0"
y18n "^3.2.1"
- yargs-parser "^7.0.0"
+ yargs-parser "^8.0.0"
yargs@~3.10.0:
version "3.10.0"
@@ -3198,3 +3481,7 @@ yauzl@2.4.1:
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
dependencies:
fd-slicer "~1.0.1"
+
+yn@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"