From ef2a2b329aee99d03db3db5f5fd493cb7f57a05a Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 10 Sep 2017 10:40:23 -0400 Subject: [PATCH] use nightmare to test custom element stuff --- .travis.yml | 13 +- package.json | 2 + test/custom-elements/assert.js | 3 + test/custom-elements/index.js | 102 +++++ .../samples/html-slots/main.html} | 0 .../samples/html-slots/test.js | 17 + .../samples/html/main.html} | 0 test/custom-elements/samples/html/test.js | 12 + .../samples/new-styled/main.html} | 4 +- .../samples/new-styled/test.js | 19 + test/custom-elements/samples/new/main.html | 7 + test/custom-elements/samples/new/test.js | 18 + .../samples/custom-element-basic/_config.js | 5 - .../custom-element-basic/expected-bundle.js | 262 ------------ .../samples/custom-element-basic/expected.js | 91 ----- .../js/samples/custom-element-slot/_config.js | 5 - .../custom-element-slot/expected-bundle.js | 278 ------------- .../samples/custom-element-slot/expected.js | 103 ----- .../samples/custom-element-styled/_config.js | 5 - .../custom-element-styled/expected-bundle.js | 263 ------------ .../samples/custom-element-styled/expected.js | 92 ----- yarn.lock | 373 +++++++++++++++++- 22 files changed, 555 insertions(+), 1119 deletions(-) create mode 100644 test/custom-elements/assert.js create mode 100644 test/custom-elements/index.js rename test/{js/samples/custom-element-slot/input.html => custom-elements/samples/html-slots/main.html} (100%) create mode 100644 test/custom-elements/samples/html-slots/test.js rename test/{js/samples/custom-element-basic/input.html => custom-elements/samples/html/main.html} (100%) create mode 100644 test/custom-elements/samples/html/test.js rename test/{js/samples/custom-element-styled/input.html => custom-elements/samples/new-styled/main.html} (69%) create mode 100644 test/custom-elements/samples/new-styled/test.js create mode 100644 test/custom-elements/samples/new/main.html create mode 100644 test/custom-elements/samples/new/test.js delete mode 100644 test/js/samples/custom-element-basic/_config.js delete mode 100644 test/js/samples/custom-element-basic/expected-bundle.js delete mode 100644 test/js/samples/custom-element-basic/expected.js delete mode 100644 test/js/samples/custom-element-slot/_config.js delete mode 100644 test/js/samples/custom-element-slot/expected-bundle.js delete mode 100644 test/js/samples/custom-element-slot/expected.js delete mode 100644 test/js/samples/custom-element-styled/_config.js delete mode 100644 test/js/samples/custom-element-styled/expected-bundle.js delete mode 100644 test/js/samples/custom-element-styled/expected.js diff --git a/.travis.yml b/.travis.yml index 862286e395..5aba7e8a73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,19 @@ language: node_js node_js: - "6" - "node" + env: global: - BUILD_TIMEOUT=10000 -install: npm install + +addons: + apt: + packages: + - xvfb + +install: + - export DISPLAY=':99.0' + - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & + - npm install + after_success: npm run codecov diff --git a/package.json b/package.json index 02e0e8fcd1..dced20bd44 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "locate-character": "^2.0.0", "magic-string": "^0.22.3", "mocha": "^3.2.0", + "nightmare": "^2.10.0", "node-resolve": "^1.3.3", "nyc": "^11.1.0", "prettier": "^1.4.1", @@ -65,6 +66,7 @@ "rollup-plugin-json": "^2.1.0", "rollup-plugin-node-resolve": "^3.0.0", "rollup-plugin-typescript": "^0.8.1", + "rollup-plugin-virtual": "^1.0.1", "rollup-watch": "^4.3.1", "source-map": "^0.5.6", "source-map-support": "^0.4.8", diff --git a/test/custom-elements/assert.js b/test/custom-elements/assert.js new file mode 100644 index 0000000000..3cb3918d50 --- /dev/null +++ b/test/custom-elements/assert.js @@ -0,0 +1,3 @@ +export function equal(a, b, message) { + if (a != b) throw new Error(message || `Expected ${a} to equal ${b}`); +} \ No newline at end of file diff --git a/test/custom-elements/index.js b/test/custom-elements/index.js new file mode 100644 index 0000000000..3dc3902097 --- /dev/null +++ b/test/custom-elements/index.js @@ -0,0 +1,102 @@ +import * as fs from 'fs'; +import * as http from 'http'; +import { rollup } from 'rollup'; +import virtual from 'rollup-plugin-virtual'; +import Nightmare from 'nightmare'; +import { + showOutput, + loadConfig, + loadSvelte, + env, + setupHtmlEqual, + spaces +} from "../helpers.js"; + +const page = ` + +
+ + +`; + +const assert = fs.readFileSync('test/custom-elements/assert.js', 'utf-8'); + +describe.only('custom-elements', () => { + const nightmare = new Nightmare({ show: false }); + + let svelte; + let server; + let bundle; + + before(() => { + svelte = loadSvelte(); + + return new Promise((fulfil) => { + server = http.createServer((req, res) => { + if (req.url === '/') { + res.end(page); + } + + if (req.url === '/bundle.js') { + res.end(bundle); + } + }); + + server.listen('6789', () => { + fulfil(); + }); + }); + }); + + after(() => { + server.close(); + }); + + fs.readdirSync('test/custom-elements/samples').forEach(dir => { + if (dir[0] === '.') return; + + it(dir, () => { + return rollup({ + input: `test/custom-elements/samples/${dir}/test.js`, + plugins: [ + { + transform(code, id) { + if (id.endsWith('.html')) { + const compiled = svelte.compile(code, { + customElement: true + }); + + return { + code: compiled.code, + map: compiled.map + }; + } + } + }, + + virtual({ + assert + }) + ] + }) + .then(bundle => bundle.generate({ format: 'iife', name: 'test' })) + .then(generated => { + bundle = generated.code; + + return nightmare + .goto('http://localhost:6789') + .evaluate(() => { + return test(document.querySelector('main')); + }) + .then(result => { + if (result) console.log(result); + }) + .catch(message => { + throw new Error(message); + }); + }); + + + }); + }); +}); \ No newline at end of file diff --git a/test/js/samples/custom-element-slot/input.html b/test/custom-elements/samples/html-slots/main.html similarity index 100% rename from test/js/samples/custom-element-slot/input.html rename to test/custom-elements/samples/html-slots/main.html diff --git a/test/custom-elements/samples/html-slots/test.js b/test/custom-elements/samples/html-slots/test.js new file mode 100644 index 0000000000..87cfd2029d --- /dev/null +++ b/test/custom-elements/samples/html-slots/test.js @@ -0,0 +1,17 @@ +import * as assert from 'assert'; +import './main.html'; + +export default function (target) { + target.innerHTML = ` + + slotted + `; + + const el = target.querySelector('custom-element'); + + const div = el.shadowRoot.children[0]; + const [slot0, slot1] = div.children; + + assert.equal(slot0.assignedNodes()[1], target.querySelector('strong')); + assert.equal(slot1.assignedNodes().length, 0); +} \ No newline at end of file diff --git a/test/js/samples/custom-element-basic/input.html b/test/custom-elements/samples/html/main.html similarity index 100% rename from test/js/samples/custom-element-basic/input.html rename to test/custom-elements/samples/html/main.html diff --git a/test/custom-elements/samples/html/test.js b/test/custom-elements/samples/html/test.js new file mode 100644 index 0000000000..a9aa2c7129 --- /dev/null +++ b/test/custom-elements/samples/html/test.js @@ -0,0 +1,12 @@ +import * as assert from 'assert'; +import './main.html'; + +export default function (target) { + target.innerHTML = ''; + const el = target.querySelector('custom-element'); + + assert.equal(el.get('name'), 'world'); + + const h1 = el.shadowRoot.querySelector('h1'); + assert.equal(h1.textContent, 'Hello world!'); +} \ No newline at end of file diff --git a/test/js/samples/custom-element-styled/input.html b/test/custom-elements/samples/new-styled/main.html similarity index 69% rename from test/js/samples/custom-element-styled/input.html rename to test/custom-elements/samples/new-styled/main.html index 78c7ad685b..4163b0732d 100644 --- a/test/js/samples/custom-element-styled/input.html +++ b/test/custom-elements/samples/new-styled/main.html @@ -1,7 +1,7 @@ -

