commit 7f66a907e01aa217af33b067880806f57dcf9059 Author: MhausT Date: Sun Jan 27 23:02:37 2019 +0100 Initial testing, cerxes-npm diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea5c9d4 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +

+ Cerxes-samples +

+

+Samples using CXS-UI library +

+ +## License +This project is under MIT License [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT) \ No newline at end of file diff --git a/cfg/.babelrc b/cfg/.babelrc new file mode 100644 index 0000000..5d7fca3 --- /dev/null +++ b/cfg/.babelrc @@ -0,0 +1,14 @@ +{ + "sourceMaps": "inline", + "presets": [ + ["@babel/preset-env", { + "targets": { + "node": "current" + } + }] + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-optional-chaining" + ] +} \ No newline at end of file diff --git a/cfg/buildup.run.js b/cfg/buildup.run.js new file mode 100644 index 0000000..8de4249 --- /dev/null +++ b/cfg/buildup.run.js @@ -0,0 +1,283 @@ +// Node imports +import path from 'path'; +import process from "process"; +import { exec } from "child_process"; + +// Rollup plugin imports +import less from 'rollup-plugin-less'; +import sourcemaps from 'rollup-plugin-sourcemaps'; +import stringLoader from "rollup-plugin-string"; +import jsonPlugin from "rollup-plugin-json"; + +// Build/dev imports +import {Buildup, assetPlugin, babelPlugin, copyPlugin, handlebarsPlugin, minifyPlugin, commonJSPlugin} from "@cerxes/buildup"; + +// Util imports +import readArgs from "./util/read-args"; + +// Control +async function build(options) { + // Build + let error = false, result; + let watch = options.get("watch","w"); + let development = options.get("dev", "d"); + let server = options.get("server", "s"); + let minify = options.get("minify", "m"); + if(minify===undefined){minify = !development;} + + try { + let settings = { + target: "web", + dev: development, + minify: minify, + es6: false //development + }; + let builder = new Buildup(({meta: settings})=>({ + outDir: "dist/" + settings.target, + inDir: "src", + clean: true, + alias: [ + ["common", "src/common"] + ], + sourcemap: settings.dev?"inline":true, // 'inline' tends to work more reliably in chrome than just true (which is default and should be preferred) + plugins: [ + // Import less as strings + less({// TODO fork/clone the less plugin, it's npm package is annoyingly transpiled (requiring us to have a babel-runtime) and it has other minor issues... + output: (args)=>args// This is how we avoid the .css file from being made, and it feels hacky + }), + // Resolve maps from node_modules + sourcemaps(), + // Resolve non-es6 node_module libraries + commonJSPlugin({ + include: /node_modules\/.*$/, + exclude: /.*[\/\.]es6?[\/\.].*/ + }), + ], + + steps: (config)=>[ + [ + { // Site Build (www, targeting browsers) + inDir: "src/www", + outDir: config.outDir + (settings.outDir? "/"+settings.outDir : "")+"/www", + + plugins: [ + ...config.plugins, + + // Add ability to pass non-js files through the build-system + assetPlugin({ + exclude: [/\.svg$/] + }), + // Load gcodes and svgs as strings + stringLoader({ + include: ['**/*.gcode', '**/*.svg'] + }), + // Transform source files with babel (uses src/.babelrc for configuration) + babelPlugin({ + "target":"source"// transform the source inputs (could leave this undefined, its the default) + }), + // Transform output files with babel for browser compatibility + settings.es6? null : babelPlugin({ + "target": "bundle", // only transform the output bundle, not the source inputs + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "browsers": [ + "last 6 Chrome versions", + "last 1 Edge versions", + "last 2 Firefox versions", + ] + }, + "modules": false // Leave module processing to the custom transform-es-module plugin + } + ] + ], + "plugins": [ + "@babel/plugin-syntax-dynamic-import", + "@cerxes/buildup/dist/babel-transform-es-modules" + ], + }), + // Compress output + settings.minify? minifyPlugin() : null, + ], + steps: (wwwConfig)=>[ + // Serial compilation steps: + // - Compile vendor bundle first (needed/used in the next chunks) + [ + { + // array in, single out + in: [ + "@cerxes/cxs", + ], + out: "lib/vendor.js", + bundle:"flat", + }, + ], + + // - Copy polyfills + Buildup.scanDir( + "node_modules/@webcomponents/webcomponentsjs/bundles/", + /(webcomponents-([\-a-zA-Z]+)\.js)$/ + ).then(wcPolyfills=>wcPolyfills.map(polyfill=>({ + meta: polyfill, + in: polyfill.files, + out: "lib/polyfills/[1]", + plugins: [ + copyPlugin() + ] + }))), + + // - Compile pages + Buildup.scanDir( + wwwConfig.resolveIn("pages"), // Scan directory src/pages for files + /(.*)\.page\.js$/ // (...) RegEx capture-group feeds into chunk-meta step allowing us to use [1]...[n] in strings below + ).then(pages=>pages.map(page=>({ + meta: page, + in: page.files, + out: "[1].page.js", + steps: (pageChunk)=>[ + { + in: { + alias: "[1].polyfill-loader.virtual.js", // Passing in an alias within the src/ map will allow babel to find the appropriate .babelrc to transpile it + content: `import {loadPolyfills} from "pages/polyfill-loader"; loadPolyfills();` + }, + out: "[1].loader.virtual.js", + emit: false, + steps: (polyloaderChunk)=>({ + in: { + alias: "[1].loader.virtual.js", // Passing in an alias within the src/ map will allow babel to find the appropriate .babelrc to transpile it + content: `import {loadPage} from "pages/page-loader"; import(\`${"./" + path.basename(pageChunk.outPath)}\`).then(module=>loadPage(module));` // Loader-code + }, + out: "[1].loader.virtual.js", + emit: false, + steps: (loaderChunk)=>[ + { + // Feed the loader as input to html-generator + in: "page.hbs", + plugins: [handlebarsPlugin({ + context: { + polyfill: polyloaderChunk.compiled.code, + pageCode: loaderChunk.compiled.code, + es6: settings.es6 + } + })], + out: "[1].html" + } + ] + }) + } + ] + }))), + + // - Copy assets + Buildup.scanDir( + wwwConfig.resolveIn(""), // Scan directory src/pages for files + /(.*)\.(eot|svg|ttf|woff|png|jpg)$/ // (...) RegEx capture-group feeds into chunk-meta step allowing us to use [1]...[n] in strings below + ).then(assets=>assets.map(asset=>({ + meta: asset, + in: asset.files[0], + out: "[1].[2]", + asset: true + }))) + ] + } + ], + [ + { // Server Build (targetting node-environment) + inDir: "src/server", + outDir: config.outDir + (settings.outDir? "/"+settings.outDir : ""), + + plugins: [ + jsonPlugin({ + // for tree-shaking, properties will be declared as + // variables, using either `var` or `const` + preferConst: true, // Default: false + }), + ...config.plugins, + // Transform source files with babel (uses src/.babelrc for configuration) for nodejs compatibility + babelPlugin({ + "target":"source"// transform the source inputs (could leave this undefined, its the default) + }), + // Transform output files with babel for nodejs compatibility + babelPlugin({ + "target": "bundle", // only transform the output bundle, not the source inputs + "presets": [ + ["@babel/preset-env", { + "targets": { + "node": "current" + }, + }] + ], + }), + // Compress output + settings.minify? minifyPlugin() : null, + ], + + nodeResolve: { + browser: false, + external: ({importee, importer, resolved, pkg})=> pkg.builtin||(pkg&&pkg.name==='mongodb')// Flag builtins as external + }, + + steps: (serverConfig)=>[ + [ + { + in: "main.js", + out: "main.js", + bundle:"flat", + }, + ], + ] + } + ], + ] + })); + result = await builder.run(settings, { + watch: watch + } + ); + }catch(err){ + error = true; + console.error(err); + } + + // Start server? + if(result&&server) { + console.log("Starting server..."); + let started = exec("node \"./main.js\"",{ + cwd: './dist/web' + }); + + started?.stdout.on('data', (data)=>{ + console.log(data.toString()); + }); + + started?.stderr.on('data', (data)=>{ + console.error(data.toString()); + }); + } + + if(watch) { + // If in watch/dev-server mode, enter this crappy infinite loop (TODO?) + let done = false; + let interval = 500; + while (!done) { + let msg = await new Promise((resolve) => setTimeout(() => resolve(error ? "KILL" : "TICK"), interval)); + if (msg === "KILL") { + done = true; + } + } + } + return error; +} + +// Start +try { + let args = process.argv.slice(2); + let options = readArgs(args); + build(options).catch(ex=>{ + console.error(ex); + }); +}catch(ex){ + console.error(ex); +} diff --git a/cfg/util/read-args.js b/cfg/util/read-args.js new file mode 100644 index 0000000..164cb0d --- /dev/null +++ b/cfg/util/read-args.js @@ -0,0 +1,46 @@ +function readArgs(args){ + let result = { + switches: new Set(),// Single letter toggles + params: new Map(),// Named params/toggles + args: [], + get: function(...keys){ + let value; + for (let k of keys) { + let newValue = result.params.get(k); + if(newValue!==undefined) { + value = newValue; + } else if (result.switches.has(k)){ + value = true; + } + } + return value; + } + }; + for(let arg of args){ + if(arg[0]==='-'){ + if(arg[1]==='-'){ + // Full name + let argName = arg.slice(2); + let argValue = true; + let eqIndex = argName.indexOf("="); + if(eqIndex>0){ + argValue = argName.slice(eqIndex+1); + try{ + argValue = JSON.parse(argValue); + }catch(ex){} + argName = argName.slice(0,eqIndex); + } + result.params.set(argName, argValue); + }else{ + // Switches + let switches = arg.slice(1); + for(let l of switches){result.switches.add(l);} + } + }else{ + result.args.push(arg); + } + } + return result; +} + +module.exports = readArgs; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..77439d1 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "cerxes-examples", + "version": "0.0.1", + "devDependencies": { + "@babel/core": "^7.1.2", + "@babel/plugin-external-helpers": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.1.0", + "@babel/polyfill": "^7.0.0", + "@babel/preset-env": "^7.1.0", + "@babel/register": "^7.0.0", + "@cerxes/buildup": "^0.0.16", + "@cerxes/cxs-ui": "^0.0.3", + "@webcomponents/webcomponentsjs": "~2.1.3", + "compression": "^1.7.3", + "express": "^4.16.4", + "less": "^3.8.1", + "rollup": "^0.66.6", + "rollup-plugin-json": "^3.1.0", + "rollup-plugin-less": "^0.1.4", + "rollup-plugin-sourcemaps": "^0.4.2", + "rollup-plugin-string": "^2.0.2", + "rollup-pluginutils": "^2.3.3", + "xml2js": "^0.4.19", + "zen-observable": "^0.8.9" + }, + "dependencies": {}, + "scripts": { + "dev": "node -r @babel/register ./cfg/buildup.run.js --watch --server --dev", + "build": "node -r @babel/register ./cfg/buildup.run.js --minify=true", + "server": "node -r @babel/register ./cfg/buildup.run.js --server --minify=false" + } +} diff --git a/src/common/readme b/src/common/readme new file mode 100644 index 0000000..1e296d1 --- /dev/null +++ b/src/common/readme @@ -0,0 +1 @@ +This file exists as a placeholder. Currently there is no common code! \ No newline at end of file diff --git a/src/server/.babelrc b/src/server/.babelrc new file mode 100644 index 0000000..78469d4 --- /dev/null +++ b/src/server/.babelrc @@ -0,0 +1,14 @@ +{ + "presets": [ + ["@babel/preset-env", { + "targets": { + "node": "current" + }, + "modules": false // Leave module processing to the custom transform-es-module plugin + }] + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-proposal-optional-chaining" + ] +} \ No newline at end of file diff --git a/src/server/main.js b/src/server/main.js new file mode 100644 index 0000000..c27936b --- /dev/null +++ b/src/server/main.js @@ -0,0 +1,62 @@ +import express from "express"; +import compression from "compression"; + +import http from "http"; +import path from "path"; +import fs from "fs"; + +class DevServer{ + constructor(config){ + this.config = Object.assign( + { + //https: false + }, + config + ); + } + + start(){ + const app = express(); + let hostedDir = this.config.outDir||"./"; + let relativeDir = path.relative(path.resolve("."), hostedDir); + + // Configure proxy settings + app.set('trust proxy', true); + + // GZIP all assets + app.use(compression()); + + app.use(express.static(hostedDir)); + + + let listenServer = (server)=>((err)=>{ + if (this.config.port === undefined) { + this.config.port = server.address().port; + } + if (this.config.host === undefined) { + if(server.address().address && server.address().address !== '::'){ + this.config.host = server.address().address; + }else{ + this.config.host = "127.0.0.1"; + } + } + console.log(`DevServer started ${relativeDir} -> http://${this.config.host}:${this.config.port } !`); + }); + + let httpServer = http.createServer(app); + httpServer.listen({ + port:this.config.port, + host:this.config.host + }, listenServer(httpServer)); + } +} + +let devConfig = { + outDir: "www", + port: 41025,// (leave port undefined to have the dev server auto-assign a port again) +}; + +// Webserver +console.log("Starting webserver..."); +let devServer = new DevServer(devConfig); +devServer.start(); \ No newline at end of file diff --git a/src/www/.babelrc b/src/www/.babelrc new file mode 100644 index 0000000..406a33b --- /dev/null +++ b/src/www/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": [ + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-syntax-dynamic-import", + "@babel/plugin-proposal-optional-chaining" + ] +} \ No newline at end of file diff --git a/src/www/assets/fonts/OpenSans-Bold.ttf b/src/www/assets/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000..7b52945 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-Bold.ttf differ diff --git a/src/www/assets/fonts/OpenSans-BoldItalic.ttf b/src/www/assets/fonts/OpenSans-BoldItalic.ttf new file mode 100644 index 0000000..a670e14 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-BoldItalic.ttf differ diff --git a/src/www/assets/fonts/OpenSans-ExtraBold.ttf b/src/www/assets/fonts/OpenSans-ExtraBold.ttf new file mode 100644 index 0000000..3660681 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-ExtraBold.ttf differ diff --git a/src/www/assets/fonts/OpenSans-ExtraBoldItalic.ttf b/src/www/assets/fonts/OpenSans-ExtraBoldItalic.ttf new file mode 100644 index 0000000..8c4c15d Binary files /dev/null and b/src/www/assets/fonts/OpenSans-ExtraBoldItalic.ttf differ diff --git a/src/www/assets/fonts/OpenSans-Italic.ttf b/src/www/assets/fonts/OpenSans-Italic.ttf new file mode 100644 index 0000000..e6c5414 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-Italic.ttf differ diff --git a/src/www/assets/fonts/OpenSans-Light.ttf b/src/www/assets/fonts/OpenSans-Light.ttf new file mode 100644 index 0000000..563872c Binary files /dev/null and b/src/www/assets/fonts/OpenSans-Light.ttf differ diff --git a/src/www/assets/fonts/OpenSans-LightItalic.ttf b/src/www/assets/fonts/OpenSans-LightItalic.ttf new file mode 100644 index 0000000..5ebe2a2 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-LightItalic.ttf differ diff --git a/src/www/assets/fonts/OpenSans-Regular.ttf b/src/www/assets/fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..2e31d02 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-Regular.ttf differ diff --git a/src/www/assets/fonts/OpenSans-SemiBold.ttf b/src/www/assets/fonts/OpenSans-SemiBold.ttf new file mode 100644 index 0000000..99db86a Binary files /dev/null and b/src/www/assets/fonts/OpenSans-SemiBold.ttf differ diff --git a/src/www/assets/fonts/OpenSans-SemiBoldItalic.ttf b/src/www/assets/fonts/OpenSans-SemiBoldItalic.ttf new file mode 100644 index 0000000..8cad4e3 Binary files /dev/null and b/src/www/assets/fonts/OpenSans-SemiBoldItalic.ttf differ diff --git a/src/www/assets/fonts/cerxes.eot b/src/www/assets/fonts/cerxes.eot new file mode 100644 index 0000000..22a9be2 Binary files /dev/null and b/src/www/assets/fonts/cerxes.eot differ diff --git a/src/www/assets/fonts/cerxes.svg b/src/www/assets/fonts/cerxes.svg new file mode 100644 index 0000000..b0101ad --- /dev/null +++ b/src/www/assets/fonts/cerxes.svg @@ -0,0 +1,62 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/www/assets/fonts/cerxes.ttf b/src/www/assets/fonts/cerxes.ttf new file mode 100644 index 0000000..3c4292f Binary files /dev/null and b/src/www/assets/fonts/cerxes.ttf differ diff --git a/src/www/assets/fonts/cerxes.woff b/src/www/assets/fonts/cerxes.woff new file mode 100644 index 0000000..b38eb5b Binary files /dev/null and b/src/www/assets/fonts/cerxes.woff differ diff --git a/src/www/assets/main.less b/src/www/assets/main.less new file mode 100644 index 0000000..34926fd --- /dev/null +++ b/src/www/assets/main.less @@ -0,0 +1,48 @@ + +@font-face { + font-family: 'Cerxes'; + src: url('assets/fonts/cerxes.eot'); + src: url('assets/fonts/cerxes.eot#iefix') format('embedded-opentype'), + url('assets/fonts/cerxes.ttf') format('truetype'), + url('assets/fonts/cerxes.woff') format('woff'), + url('assets/fonts/cerxes.svg#Cerxes') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans Regular'), local('OpenSans-Regular'), url("assets/fonts/OpenSans-Regular.ttf") format('truetype'); +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url("assets/fonts/OpenSans-SemiBold.ttf") format('truetype'); +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url("assets/fonts/OpenSans-Bold.ttf") format('truetype'); +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url("assets/fonts/OpenSans-ExtraBold.ttf") format('truetype'); +} + +body, html { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + font-family: "Open Sans", "Roboto", "Segoe UI", sans-serif; +} diff --git a/src/www/assets/theme.less b/src/www/assets/theme.less new file mode 100644 index 0000000..9fa5232 --- /dev/null +++ b/src/www/assets/theme.less @@ -0,0 +1,2 @@ +@accent-bg: #2aa8b5; +@accent-fg: #ffffff; \ No newline at end of file diff --git a/src/www/lib/observable.js b/src/www/lib/observable.js new file mode 100644 index 0000000..aedf2f6 --- /dev/null +++ b/src/www/lib/observable.js @@ -0,0 +1,111 @@ +import Observable from "zen-observable"; + +if(!Observable.combineLatest) { + /** + * Combines an array of observable streams into one observable stream where the value is an array latest values of each individual stream + * + * @param observables Array of observable streams to be combined as one ( + * @returns {Observable} + */ + let combineLatest = function(observables){ + let observablesState = observables.map((observable, index) => ({ + index: index, + observable: observable, + subscription: undefined, + value: undefined, + returned: false, + completed: false, + })); + let observers = new Set(); + + return new Observable(observer => { + // Subscribe to child observables (if this is the first observer) + if (observers.size === 0) { + for (let observableState of observablesState) { + observableState.subscription = observableState.observable.subscribe({ + next: (val) => { + observableState.value = val; + observableState.returned = true; + if (!observablesState.find(oS => oS.returned === false)) { + // If all observables returned a value + let values = observablesState.map(x => x.value); + for (let observer of observers) observer.next(values); + } + }, + error: (err) => { + for (let observer of observers) observer.error(err); + }, + complete: () => { + observableState.completed = true; + if (!observablesState.find(oS => oS.completed === false)) { + // If all observables completed, mark combined observable as completed + let values = observablesState.map(x => x.value); + for (let observer of observers) observer.complete(values); + + for (let oS of observablesState) { + if (oS.subscription) { + oS.subscription.unsubscribe(); + oS.subscription = undefined; + } + } + } + } + }); + } + } + // Track observer + observers.add(observer); + + // Return unsubscribe callback + return () => { + observers.delete(observer); + if (observers.size === 0) { + // If no one is watching, Unbind + for (let oS of observablesState) { + if (oS.subscription) { + oS.subscription.unsubscribe(); + oS.subscription = undefined; + } + } + } + } + }) + }; + + Observable.combineLatest = combineLatest; +}else{ + console.warn("Observable already has an implementation of combineLatest! (this was not tested, yet!)") +} + +if(!Observable.prototype.first){ + /** + * Return first value of a stream as a promise + * + * @param filterFn Optional filter function that receives next value as a parameter (return true to return as first element) + * @returns {Promise} + */ + Observable.prototype.first = function(filterFn){ + return new Promise((resolve,reject)=>{ + let subscription = this.subscribe({ + next(value){ + if(!filterFn || filterFn(value)){ + subscription.unsubscribe(); + resolve(value); + } + }, + error(err){ + reject(err); + }, + complete(){ + resolve(undefined); + } + }) + }) + } +}else{ + console.warn("Observable.prototype already has an implementation of first! (this was not tested, yet!)") +} + +// Note/TODO: Append a slice-method to observable? functions replaces skip/take in RXjs and functions similar to slice in arrays? (note, don't know the length of observable stream so might not be possible to implement slice's interpretation of negative numbers) +//if(window && !window.Observable) window.Observable = Observable; +export {Observable}; \ No newline at end of file diff --git a/src/www/lib/subject.js b/src/www/lib/subject.js new file mode 100644 index 0000000..8f42a6a --- /dev/null +++ b/src/www/lib/subject.js @@ -0,0 +1,30 @@ +import {Observable} from "./observable"; + +export class Subject extends Observable{ + _observers = []; + constructor(){ + super((observer=>{ + this._observers.push(observer); + + // Return a cleanup function which will unsubscribe the observer + return ()=>{ + this._observers = this._observers.filter(obs=>obs!==observer); + } + })); + this._observers = []; + } + + close(){ + for(let obs of this._observers){ + obs.complete(); + } + } + + next(newValue){ + for(let obs of this._observers){ + obs.next(newValue); + } + } +} + +//if(window && !window.ValueSubject) window.ValueSubject = ValueSubject; \ No newline at end of file diff --git a/src/www/lib/value-subject.js b/src/www/lib/value-subject.js new file mode 100644 index 0000000..6e00b47 --- /dev/null +++ b/src/www/lib/value-subject.js @@ -0,0 +1,105 @@ +import {Observable} from "./observable"; + +export class ValueSubject extends Observable{ + _observers = []; + constructor(data){ + super(observer=>{ + this._observers.push(observer); + + if(this._timestamp!==undefined){ + // Already have a value + observer.next(this._value); + }else if(this._request === undefined){ + // No request has been made yet + this.refresh(); + } + + // Return a cleanup function which will unsubscribe the observer + return ()=>{ + this._observers = this._observers.filter(obs=>obs!==observer); + } + }); + + if(typeof(data)==="function"){ + this._refreshFn = data; + this._value = undefined; + this._timestamp = undefined; + }else if(data!==undefined){ + this._refreshFn = undefined; + this._value = data; + this._timestamp = new Date(); + } + } + + refresh(){ + if(this._refreshFn){ + let req = this._request = Promise.resolve(this._refreshFn()).then(result=>{ + this.update(result); + this._request = undefined; + return this._value; + }).catch(err=>{ + for(let obs of this._observers){ + obs.error(err); + } + }); + return req; + }else{ + return new Promise((resolve)=>resolve());// NO-OP + } + } + + close(){ + for(let obs of this._observers){ + obs.complete(); + } + } + + update(newValue){ + if(newValue!==this._value){ + this._value = newValue; + this._timestamp = new Date(); + for(let obs of this._observers){ + obs.next(newValue); + } + } + } + + getObservable({passive=false}= {}){ + return new Observable(observer=>{ + this._observers.push(observer); + + if(!passive){ + if(this._timestamp!==undefined){ + // Already have a value + observer.next(this._value); + }else if(this._request === undefined){ + // No request has been made yet + this.refresh(); + } + } + + // Return a cleanup function which will unsubscribe the observer + return ()=>{ + this._observers = this._observers.filter(obs=>obs!==observer); + } + }) + } + + // Properties + get timestamp(){ + return this._timestamp; + } + + get value(){ + return this._value; + } + set value(value){ + this.update(value); + } + + get updates(){ + return this.getObservable({passive: true}); + } +} + +//if(window && !window.ValueSubject) window.ValueSubject = ValueSubject; \ No newline at end of file diff --git a/src/www/page.hbs b/src/www/page.hbs new file mode 100644 index 0000000..776ee99 --- /dev/null +++ b/src/www/page.hbs @@ -0,0 +1,20 @@ + + + + + Cxs Examples + + + + {{#if polyfill}}{{{polyfill}}}{{/if}} + + + {{{pageCode}}} + + \ No newline at end of file diff --git a/src/www/pages/index.page.js b/src/www/pages/index.page.js new file mode 100644 index 0000000..be06e6f --- /dev/null +++ b/src/www/pages/index.page.js @@ -0,0 +1,237 @@ +import {JDOM} from "@cerxes/cxs"; +import appStyle from "assets/main.less"; +import pageStyle from "./index.page.less"; + +import {Subject} from "../lib/subject"; + +let randomWords = ["women", "shop", "resolute", "aware", "instruct", "earth", "cute", "vivacious", "park", "reign", "annoying", "mix", "sound", "absent", "domineering", "ground", "ratty", "houses", "loud", "dream", "befitting", "bright", "explain", "attack", "uncovered", "defective", "mixed", "squalid", "meeting", "elastic", "wash", "work", "marvelous", "icy", "suck", "mailbox", "disgusted", "radiate", "provide", "finicky", "upbeat", "angry", "symptomatic", "rabid", "story", "jump", "panicky", "impress", "exuberant", "responsible", "hook", "volatile", "drip", "perpetual", "meat", "skip", "house", "tire", "point", "cry", "close", "move", "fat", "serious", "zippy", "seemly", "turkey", "numberless", "swing", "stimulating", "immense", "cart", "monkey", "cough", "nice", "scribble", "texture", "attract", "holistic", "tree", "ducks", "search", "zealous", "anxious", "nod", "brick", "hideous", "aunt", "curved", "abrupt", "useful", "unnatural", "kind", "tasteless", "pause", "whistle", "overconfident", "self", "clip", "complete", "name", "dusty", "true", "orange", "cherries", "gruesome", "stamp", "courageous", "expansion", "garrulous", "drab", "caring", "follow", "mindless", "five", "shake", "premium", "envious", "umbrella", "terrible", "horn", "roll", "notice", "reply", "quiet", "grubby", "juggle", "fool", "pin", "stream", "company", "egg", "celery", "chilly", "curl", "cuddly", "car", "cheat", "lunchroom", "rely", "sponge", "worthless", "detail", "truck", "busy", "birth", "yoke", "annoy", "grass", "brave", "channel", "quizzical", "creepy", "nauseating", "smile", "yummy", "valuable", "dead", "rhetorical", "health", "team", "rare", "collar", "rhythm", "laugh", "arrest", "plausible", "breakable", "flaky", "dog", "highfalutin", "attempt", "dangerous", "curious", "painstaking", "exist", "suspend", "parched", "tested", "erratic", "snow", "window", "deer", "bounce", "suffer", "punishment", "miscreant", "lavish", "grandfather", "famous", "comfortable", "uptight", "imported", "question", "belligerent", "gaping", "spoil", "year", "glue", "ripe", "addicted", "glorious", "little", "button", "geese", "one", "able", "amuck", "shelter", "cheerful", "decision", "divide", "fuel", "tawdry", "macabre", "gamy", "boy", "oval", "key", "normal", "fairies", "itchy", "coat", "match", "fragile", "memory", "black", "zephyr", "wanting", "efficient", "influence", "tame", "pump", "moon", "irritate", "grouchy", "taboo", "chop", "invite", "bone", "wealth", "relax", "unadvised", "juvenile", "decorate", "gorgeous", "far", "quarter", "straight", "place", "obeisant", "dust", "zesty", "jealous", "chunky", "harbor", "short", "husky", "inconclusive", "sweet", "please", "chief", "interfere", "rock", "staking", "versed", "faulty", "odd", "parallel", "mouth", "lowly", "melt", "knot", "cap", "clean", "tangy", "pushy", "sloppy", "battle", "thing", "pull", "steel", "mass", "box", "slave", "false", "tacit", "concentrate", "race", "married", "nappy", "ugliest", "depressed", "aboard", "man", "hammer", "secretive", "minute", "own", "stick", "vast", "embarrassed", "abhorrent", "charming", "vein", "frequent", "enormous", "abrasive", "brass", "number", "sack", "neat", "popcorn", "spark", "honorable", "thirsty", "crib", "basket", "coach", "crush", "quarrelsome", "childlike", "ruin", "talk", "aromatic", "like", "continue", "change", "zipper", "scientific", "lake", "soft", "flowery", "assorted", "tender", "examine", "womanly", "selection", "list", "doubt", "faded", "phobic", "helpless", "shivering", "street", "sail", "wink", "exclusive", "unique", "smash", "bait", "arrange", "fanatical", "advertisement", "listen", "uncle", "sin", "judge", "visit", "delirious", "spotty", "drop", "productive", "blush", "discreet", "crooked", "squeamish", "store", "earsplitting", "sign", "belong", "terrify", "ancient", "crown", "tiny", "chin", "sip", "disappear", "kick", "form", "disarm", "pocket", "round", "screeching", "hapless", "scattered", "switch", "piquant", "complex", "conscious", "well-groomed", "limping", "numerous", "bloody", "reaction", "distance", "scarce", "toy", "hysterical", "easy", "whole", "burly", "tremble", "jobless", "carriage", "tense", "soak", "sincere", "tickle", "employ", "magnificent", "lewd", "trail", "seal", "cowardly", "steep", "bed", "rustic", "memorise", "vegetable", "birds", "beg", "adaptable", "rob", "shrill", "unhealthy", "fair", "great", "suit", "modern", "brother", "tacky", "flow", "stranger", "actually", "yell", "subtract", "frantic", "abaft", "pink", "grease", "song", "anger", "handsomely", "appear", "condition", "needle", "crash", "gray", "debt", "iron", "loaf", "ruddy", "bubble", "secretary", "heartbreaking", "wrong", "squealing", "relieved", "mark", "scorch", "troubled", "join", "engine", "donkey", "baby", "jumbled", "calculating", "pest", "low", "move", "grate", "knock", "sound", "alert", "matter", "care", "property", "trite", "jewel", "add", "judicious", "nose", "ubiquitous", "hand", "laugh", "jumpy", "frightened", "jellyfish", "adjoining", "hallowed", "talented", "current", "planes", "degree", "stretch", "frightening", "foamy", "hydrant", "cushion", "elderly", "sprout", "optimal", "scold", "bedroom", "friends", "disturbed", "animated", "death", "crowd", "road", "tick", "pull", "muscle", "ignore", "volcano", "dance", "badge", "event", "slow", "acceptable", "border", "abusive", "learn", "direful", "explode", "ajar", "murder", "undesirable", "reject", "saw", "cumbersome", "pinch", "daughter", "romantic", "furry", "expert", "type", "back", "town", "act", "nosy", "fog", "careless", "wrathful", "appreciate", "regular", "dust", "form", "lying", "oatmeal", "tip", "whip", "petite", "abashed", "develop", "nutritious", "vessel", "poison", "wacky", "x-ray", "island", "rock", "dear", "guiltless", "political", "cooperative", "throat", "word", "skirt", "magical", "class", "well-to-do", "money", "quince", "blind", "lonely", "magic", "thoughtless", "wing", "literate", "cook", "encouraging", "grandiose", "view", "first", "ocean", "lumber", "greasy", "mint", "ashamed", "governor", "acoustic", "unbiased", "deeply", "analyse", "fill", "stitch", "escape", "mate", "flower", "stretch", "bury", "faithful", "experience", "downtown", "drunk", "purple", "kiss", "probable", "simple", "scrawny", "hushed", "haunt", "leg", "rabbits", "surprise", "endurable", "thinkable", "record", "time", "calendar", "solid", "fence", "writer", "salty", "private", "fire", "month", "null", "fresh", "separate", "talk", "meek", "men", "late", "night", "trip", "fall", "trees", "creator", "abundant", "glossy", "fancy", "lame", "elite", "woozy", "attend", "kitty", "righteous", "mine", "berry", "dry", "empty", "smiling", "weary", "cattle", "recess", "copper", "number", "tame", "gaze", "yawn", "imaginary", "vase", "brawny", "harmony", "roof", "plug", "shelf", "trousers", "fork", "stage", "obsequious", "picayune", "brake", "cows", "homeless", "insurance", "delight", "title", "tightfisted", "observe", "skillful", "spray", "boat", "fetch", "guttural", "ear", "frail", "cycle", "hurry", "outrageous", "tail", "force", "bathe", "ruthless", "mine", "gullible", "boiling", "pan", "marked", "stocking", "needy", "babies", "rose", "muddle", "melted", "toys", "windy", "striped", "chubby", "creature", "harmonious", "mark", "agonizing", "nimble", "line", "cool", "mysterious", "play", "shiny", "grateful", "bridge", "nine", "unusual", "overjoyed", "ignorant", "confuse", "naive", "low", "cold", "irritating", "battle", "near", "bit", "draconian", "barbarous", "two", "part", "previous", "sneeze", "chase", "feigned", "cross", "subdued", "love", "excellent", "cars", "holiday", "frogs", "like", "shirt", "behave", "stay", "elfin", "spiky", "duck", "sort", "present", "mature", "twist", "place", "office", "destruction", "crayon", "try", "gigantic", "many", "quirky", "lamp", "pencil", "breath", "gather", "silk", "object", "sharp", "shop", "exercise", "ragged", "name", "high-pitched", "use", "unkempt", "unlock", "difficult", "flight", "tearful", "home", "clever", "separate", "bomb", "stomach", "closed", "milky", "left", "steam", "parcel", "girl", "languid", "cheese", "ambiguous", "damage", "cracker", "superficial", "inquisitive", "guide", "digestion", "charge", "carry", "join", "infamous", "strip", "capable", "girls", "canvas", "way", "puny", "root", "stew", "adhesive", "thrill", "untidy", "tap", "claim", "guitar", "toothsome", "fax", "ritzy", "disagree", "futuristic", "part", "noisy", "amusing", "reward", "destroy", "disapprove", "careful", "consist", "position", "cent", "suggest", "typical", "puncture", "wave", "underwear", "ghost", "quill", "blushing", "quartz", "country", "prevent", "van", "loss", "arm", "remain", "incredible", "treatment", "haircut", "rambunctious", "wrap", "stem", "pat", "straw", "relation", "beef", "angle", "connect", "royal", "slap", "used", "cakes", "tendency", "hour", "vigorous", "best", "adamant", "voice", "attack", "fallacious", "boast", "screw", "threatening", "screw", "pail", "launch", "volleyball", "record", "pretty", "reach", "promise", "willing", "meddle", "jar", "smoggy", "violet", "flesh", "ask", "chance", "weigh", "steer", "whimsical", "knit", "bustling", "chew", "manage", "pass", "wreck", "misty", "shallow", "bike", "milk", "pies", "rich", "tank", "reflect", "whip", "sink", "cats", "jail", "rush", "thank", "wriggle", "structure", "aberrant", "snatch", "son", "seed", "absurd", "industry", "describe", "debonair", "blink", "harm", "reproduce", "jeans", "belief", "circle", "learned", "public", "mom", "robust", "lip", "divergent", "ahead", "bulb", "entertaining", "flowers", "stale", "healthy", "motionless", "few", "side", "four", "trade", "rule", "wonder", "offer", "hobbies", "mellow", "classy", "legal", "gun", "utter", "hate", "unit", "waggish", "blood", "spot", "cagey", "recognise", "equal", "weight", "bottle", "whisper", "occur", "cast", "payment", "unknown", "comparison", "collect", "wish", "big", "selective", "fail", "boot", "wait", "weather", "lively", "machine", "step", "bat", "jump", "walk", "confess", "unruly", "flash", "waves", "scintillating", "empty", "minor", "noiseless", "alcoholic", "government", "neighborly", "book", "price", "twig", "pathetic", "hateful", "passenger", "dapper", "sugar", "chess", "satisfying", "absorbing", "bang", "wish", "snore", "laughable", "jittery", "illegal", "quack", "wiry", "quicksand", "knotty", "trouble", "ossified", "acid", "gratis", "fluffy", "eight", "ship", "safe", "soothe", "pleasure", "loving", "shaky", "hose", "mean", "wine", "salt", "colour", "perfect", "library", "material", "riddle", "lick", "ill", "adjustment", "watery", "zany", "foregoing", "feeling", "fumbling", "tremendous", "throne", "loose", "war", "luxuriant", "love", "pigs", "plucky", "kick", "obtainable", "grip", "curtain", "drag", "nippy", "bird", "chickens", "visitor", "nervous", "comb", "secret", "wistful", "tub", "toothbrush", "history", "damaging", "zoom", "committee", "average", "bow", "torpid", "boil", "jam", "zonked", "guard", "bat", "nut", "arch", "deserted", "wicked", "scent", "top", "announce", "boring", "general", "tent", "red", "tongue", "nutty", "alleged", "drink", "peck", "weak", "obnoxious", "vengeful", "desk", "pumped", "plantation", "lumpy", "amuse", "cactus", "glove", "society", "puzzling", "wary", "receipt", "snail", "next", "slim", "glistening", "wall", "ultra", "hook", "found", "tall", "stop", "rainy", "vulgar", "caption", "ready", "spectacular", "doctor", "point", "bizarre", "maddening", "coil", "substantial", "sister", "coil", "rotten", "star", "ants", "sneaky", "uneven", "abounding", "hanging", "wobble", "branch", "size", "jazzy", "laborer", "tooth", "bouncy", "dinosaurs", "precious", "land", "silly", "spiteful", "breezy", "limit", "stitch", "diligent", "hurt", "voyage", "hall", "reflective", "curve", "therapeutic", "accidental", "week", "guess", "tiger", "present", "giraffe", "zebra", "mist", "hellish", "bite-sized", "useless", "unbecoming", "naughty", "fine", "reduce", "violent", "bake", "trains", "fear", "mammoth", "dolls", "dazzling", "equable", "ski", "jail", "skin", "ink", "half", "thick", "owe", "enchanted", "materialistic", "believe", "aquatic", "delicate", "tricky", "callous", "gentle", "cut", "competition", "dull", "kiss", "fortunate", "unequal", "cluttered", "hop", "better", "reading", "outstanding", "spiffy", "bitter", "fix", "poke", "corn", "messy", "blade", "supply", "hover", "warlike", "scratch", "untidy", "puffy", "hope", "lighten", "devilish", "verse", "need", "excite", "colorful", "driving", "bushes", "pets", "scarf", "cover", "adorable", "hypnotic", "aback", "agree", "polite", "abject", "slimy", "wren", "guarded", "goofy", "fuzzy", "spare", "multiply", "hulking", "sign", "pot", "distribution", "fry", "friend", "crate", "hunt", "itch", "level", "plain", "second-hand", "insect", "command", "lean", "juice", "confused", "pig", "plant", "arrive", "extra-small", "beneficial", "division", "scarecrow", "past", "change", "sour", "crow", "crook", "broad", "porter", "superb", "bucket", "clumsy", "pleasant", "sun", "statuesque", "nonstop", "book", "head", "station", "hot", "realise", "imagine", "nest", "third", "whispering", "earn", "pet", "sparkle", "wise", "sticks", "efficacious", "unaccountable", "count", "quiet", "natural", "marble", "clammy", "cobweb", "nasty", "smooth", "discover", "rebel", "surround", "land", "heap", "bent", "produce", "repulsive", "auspicious", "sturdy", "load", "stain", "plate", "sick", "travel", "wide-eyed", "majestic", "dry", "open", "fertile", "admire", "needless", "level", "chicken", "flippant", "swift", "crack", "moldy", "remove", "bag", "protest", "icicle", "watch", "liquid", "credit", "calm", "telling", "irate", "intelligent", "clover", "afterthought", "attraction", "handsome", "flock", "actor", "crawl", "full", "books", "decide", "writing", "intend", "tranquil", "innate", "stop", "mighty", "happy", "purpose", "rub", "tin", "silky", "melodic", "understood", "ticket", "queue", "rate", "gabby", "damaged", "imperfect", "meaty", "protective", "six", "range", "shrug", "disagreeable", "face", "graceful", "watch", "yam", "grieving", "wipe", "spring", "bad", "children", "poor", "ad hoc", "daily", "dad", "long-term", "strange", "paint", "start", "succinct", "instrument", "day", "nation", "purring", "educated", "fixed", "summer", "descriptive", "sniff", "moor", "camera", "giant", "ambitious", "erect", "damp", "observant", "fold", "worry", "dispensable", "common", "parsimonious", "call", "bead", "achiever", "spell", "carve", "judge", "fast", "gate", "thumb", "standing", "fantastic", "smoke", "tax", "warn", "fretful", "receptive", "table", "gifted", "rifle", "settle", "balance", "hollow", "rough", "hope", "clear", "vest", "cloudy", "jaded", "knife", "work", "curve", "door", "wakeful", "cream", "dreary", "nifty", "pedal", "river", "balance", "evanescent", "consider", "powerful", "bewildered", "pastoral", "share", "petite", "connection", "look", "retire", "improve", "squeak", "carpenter", "stiff", "thought", "bored", "youthful", "chemical", "foot", "dizzy", "control", "cover", "tense", "clear", "clean", "illustrious", "language", "run", "meal", "wooden", "horse", "three", "pump", "choke", "sticky", "awful", "whistle", "board", "mind", "request", "whirl", "seashore", "beds", "turn", "tease", "rice", "astonishing", "abortive", "camp", "freezing", "sordid", "rightful", "remarkable", "habitual", "drop", "queen", "letters", "rainstorm", "want", "opposite", "grip", "shade", "save", "brake", "bubble", "deranged", "earthy", "peel", "touch", "legs", "plant", "mug", "foolish", "knee", "greedy", "repeat", "hot", "accurate", "quiver", "milk", "unsightly", "well-off", "muddled", "aloof", "heavenly", "repair", "fancy", "stroke", "yarn", "person", "mountainous", "tempt", "accessible", "cherry", "drain", "winter", "rub", "apologise", "cause", "small", "sad", "step", "allow", "substance", "rot", "end", "cemetery", "reason", "extend", "double", "regret", "necessary", "joke", "grab", "stingy", "measly", "momentous", "dynamic", "onerous", "middle", "tour", "wax", "scared", "spiritual", "stormy", "gold", "introduce", "temper", "back", "wheel", "education", "flawless", "linen", "frame", "tart", "jolly", "aftermath", "agreement", "teeny", "shape", "black-and-white", "flavor", "soup", "wandering", "known", "green", "long", "alarm", "lucky", "sudden", "agreeable", "stamp", "questionable", "victorious", "alluring", "fearless", "thankful", "question", "longing", "wail", "oafish", "end", "sheep", "macho", "calculate", "successful", "high", "madly", "somber", "prose", "dusty", "grumpy", "last", "unequaled", "fruit", "incompetent", "train", "statement", "spark", "fearful", "avoid", "wholesale", "dashing", "ethereal", "omniscient", "leather", "skinny", "miniature", "tenuous", "soda", "servant", "profit", "disillusioned", "ugly", "grade", "enjoy", "mess up", "rejoice", "automatic", "white", "scare", "sea", "godly", "flower", "argument", "forgetful", "surprise", "delay", "train", "snails", "kettle", "handy", "hissing", "dislike", "earthquake", "receive", "tasteful", "excuse", "cruel", "notebook", "water", "pop", "level", "strong", "clam", "development", "soggy", "idea", "tired", "afraid", "error", "hate", "rail", "labored", "support", "depend", "pour", "terrific", "noise", "accept", "annoyed", "squash", "real", "use", "worried", "scene", "cake", "plot", "old-fashioned", "sweltering", "nebulous", "towering", "admit", "toad", "peep", "stare", "spurious", "worm", "trashy", "wrench", "unable", "zoo", "unarmed", "bikes", "sore", "pie", "note", "thin", "appliance", "furniture", "harsh", "spill", "bleach", "unused", "walk", "shut", "lunch", "bite", "square", "instinctive", "knowing", "compare", "value", "army", "serve", "sheet", "coast", "answer", "arrogant", "treat", "crack", "frame", "scary", "aggressive", "metal", "effect", "voracious", "deliver", "panoramic", "changeable", "face", "invincible", "release", "inexpensive", "dinner", "venomous", "soap", "unite", "malicious", "quaint", "shade", "food", "resonant", "lock", "touch", "pointless", "quick", "absorbed", "complete", "unfasten", "medical", "force", "male", "turn", "wide", "offer", "bore", "powder", "airport", "important", "system", "bee", "hair", "support", "jam", "deceive", "rod", "fish", "available", "ring", "kneel", "delightful", "detect", "kittens", "match", "preserve", "flag", "request", "young", "permissible", "impolite", "slip", "check", "guide", "trick", "cultured", "slope", "unpack", "joyous", "transport", "march", "pickle", "advise", "penitent", "argue", "knot", "dirt", "sophisticated", "even", "possible", "historical", "borrow", "practise", "boundless", "blue-eyed", "stuff", "flimsy", "bath", "grotesque", "building", "tie", "lush", "water", "sweater", "acoustics", "oil", "vague", "offbeat", "workable", "file", "things", "beam", "pray", "mitten", "exciting", "air", "crazy", "order", "raise", "hum", "flagrant", "huge", "sulky", "warm", "nail", "fireman", "combative", "science", "thoughtful", "eminent", "coal", "temporary", "kill", "yak", "shock", "toe", "sidewalk", "buzz", "inject", "deadpan", "knowledgeable", "minister", "sneeze", "wild", "label", "colossal", "trust", "desert", "teeth", "include", "sigh", "waiting", "club", "cough", "finger", "elated", "ball", "basketball", "smash", "dare", "profuse", "tedious", "north", "expand", "locket", "return", "preach", "vacation", "butter", "hurried", "tangible", "old", "lace", "redundant", "neck", "new", "yellow", "smelly", "playground", "license", "hesitant", "rapid", "rule", "suggestion", "rat", "push", "mourn", "hammer", "cynical", "room", "encourage", "sail", "axiomatic", "wire", "hungry", "tidy", "regret", "program", "deafening", "thunder", "spooky", "condemned", "time", "transport", "squeal", "tug", "stir", "hug", "roll", "thread", "magenta", "smell", "complain", "disastrous", "wave", "wet", "remember", "cloth", "replace", "extra-large", "approval", "enter", "lethal", "glamorous", "tray", "interrupt", "thirsty", "coherent", "front", "unwieldy", "happen", "bare", "stupid", "help", "abiding", "incandescent", "railway", "design", "witty", "peaceful", "truculent", "spade", "applaud", "cheer", "guarantee", "merciful", "yielding", "eye", "exotic", "awake", "miss", "outgoing", "stove", "lacking", "dirty", "greet", "cure", "cautious", "scrape", "rain", "helpful", "massive", "route", "slow", "order", "woman", "existence", "toothpaste", "plant", "rural", "recondite", "utopian", "special", "brainy", "ten", "alike", "morning", "light", "well-made", "territory", "edge", "horrible", "future", "wealthy", "cute", "tight", "rain", "snow", "ludicrous", "cabbage", "kindly", "possessive", "fade", "awesome", "refuse", "periodic", "succeed", "mushy", "sense", "paltry", "various", "coordinated", "filthy", "proud", "nondescript", "last", "cable", "orange", "market", "cloistered", "pale", "spotless", "entertain", "start", "makeshift", "card", "second", "bells", "impossible", "lively", "acidic", "amount", "industrious", "film", "stone", "dark", "observation", "pear", "punish", "wry", "vacuous", "heady", "defiant", "satisfy", "crime", "wonderful", "dogs", "drum", "mother", "jog", "risk", "protect", "female", "rake", "party", "animal", "dime", "impulse", "sparkling", "uninterested", "expect", "bear", "show", "income", "warm", "tasty", "sassy", "tiresome", "mere", "taste", "frighten", "whine", "blot", "suppose", "groan", "coach", "trouble", "hands", "flap", "selfish", "painful", "snake", "humorous", "shoe", "glib", "gainful", "ceaseless", "obey", "religion", "didactic", "handle", "pick", "arithmetic", "example", "spicy", "push", "apathetic", "racial", "mice", "jelly", "horses", "certain", "rings", "care", "space", "cat", "determined", "shocking", "prepare", "afternoon", "broken", "trick", "sleet", "furtive", "farm", "drain", "good", "sack", "detailed", "plastic", "increase", "obscene", "lackadaisical", "mute", "enthusiastic", "snobbish", "overflow", "plastic", "moaning", "hospital", "test", "deep", "behavior", "plan", "fact", "interest", "scandalous", "maniacal", "wretched", "decisive", "cooing", "curvy", "living", "grey", "sore", "invent", "frog", "bumpy", "tow", "fang", "rigid", "glow", "shaggy", "phone", "spiders", "swim", "respect", "insidious", "obese", "suit", "trucks", "lock", "scatter", "thaw", "wrestle", "peace", "hand", "nostalgic", "woebegone", "test", "dramatic", "yard", "waste", "functional", "oven", "cup", "mend", "savory", "energetic", "offend", "trip", "slippery", "hat", "ill-fated", "color", "action", "moan", "snakes", "injure", "sky", "fluttering", "signal", "trade", "polish", "elbow", "contain", "unsuitable", "demonic", "capricious", "bump", "scrub", "fit", "prefer", "trace", "verdant", "brash", "compete", "ice", "airplane", "raspy", "cow", "taste", "burst", "birthday", "alive", "concerned", "kaput", "hospitable", "post", "identify", "doubtful", "crabby", "lie", "rampant", "correct", "marry", "ban", "live", "sock", "roasted", "mask", "juicy", "hard", "adventurous", "rabbit", "overrated", "smile", "unwritten", "heavy", "zip", "hang", "plants", "decorous", "different", "approve", "distinct", "plane", "beautiful", "curly", "blue", "paste", "clap", "icky", "amazing", "synonymous", "ill-informed", "school", "supreme", "basin", "camp", "fascinated", "representative", "physical", "noxious", "hole", "exchange", "crowded", "poised", "authority", "honey", "fabulous", "defeated", "lamentable", "skate", "chalk", "robin", "pack", "shave", "innocent", "man", "lovely", "floor", "teaching", "tomatoes", "brush", "electric", "pizzas", "psychotic", "acrid", "advice", "lyrical", "strengthen", "giddy", "blow", "fold", "growth", "heat", "aspiring", "simplistic", "remind", "long", "wander", "undress", "bolt", "seat", "cheap", "cave", "wood", "copy", "quickest", "expensive", "impartial", "twist", "increase", "testy", "cannon", "permit", "punch", "teeny-tiny", "amused", "bawdy", "scream", "overt", "trot", "right", "squirrel", "invention", "theory", "sisters", "toes", "wind", "bell", "discovery", "humdrum", "military", "shy", "brief", "bless", "pretend", "smoke", "wound", "float", "nest", "aboriginal", "pine", "ordinary", "produce", "branch", "prick", "narrow", "deserve", "silver", "puzzled", "psychedelic", "splendid", "afford", "obedient", "cub", "obtain", "snotty", "berserk", "direction", "desire", "shame", "fierce", "spotted", "boundary", "box", "friction", "heal", "chivalrous", "telephone", "dock", "voiceless", "sand", "eager", "string", "precede", "loutish", "interesting", "knowledge", "daffy", "paddle", "uttermost", "vanish", "account", "paper", "vagabond", "prickly", "picture", "alert", "wrist", "grandmother", "same", "flat", "billowy", "trap", "dress", "boorish", "rude", "tramp", "hilarious", "zinc", "rescue", "spy", "slip", "enchanting", "wool", "eggs", "wasteful", "group", "abandoned", "fowl", "perform", "potato", "overwrought", "pricey", "communicate", "heat", "silent", "glass", "evasive", "steadfast", "sable", "imminent", "humor", "cause", "dependent", "harass", "halting", "fasten", "shoes", "drown", "business", "quilt", "base", "suspect", "square", "swanky", "feeble", "wiggly", "welcome", "early", "craven", "elegant", "eyes", "bright", "veil", "breathe", "nonchalant", "obsolete", "fear", "print", "homely", "gleaming", "look", "economic", "wilderness", "lopsided", "stupendous", "apparatus", "rinse", "fly", "strap", "letter", "subsequent", "friendly", "uppity", "lettuce", "abstracted", "kindhearted", "mountain", "burn", "scale", "beginner", "nerve", "art", "discussion", "steady", "measure", "tan", "placid", "groovy", "bruise", "gaudy", "apparel", "far-flung", "calculator", "decay", "reminiscent", "giants", "rhyme", "note", "power", "disgusting", "flood", "abnormal", "eggnog", "quixotic", "familiar", "play", "thundering", "cellar", "grain", "excited", "embarrass", "report", "grape", "idiotic", "brown", "dress", "silent", "sedate", "oranges", "sleepy", "interest", "wash", "educate", "upset", "field", "pollution", "free", "head", "store", "press", "rest", "smell", "attractive", "church", "sleep", "scissors", "oceanic", "doll", "jagged", "likeable", "stereotyped", "mundane", "inform", "waste", "lazy", "baseball", "delicious", "possess", "organic", "hill", "ladybug", "spoon", "open", "bashful", "roomy", "need", "exultant", "eatable", "amusement", "plough", "tumble", "finger", "ray", "ablaze", "smart", "truthful", "grin", "tough", "pancake", "super", "keen", "motion", "maid", "large", "page", "sofa", "funny", "measure", "flame", "shiver", "hard-to-find", "partner", "can", "concern", "murky", "songs", "pen", "addition", "faint", "squeeze", "festive", "activity", "shock", "challenge", "internal", "dysfunctional", "gusty", "spot", "dam", "pipe", "flashy", "attach", "bomb", "drawer", "fire"]; +let highlightWords = new Set(randomWords.slice(Math.floor(randomWords.length/3), Math.floor(randomWords.length*2/3))); + +function setElementText(element, text){ + element.innerText = text; +} +function setElementClass(element, className, enabled){ + if(enabled===undefined||enabled){ + element.classList.add(className); + }else{ + element.classList.remove(className); + } +} + +export class Timer{ + constructor(resultHost){ + this.resultHost = resultHost; + } + resultHost; + loopStarted; + loops = []; + + markLoopStart(){ + this.loopStarted = window.performance.now(); + } + markLoopEnd(){ + let loopTime = window.performance.now()-this.loopStarted; + this.loops.push(loopTime); + this.loopStarted=undefined; + } + markEnd(){ + let renderTime = (timeSpent)=>{ + let ms = ("00"+Math.floor((timeSpent%1)*100)).slice(-2); + let seconds = Math.floor(timeSpent) + ""; + if(seconds.length>3) seconds = seconds.slice(0,seconds.length-3) + ' ' + seconds.slice(-3); + return seconds + 's : ' + ms + "ms"; + }; + let avgTimeSpent = this.loops.reduce((a,b)=>a+b,0)/(Math.max(this.loops.length,1)); + let firstTimeSpent = this.loops[0]; + + JDOM.applyTo(this.resultHost, {content: [{tag: "div", class:"time", content: [ + {tag: "span", class:"avg-time", content: renderTime(avgTimeSpent)}, + {tag: "span", class:"first-time", content: renderTime(firstTimeSpent)}, + ]}]}); + } +} + +export async function runJDOMTest(host, result, states, direct){ + let maxIterations = states.length; + let timer = new Timer(result); + let table, lines = [], linesCells = []; + for(let curIter = 0; curIter < maxIterations; ++curIter){ + timer.markLoopStart(); + + if(curIter===0){ + table = JDOM.create({ + tag: "table", + class: "data", + content: [] + }); + for(let [index,line] of states[curIter]){ + let cells = line.map(word=>JDOM.create({tag:"td", content: word})); + lines.push(JDOM.create({ + tag:"tr", + class: "line", + content: cells + })); + linesCells.push(cells); + } + JDOM.applyTo(table, {content: lines}); + JDOM.applyTo(host, {content: table}); + }else{ + for(let [index,line] of states[curIter]){ + let cells = linesCells[index]; + for(let cellI = 0 ; cellI < line.length; ++cellI){ + let word = line[cellI]; + let highlight = highlightWords.has(word.split(' ')[0]); + let cell =cells[cellI]; + if(direct){ + setElementText(cell,word); + setElementClass(cell, 'highlight', highlight); + }else { + JDOM.applyTo(cell, {content: word, attr: {class: highlight?'highlight':''}}); + } + } + } + } + timer.markLoopEnd(); + if(curIter+1setTimeout(()=>resolve(), 0)); + } + } + timer.markEnd(); +} + +export async function runTemplateTest(host, result, states, parseFirst){ + let timer = new Timer(result); + let state = []; + let maxIterations = states.length; + let parsed = []; + + for(let curIter = 0; curIter < maxIterations; ++curIter){ + timer.markLoopStart(); + let stateUpdate = states[curIter]; + for(let [index, line] of stateUpdate){ + state[index]=line; + } + let newHtml = ` + ${ state.map((line)=>`${line.map((word)=>``).join('')}`).join('') } +
${word}
`; + + // Test to parse and see performance hit! + if(parseFirst) { + let parser = new DOMParser(); + let result = parser.parseFromString(newHtml, "text/xml"); + parsed.push(result && result.childNodes && result.childNodes.length); + } + + host.innerHTML = newHtml; + + + timer.markLoopEnd(); + if(curIter+1setTimeout(()=>resolve(), 0)); + } + } + timer.markEnd(); + if(parseFirst) { + console.log(parsed); + } +} + +export function create(params) { + // Create the page elements + let directHost, directResult; + let jdomHost, jdomResult; + let templateHost, templateResult; + let parsedHost, parsedResult; + let elements = JDOM.create([ + {tag: "style", content: appStyle}, + {tag: "style", content: pageStyle}, + { + tag: "main", + content: [ + {tag: "h2", content: "Testing performance here!"}, + {tag: "table", class: "results", content: [ + {tag: "thead", content: [ + {tag: "tr", content: [ + {tag: "th", content: "Direct"}, + {tag: "th", content: "JDOM"}, + {tag: "th", content: "Template"}, + {tag: "th", content: "Parsed"} + ]} + ]}, + {tag: "tbody", content: [ + {tag: "tr", content: [ + directResult = JDOM.create({tag: "td", content: "--:--"}), + jdomResult = JDOM.create({tag: "td", content: "--:--"}), + templateResult = JDOM.create({tag: "td", content: "--:--"}), + parsedResult = JDOM.create({tag: "td", content: "--:--"}), + ]} + ]} + ]}, + {tag: "div", class: "test-host", content: [ + directHost = JDOM.create({tag: "div", class:"test-output direct"}), + ]}, + {tag: "div", class: "test-host", content: [ + jdomHost = JDOM.create({tag: "div", class:"test-output jdom"}), + ]}, + {tag: "div", class: "test-host", content: [ + templateHost = JDOM.create({tag: "div", class:"test-output template"}) + ]}, + {tag: "div", class: "test-host", content: [ + parsedHost = JDOM.create({tag: "div", class:"test-output parsed"}) + ]} + ] + }, + ]); + + + // Generating initial testdata and subsequent manipulations + let testData = []; + let iterations = 200; + let manipulationsPerIteration = 100; + let lines = 250; + let wordsPerLine = 5; + let rowIndices = []; + for(let i = 0; i { + let update = []; + for(let index of indices){ + let line = []; + for(let i = 0 ; i < wordsPerLine; ++i) { + let rndIndex = Math.floor(Math.random() * randomWords.length); + let rndIndex2= Math.floor(Math.random() * randomWords.length); + line.push(randomWords[rndIndex] + " " + randomWords[rndIndex2]); + } + update.push([index, line]); + } + return update; + }; + testData[0] = generateUpdate(rowIndices); + for(let iteration = 1 ; iteration < iterations ; ++iteration){ + let randomIndices = new Set(); + for(let i = 0; i < manipulationsPerIteration;++i){ + let rndIndex = 0; + do{ + rndIndex = Math.floor(Math.random() * rowIndices.length); + }while(randomIndices.has(rndIndex)); + randomIndices.add(rndIndex); + } + testData.push(generateUpdate(randomIndices)); + } + + console.log("Test data made"); + + let runTests = async()=>{ + await runJDOMTest(directHost, directResult, testData, true);// Just implemented as flag on JDOM mode, but updates everything directly + await runJDOMTest(jdomHost, jdomResult, testData); + await runTemplateTest(templateHost, templateResult, testData); + await runTemplateTest(parsedHost, parsedResult, testData, true); + }; + + runTests(); + + return elements; +} + +export default create; \ No newline at end of file diff --git a/src/www/pages/index.page.less b/src/www/pages/index.page.less new file mode 100644 index 0000000..85b5f27 --- /dev/null +++ b/src/www/pages/index.page.less @@ -0,0 +1,80 @@ +@import "../assets/theme.less"; + +body { + flex: 1 1 auto; + display: flex; + flex-direction: column; + margin: 0; +} + +[class^="cxs-font"], [class*=" cxs-font"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Cerxes' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +main{ + display: flex; + flex-direction: column; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + .results{ + width: 100%; + table-layout: fixed; + + th, td{ + text-align: center; + .time{ + display: flex; + flex-direction: column; + justify-items: flex-start; + align-items: center; + + .first-time{ + font-size: 80%; + } + } + } + } + + .test-host{ + flex: 1 1 auto; + padding: 1rem; + position: relative; + overflow: hidden; + + .test-output{ + flex: 1 1 auto; + overflow: auto; + border: 1px solid #999; + position: absolute; + top: 1rem; + left: 1rem; + right: 1rem; + bottom: 1rem; + + .data{ + width: 100%; + table-layout: fixed; + + .highlight{ + color: #2aa8b5; + font-weight: bold; + } + } + } + } +} \ No newline at end of file diff --git a/src/www/pages/page-loader.js b/src/www/pages/page-loader.js new file mode 100644 index 0000000..5b399a4 --- /dev/null +++ b/src/www/pages/page-loader.js @@ -0,0 +1,15 @@ +export function loadPage(module, target){ + let createFn = module.default||module.create; + if(!target){target = document.body;} + if(createFn){ + let ctarget = target.cloneNode(false); + target.parentNode.replaceChild(ctarget,target); + // TODO pass query params + let elements = createFn(); + for(let element of elements){ + ctarget.appendChild(element); + } + }else{ + console.error("No default! Cannot create", module); + } +} \ No newline at end of file diff --git a/src/www/pages/polyfill-loader.js b/src/www/pages/polyfill-loader.js new file mode 100644 index 0000000..64e7c65 --- /dev/null +++ b/src/www/pages/polyfill-loader.js @@ -0,0 +1,61 @@ +export function loadPolyfills(){ + /** + * Shamelessly taken from @webcomponents, adapted to fit own bundling purposes + */ + + // global for (1) existence means `WebComponentsReady` will fire, + // (2) WebComponents.ready == true means event has fired. + window.WebComponents = window.WebComponents || {}; + // Feature detect which polyfill needs to be imported. + let polyfills = []; + if (!('attachShadow' in Element.prototype && 'getRootNode' in Element.prototype) || + (window.ShadyDOM && window.ShadyDOM.force)) { + polyfills.push('sd'); + } + if (!window.customElements || window.customElements.forcePolyfill) { + polyfills.push('ce'); + } + // NOTE: any browser that does not have template or ES6 features + // must load the full suite (called `lite` for legacy reasons) of polyfills. + if (!('content' in document.createElement('template')) || !window.Promise || !Array.from || + // Edge has broken fragment cloning which means you cannot clone template.content + !(document.createDocumentFragment().cloneNode() instanceof DocumentFragment)) { + polyfills = ['lite']; + } + + if (polyfills.length) { + let newScript = document.createElement('script'); + // Load it from the right place. + let url = `/lib/polyfills/webcomponents-${polyfills.join('-')}.js`; + newScript.src = url; + // NOTE: this is required to ensure the polyfills are loaded before + // *native* html imports load on older Chrome versions. This *is* CSP + // compliant since CSP rules must have allowed this script to run. + // In all other cases, this can be async. + if (document.readyState === 'loading' && ('import' in document.createElement('link'))) { + document.write(newScript.outerHTML); + } else { + document.head.appendChild(newScript); + } + } else { + // Ensure `WebComponentsReady` is fired also when there are no polyfills loaded. + // however, we have to wait for the document to be in 'interactive' state, + // otherwise a rAF may fire before scripts in + + var fire = function() { + requestAnimationFrame(function() { + window.WebComponents.ready = true; + document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true})); + }); + }; + + if (document.readyState !== 'loading') { + fire(); + } else { + document.addEventListener('readystatechange', function wait() { + fire(); + document.removeEventListener('readystatechange', wait); + }); + } + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..3f5d835 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3022 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.2" + "@babel/helpers" "^7.1.2" + "@babel/parser" "^7.1.2" + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.1.2" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.1.2", "@babel/generator@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.3.tgz#2103ec9c42d9bdad9190a6ad5ff2d456fd7b8673" + dependencies: + "@babel/types" "^7.1.3" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helpers@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.1.2" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.2", "@babel/parser@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" + +"@babel/plugin-external-helpers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.0.0.tgz#61ee7ba5dba27d7cad72a13d46bec23c060b762e" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-async-generator-functions@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + +"@babel/plugin-proposal-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + +"@babel/plugin-proposal-optional-chaining@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0.tgz#3d344d4152253379b8758e7d041148e8787c4a9d" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0.tgz#1e6ecba124310b5d3a8fc1e00d50b1c4c2e05e68" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/polyfill@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.0.0.tgz#c8ff65c9ec3be6a1ba10113ebd40e8750fb90bff" + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.11.1" + +"@babel/preset-env@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.1.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.1.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.1.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.1.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.1.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.1.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.1.0" + "@babel/plugin-transform-parameters" "^7.1.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/register@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + dependencies: + core-js "^2.5.7" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/traverse@^7.1.0": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.4.tgz#f4f83b93d649b4b2c91121a9087fa2fa949ec2b4" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.3" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.3" + "@babel/types" "^7.1.3" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d" + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@cerxes/buildup@git+ssh://git@git.cerxes.net/~/buildup.git": + version "0.0.15" + resolved "git+ssh://git@git.cerxes.net/~/buildup.git#6a2e0d69c49feefd9dfb1bbdb965534a3dfdc3bf" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + acorn "^6.0.2" + chokidar "^2.0.4" + estree-walker "^0.5.2" + handlebars "^4.0.12" + magic-string "^0.25.1" + mime "^2.3.1" + resolve "^1.8.1" + rimraf "^2.6.2" + rollup "^0.66.6" + uglify-es "^3.3.9" + +"@cerxes/cxs@git+ssh://git@git.cerxes.net/~/cxs-controls.git": + version "0.0.3" + resolved "git+ssh://git@git.cerxes.net/~/cxs-controls.git#e9e414337c25a0050d3dd40900f4bbee3d784653" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + +"@types/node@*": + version "10.12.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.0.tgz#ea6dcbddbc5b584c83f06c60e82736d8fbb0c235" + +"@webcomponents/webcomponentsjs@~2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.1.3.tgz#f7430c6efe52ab06f69d219fddd32afd2758f683" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.2.tgz#6a459041c320ab17592c6317abbfdf4bbaa98ca4" + +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.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +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.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + +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.11.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + +body-parser@1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^4.1.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.3.tgz#88a7d9ce2e5db561e160ab660bc59cb406a0c41d" + dependencies: + caniuse-lite "^1.0.30000898" + electron-to-chromium "^1.3.81" + node-releases "^1.0.0-alpha.15" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caniuse-lite@^1.0.30000898: + version "1.0.30000898" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz#651306e690ca83caca5814da5afa3eb4de0f86c2" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chalk@^2.0.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + dependencies: + delayed-stream "~1.0.0" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +compressible@~2.0.14: + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + dependencies: + mime-db ">= 1.36.0 < 2" + +compression@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.4.0, core-js@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + dependencies: + ms "^2.1.1" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.3.81: + version "1.3.81" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.81.tgz#32af69206ef78973b6a6771b0c8450c2ce253913" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +errno@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +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" + +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + +estree-walker@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +express@^4.16.4: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +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" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +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-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" + +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" + +handlebars@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +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@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +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.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +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@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0: + version "0.5.1" + resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "http://registry.npmjs.org/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" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +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" + +less@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + +less@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.8.1.tgz#f31758598ef5a1930dd4caefa9e4340641e71e1d" + dependencies: + clone "^2.1.2" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash@^4.17.10: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +magic-string@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" + dependencies: + sourcemap-codec "^1.4.1" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + dependencies: + pify "^3.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + +media-typer@0.3.0: + version "0.3.0" + resolved "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + +mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + dependencies: + mime-db "~1.37.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.2.11, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +nan@^2.9.2: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.0.0-alpha.15: + version "1.0.0-alpha.15" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.15.tgz#bdb08730287cc50ddbfa3c1a358366a4a2f5d397" + dependencies: + semver "^5.3.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +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" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pirates@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@6.5.2, qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@^2.0.2, readable-stream@^2.0.6: + version "2.3.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + dependencies: + private "^0.1.6" + +regex-cache@^0.4.2: + 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" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + 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.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + 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" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@^2.83.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.3.2, resolve@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rollup-plugin-json@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz#7c1daf60c46bc21021ea016bd00863561a03321b" + dependencies: + rollup-pluginutils "^2.3.1" + +rollup-plugin-less@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-less/-/rollup-plugin-less-0.1.4.tgz#59acbc2e3b21872e8200313467c357ec4146d6dc" + dependencies: + babel-runtime "^6.26.0" + fs-extra "^0.30.0" + less "^2.7.1" + rollup "^0.34.7" + rollup-pluginutils "^1.5.1" + +rollup-plugin-sourcemaps@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#62125aa94087aadf7b83ef4dfaf629b473135e87" + dependencies: + rollup-pluginutils "^2.0.1" + source-map-resolve "^0.5.0" + +rollup-plugin-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-string/-/rollup-plugin-string-2.0.2.tgz#f5323a22cfd738b450cbea62ab6593705eac744b" + dependencies: + rollup-pluginutils "^1.5.0" + +rollup-pluginutils@^1.5.0, rollup-pluginutils@^1.5.1: + version "1.5.2" + resolved "http://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" + dependencies: + estree-walker "^0.5.2" + micromatch "^2.3.11" + +rollup@^0.34.7: + version "0.34.13" + resolved "http://registry.npmjs.org/rollup/-/rollup-0.34.13.tgz#a211cdde31f96cb39e7cb4e35becb15ddc3efa19" + dependencies: + source-map-support "^0.4.0" + +rollup@^0.66.6: + version "0.66.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.66.6.tgz#ce7d6185beb7acea644ce220c25e71ae03275482" + dependencies: + "@types/estree" "0.0.39" + "@types/node" "*" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +semver@^5.3.0, semver@^5.4.1, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.0: + 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" + +source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +sourcemap-codec@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz#0ba615b73ec35112f63c2f2d9e7c3f87282b0e33" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sshpk@^1.7.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.1.tgz#b79a089a732e346c6e0714830f36285cd38191a2" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.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" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +tar@^4: + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +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" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^3.0.0, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xml2js@^0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +zen-observable@^0.8.9: + version "0.8.10" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.10.tgz#85ad75d41fed82e5b4651bd64ca117b2af960182"