Hello {{name}}!

+

styled

diff --git a/test/custom-elements/samples/new-styled/test.js b/test/custom-elements/samples/new-styled/test.js new file mode 100644 index 0000000000..6bb37d7a2a --- /dev/null +++ b/test/custom-elements/samples/new-styled/test.js @@ -0,0 +1,19 @@ +import * as assert from 'assert'; +import CustomElement from './main.html'; + +export default function (target) { + target.innerHTML = '

unstyled

'; + + new CustomElement({ + target + }); + + const unstyled = target.querySelector('p'); + const styled = target.querySelector('custom-element').shadowRoot.querySelector('p'); + + assert.equal(unstyled.textContent, 'unstyled'); + assert.equal(styled.textContent, 'styled'); + + assert.equal(getComputedStyle(unstyled).color, 'rgb(0, 0, 0)'); + assert.equal(getComputedStyle(styled).color, 'rgb(255, 0, 0)'); +} \ No newline at end of file diff --git a/test/custom-elements/samples/new/main.html b/test/custom-elements/samples/new/main.html new file mode 100644 index 0000000000..6cc7a9e7af --- /dev/null +++ b/test/custom-elements/samples/new/main.html @@ -0,0 +1,7 @@ +

Hello {{name}}!

+ + \ No newline at end of file diff --git a/test/custom-elements/samples/new/test.js b/test/custom-elements/samples/new/test.js new file mode 100644 index 0000000000..ff27f52130 --- /dev/null +++ b/test/custom-elements/samples/new/test.js @@ -0,0 +1,18 @@ +import * as assert from 'assert'; +import CustomElement from './main.html'; + +export default function (target) { + new CustomElement({ + target, + data: { + name: 'world' + } + }); + + assert.equal(target.innerHTML, ''); + + const el = target.querySelector('custom-element'); + const h1 = el.shadowRoot.querySelector('h1'); + + assert.equal(h1.textContent, 'Hello world!'); +} \ No newline at end of file diff --git a/test/js/samples/custom-element-basic/_config.js b/test/js/samples/custom-element-basic/_config.js deleted file mode 100644 index 735dd07e62..0000000000 --- a/test/js/samples/custom-element-basic/_config.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - options: { - customElement: true - } -}; \ No newline at end of file diff --git a/test/js/samples/custom-element-basic/expected-bundle.js b/test/js/samples/custom-element-basic/expected-bundle.js deleted file mode 100644 index bd1a063877..0000000000 --- a/test/js/samples/custom-element-basic/expected-bundle.js +++ /dev/null @@ -1,262 +0,0 @@ -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 destroy(detach) { - this.destroy = noop; - this.fire('destroy'); - this.set = this.get = noop; - - if (detach !== false) this._fragment.unmount(); - this._fragment.destroy(); - 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 get(key) { - return key ? this._state[key] : this._state; -} - -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 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, oldState, false); - if (this._bind) this._bind(changed, this._state); - dispatchObservers(this, this._observers.pre, changed, this._state, oldState); - this._fragment.update(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.mount(target, anchor); -} - -function _unmount() { - this._fragment.unmount(); -} - -var proto = { - destroy: destroy, - get: get, - fire: fire, - observe: observe, - on: on, - set: set, - teardown: destroy, - _recompute: noop, - _set: _set, - _mount: _mount, - _unmount: _unmount -}; - -function create_main_fragment(state, component) { - var h1, text, text_1, text_2; - - return { - create: function() { - h1 = createElement("h1"); - text = createText("Hello "); - text_1 = createText(state.name); - text_2 = createText("!"); - }, - - mount: function(target, anchor) { - insertNode(h1, target, anchor); - appendNode(text, h1); - appendNode(text_1, h1); - appendNode(text_2, h1); - }, - - update: function(changed, state) { - if ( changed.name ) { - text_1.data = state.name; - } - }, - - unmount: function() { - detachNode(h1); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - - this.attachShadow({ mode: 'open' }); - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return ["name"]; - } - - get name() { - return this.get('name'); - } - - set name(value) { - this.set({ name: value }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; diff --git a/test/js/samples/custom-element-basic/expected.js b/test/js/samples/custom-element-basic/expected.js deleted file mode 100644 index d7b2514940..0000000000 --- a/test/js/samples/custom-element-basic/expected.js +++ /dev/null @@ -1,91 +0,0 @@ -import { appendNode, assign, createElement, createText, detachNode, insertNode, noop, proto } from "svelte/shared.js"; - -function create_main_fragment(state, component) { - var h1, text, text_1, text_2; - - return { - create: function() { - h1 = createElement("h1"); - text = createText("Hello "); - text_1 = createText(state.name); - text_2 = createText("!"); - }, - - mount: function(target, anchor) { - insertNode(h1, target, anchor); - appendNode(text, h1); - appendNode(text_1, h1); - appendNode(text_2, h1); - }, - - update: function(changed, state) { - if ( changed.name ) { - text_1.data = state.name; - } - }, - - unmount: function() { - detachNode(h1); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - - this.attachShadow({ mode: 'open' }); - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return ["name"]; - } - - get name() { - return this.get('name'); - } - - set name(value) { - this.set({ name: value }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; \ No newline at end of file diff --git a/test/js/samples/custom-element-slot/_config.js b/test/js/samples/custom-element-slot/_config.js deleted file mode 100644 index 735dd07e62..0000000000 --- a/test/js/samples/custom-element-slot/_config.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - options: { - customElement: true - } -}; \ No newline at end of file diff --git a/test/js/samples/custom-element-slot/expected-bundle.js b/test/js/samples/custom-element-slot/expected-bundle.js deleted file mode 100644 index 8667a5d672..0000000000 --- a/test/js/samples/custom-element-slot/expected-bundle.js +++ /dev/null @@ -1,278 +0,0 @@ -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 setAttribute(node, attribute, value) { - node.setAttribute(attribute, value); -} - -function destroy(detach) { - this.destroy = noop; - this.fire('destroy'); - this.set = this.get = noop; - - if (detach !== false) this._fragment.unmount(); - this._fragment.destroy(); - 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 get(key) { - return key ? this._state[key] : this._state; -} - -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 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, oldState, false); - if (this._bind) this._bind(changed, this._state); - dispatchObservers(this, this._observers.pre, changed, this._state, oldState); - this._fragment.update(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.mount(target, anchor); -} - -function _unmount() { - this._fragment.unmount(); -} - -var proto = { - destroy: destroy, - get: get, - fire: fire, - observe: observe, - on: on, - set: set, - teardown: destroy, - _recompute: noop, - _set: _set, - _mount: _mount, - _unmount: _unmount -}; - -function create_main_fragment(state, component) { - var div, slot, p, text, text_2, slot_1, p_1, text_3; - - return { - create: function() { - div = createElement("div"); - slot = createElement("slot"); - p = createElement("p"); - text = createText("default fallback content"); - text_2 = createText("\n\n\t"); - slot_1 = createElement("slot"); - p_1 = createElement("p"); - text_3 = createText("foo fallback content"); - this.hydrate(); - }, - - hydrate: function(nodes) { - setAttribute(slot_1, "name", "foo"); - }, - - mount: function(target, anchor) { - insertNode(div, target, anchor); - appendNode(slot, div); - appendNode(p, slot); - appendNode(text, p); - appendNode(text_2, div); - appendNode(slot_1, div); - appendNode(p_1, slot_1); - appendNode(text_3, p_1); - }, - - update: noop, - - unmount: function() { - detachNode(div); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - this._slotted = options.slots || {}; - - this.attachShadow({ mode: 'open' }); - - this.slots = {}; - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return []; - } - - - - connectedCallback() { - Object.keys(this._slotted).forEach(key => { - this.appendChild(this._slotted[key]); - }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; diff --git a/test/js/samples/custom-element-slot/expected.js b/test/js/samples/custom-element-slot/expected.js deleted file mode 100644 index b64c7e6838..0000000000 --- a/test/js/samples/custom-element-slot/expected.js +++ /dev/null @@ -1,103 +0,0 @@ -import { appendNode, assign, createElement, createText, detachNode, insertNode, noop, proto, setAttribute } from "svelte/shared.js"; - -function create_main_fragment(state, component) { - var div, slot, p, text, text_2, slot_1, p_1, text_3; - - return { - create: function() { - div = createElement("div"); - slot = createElement("slot"); - p = createElement("p"); - text = createText("default fallback content"); - text_2 = createText("\n\n\t"); - slot_1 = createElement("slot"); - p_1 = createElement("p"); - text_3 = createText("foo fallback content"); - this.hydrate(); - }, - - hydrate: function(nodes) { - setAttribute(slot_1, "name", "foo"); - }, - - mount: function(target, anchor) { - insertNode(div, target, anchor); - appendNode(slot, div); - appendNode(p, slot); - appendNode(text, p); - appendNode(text_2, div); - appendNode(slot_1, div); - appendNode(p_1, slot_1); - appendNode(text_3, p_1); - }, - - update: noop, - - unmount: function() { - detachNode(div); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - this._slotted = options.slots || {}; - - this.attachShadow({ mode: 'open' }); - - this.slots = {}; - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return []; - } - - - - connectedCallback() { - Object.keys(this._slotted).forEach(key => { - this.appendChild(this._slotted[key]); - }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; \ No newline at end of file diff --git a/test/js/samples/custom-element-styled/_config.js b/test/js/samples/custom-element-styled/_config.js deleted file mode 100644 index 735dd07e62..0000000000 --- a/test/js/samples/custom-element-styled/_config.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - options: { - customElement: true - } -}; \ No newline at end of file diff --git a/test/js/samples/custom-element-styled/expected-bundle.js b/test/js/samples/custom-element-styled/expected-bundle.js deleted file mode 100644 index 1ef76c5aae..0000000000 --- a/test/js/samples/custom-element-styled/expected-bundle.js +++ /dev/null @@ -1,263 +0,0 @@ -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 destroy(detach) { - this.destroy = noop; - this.fire('destroy'); - this.set = this.get = noop; - - if (detach !== false) this._fragment.unmount(); - this._fragment.destroy(); - 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 get(key) { - return key ? this._state[key] : this._state; -} - -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 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, oldState, false); - if (this._bind) this._bind(changed, this._state); - dispatchObservers(this, this._observers.pre, changed, this._state, oldState); - this._fragment.update(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.mount(target, anchor); -} - -function _unmount() { - this._fragment.unmount(); -} - -var proto = { - destroy: destroy, - get: get, - fire: fire, - observe: observe, - on: on, - set: set, - teardown: destroy, - _recompute: noop, - _set: _set, - _mount: _mount, - _unmount: _unmount -}; - -function create_main_fragment(state, component) { - var h1, text, text_1, text_2; - - return { - create: function() { - h1 = createElement("h1"); - text = createText("Hello "); - text_1 = createText(state.name); - text_2 = createText("!"); - }, - - mount: function(target, anchor) { - insertNode(h1, target, anchor); - appendNode(text, h1); - appendNode(text_1, h1); - appendNode(text_2, h1); - }, - - update: function(changed, state) { - if ( changed.name ) { - text_1.data = state.name; - } - }, - - unmount: function() { - detachNode(h1); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - - this.attachShadow({ mode: 'open' }); - this.shadowRoot.innerHTML = ``; - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return ["name"]; - } - - get name() { - return this.get('name'); - } - - set name(value) { - this.set({ name: value }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; diff --git a/test/js/samples/custom-element-styled/expected.js b/test/js/samples/custom-element-styled/expected.js deleted file mode 100644 index 8d53597042..0000000000 --- a/test/js/samples/custom-element-styled/expected.js +++ /dev/null @@ -1,92 +0,0 @@ -import { appendNode, assign, createElement, createText, detachNode, insertNode, noop, proto } from "svelte/shared.js"; - -function create_main_fragment(state, component) { - var h1, text, text_1, text_2; - - return { - create: function() { - h1 = createElement("h1"); - text = createText("Hello "); - text_1 = createText(state.name); - text_2 = createText("!"); - }, - - mount: function(target, anchor) { - insertNode(h1, target, anchor); - appendNode(text, h1); - appendNode(text_1, h1); - appendNode(text_2, h1); - }, - - update: function(changed, state) { - if ( changed.name ) { - text_1.data = state.name; - } - }, - - unmount: function() { - detachNode(h1); - }, - - destroy: noop - }; -} - -class SvelteComponent extends HTMLElement { - constructor(options = {}) { - super(); - this.options = options; - this._state = options.data || {}; - - this._observers = { - pre: Object.create(null), - post: Object.create(null) - }; - - this._handlers = Object.create(null); - - this._root = options._root || this; - this._yield = options._yield; - this._bind = options._bind; - - this.attachShadow({ mode: 'open' }); - this.shadowRoot.innerHTML = ``; - - this._fragment = create_main_fragment(this._state, this); - - if (options.target) { - this._fragment.create(); - this._mount(options.target, options.anchor || null); - } - } - - static get observedAttributes() { - return ["name"]; - } - - get name() { - return this.get('name'); - } - - set name(value) { - this.set({ name: value }); - } - - attributeChangedCallback(attr, oldValue, newValue) { - this.set({ [attr]: newValue }); - } -} - -customElements.define("custom-element", SvelteComponent); -assign(SvelteComponent.prototype, proto , { - _mount(target, anchor) { - this._fragment.mount(this.shadowRoot, null); - target.insertBefore(this, anchor); - }, - - _unmount() { - this.parentNode.removeChild(this); - } -}); - -export default SvelteComponent; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 8665811010..89033f2f0b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,6 +14,10 @@ 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" + abab@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" @@ -158,6 +162,10 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -364,10 +372,21 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +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" @@ -450,6 +469,10 @@ cliui@^3.2.0: strip-ansi "^3.0.1" 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" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -482,6 +505,12 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/commander/-/commander-1.0.4.tgz#5edeb1aee23c4fb541a6b70d692abef19669a2d3" + dependencies: + keypress "0.1.x" + commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -500,7 +529,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.6.0: +concat-stream@1.6.0, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -574,6 +603,12 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -584,16 +619,28 @@ 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.6.8, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: +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: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1: +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" +deep-defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/deep-defaults/-/deep-defaults-1.0.4.tgz#1a9762e2b6c8d6a4e9931b8ee7ff8cdcee1d1750" + dependencies: + lodash "3.0.x" + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -608,6 +655,12 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" +defaults@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -686,6 +739,34 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +electron-download@^3.0.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz#2cfd54d6966c019c4d49ad65fbe65cc9cdef68c8" + dependencies: + debug "^2.2.0" + fs-extra "^0.30.0" + home-path "^1.0.1" + minimist "^1.2.0" + nugget "^2.0.0" + path-exists "^2.1.0" + rc "^1.1.2" + semver "^5.3.0" + sumchecker "^1.2.0" + +electron@^1.4.4: + version "1.8.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.0.tgz#896f429b1e664f496f62b9cc7ee6a67a71375f31" + dependencies: + "@types/node" "^8.0.24" + electron-download "^3.0.1" + extract-zip "^1.0.3" + +enqueue@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/enqueue/-/enqueue-1.0.2.tgz#9014e9bce570ee93ca96e6c8e63ad54c192b6bc8" + dependencies: + sliced "0.0.5" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -696,6 +777,10 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es6-promise@^4.0.5: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" + escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -888,6 +973,15 @@ extglob@^0.3.1: dependencies: 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" + dependencies: + concat-stream "1.6.0" + debug "2.2.0" + mkdirp "0.5.0" + yauzl "2.4.1" + extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -900,6 +994,12 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -986,6 +1086,16 @@ form-data@~2.1.1: 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" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1018,6 +1128,10 @@ function-bind@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +function-source@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/function-source/-/function-source-0.1.0.tgz#d9104bf3e46788b55468c02bf1b2fabcf8fc19af" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -1039,6 +1153,10 @@ 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" +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1099,7 +1217,7 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1169,6 +1287,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +home-path@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f" + 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" @@ -1214,6 +1336,12 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1221,7 +1349,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1380,6 +1508,10 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1490,6 +1622,10 @@ jsdom@^11.1.0: whatwg-url "^6.1.0" xml-name-validator "^2.0.1" +jsesc@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -1516,6 +1652,12 @@ json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -1529,6 +1671,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keypress@0.1.x: + version "0.1.0" + resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -1541,6 +1687,12 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -1643,6 +1795,10 @@ lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" +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: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1657,6 +1813,13 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -1682,6 +1845,10 @@ magic-string@^0.22.3: dependencies: vlq "^0.2.1" +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" + md5-hex@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" @@ -1702,6 +1869,21 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +meow@^3.1.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + merge-source-map@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" @@ -1750,10 +1932,22 @@ minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.2.0: +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" +minstache@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minstache/-/minstache-1.2.0.tgz#ff1cc403ac2844f68dbf18c662129be7eb0efc41" + dependencies: + commander "1.0.4" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -1776,6 +1970,10 @@ mocha@^3.2.0: 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" @@ -1792,6 +1990,24 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nightmare@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nightmare/-/nightmare-2.10.0.tgz#e9c5d590bb296f59685fd48218c2fbac44767b21" + dependencies: + debug "^2.2.0" + deep-defaults "^1.0.3" + defaults "^1.0.2" + electron "^1.4.4" + enqueue "^1.0.2" + function-source "^0.1.0" + jsesc "^0.5.0" + minstache "^1.2.0" + mkdirp "^0.5.1" + once "^1.3.3" + rimraf "^2.4.3" + 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" @@ -1820,7 +2036,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -1850,6 +2066,18 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +nugget@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" + dependencies: + debug "^2.1.3" + minimist "^1.1.0" + pretty-bytes "^1.0.2" + progress-stream "^1.1.0" + request "^2.45.0" + single-line-log "^1.1.2" + throttleit "0.0.2" + 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" @@ -1898,6 +2126,10 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -1993,7 +2225,7 @@ parse5@^3.0.2: dependencies: "@types/node" "^6.0.46" -path-exists@^2.0.0: +path-exists@^2.0.0, path-exists@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" dependencies: @@ -2033,6 +2265,10 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -2077,10 +2313,24 @@ prettier@^1.4.1: version "1.5.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe" +pretty-bytes@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" + dependencies: + get-stdin "^4.0.1" + meow "^3.1.0" + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +progress-stream@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" + dependencies: + speedometer "~0.1.2" + through2 "~0.2.3" + progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" @@ -2104,7 +2354,7 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -rc@^1.1.7: +rc@^1.1.2, rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" dependencies: @@ -2143,7 +2393,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2155,6 +2405,15 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -2164,6 +2423,13 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + 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" @@ -2207,7 +2473,7 @@ request-promise-native@^1.0.3: stealthy-require "^1.1.0" tough-cookie ">=2.3.0" -request@2.81.0, request@^2.79.0, request@^2.81.0: +request@2.81.0, request@^2.45.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -2284,7 +2550,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.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" dependencies: @@ -2332,6 +2598,10 @@ rollup-plugin-typescript@^0.8.1: tippex "^2.1.1" typescript "^1.8.9" +rollup-plugin-virtual@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-virtual/-/rollup-plugin-virtual-1.0.1.tgz#8227c94c605b981adfe433ea74de3551e42ffeb4" + rollup-pluginutils@^1.3.1, rollup-pluginutils@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" @@ -2408,10 +2678,24 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +single-line-log@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" + 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" +sliced@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" + +sliced@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -2469,6 +2753,16 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +speedometer@~0.1.2: + version "0.1.4" + 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" + dependencies: + through2 "^2.0.2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -2506,6 +2800,10 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" @@ -2542,10 +2840,23 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + 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" +sumchecker@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" + dependencies: + debug "^2.2.0" + es6-promise "^4.0.5" + 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" @@ -2612,6 +2923,24 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +throttleit@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" + +through2@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" + dependencies: + readable-stream "~1.1.9" + xtend "~2.1.1" + through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -2640,6 +2969,10 @@ tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -2803,6 +3136,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@~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" @@ -2849,3 +3192,9 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1"