From 648a9de4f722301fb3f1f2deb4d858d9361d5d2e Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 14:17:40 +0300 Subject: [PATCH 01/44] Remove trailing spaces in ModuleManager --- src/core/ModuleManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ModuleManager.js b/src/core/ModuleManager.js index 50af14df..f361560c 100644 --- a/src/core/ModuleManager.js +++ b/src/core/ModuleManager.js @@ -41,7 +41,7 @@ export class ModuleManager { reset() { this.currentModule = null; } - + /** * @method define * @description Define the module in manager From f09bab10872f274f64c09bc64b847013d885645d Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 14:35:01 +0300 Subject: [PATCH 02/44] DefineModule --- src/deprecation.js | 16 ++++++++++++ src/index.js | 5 +--- src/modules/DefineModule.js | 23 +++++++++++++++++ src/modules/app/CameraModule.js | 42 -------------------------------- src/modules/app/index.js | 4 ++- src/modules/index.js | 4 +++ src/modules/presets/Preset.js | 24 ------------------ src/modules/presets/app/basic.js | 25 ------------------- src/modules/presets/index.js | 1 - 9 files changed, 47 insertions(+), 97 deletions(-) create mode 100644 src/modules/DefineModule.js delete mode 100644 src/modules/app/CameraModule.js create mode 100644 src/modules/index.js delete mode 100644 src/modules/presets/Preset.js delete mode 100644 src/modules/presets/app/basic.js delete mode 100644 src/modules/presets/index.js diff --git a/src/deprecation.js b/src/deprecation.js index 0f23a1a2..6339ebbe 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -1,4 +1,5 @@ import {Importer} from './components/meshes/Importer'; +import {PerspectiveCamera} from './components/cameras/PerspectiveCamera'; export class Model extends Importer { constructor(params, ...additional) { @@ -12,3 +13,18 @@ export class Model extends Importer { super(params, ...additional); } } + +export class CameraModule { + constructor(params = {}) { + console.warn('CameraModule is deprecated. Use DefineModule instead.'); + this.camera = new PerspectiveCamera(params); + } + + integrate(self) { + this.add(self.camera); + } + + manager(manager) { + manager.add('camera', this.camera); + } +} diff --git a/src/index.js b/src/index.js index e6836b83..796e3855 100644 --- a/src/index.js +++ b/src/index.js @@ -13,10 +13,7 @@ export * from './components/lights/index'; export * from './components/cameras/index'; export * from './components/meshes/index'; export * from './utils/index'; -export * from './modules/app/index'; -export * from './modules/app/controls/index'; -export * from './modules/mesh/index'; -export * from './modules/presets/index'; +export * from './modules/index'; // DEPRECATION export * from './deprecation'; diff --git a/src/modules/DefineModule.js b/src/modules/DefineModule.js new file mode 100644 index 00000000..a9eb6a2d --- /dev/null +++ b/src/modules/DefineModule.js @@ -0,0 +1,23 @@ +/** + * @class DefineModule + * @category modules + * @param {String} name + * @param {Object} data + * @memberof module:modules + * @example Creating a rendering module and passing it to App's modules + * new App([ + * // ... + * new DefineModule('camera', new PerspectiveCamera()) + * ]); + */ + +export class DefineModule { + constructor(name, data) { + this.name = name; + this.data = data; + } + + manager(manager) { + manager.add(this.name, this.data); + } +} diff --git a/src/modules/app/CameraModule.js b/src/modules/app/CameraModule.js deleted file mode 100644 index 89530334..00000000 --- a/src/modules/app/CameraModule.js +++ /dev/null @@ -1,42 +0,0 @@ -import {PerspectiveCamera} from '../../components/cameras/PerspectiveCamera'; - -export class CameraModule { - constructor(params = {}) { - this.params = Object.assign({ - fov: 75, - near: 1, - far: 1000, - - position: { - x: 0, - y: 0, - z: 0 - } - }, params); - - this.camera = new PerspectiveCamera({ - camera: { - fov: this.params.fov, - aspect: this.params.aspect, - near: this.params.near, - far: this.params.far - }, - - modules: [], - - position: { - x: this.params.position.x, - y: this.params.position.y, - z: this.params.position.z - } - }); - } - - integrate(self) { - this.add(self.camera); - } - - manager(manager) { - manager.add('camera', this.camera); - } -} diff --git a/src/modules/app/index.js b/src/modules/app/index.js index 7ef43629..e0c5440e 100644 --- a/src/modules/app/index.js +++ b/src/modules/app/index.js @@ -1,6 +1,5 @@ /** @module modules/app */ export * from './ElementModule'; -export * from './CameraModule'; export * from './RenderingModule'; export * from './SceneModule'; export * from './ResizeModule'; @@ -9,3 +8,6 @@ export * from './VirtualMouseModule'; export * from './EventsPatchModule'; export * from './ControlsModule'; export * from './FogModule'; + +// controls +export * from './controls/index'; diff --git a/src/modules/index.js b/src/modules/index.js new file mode 100644 index 00000000..c4d81e05 --- /dev/null +++ b/src/modules/index.js @@ -0,0 +1,4 @@ +/** @module modules */ + +export * from './app/index'; +export * from './mesh/index'; diff --git a/src/modules/presets/Preset.js b/src/modules/presets/Preset.js deleted file mode 100644 index 39da49af..00000000 --- a/src/modules/presets/Preset.js +++ /dev/null @@ -1,24 +0,0 @@ -export class Preset { - static Array(...modules) { - const array = []; - - modules.forEach(module => { - if (module[0]) array.push(module[1]()); - }); - - return array; - } - - constructor(modules) { - this.modules = modules; - } - - get() { - return this.modules; - } - - extend(modules) { - this.modules = this.modules.concat(modules); - return this; - } -} diff --git a/src/modules/presets/app/basic.js b/src/modules/presets/app/basic.js deleted file mode 100644 index 5876d584..00000000 --- a/src/modules/presets/app/basic.js +++ /dev/null @@ -1,25 +0,0 @@ -import {Preset} from '../Preset'; - -import {ElementModule} from '../../app/ElementModule'; -import {SceneModule} from '../../app/SceneModule'; -import {CameraModule} from '../../app/CameraModule'; -import {RenderingModule} from '../../app/RenderingModule'; -import {ResizeModule} from '../../app/ResizeModule'; - -export class BasicAppPreset extends Preset { - constructor({camera, rendering, element} = {}) { - super([ - new ElementModule(element), - new SceneModule(), - new CameraModule(camera), - new RenderingModule(rendering, { - shadow: true - }) - ]); - } - - autoresize() { - this.modules.push(new ResizeModule()); - return this; - } -} diff --git a/src/modules/presets/index.js b/src/modules/presets/index.js deleted file mode 100644 index 8a3a0c70..00000000 --- a/src/modules/presets/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from './app/basic'; From 84b8f6c36d9d96fb42d64323d897f982c852e79b Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 14:42:38 +0300 Subject: [PATCH 03/44] Fix examples --- examples/globals.js | 18 ++++++++++-------- src/core/TestApp.js | 23 ----------------------- src/core/index.js | 1 - src/modules/index.js | 3 +++ 4 files changed, 13 insertions(+), 32 deletions(-) delete mode 100644 src/core/TestApp.js diff --git a/examples/globals.js b/examples/globals.js index d0a04a36..f5b4f12c 100644 --- a/examples/globals.js +++ b/examples/globals.js @@ -62,14 +62,16 @@ export const appModules = ( // appModules(camera, rendering); physics = appDefaults.physics, useControls = true ) => ( - new WHS.BasicAppPreset({camera, rendering}) - .extend([ - new PHYSICS.WorldModule(physics), - useControls ? new WHS.OrbitControlsModule() : null, - new StatsModule() - ]) - .autoresize() - .get() + [ + new WHS.ElementModule(), + new WHS.SceneModule(), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(camera)), + new WHS.RenderingModule(rendering), + new PHYSICS.WorldModule(physics), + useControls ? new WHS.OrbitControlsModule() : null, + new StatsModule(), + new WHS.ResizeModule() + ] ); export const $colors = { diff --git a/src/core/TestApp.js b/src/core/TestApp.js deleted file mode 100644 index 4cd1f550..00000000 --- a/src/core/TestApp.js +++ /dev/null @@ -1,23 +0,0 @@ -import {ElementModule} from '../modules/app/ElementModule'; -import {SceneModule} from '../modules/app/SceneModule'; -import {CameraModule} from '../modules/app/CameraModule'; -import {RenderingModule} from '../modules/app/RenderingModule'; -import {ResizeModule} from '../modules/app/ResizeModule'; - -import {App} from './App'; - -export class TestApp extends App { - constructor(modulesAdditional = []) { - const modules = [ - new ElementModule(), - new SceneModule(), - new CameraModule(), - new RenderingModule({}, { - shadow: true - }), - new ResizeModule() - ].concat(modulesAdditional); - - super(modules); - } -} diff --git a/src/core/index.js b/src/core/index.js index 6ff3ceb9..a9d86a00 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -4,6 +4,5 @@ export * from './MeshComponent'; export * from './LightComponent'; export * from './CameraComponent'; export * from './App'; -export * from './TestApp'; export * from './Loop'; export * from './ModuleManager'; diff --git a/src/modules/index.js b/src/modules/index.js index c4d81e05..f7f929f7 100644 --- a/src/modules/index.js +++ b/src/modules/index.js @@ -2,3 +2,6 @@ export * from './app/index'; export * from './mesh/index'; + +// modules +export * from './DefineModule'; From 05a53086beb956e1a155a243e130dca11690d17e Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 14:43:34 +0300 Subject: [PATCH 04/44] Fix .define() in AnimationModule --- src/modules/mesh/AnimationModule.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/AnimationModule.js b/src/modules/mesh/AnimationModule.js index 75aa9943..91504a76 100644 --- a/src/modules/mesh/AnimationModule.js +++ b/src/modules/mesh/AnimationModule.js @@ -37,7 +37,7 @@ export class AnimationModule { } manager(manager) { - manager.add('animation', this); + manager.define('animation'); } bridge = { From 68a7456f87b56b730789432004a900d019741308 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 15:07:26 +0300 Subject: [PATCH 05/44] Fix examples & tests --- examples/design/easter/script.js | 42 +++++++++++++++++--------------- src/core/__tests__/App.spec.js | 2 +- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/examples/design/easter/script.js b/examples/design/easter/script.js index 1a43b7c7..df1c578f 100644 --- a/examples/design/easter/script.js +++ b/examples/design/easter/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new PHYSICS.WorldModule({ @@ -29,10 +29,12 @@ const world = new WHS.App([ new WHS.ResizeModule() ]); -// world.$camera.lookAt(new THREE.Vector3(0, 0, 0)); +const camera = app.manager.get('camera'); + +// camera.lookAt(new THREE.Vector3(0, 0, 0)); // Start rendering. -world.start(); +app.start(); new WHS.Box({ geometry: { @@ -55,7 +57,7 @@ new WHS.Box({ y: -1, z: 0 } -}).addTo(world); +}).addTo(app); const egg = new WHS.Importer({ url: `${process.assetsPath}/models/easter/egg_light.json`, @@ -109,7 +111,7 @@ const rabbit = new WHS.Importer({ scale: [0.5, 0.5, 0.5] }); -rabbit.addTo(world); +rabbit.addTo(app); new WHS.SpotLight({ light: { @@ -147,22 +149,22 @@ new WHS.SpotLight({ y: 0, z: 0 } -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ light: { intensity: 0.9, color: 0xffffff } -}).addTo(world); +}).addTo(app); let egg2, egg3, egg4, egg5, egg6, egg7, egg8, egg9; -egg.addTo(world).then((object) => { +egg.addTo(app).then((object) => { egg2 = object.clone(false, true); egg2.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg2.jpg`); - egg2.addTo(world).then((obj) => { + egg2.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(-8.5); obj.position.setZ(1.5); @@ -171,7 +173,7 @@ egg.addTo(world).then((object) => { egg3 = object.clone(false, true); egg3.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg3.jpg`); - egg3.addTo(world).then((obj) => { + egg3.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(-8.5); obj.position.setZ(1.5); @@ -180,7 +182,7 @@ egg.addTo(world).then((object) => { egg4 = object.clone(false, true); egg4.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg4.jpg`); - egg4.addTo(world).then((obj) => { + egg4.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(0); obj.position.setZ(-1.5); @@ -189,7 +191,7 @@ egg.addTo(world).then((object) => { egg5 = object.clone(false, true); egg5.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg1.jpg`); - egg5.addTo(world).then((obj) => { + egg5.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(2); obj.position.setZ(2.5); @@ -198,7 +200,7 @@ egg.addTo(world).then((object) => { egg6 = object.clone(false, true); egg6.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg2.jpg`); - egg6.addTo(world).then((obj) => { + egg6.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(0.5); obj.position.setZ(1.5); @@ -207,7 +209,7 @@ egg.addTo(world).then((object) => { egg7 = object.clone(false, true); egg7.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg3.jpg`); - egg7.addTo(world).then((obj) => { + egg7.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(2); obj.position.setZ(-1.5); @@ -216,7 +218,7 @@ egg.addTo(world).then((object) => { egg8 = object.clone(false, true); egg8.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg4.jpg`); - egg8.addTo(world).then((obj) => { + egg8.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(1); obj.position.setZ(2.5); @@ -225,19 +227,19 @@ egg.addTo(world).then((object) => { egg9 = object.clone(false, true); egg9.material.map = WHS.TextureModule.load(`${process.assetsPath}/textures/easter/egg1.jpg`); - egg9.addTo(world).then((obj) => { + egg9.addTo(app).then((obj) => { obj.rotation.y = -Math.PI / 8; obj.position.setX(3); obj.position.setZ(-1.5); }); }); -world.$camera.native.lookAt(new THREE.Vector3(-4, 0, 0)); +camera.native.lookAt(new THREE.Vector3(-4, 0, 0)); document.body.addEventListener('mousemove', (e) => { - world.$camera.position.x = -8 + (e.screenX - window.innerWidth / 2) / 40; - world.$camera.position.y = 5 + (e.screenY - window.innerHeight / 2) / 80; - world.$camera.native.lookAt(new THREE.Vector3(-4, 0, 0)); + camera.position.x = -8 + (e.screenX - window.innerWidth / 2) / 40; + camera.position.y = 5 + (e.screenY - window.innerHeight / 2) / 80; + camera.native.lookAt(new THREE.Vector3(-4, 0, 0)); }); document.body.addEventListener('click', () => { diff --git a/src/core/__tests__/App.spec.js b/src/core/__tests__/App.spec.js index bac2f4da..cdfe8c46 100644 --- a/src/core/__tests__/App.spec.js +++ b/src/core/__tests__/App.spec.js @@ -19,7 +19,7 @@ test('.applyModule()', () => { test('.module()', () => { const sceneModule = new WHS.SceneModule(); - const cameraModule = new WHS.CameraModule(); + const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera()); // Module chain app From b7c066e9d475bf6c55b96793cef23dca4fd0bfd1 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Thu, 22 Jun 2017 15:15:29 +0300 Subject: [PATCH 06/44] Use DefineModule instead of CameraModule --- README.md | 10 +++++----- docs/data/Hello World!.md | 4 ++-- docs/data/Welcome.md | 4 ++-- examples/VRKit/basic/script.js | 2 +- examples/VRKit/controls/script.js | 2 +- examples/VRKit/post-processing/script.js | 2 +- examples/basic/embeded/script.js | 4 ++-- examples/basic/fogexp/script.js | 4 ++-- examples/basic/helloworld/script.js | 2 +- examples/basic/mouse/script.js | 4 ++-- examples/basic/threejs/script.js | 4 ++-- examples/design/easter/script.js | 4 ++-- examples/design/points/script.js | 4 ++-- examples/design/saturn/script.js | 4 ++-- examples/fps/shooter/script.js | 4 ++-- examples/lights/ambient/script.js | 4 ++-- examples/lights/area/script.js | 4 ++-- examples/lights/directional/script.js | 4 ++-- examples/lights/hemisphere/script.js | 4 ++-- examples/lights/point/script.js | 4 ++-- examples/lights/spot/script.js | 4 ++-- examples/performance/softbodies/script.js | 4 ++-- examples/softbody/cloth/script.js | 4 ++-- examples/softbody/cloth2/script.js | 4 ++-- examples/softbody/cloth3/script.js | 4 ++-- examples/softbody/ropes/script.js | 4 ++-- examples/softbody/sphere/script.js | 4 ++-- examples/whs-module-audio/positional/script.js | 4 ++-- src/components/__tests__/components.spec.js | 2 +- src/modules/__tests__/modules.spec.js | 4 ++-- 30 files changed, 58 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 392449a0..f59a1407 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ You can find lots of examples at [showcases](https://whs-dev.surge.sh/examples/) const app = new WHS.App([ new WHS.ElementModule(), // attach to DOM new WHS.SceneModule(), // creates THREE.Scene instance - new WHS.CameraModule(), // creates PerspectiveCamera instance + new WHS.DefineModule('camera', new WHS.PerspectiveCamera()), // creates PerspectiveCamera instance new WHS.RenderingModule() // creates WebGLRenderer instance ]); @@ -185,9 +185,9 @@ Try on [**Codepen**](http://codepen.io/sasha240100/pen/JELBGX): const app = new WHS.App([ new WHS.ElementModule(), // attach to DOM new WHS.SceneModule(), // creates THREE.Scene instance - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 0, -10) - }), // creates PerspectiveCamera instance + })), // creates PerspectiveCamera instance new WHS.RenderingModule(), // creates WebGLRenderer instance new WHS.OrbitControlsModule() // orbit controls ]); @@ -234,11 +234,11 @@ export class Application extends Component { return ( diff --git a/docs/data/Hello World!.md b/docs/data/Hello World!.md index 469be568..58aa6af4 100644 --- a/docs/data/Hello World!.md +++ b/docs/data/Hello World!.md @@ -22,9 +22,9 @@ const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 0, 50) - }), + })), new WHS.RenderingModule({bgColor: 0x162129}), new WHS.ResizeModule() diff --git a/docs/data/Welcome.md b/docs/data/Welcome.md index 1bef7ff2..3980f1b4 100644 --- a/docs/data/Welcome.md +++ b/docs/data/Welcome.md @@ -17,9 +17,9 @@ const app = new WHS.App([ new WHS.ElementModule(), // Apply to DOM. new WHS.SceneModule(), // Create a new THREE.Scene and set it to app. - new WHS.CameraModule({ // Apply a camera. + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ // Apply a camera. position: new Vector3(0, 0, 50) - }), + })), new WHS.RenderingModule({bgColor: 0x162129}), // Apply THREE.WebGLRenderer new WHS.ResizeModule() // Make it resizable. diff --git a/examples/VRKit/basic/script.js b/examples/VRKit/basic/script.js index d60df7c6..56d1b339 100644 --- a/examples/VRKit/basic/script.js +++ b/examples/VRKit/basic/script.js @@ -5,7 +5,7 @@ const postprocessor = new WHS.PostProcessorModule(); const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule(UTILS.appDefaults.camera), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), new WHS.RenderingModule(UTILS.appDefaults.rendering, { shadow: true }), diff --git a/examples/VRKit/controls/script.js b/examples/VRKit/controls/script.js index ffbb60a4..204a889d 100644 --- a/examples/VRKit/controls/script.js +++ b/examples/VRKit/controls/script.js @@ -5,7 +5,7 @@ const postprocessor = new WHS.PostProcessorModule(); const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule(UTILS.appDefaults.camera), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), new WHS.RenderingModule(UTILS.appDefaults.rendering, { shadow: true }), diff --git a/examples/VRKit/post-processing/script.js b/examples/VRKit/post-processing/script.js index 35c79ac5..894ff48d 100644 --- a/examples/VRKit/post-processing/script.js +++ b/examples/VRKit/post-processing/script.js @@ -5,7 +5,7 @@ const postprocessor = new WHS.PostProcessorModule(); const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule(UTILS.appDefaults.camera), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), new WHS.RenderingModule(UTILS.appDefaults.rendering, { shadow: true }), diff --git a/examples/basic/embeded/script.js b/examples/basic/embeded/script.js index d10daee6..d9341ac4 100644 --- a/examples/basic/embeded/script.js +++ b/examples/basic/embeded/script.js @@ -8,9 +8,9 @@ const world = new WHS.App([ container: document.getElementById('embed') }), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 10, 50) - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/basic/fogexp/script.js b/examples/basic/fogexp/script.js index a9c4725f..62717f42 100644 --- a/examples/basic/fogexp/script.js +++ b/examples/basic/fogexp/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: -30, y: 20, @@ -8,7 +8,7 @@ const cameraModule = new WHS.CameraModule({ }, far: 20000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); const fogModule = new WHS.FogModule({color: 0xaaaaaa, near: 10, far: 200}); diff --git a/examples/basic/helloworld/script.js b/examples/basic/helloworld/script.js index 6ca2127e..4f8fe298 100644 --- a/examples/basic/helloworld/script.js +++ b/examples/basic/helloworld/script.js @@ -3,7 +3,7 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule(UTILS.appDefaults.camera), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera), new WHS.RenderingModule(UTILS.appDefaults.rendering, { shadow: true }), diff --git a/examples/basic/mouse/script.js b/examples/basic/mouse/script.js index f7030cef..dcf8d63e 100644 --- a/examples/basic/mouse/script.js +++ b/examples/basic/mouse/script.js @@ -5,9 +5,9 @@ const mouse = new WHS.VirtualMouseModule(); const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 10, 50) - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/basic/threejs/script.js b/examples/basic/threejs/script.js index 00824a96..4f38fbbe 100644 --- a/examples/basic/threejs/script.js +++ b/examples/basic/threejs/script.js @@ -35,9 +35,9 @@ mesh2.add(mesh3); world.setScene(scene); world - .module(new WHS.CameraModule({ + .module(new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 2, 12) - })) + }))) .module(new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/design/easter/script.js b/examples/design/easter/script.js index df1c578f..7d5bcbdd 100644 --- a/examples/design/easter/script.js +++ b/examples/design/easter/script.js @@ -11,11 +11,11 @@ const app = new WHS.App([ z: 0 }, }), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(-8, 5, 20), fov: 45, far: 2000 - }), + })), new WHS.RenderingModule({ bgColor: 0xffffff, diff --git a/examples/design/points/script.js b/examples/design/points/script.js index a2501030..6ddfc590 100644 --- a/examples/design/points/script.js +++ b/examples/design/points/script.js @@ -1,12 +1,12 @@ const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(-8, 5, 20), far: 2000, near: 1, fov: 45 - }), + })), new WHS.RenderingModule({ bgColor: 0xffffff, diff --git a/examples/design/saturn/script.js b/examples/design/saturn/script.js index cb22d4d0..eeb561bf 100644 --- a/examples/design/saturn/script.js +++ b/examples/design/saturn/script.js @@ -15,11 +15,11 @@ const colors = { const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 100, 400), far: 2000, near: 1 - }), + })), new WHS.RenderingModule({ bgColor: 0x2a3340, diff --git a/examples/fps/shooter/script.js b/examples/fps/shooter/script.js index 58d98eef..41600ba0 100644 --- a/examples/fps/shooter/script.js +++ b/examples/fps/shooter/script.js @@ -24,9 +24,9 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 10, 50) - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/lights/ambient/script.js b/examples/lights/ambient/script.js index cdb87444..f4e8471e 100644 --- a/examples/lights/ambient/script.js +++ b/examples/lights/ambient/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: -30, y: 20, @@ -8,7 +8,7 @@ const cameraModule = new WHS.CameraModule({ }, far: 20000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); diff --git a/examples/lights/area/script.js b/examples/lights/area/script.js index 175e394e..3e3780bb 100644 --- a/examples/lights/area/script.js +++ b/examples/lights/area/script.js @@ -3,14 +3,14 @@ import * as UTILS from '../../globals'; const ad = UTILS.appDefaults; const controlsModule = new WHS.OrbitControlsModule(); -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: 500, y: 400 }, far: 30000, near: 10 -}); +})); const world = new WHS.App([ ...UTILS.appModules({ diff --git a/examples/lights/directional/script.js b/examples/lights/directional/script.js index c037dc56..89900da0 100644 --- a/examples/lights/directional/script.js +++ b/examples/lights/directional/script.js @@ -1,13 +1,13 @@ import * as UTILS from '../../globals'; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: 50, y: 60 }, far: 20000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); diff --git a/examples/lights/hemisphere/script.js b/examples/lights/hemisphere/script.js index f72f0fc7..ff7be112 100644 --- a/examples/lights/hemisphere/script.js +++ b/examples/lights/hemisphere/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: -30, y: 20, @@ -8,7 +8,7 @@ const cameraModule = new WHS.CameraModule({ }, far: 5000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); diff --git a/examples/lights/point/script.js b/examples/lights/point/script.js index 96b48110..4dfbee11 100644 --- a/examples/lights/point/script.js +++ b/examples/lights/point/script.js @@ -5,14 +5,14 @@ const blue = 0x6666ff; const white = 0xffffff; const lightIntensity = 1; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: 30, y: 40 }, far: 20000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); diff --git a/examples/lights/spot/script.js b/examples/lights/spot/script.js index c7d33c4c..65fbb9e6 100644 --- a/examples/lights/spot/script.js +++ b/examples/lights/spot/script.js @@ -4,7 +4,7 @@ const white = 0xffffff; const lightIntensity = 1; const lightDistance = 80; -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: -30, y: 20, @@ -12,7 +12,7 @@ const cameraModule = new WHS.CameraModule({ }, far: 20000, near: 1 -}); +})); const controlsModule = new WHS.OrbitControlsModule(); diff --git a/examples/performance/softbodies/script.js b/examples/performance/softbodies/script.js index 3dd88aae..b2183a7e 100644 --- a/examples/performance/softbodies/script.js +++ b/examples/performance/softbodies/script.js @@ -3,10 +3,10 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 6, 18), far: 10000 - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/softbody/cloth/script.js b/examples/softbody/cloth/script.js index 08ad1586..5e6eafd4 100644 --- a/examples/softbody/cloth/script.js +++ b/examples/softbody/cloth/script.js @@ -3,10 +3,10 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 60, 120), far: 10000 - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/softbody/cloth2/script.js b/examples/softbody/cloth2/script.js index a1ad290e..38578e08 100644 --- a/examples/softbody/cloth2/script.js +++ b/examples/softbody/cloth2/script.js @@ -3,10 +3,10 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 60, 120), far: 10000 - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/softbody/cloth3/script.js b/examples/softbody/cloth3/script.js index 134b04ec..3ffef90b 100644 --- a/examples/softbody/cloth3/script.js +++ b/examples/softbody/cloth3/script.js @@ -5,10 +5,10 @@ const mouse = new WHS.VirtualMouseModule(); const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 60, 120), far: 10000 - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/softbody/ropes/script.js b/examples/softbody/ropes/script.js index 51958b52..ce611ea5 100644 --- a/examples/softbody/ropes/script.js +++ b/examples/softbody/ropes/script.js @@ -3,10 +3,10 @@ const mouse = new WHS.VirtualMouseModule(); const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 15, 60), far: 10000 - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/softbody/sphere/script.js b/examples/softbody/sphere/script.js index 002ffb64..2e6af2da 100644 --- a/examples/softbody/sphere/script.js +++ b/examples/softbody/sphere/script.js @@ -3,9 +3,9 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule({ + new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 10, 50) - }), + })), new WHS.RenderingModule({ bgColor: 0x162129, diff --git a/examples/whs-module-audio/positional/script.js b/examples/whs-module-audio/positional/script.js index d6f95aa4..ba01338f 100644 --- a/examples/whs-module-audio/positional/script.js +++ b/examples/whs-module-audio/positional/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const controlsModule = new WHS.OrbitControlsModule(); -const cameraModule = new WHS.CameraModule({ +const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: { z: 250, y: 100 @@ -10,7 +10,7 @@ const cameraModule = new WHS.CameraModule({ far: 30000, near: 1 -}); +})); const world = new WHS.App([ ...UTILS.appModules({ diff --git a/src/components/__tests__/components.spec.js b/src/components/__tests__/components.spec.js index 2a13408a..bd8af72b 100644 --- a/src/components/__tests__/components.spec.js +++ b/src/components/__tests__/components.spec.js @@ -41,7 +41,7 @@ const cameras = [ const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.CameraModule() + new WHS.DefineModule('camera', new WHS.PerspectiveCamera()) ]); app.start(); diff --git a/src/modules/__tests__/modules.spec.js b/src/modules/__tests__/modules.spec.js index 011be6a8..b94e7623 100644 --- a/src/modules/__tests__/modules.spec.js +++ b/src/modules/__tests__/modules.spec.js @@ -16,8 +16,8 @@ test('SceneModule', () => { modules.scene = new WHS.SceneModule(); }); -test('CameraModule', () => { - modules.camera = new WHS.CameraModule(); +test('DefineModule', () => { + modules.camera = new WHS.DefineModule('camera', new WHS.PerspectiveCamera()); }); test('RenderingModule', () => { From 99f1be6ae78d4d36ca03db40618aebb608fffa3c Mon Sep 17 00:00:00 2001 From: Hirako2000 Date: Thu, 22 Jun 2017 21:13:27 +0700 Subject: [PATCH 07/44] Adjusts DefineModule example description patch#2 --- src/modules/DefineModule.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/DefineModule.js b/src/modules/DefineModule.js index a9eb6a2d..739bafd8 100644 --- a/src/modules/DefineModule.js +++ b/src/modules/DefineModule.js @@ -4,13 +4,12 @@ * @param {String} name * @param {Object} data * @memberof module:modules - * @example Creating a rendering module and passing it to App's modules + * @example Creating a DefineModule with PerspectiveCamera as camera module and passing it to App's modules * new App([ * // ... * new DefineModule('camera', new PerspectiveCamera()) * ]); */ - export class DefineModule { constructor(name, data) { this.name = name; From c75586cd1e297e008d36b71d147f1bf4612f9516 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 13:34:18 +0300 Subject: [PATCH 08/44] wip: light {}, camera {} --- examples/animation/alien/script.js | 8 ++-- src/components/cameras/CubeCamera.js | 14 +++---- src/components/cameras/OrthographicCamera.js | 40 +++++++++----------- src/components/cameras/PerspectiveCamera.js | 34 +++++++---------- src/components/lights/AmbientLight.js | 16 +++----- src/components/lights/AreaLight.js | 20 +++++----- src/components/lights/DirectionalLight.js | 16 +++----- src/components/lights/HemisphereLight.js | 22 +++++------ src/components/lights/PointLight.js | 27 ++++++------- src/components/lights/SpotLight.js | 34 ++++++++--------- 10 files changed, 98 insertions(+), 133 deletions(-) diff --git a/examples/animation/alien/script.js b/examples/animation/alien/script.js index 9333bb28..1f426b99 100644 --- a/examples/animation/alien/script.js +++ b/examples/animation/alien/script.js @@ -65,11 +65,9 @@ new WHS.Importer({ }); new WHS.PointLight({ - light: { - color: 0xffffff, - intensity: 2, - distance: 20 - }, + color: 0xffffff, + intensity: 2, + distance: 20, shadow: { far: 30, diff --git a/src/components/cameras/CubeCamera.js b/src/components/cameras/CubeCamera.js index 226e5a0b..041bd5b7 100644 --- a/src/components/cameras/CubeCamera.js +++ b/src/components/cameras/CubeCamera.js @@ -41,11 +41,9 @@ class CubeCamera extends CameraComponent { static defaults = { ...CameraComponent.defaults, - camera: { - near: 1, - far: 1000, - cubeResolution: 128 - } + near: 1, + far: 1000, + cubeResolution: 128 }; constructor(params = {}) { @@ -54,9 +52,9 @@ class CubeCamera extends CameraComponent { build(params = {}) { return this.applyBridge({camera: new CubeCameraNative( - params.camera.near, - params.camera.far, - params.camera.cubeResolution + params.near, + params.far, + params.cubeResolution )}).camera; } } diff --git a/src/components/cameras/OrthographicCamera.js b/src/components/cameras/OrthographicCamera.js index daff5779..02837d0f 100644 --- a/src/components/cameras/OrthographicCamera.js +++ b/src/components/cameras/OrthographicCamera.js @@ -29,27 +29,23 @@ class OrthographicCamera extends CameraComponent { * @static * @default
    * {
-   *   camera: {
-   *     near: 1,
-   *     far: 1000,
-   *     left: system.window.innerWidth / -2,
-   *     right: system.window.innerWidth / 2,
-   *     top: system.window.innerHeight / 2,
-   *     bottom: system.window.innerHeight / -2
-   *   }
+   *   near: 1,
+   *   far: 1000,
+   *   left: system.window.innerWidth / -2,
+   *   right: system.window.innerWidth / 2,
+   *   top: system.window.innerHeight / 2,
+   *   bottom: system.window.innerHeight / -2
    * }
*/ static defaults = { ...CameraComponent.defaults, - camera: { - near: 1, - far: 1000, - left: system.window.innerWidth / -2, - right: system.window.innerWidth / 2, - top: system.window.innerHeight / 2, - bottom: system.window.innerHeight / -2 - } + near: 1, + far: 1000, + left: system.window.innerWidth / -2, + right: system.window.innerWidth / 2, + top: system.window.innerHeight / 2, + bottom: system.window.innerHeight / -2 }; constructor(params = {}) { @@ -58,12 +54,12 @@ class OrthographicCamera extends CameraComponent { build(params = {}) { return this.applyBridge({camera: new OrthographicCameraNative( - params.camera.left, - params.camera.right, - params.camera.top, - params.camera.bottom, - params.camera.near, - params.camera.far + params.left, + params.right, + params.top, + params.bottom, + params.near, + params.far )}).camera; } } diff --git a/src/components/cameras/PerspectiveCamera.js b/src/components/cameras/PerspectiveCamera.js index 24723cba..5c53c003 100644 --- a/src/components/cameras/PerspectiveCamera.js +++ b/src/components/cameras/PerspectiveCamera.js @@ -11,10 +11,8 @@ import {system} from '../../polyfill'; * @extends CameraComponent * @example Create an PerspectiveCamera and set it as app's camera * const camera = new PerspectiveCamera({ - * camera: { - * fov: 75, - * aspect: window.innerWidth / window.innerHeight - * }, + * fov: 75, + * aspect: window.innerWidth / window.innerHeight, * * position: { * x: 0, @@ -32,23 +30,19 @@ class PerspectiveCamera extends CameraComponent { * @static * @default
    * {
-   *   camera: {
-   *     near: 1,
-   *     far: 1000,
-   *     fov: 45,
-   *     aspect: system.window.innerWidth / system.window.innerHeight
-   *   }
+   *   near: 1,
+   *   far: 1000,
+   *   fov: 45,
+   *   aspect: system.window.innerWidth / system.window.innerHeight
    * }
*/ static defaults = { ...CameraComponent.defaults, - camera: { - near: 1, - far: 1000, - fov: 45, - aspect: system.window.innerWidth / system.window.innerHeight - } + near: 1, + far: 1000, + fov: 45, + aspect: system.window.innerWidth / system.window.innerHeight }; constructor(params = {}) { @@ -57,10 +51,10 @@ class PerspectiveCamera extends CameraComponent { build(params = {}) { return this.applyBridge({camera: new PerspectiveCameraNative( - params.camera.fov, - params.camera.aspect, - params.camera.near, - params.camera.far + params.fov, + params.aspect, + params.near, + params.far )}).camera; } } diff --git a/src/components/lights/AmbientLight.js b/src/components/lights/AmbientLight.js index d82b054f..53b56f79 100644 --- a/src/components/lights/AmbientLight.js +++ b/src/components/lights/AmbientLight.js @@ -12,20 +12,16 @@ import {LightComponent} from '../../core/LightComponent'; * @memberof module:components/lights * @example Creating an AmbientLight * new AmbientLight({ - * light: { - * color: 0xffffff, - * intensity: 0.2 - * } + * color: 0xffffff, + * intensity: 0.2 * }).addTo(world); */ class AmbientLight extends LightComponent { static defaults = { ...LightComponent.defaults, - light: { - color: 0xffffff, - intensity: 1 - } + color: 0xffffff, + intensity: 1 }; constructor(params = {}) { @@ -34,8 +30,8 @@ class AmbientLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new AmbientLightNative( - params.light.color, - params.light.intensity + params.color, + params.intensity )}).light; } } diff --git a/src/components/lights/AreaLight.js b/src/components/lights/AreaLight.js index 77de23a5..254be617 100644 --- a/src/components/lights/AreaLight.js +++ b/src/components/lights/AreaLight.js @@ -5,12 +5,10 @@ class AreaLight extends LightComponent { static defaults = { ...LightComponent.defaults, - light: { - color: 0xffffff, - intensity: 1, - width: 10, - height: 10 - } + color: 0xffffff, + intensity: 1, + width: 10, + height: 10 }; constructor(params = {}) { @@ -19,11 +17,11 @@ class AreaLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new RectAreaLightNative( - params.light.color, - params.light.intensity, - params.light.distance, - params.light.width, - params.light.height + params.color, + params.intensity, + params.distance, + params.width, + params.height )}).light; } } diff --git a/src/components/lights/DirectionalLight.js b/src/components/lights/DirectionalLight.js index 4cc0b6da..8455ab9d 100644 --- a/src/components/lights/DirectionalLight.js +++ b/src/components/lights/DirectionalLight.js @@ -13,10 +13,8 @@ import {LightComponent} from '../../core/LightComponent'; * @memberof module:components/lights * @example Creating a DirectionalLight to fall down from vec3(10, 20, 10) to vec3(0, 0, 0) * new DirectionalLight({ - * light: { - * color: 0xffffff, - * intensity: 0.2 - * }, + * color: 0xffffff, + * intensity: 0.2, * * position: [10, 20, 10] * }).addTo(app); @@ -25,10 +23,8 @@ class DirectionalLight extends LightComponent { static defaults = { ...LightComponent.defaults, - light: { - color: 0xffffff, - intensity: 1 - } + color: 0xffffff, + intensity: 1 }; constructor(params = {}) { @@ -38,8 +34,8 @@ class DirectionalLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new DirectionalLightNative( - params.light.color, - params.light.intensity + params.color, + params.intensity )}).light; } } diff --git a/src/components/lights/HemisphereLight.js b/src/components/lights/HemisphereLight.js index 08c72f9f..08cef1c9 100644 --- a/src/components/lights/HemisphereLight.js +++ b/src/components/lights/HemisphereLight.js @@ -11,22 +11,18 @@ import {LightComponent} from '../../core/LightComponent'; * @memberof module:components/lights * @example Creating a HemisphereLight * new HemisphereLight({ - * light: { - * skyColor: 0xff0000, - * groundColor: 0x0000ff, - * intensity: 0.2 - * } + * skyColor: 0xff0000, + * groundColor: 0x0000ff, + * intensity: 0.2 * }).addTo(app); */ class HemisphereLight extends LightComponent { static defaults = { ...LightComponent.defaults, - light: { - skyColor: 0xffffff, - groundColor: 0xffffff, - intensity: 1 - } + skyColor: 0xffffff, + groundColor: 0xffffff, + intensity: 1 } constructor(params = {}) { @@ -35,9 +31,9 @@ class HemisphereLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new HemisphereLightNative( - params.light.skyColor, - params.light.groundColor, - params.light.intensity + params.skyColor, + params.groundColor, + params.intensity )}).light; } } diff --git a/src/components/lights/PointLight.js b/src/components/lights/PointLight.js index d124b9f4..e3788e7a 100644 --- a/src/components/lights/PointLight.js +++ b/src/components/lights/PointLight.js @@ -11,11 +11,9 @@ import {LightComponent} from '../../core/LightComponent'; * @memberof module:components/lights * @example Creating a PointLight * new LightComponent({ - * light: { - * color: 0xff0000, - * intensity: 3, - * distance: 1000 - * }, + * color: 0xff0000, + * intensity: 3, + * distance: 1000, * * position: [10, 20, 10] * }).addTo(app); @@ -23,12 +21,11 @@ import {LightComponent} from '../../core/LightComponent'; class PointLight extends LightComponent { static defaults= { ...LightComponent.defaults, - light: { - color: 0xffffff, - intensity: 1, - distance: 100, - decay: 1 - } + + color: 0xffffff, + intensity: 1, + distance: 100, + decay: 1 } constructor(params = {}) { @@ -38,10 +35,10 @@ class PointLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new PointLightNative( - params.light.color, - params.light.intensity, - params.light.distance, - params.light.decay + params.color, + params.intensity, + params.distance, + params.decay )}).light; } } diff --git a/src/components/lights/SpotLight.js b/src/components/lights/SpotLight.js index 09932897..367b5741 100644 --- a/src/components/lights/SpotLight.js +++ b/src/components/lights/SpotLight.js @@ -12,11 +12,9 @@ import {LightComponent} from '../../core/LightComponent'; * @memberof module:components/lights * @example Creating a SpotLight that falls down from vec3(10, 20, 10) to vec3(0, 0, 0) * new LightComponent({ - * light: { - * color: 0x00ff00, - * intensity: 3, - * distance: 1000 - * }, + * color: 0x00ff00, + * intensity: 3, + * distance: 1000, * * position: [10, 20, 10] * }).addTo(app); @@ -25,14 +23,12 @@ class SpotLight extends LightComponent { static defaults = { ...LightComponent.defaults, - light: { - color: 0xffffff, - intensity: 1, - distance: 100, - angle: Math.PI / 3, - exponent: 0, - decay: 1 - } + color: 0xffffff, + intensity: 1, + distance: 100, + angle: Math.PI / 3, + exponent: 0, + decay: 1 }; constructor(params = {}) { @@ -42,12 +38,12 @@ class SpotLight extends LightComponent { build(params = {}) { return this.applyBridge({light: new SpotLightNative( - params.light.color, - params.light.intensity, - params.light.distance, - params.light.angle, - params.light.exponent, - params.light.decay + params.color, + params.intensity, + params.distance, + params.angle, + params.exponent, + params.decay )}).light; } } From 799efb99f47809ab92e5533897217c0377d9e082 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 14:01:31 +0300 Subject: [PATCH 09/44] Fix light, camera --- examples/animation/alien/script.js | 10 +- examples/basic/fogexp/script.js | 6 +- examples/basic/helloworld/script.js | 2 +- examples/basic/model/script.js | 10 +- examples/design/easter/script.js | 16 +- examples/design/saturn/script.js | 14 +- examples/globals.js | 12 +- examples/lights/ambient/script.js | 6 +- examples/lights/area/script.js | 10 +- examples/lights/directional/script.js | 4 +- examples/lights/hemisphere/script.js | 11 +- examples/lights/point/script.js | 32 +- examples/lights/spot/script.js | 17 +- examples/performance/softbodies/script.js | 12 +- examples/softbody/ropes/script.js | 14 +- examples/textures/phong/script.js | 5 +- .../whs-module-audio/positional/script.js | 8 +- examples/whs-module-dat.gui/mesh/script.js | 6 +- package-lock.json | 11359 ++++++++++++++++ package.json | 1 + src/components/lights/PointLight.js | 1 + 21 files changed, 11431 insertions(+), 125 deletions(-) create mode 100644 package-lock.json diff --git a/examples/animation/alien/script.js b/examples/animation/alien/script.js index 1f426b99..cc2ec08a 100644 --- a/examples/animation/alien/script.js +++ b/examples/animation/alien/script.js @@ -120,12 +120,10 @@ new WHS.Box({ }).addTo(world); new WHS.SpotLight({ - light: { - color: 0xffffff, - intensity: 1, - distance: 100, - angle: 90 - }, + color: 0xffffff, + intensity: 1, + distance: 100, + angle: 90, shadow: { cast: false diff --git a/examples/basic/fogexp/script.js b/examples/basic/fogexp/script.js index 62717f42..716baf70 100644 --- a/examples/basic/fogexp/script.js +++ b/examples/basic/fogexp/script.js @@ -190,10 +190,8 @@ new WHS.Sphere({ }).addTo(world); new WHS.AmbientLight({ - light: { - color: 0xffffff, - intensity: 0.3 - } + color: 0xffffff, + intensity: 0.3 }).addTo(world); world.start(); diff --git a/examples/basic/helloworld/script.js b/examples/basic/helloworld/script.js index 4f8fe298..512547ba 100644 --- a/examples/basic/helloworld/script.js +++ b/examples/basic/helloworld/script.js @@ -3,7 +3,7 @@ import * as UTILS from '../../globals'; const world = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), new WHS.RenderingModule(UTILS.appDefaults.rendering, { shadow: true }), diff --git a/examples/basic/model/script.js b/examples/basic/model/script.js index c01c4b0a..422793fc 100644 --- a/examples/basic/model/script.js +++ b/examples/basic/model/script.js @@ -65,12 +65,10 @@ teapot.addTo(world).then(() => { UTILS.addBoxPlane(world, 500); new WHS.SpotLight({ - light: { - color: 0xffffff, - intensity: 1, - distance: 300, - angle: 180 - }, + color: 0xffffff, + intensity: 1, + distance: 300, + angle: 180, shadowmap: { fov: 90 diff --git a/examples/design/easter/script.js b/examples/design/easter/script.js index 7d5bcbdd..657b4f2f 100644 --- a/examples/design/easter/script.js +++ b/examples/design/easter/script.js @@ -114,12 +114,10 @@ const rabbit = new WHS.Importer({ rabbit.addTo(app); new WHS.SpotLight({ - light: { - color: 0xffffff, - decay: 1, - distance: 150, - intensity: 1 - }, + color: 0xffffff, + decay: 1, + distance: 150, + intensity: 1, shadowmap: { left: -20, @@ -152,10 +150,8 @@ new WHS.SpotLight({ }).addTo(app); new WHS.AmbientLight({ - light: { - intensity: 0.9, - color: 0xffffff - } + intensity: 0.9, + color: 0xffffff }).addTo(app); let egg2, egg3, egg4, egg5, egg6, egg7, egg8, egg9; diff --git a/examples/design/saturn/script.js b/examples/design/saturn/script.js index eeb561bf..a80c765b 100644 --- a/examples/design/saturn/script.js +++ b/examples/design/saturn/script.js @@ -56,18 +56,14 @@ planet.addTo(space); // LIGHTS. new WHS.AmbientLight({ - light: { - color: 0x663344, - intensity: 2 - } + color: 0x663344, + intensity: 2 }).addTo(world); new WHS.DirectionalLight({ - light: { - color: 0xffffff, - intensity: 1.5, - distance: 800 - }, + color: 0xffffff, + intensity: 1.5, + distance: 800, shadowmap: { width: 2048, diff --git a/examples/globals.js b/examples/globals.js index f5b4f12c..1bbc6eaf 100644 --- a/examples/globals.js +++ b/examples/globals.js @@ -83,22 +83,16 @@ export const $colors = { export function addAmbient(world, intensity) { new WHS.AmbientLight({ - light: { - intensity - } + intensity }).addTo(world); } export function addBasicLights(world, intensity = 0.5, position = [0, 10, 10], distance = 100, shadowmap) { addAmbient(world, 1 - intensity); - console.log(shadowmap); - return new WHS.PointLight({ - light: { - intensity, - distance - }, + intensity, + distance, shadow: Object.assign({ fov: 90 diff --git a/examples/lights/ambient/script.js b/examples/lights/ambient/script.js index f4e8471e..7b8e1428 100644 --- a/examples/lights/ambient/script.js +++ b/examples/lights/ambient/script.js @@ -74,10 +74,8 @@ new WHS.Box({ }).addTo(world); new WHS.AmbientLight({ - light: { - color: 0xffffff, - intensity: 0.4 - } + color: 0xffffff, + intensity: 0.4 }).addTo(world); world.start(); diff --git a/examples/lights/area/script.js b/examples/lights/area/script.js index 3e3780bb..6f4eb1cd 100644 --- a/examples/lights/area/script.js +++ b/examples/lights/area/script.js @@ -74,12 +74,10 @@ planeLight.addTo(world); const intensityFactor = 2000; const areaLight = new WHS.AreaLight({ - light: { - color: 0xffffff, - intensity: lightDimension.width * intensityFactor, - width: lightDimension.width, - height: lightDimension.height - }, + color: 0xffffff, + intensity: lightDimension.width * intensityFactor, + width: lightDimension.width, + height: lightDimension.height, position: { x: lightPosition.x, diff --git a/examples/lights/directional/script.js b/examples/lights/directional/script.js index 89900da0..77318b5c 100644 --- a/examples/lights/directional/script.js +++ b/examples/lights/directional/script.js @@ -56,9 +56,7 @@ new WHS.Sphere({ let angle = 0; new WHS.DirectionalLight({ - light: { - intensity: 1 - }, + intensity: 1, shadow: { mapSize: { diff --git a/examples/lights/hemisphere/script.js b/examples/lights/hemisphere/script.js index ff7be112..0e0df874 100644 --- a/examples/lights/hemisphere/script.js +++ b/examples/lights/hemisphere/script.js @@ -80,9 +80,7 @@ new WHS.Box({ }).addTo(world); new WHS.DirectionalLight({ - light: { - intensity: 0.4 - }, + intensity: 0.4, shadow: { mapSize: { @@ -100,11 +98,8 @@ new WHS.DirectionalLight({ // The hemisphere light const hemisphereLight = new WHS.HemisphereLight({ - light: { - skyColor: 0xFCD440, - intensity: 0.4 - } - + skyColor: 0xFCD440, + intensity: 0.4 }); hemisphereLight.addTo(world); diff --git a/examples/lights/point/script.js b/examples/lights/point/script.js index 4dfbee11..1bc36ed7 100644 --- a/examples/lights/point/script.js +++ b/examples/lights/point/script.js @@ -83,18 +83,15 @@ new WHS.Box({ }).addTo(world); new WHS.AmbientLight({ - light: { - color: 0xffffff, - intensity: 0.05 - } + color: 0xffffff, + intensity: 0.05 }).addTo(world); const redSpotLight = new WHS.PointLight({ - light: { - color: red, - intensity: lightIntensity, - distance: 40 - }, + color: red, + intensity: lightIntensity, + distance: 40, + shadow: { cast: false }, @@ -114,11 +111,9 @@ new WHS.Sphere({ }).addTo(redSpotLight); const whiteSpotLight = new WHS.PointLight({ - light: { - color: white, - intensity: lightIntensity, - distance: 90 - } + color: white, + intensity: lightIntensity, + distance: 90 }); whiteSpotLight.addTo(world); @@ -131,11 +126,10 @@ new WHS.Sphere({ }).addTo(whiteSpotLight); const blueSpotLight = new WHS.PointLight({ - light: { - color: blue, - intensity: lightIntensity, - distance: 50 - }, + color: blue, + intensity: lightIntensity, + distance: 50, + shadow: { cast: false } diff --git a/examples/lights/spot/script.js b/examples/lights/spot/script.js index 65fbb9e6..50e25be6 100644 --- a/examples/lights/spot/script.js +++ b/examples/lights/spot/script.js @@ -78,19 +78,16 @@ new WHS.Box({ }).addTo(world); new WHS.AmbientLight({ - light: { - color: 0xffffff, - intensity: 0.05 - } + color: 0xffffff, + intensity: 0.05 }).addTo(world); const spotLight = new WHS.SpotLight({ - light: { - color: white, - intensity: lightIntensity, - distance: lightDistance, - angle: Math.PI / 4 - }, + color: white, + intensity: lightIntensity, + distance: lightDistance, + angle: Math.PI / 4, + position: { x: 0, y: 20, diff --git a/examples/performance/softbodies/script.js b/examples/performance/softbodies/script.js index b2183a7e..c25201a5 100644 --- a/examples/performance/softbodies/script.js +++ b/examples/performance/softbodies/script.js @@ -71,10 +71,8 @@ UTILS.addBoxPlane(world, 250).then(() => sphere.addTo(world)).then(() => { }); new WHS.DirectionalLight({ - light: { - color: 0xffffff, // 0x00ff00, - intensity: 1 - }, + color: 0xffffff, // 0x00ff00, + intensity: 1, position: { x: 0, @@ -84,10 +82,8 @@ new WHS.DirectionalLight({ }).addTo(world); new WHS.AmbientLight({ - light: { - color: 0xffffff, - intensity: 0.5 - } + color: 0xffffff, + intensity: 0.5 }).addTo(world); world.start(); diff --git a/examples/softbody/ropes/script.js b/examples/softbody/ropes/script.js index ce611ea5..33b021b2 100644 --- a/examples/softbody/ropes/script.js +++ b/examples/softbody/ropes/script.js @@ -221,11 +221,9 @@ new WHS.Plane({ }).addTo(world); new WHS.SpotLight({ - light: { - intensity: 6, - distance: 100, - angle: 90 - }, + intensity: 6, + distance: 100, + angle: 90, position: { y: 50 @@ -233,10 +231,8 @@ new WHS.SpotLight({ }).addTo(world); new WHS.AmbientLight({ - light: { - intensity: 0.6, - color: 0xffffff - } + intensity: 0.6, + color: 0xffffff }).addTo(world); world.start(); diff --git a/examples/textures/phong/script.js b/examples/textures/phong/script.js index 6351eeac..b24f04ca 100644 --- a/examples/textures/phong/script.js +++ b/examples/textures/phong/script.js @@ -103,10 +103,7 @@ boxDisplace.addTo(world); labelDisplace.addTo(world); new WHS.PointLight({ - light: { - distance: 100 - }, - + distance: 100, position: [0, 0, 10] }).addTo(world); diff --git a/examples/whs-module-audio/positional/script.js b/examples/whs-module-audio/positional/script.js index ba01338f..ea3c17af 100644 --- a/examples/whs-module-audio/positional/script.js +++ b/examples/whs-module-audio/positional/script.js @@ -55,11 +55,9 @@ audioModule.addListener(cameraModule.camera); audioModule.playAudio(`${process.assetsPath}/sounds/folk.mp3`); new WHS.PointLight({ - light: { - color: 0xffffff, - intensity: 1, - distance: 1000 - }, + color: 0xffffff, + intensity: 1, + distance: 1000, position: [10, 40, 10] }).addTo(world); diff --git a/examples/whs-module-dat.gui/mesh/script.js b/examples/whs-module-dat.gui/mesh/script.js index 303934c8..519135aa 100644 --- a/examples/whs-module-dat.gui/mesh/script.js +++ b/examples/whs-module-dat.gui/mesh/script.js @@ -54,10 +54,8 @@ DatGUI.folder('hello').folder('cool').Custom([{ new WHS.SpotLight({ position: [10, 20, 10], - light: { - distance: 200, - intensity: 2 - }, + distance: 200, + intensity: 2, modules: [ DatGUI.Light({ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..394e6ec2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11359 @@ +{ + "name": "whs", + "version": "2.0.0-beta.9.1", + "lockfileVersion": 1, + "dependencies": { + "@types/colors": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/@types/colors/-/colors-0.6.33.tgz", + "integrity": "sha1-F9raWXHDlSWUkNbIPXwYLPbpzlU=", + "dev": true + }, + "@types/lodash": { + "version": "4.14.66", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.66.tgz", + "integrity": "sha512-LpGSiIy5/utq8AT2bSXGnENnS1kCZJ1m84L1yqKst2UehSZe6VWROmiysYg/lLJR6zu2ooeVoQtkUHToA+mEtQ==", + "dev": true + }, + "@types/loggly": { + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@types/loggly/-/loggly-1.1.30.tgz", + "integrity": "sha1-pmWEMjFMvw7ANQ0z59+fTAt2s9A=", + "dev": true + }, + "@types/node": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.2.tgz", + "integrity": "sha512-1uANgw7TMKnSSO0jffiFnrcMsKVqK3n1IHiSwSgptsRzgLfTCu0QdxZPofyYKVA2U0vH4OmullQ2IiU/XhFp5w==", + "dev": true + }, + "@types/q": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.35.tgz", + "integrity": "sha512-Br6c/XFnnYBSOGKadEaXruA71rpUMxMzlSrGmhpoIEWrqRMI/yQjrY+0ORJi52m/JgkxRqatdBJ32fQ/95qtbw==", + "dev": true + }, + "@types/shelljs": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.6.0.tgz", + "integrity": "sha1-CQtwXBAs5/xcDF6ptSRBj/FYQN8=", + "dev": true + }, + "@types/which": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@types/which/-/which-1.0.28.tgz", + "integrity": "sha1-AW44dim4gXvtZT/jLqtdESecjfY=", + "dev": true + }, + "abab": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", + "dev": true + }, + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true + }, + "accord": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.27.3.tgz", + "integrity": "sha1-f7kSlwkoXK6oTrNyxOiCAxtxOOg=", + "dev": true, + "dependencies": { + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true + } + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "dependencies": { + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + } + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz", + "integrity": "sha1-7FanSe4QPk4Ix5C5w1PfFgVbl/k=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true + }, + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", + "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true + }, + "babel-helper-define-map": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "dev": true + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true + }, + "babel-jest": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-19.0.0.tgz", + "integrity": "sha1-WTI87ZmjqE01naIZyogQdP/Gzj8=", + "dev": true + }, + "babel-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.0.tgz", + "integrity": "sha1-P78lgfCFd0vZZC3KmZDm1sFJEUQ=", + "dev": true + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true + }, + "babel-plugin-add-module-exports": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", + "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", + "dev": true + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true + }, + "babel-plugin-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", + "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", + "dev": true + }, + "babel-plugin-jest-hoist": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-19.0.0.tgz", + "integrity": "sha1-SuKgTqYSpuc2UfP95SwXiZEwS+o=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true + }, + "babel-plugin-transform-decorators-legacy": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz", + "integrity": "sha1-dBtY9sW86eYCfgiC2cmU8E82aSU=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "dev": true + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "dev": true + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "dev": true + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true + }, + "babel-preset-jest": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-19.0.0.tgz", + "integrity": "sha1-ItZyAdAjJKGVgRKI6zgpS7PKw5Y=", + "dev": true + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true + }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", + "dev": true + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "Base64": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true + }, + "beautylog": { + "version": "5.0.23", + "resolved": "https://registry.npmjs.org/beautylog/-/beautylog-5.0.23.tgz", + "integrity": "sha1-2wFhsGO+T/QM7oEsBmWC2i5Zm/E=", + "dev": true + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "dev": true + }, + "bit-twiddle": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4=", + "dev": true + }, + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true + } + } + }, + "blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "boxen": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.3.1.tgz", + "integrity": "sha1-p9iYJDrmIvertrtgTXQKdsalRhs=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz", + "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true + }, + "browserify-shim": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-2.0.10.tgz", + "integrity": "sha1-dKDtW5t4SlooeQZROoltMfVKhLg=", + "dev": true + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", + "integrity": "sha1-NVIZzWzxjb58Acx/0tznZc/cVJo=", + "dev": true + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "catharsis": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.8.tgz", + "integrity": "sha1-aTR59DqsVJ2Aa9c+kkzQ2USVGgY=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "dev": true + }, + "cipher-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "dev": true + }, + "circular-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "clean-css": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.27.tgz", + "integrity": "sha1-re91sxwWD/pdcvTeZ5ZuJmDBolU=", + "dev": true, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.2.0.tgz", + "integrity": "sha1-OlrnT9drYmevZm5p4q+70B3vNNE=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "cli-spinners": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz", + "integrity": "sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8=", + "dev": true + }, + "cli-table2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz", + "integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=", + "dev": true, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "clite": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clite/-/clite-0.3.0.tgz", + "integrity": "sha1-5/y8jMW9Pn+LhO1I2xLpR0zHNEE=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "update-notifier": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.6.3.tgz", + "integrity": "sha1-d23sjaoT6WKjQeih2YNUMGtnrgg=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true + } + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true + }, + "color-name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "dev": true, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + } + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", + "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true + } + } + }, + "configstore": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", + "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", + "dev": true, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constantinople": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.0.tgz", + "integrity": "sha1-dWnKqKo/jVk11i4fqW+fcCzYHHk=", + "dev": true, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "content-type-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-props": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-1.6.0.tgz", + "integrity": "sha1-8DJLvumXcRAeezraES8xPDk9uO0=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "coveralls": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.1.tgz", + "integrity": "sha1-1wu5rMGDXsTwY/+drFQjwXsR8Xg=", + "dev": true, + "dependencies": { + "js-yaml": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", + "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + } + } + }, + "cross-spawn-async": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "dev": true, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + } + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true + }, + "crypto-browserify": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", + "dev": true + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", + "dev": true, + "optional": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "dat.gui": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.6.1.tgz", + "integrity": "sha1-fD0KKsLFcNr7YbkSA/1/4xcdasc=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", + "dev": true + }, + "deep-equal": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", + "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deep-strict-equal": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", + "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "derequire": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/derequire/-/derequire-0.8.0.tgz", + "integrity": "sha1-wffx2izt5Ere3gRzePA/RE6cTA0=", + "dev": true, + "dependencies": { + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", + "dev": true + } + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true + }, + "detective": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true + }, + "du": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", + "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", + "dev": true, + "dependencies": { + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + } + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "dev": true, + "dependencies": { + "end-of-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", + "dev": true + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "each-props": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.0.tgz", + "integrity": "sha1-ftgDHJJ2iK7bSoluuRSFtEh7kOo=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true + }, + "engine.io": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz", + "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", + "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true + }, + "enhance-visitors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", + "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=", + "dev": true + }, + "enhanced-resolve": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", + "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "es5-ext": { + "version": "0.10.23", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", + "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", + "dev": true + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.1.0.tgz", + "integrity": "sha1-xmOSP24gqtSNDA+knzHG1PSTYM8=", + "dev": true, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/escope/-/escope-0.0.16.tgz", + "integrity": "sha1-QYx6CvynIdr+ZZGT/Zhig+dGU48=", + "dev": true + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true + } + } + }, + "eslint-config-xo": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.18.2.tgz", + "integrity": "sha1-ChVxIIdWGZKec1/9axhcQeihh68=", + "dev": true + }, + "eslint-formatter-pretty": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-1.1.0.tgz", + "integrity": "sha1-q00G2gL+2ME66fDcVApDPvftb14=", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + } + } + }, + "eslint-import-resolver-node": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", + "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "dev": true + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true + } + } + }, + "eslint-plugin-ava": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-4.2.1.tgz", + "integrity": "sha1-fNtegbx3n0gz1HIKYJPl9KbKGRM=", + "dev": true + }, + "eslint-plugin-import": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.6.0.tgz", + "integrity": "sha512-JdkYDmMMjhxW6X/IVclD+vQXO6e2nJJT4cKcyTw95mvBCWkr8THXKFhc+WCvGvOscjGuLQzUB7tBeJddrg2jig==", + "dev": true, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-no-use-extend-native": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.3.12.tgz", + "integrity": "sha1-OtmgDC3yO11/f2vpFVCYWkq3Aeo=", + "dev": true + }, + "eslint-plugin-promise": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", + "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", + "dev": true + }, + "eslint-plugin-unicorn": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-2.1.2.tgz", + "integrity": "sha1-md/+n0dzsEvDk1an/r1k3XACdLw=", + "dev": true + }, + "espree": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", + "integrity": "sha1-/V3ux2qXpRIKnNOnyxF3oJI7EdI=", + "dev": true, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrefactor": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/esrefactor/-/esrefactor-0.1.0.tgz", + "integrity": "sha1-0UJ5WigjOauB6Ta1t6IbEb8ZexM=", + "dev": true, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "estraverse": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-0.0.4.tgz", + "integrity": "sha1-AaCTLf7ldGhKWYr1pnw7+bZCjbI=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true + }, + "exec-sh": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", + "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", + "dev": true + }, + "execa": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", + "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", + "dev": true + }, + "execspawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz", + "integrity": "sha1-gob53efOzeeQX73ATiTzaPI/jaY=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "expand-template": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz", + "integrity": "sha1-bDAzIxd6YrGyLAcCefeGEoe2mxo=", + "dev": true + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "dev": true + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true + }, + "figlet": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.0.tgz", + "integrity": "sha1-bEZTc3j6tkkUa1phQ92gGbQwtBA=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true + }, + "filesize": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.10.tgz", + "integrity": "sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "finalhandler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "dev": true + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true + }, + "fstream-ignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", + "integrity": "sha1-GMiR2wG3gqdKe/+Tag8kmXdBx6s=", + "dev": true, + "dependencies": { + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-set-props": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", + "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ghreleases": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.5.tgz", + "integrity": "sha1-og+BlAdDEeGdhMy6em4IxLQ0/YA=", + "dev": true + }, + "ghrepos": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz", + "integrity": "sha1-1m6unZijtTmORg1tt+EKdCaS6Bs=", + "dev": true + }, + "ghutils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.1.tgz", + "integrity": "sha1-T87f+sk1/KzgbhKhfGF04sKf/k8=", + "dev": true + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "gl": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gl/-/gl-4.0.3.tgz", + "integrity": "sha1-J3+L1ULIT5n6W/mIIbMteyegVic=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true + }, + "glsl-tokenizer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.2.tgz", + "integrity": "sha1-cgMHUi4DxXrzXABVGVDEpw7y37k=", + "dev": true + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "gulp-babel": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-6.1.2.tgz", + "integrity": "sha1-fAF25Lo/JExgWIoMSzIKRdGt784=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "gulp-benchmark": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/gulp-benchmark/-/gulp-benchmark-1.1.1.tgz", + "integrity": "sha1-rK3Ofa1DhHc4xVN4O6bwo5YXUHk=", + "dev": true, + "dependencies": { + "benchmark": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", + "integrity": "sha1-Lx4vpMNZ8REiqhgwgiGOlX45DHM=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "gulp-browser-basedir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-browser-basedir/-/gulp-browser-basedir-1.0.1.tgz", + "integrity": "sha1-K/meTULMzGmqNf6XtdeFu1JAdaw=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "gulp-browserify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/gulp-browserify/-/gulp-browserify-0.5.1.tgz", + "integrity": "sha1-ggEIrCVUqVStuL4X0jlYsMBL4IM=", + "dev": true, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true + }, + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "assert": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz", + "integrity": "sha1-raoExGu1jG3R8pTaPrJuYijrbkQ=", + "dev": true + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "browser-pack": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-2.0.1.tgz", + "integrity": "sha1-XRxSf1bFgmd0EcTbKhKGSP9r8VA=", + "dev": true, + "dependencies": { + "JSONStream": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", + "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", + "dev": true, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + } + } + } + } + }, + "browser-resolve": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.2.4.tgz", + "integrity": "sha1-Wa54IKgpVezTL1+3xGisIcRyOAY=", + "dev": true + }, + "browserify": { + "version": "3.46.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-3.46.1.tgz", + "integrity": "sha1-LC5Kfy9AgXjnjCI7W1ezfCGFrY4=", + "dev": true + }, + "buffer": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-2.1.13.tgz", + "integrity": "sha1-yIg46/efMLi0pwd4hHC+qKYsI1U=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true + }, + "combine-source-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", + "integrity": "sha1-2edPWT2c1DgHMSy12EbUUe+qnrc=", + "dev": true + }, + "commondir": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", + "integrity": "sha1-ifAP3NUbUZxXhzP+xWPmptp/W+I=", + "dev": true + }, + "concat-stream": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", + "integrity": "sha1-rMO79WAsuMyYDGrIQPp9hgPj7zY=", + "dev": true + }, + "console-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.0.3.tgz", + "integrity": "sha1-04mNLDqTEC82QZf4h0tPkrUoao4=", + "dev": true + }, + "constants-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", + "integrity": "sha1-kld9tSe6bEzwpFaNhLwDH0QeIfI=", + "dev": true + }, + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + }, + "crypto-browserify": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", + "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true + }, + "defined": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "dev": true + }, + "deps-sort": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-0.1.2.tgz", + "integrity": "sha1-2qL7YUoXyWN9gB4vVTOa43DzYRo=", + "dev": true, + "dependencies": { + "JSONStream": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", + "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", + "dev": true, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + } + } + } + } + }, + "detective": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-3.1.0.tgz", + "integrity": "sha1-d3gkRKt1K4jKG+Lp0KA5Xx2iXu0=", + "dev": true + }, + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", + "dev": true + }, + "events": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", + "integrity": "sha1-dYSdz+k9EPsFfDAFWv29UdBqjiQ=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "dependencies": { + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true + }, + "inline-source-map": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", + "integrity": "sha1-pSi1FOaJ/OkNswiehw2S9Sestes=", + "dev": true, + "dependencies": { + "source-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", + "integrity": "sha1-hYb7mloAXltQHiHNGLbyG0V60fk=", + "dev": true + } + } + }, + "insert-module-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.0.0.tgz", + "integrity": "sha1-7orrne4WgZ4zqhRYilWIJK8MFdw=", + "dev": true, + "dependencies": { + "process": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.6.0.tgz", + "integrity": "sha1-fdm+gP+q7dTLYo8YJ/HLq23AkY8=", + "dev": true + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "dev": true + }, + "JSONStream": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.7.4.tgz", + "integrity": "sha1-c0KQ5BUR7qfCz+FR+/mlY6l7l4Y=", + "dev": true + }, + "lexical-scope": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.1.1.tgz", + "integrity": "sha1-3rrBBnQ18TWdkPz9npS8su5Hsr8=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true + }, + "module-deps": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-2.0.6.tgz", + "integrity": "sha1-uZkyHHOsM1gPAHEsDzB1/cpCVj8=", + "dev": true, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "parents": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.2.tgz", + "integrity": "sha1-ZxR4JuSX1AdZqvW6TJllm2A00wI=", + "dev": true + }, + "stream-combiner": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.1.0.tgz", + "integrity": "sha1-DcOJo8ID+PTVY2j5Xd5S65Jptb4=", + "dev": true + } + } + }, + "parents": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", + "integrity": "sha1-+iEvAk2fpjGNu2tM5nbIvkk7nEM=", + "dev": true + }, + "path-platform": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz", + "integrity": "sha1-tVhdfDxGPYmqAGDYZhHPGv1hfio=", + "dev": true + }, + "process": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.7.0.tgz", + "integrity": "sha1-xSIIFho0rfOBI0SuhdPmFQRpOJ0=", + "dev": true + }, + "punycode": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz", + "integrity": "sha1-VACKyXKux0F13vnLpt9/qdORh0A=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.0.tgz", + "integrity": "sha1-w2WgimnEQ6zP6zqd6rNePwq6pHY=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + }, + "shell-quote": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz", + "integrity": "sha1-GkEZbzwDM8SCMjWT1ohuzxU92YY=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true + }, + "stream-browserify": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-0.1.3.tgz", + "integrity": "sha1-lc8bNpdy4nra9GNSJlFSaJxsS+k=", + "dev": true, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "string_decoder": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.0.1.tgz", + "integrity": "sha1-9UctCo0WUOyCN1LSTm/WJ7Ob8UE=", + "dev": true + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true + }, + "subarg": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-0.0.1.tgz", + "integrity": "sha1-PVawfaz7xFu7Y/dnK0O2PkY2jjo=", + "dev": true + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "syntax-error": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", + "integrity": "sha1-tFSXBtOGzBwdx8JCPxhXm2yt5xA=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true + } + } + }, + "timers-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.0.3.tgz", + "integrity": "sha1-/7pwycEu7ZFv1nMY5imsbzIpVVE=", + "dev": true, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "umd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/umd/-/umd-2.0.0.tgz", + "integrity": "sha1-dJaDsNUUcorg4bYZX1d0r8CtT48=", + "dev": true + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-cli": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-1.3.0.tgz", + "integrity": "sha1-pr+7i+NTQb4pCuRc0+QBBxIW7dQ=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true + } + } + }, + "gulp-jsdoc3": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-jsdoc3/-/gulp-jsdoc3-1.0.1.tgz", + "integrity": "sha1-Yek1IS6qlrXC5yvD1n0e3d8VKTo=", + "dev": true + }, + "gulp-less": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.3.2.tgz", + "integrity": "sha1-9mNq3MZhUKiQJxn6WZY/x/hipJo=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "gulp-watch": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-4.3.11.tgz", + "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", + "dev": true, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true + }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true, + "optional": true + } + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true + } + } + }, + "happypack": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/happypack/-/happypack-3.1.0.tgz", + "integrity": "sha1-i8VeNwG6z/cY04icuItQIWQcrVk=", + "dev": true, + "dependencies": { + "async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz", + "integrity": "sha1-J5ZkJyNXOFlWVjP8YnRES+4vjOM=", + "dev": true + }, + "loader-utils": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.16.tgz", + "integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=", + "dev": true + } + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", + "dev": true, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true + }, + "hash.js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", + "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "http-browserify": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.3.2.tgz", + "integrity": "sha1-tWLDRHk0mmkNemWX30la76jGBPU=", + "dev": true + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "hyperquest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz", + "integrity": "sha1-OeH+9miI3Hzg3sbA3YFPb8iUStU=", + "dev": true + }, + "i": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", + "integrity": "sha1-HSuFQVjsgWkRPGy39raAHpniEdU=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz", + "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "indx": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", + "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=", + "dev": true + }, + "infinity-agent": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", + "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "ink-docstrap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.0.tgz", + "integrity": "sha1-6QBeW7kCXMmpvo5ErYf4rViIyB0=", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true + }, + "inquirer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.0.3.tgz", + "integrity": "sha1-6+OglIVxvMRszMvi+bzsJR6YS9A=", + "dev": true + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", + "dev": true + }, + "irregular-plurals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.2.0.tgz", + "integrity": "sha1-OPKZg0uowAwwvpxVThNyaXUv86w=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true + }, + "is-domain": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", + "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "dev": true + }, + "is-expression": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-2.1.0.tgz", + "integrity": "sha1-kb6dR968/vB3l36XIr5tz7RGXvA=", + "dev": true, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true + }, + "is-get-set-prop": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz", + "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-js-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz", + "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=", + "dev": true + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-obj-prop": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz", + "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz", + "integrity": "sha1-wVvz5LZrYtcu+vKSWEhmPsvGGbY=", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-proto-prop": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-1.0.0.tgz", + "integrity": "sha1-s5UflcCJkk+11PzaZUKrPoPisiA=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.9.tgz", + "integrity": "sha512-zV14oa+hjBNP3gJTM/BzNdJpInHKbZ9cLIEwVasuaTUA1ebF9TBOIfcC5SDAE3C11rXxOw3KSimKGMiFz6PpWQ==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz", + "integrity": "sha512-lPgUY+Pa5dlq2/l0qs1PJZ54QPSfo+s4+UZdkb2d0hbOyrEIAbUJphBLFjEyXBdeCONgGRADFzs3ojfFtmuwFA==", + "dev": true + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dev": true, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "dev": true + }, + "istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", + "dev": true + }, + "jest": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-19.0.2.tgz", + "integrity": "sha1-t5T6r4/0Yec4jyi+71WaVPILLBA=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "jest-cli": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-19.0.2.tgz", + "integrity": "sha1-zDYgtirKxfLZOlSMtu9pfU7IVEM=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + } + } + }, + "jest-babel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-babel/-/jest-babel-1.0.1.tgz", + "integrity": "sha1-72Wd8Ok5ewg8D2rr1MuM+qd9+L8=", + "dev": true + }, + "jest-changed-files": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-19.0.2.tgz", + "integrity": "sha1-FsVMhMMnC+QI4G0uivPz43qIWCQ=", + "dev": true + }, + "jest-config": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-19.0.4.tgz", + "integrity": "sha1-QpgCEdRkF+kcp6v/0IbCcCNPc/0=", + "dev": true + }, + "jest-diff": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-19.0.0.tgz", + "integrity": "sha1-0VY8/FbItgIymI+8BdTRbtkPBjw=", + "dev": true + }, + "jest-environment-jsdom": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-19.0.2.tgz", + "integrity": "sha1-ztqFnEpLlKs15N59q1S5JvKT5KM=", + "dev": true + }, + "jest-environment-node": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-19.0.2.tgz", + "integrity": "sha1-boQHnbh+0h0MBeH5Zp8gexFv6Zs=", + "dev": true + }, + "jest-file-exists": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-19.0.0.tgz", + "integrity": "sha1-zKLlh6EeyS4kz+qz+KlNZX8/zrg=", + "dev": true + }, + "jest-haste-map": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-19.0.2.tgz", + "integrity": "sha1-KGSEw6Fuhtp4crCHfDXc4ww9bwc=", + "dev": true + }, + "jest-jasmine2": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-19.0.2.tgz", + "integrity": "sha1-FnmRrIJZgfsagArxJug6/MqDLHM=", + "dev": true + }, + "jest-matcher-utils": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz", + "integrity": "sha1-Xs2bY1ZdKwAfYfv37Ex/U3lkVk0=", + "dev": true + }, + "jest-matchers": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-19.0.0.tgz", + "integrity": "sha1-x07Mbr/sBvOEdnuk1vpKQtZ1V1Q=", + "dev": true + }, + "jest-message-util": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-19.0.0.tgz", + "integrity": "sha1-cheWuJwOTXYWBvm6jLgoo7YkZBY=", + "dev": true + }, + "jest-mock": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-19.0.0.tgz", + "integrity": "sha1-ZwOGQelgerLOCOxKjLg6q7yJnQE=", + "dev": true + }, + "jest-regex-util": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-19.0.0.tgz", + "integrity": "sha1-t3VFhxEq7eFFZRC7H2r+dO9ZhpE=", + "dev": true + }, + "jest-resolve": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-19.0.2.tgz", + "integrity": "sha1-V5NXXeTweuwy99f/DGwYGWPu+zw=", + "dev": true + }, + "jest-resolve-dependencies": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-19.0.0.tgz", + "integrity": "sha1-p0GtH6CUFA5k7PJkKlBPg07OIu4=", + "dev": true + }, + "jest-runtime": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-19.0.4.tgz", + "integrity": "sha1-8WfZ8TR3UvICc2EGeSZIU0n8wkU=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-19.0.2.tgz", + "integrity": "sha1-nBshYhT3GHw4v9XHCx76sWsP9Qs=", + "dev": true + }, + "jest-util": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-19.0.2.tgz", + "integrity": "sha1-4KAjKiq55rK1Nmi9s1NMK1l37UE=", + "dev": true + }, + "jest-validate": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-19.0.2.tgz", + "integrity": "sha1-3FNN9fEnjVtj3zKxQkHU2/ckTAw=", + "dev": true + }, + "jquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=", + "dev": true + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz", + "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=", + "dev": true + }, + "js-yaml": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "dev": true, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "js2xmlparser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-1.0.0.tgz", + "integrity": "sha1-WhcPLo1kds5FQF4EgjJCUTeC/jA=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdoc": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.4.3.tgz", + "integrity": "sha1-5XQNYUXGgfZnnmwXeDqI292XzNM=", + "dev": true, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + } + } + }, + "jsdoc-babel": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/jsdoc-babel/-/jsdoc-babel-0.3.0.tgz", + "integrity": "sha1-Lqrv2eyo2LeIRTlKHM6diJa+++E=", + "dev": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "dependencies": { + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonist": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsonist/-/jsonist-1.3.0.tgz", + "integrity": "sha1-wMdLle8clSA4YZsp76UgscyYdVY=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true + }, + "keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true + }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true + }, + "lcov-parse": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", + "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "dev": true + }, + "less": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", + "integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash-es": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "dev": true + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "dev": true, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", + "dev": true, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true + } + } + }, + "lodash.defaultsdeep": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", + "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", + "integrity": "sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=", + "dev": true + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", + "dev": true + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", + "dev": true + }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=", + "dev": true + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "dev": true, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true + } + } + }, + "log-driver": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true + }, + "loggly": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/loggly/-/loggly-1.1.1.tgz", + "integrity": "sha1-Cg/B0/o6XsRP3HuJe+uipGlc6+4=", + "dev": true, + "dependencies": { + "bl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", + "dev": true + }, + "form-data": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", + "integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true + }, + "request": { + "version": "2.75.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz", + "integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=", + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true + }, + "make-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.6.tgz", + "integrity": "sha1-0u9OuBGihkTHqJiZhcacL91JaCc=", + "dev": true + }, + "marked": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "matchdep": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-1.0.1.tgz", + "integrity": "sha1-pXozgESR+64girqPaDgEN6vC3KU=", + "dev": true, + "dependencies": { + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true + }, + "memoizee": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.5.tgz", + "integrity": "sha1-G8PqHkvgVt1HXVIZede+PV5bIcg=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minami": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minami/-/minami-1.2.3.tgz", + "integrity": "sha1-mbbc37LwpU2hycj3qjoyd4eq+fg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minivents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minivents/-/minivents-2.1.0.tgz", + "integrity": "sha1-YF7TeJa65MmgBcX+9gvpxZxD+HE=" + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true + }, + "mocha": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", + "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", + "dev": true, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "debug": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true + } + } + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + } + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=", + "dev": true + }, + "moniker": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", + "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.0.tgz", + "integrity": "sha1-WzLqB+tDyd7WEwQ0z5JvRrKn/U0=", + "dev": true + }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true + }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nconf": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.7.2.tgz", + "integrity": "sha1-oF/fItwBw3jdXE3yfy3JC5qouwA=", + "dev": true, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.15.0.tgz", + "integrity": "sha1-PZRG7yH7N5GzmFaQZi5LloPH8YE=", + "dev": true + } + } + }, + "ncp": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "nested-error-stacks": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", + "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", + "dev": true + }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-abi": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-1.3.3.tgz", + "integrity": "sha1-DwbygV3romEHlZ0iE7Ns6XQ35uI=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "dependencies": { + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "dev": true + } + } + }, + "node-ninja": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz", + "integrity": "sha1-IKCeV7kuLfWRmT1L8JisPnJwYrY=", + "dev": true, + "dependencies": { + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "dev": true + }, + "npmlog": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", + "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", + "dev": true + } + } + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true + }, + "npm-run-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", + "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=", + "dev": true + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "dev": true + }, + "nyc": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-10.3.2.tgz", + "integrity": "sha1-8n9NkfKp2zbCT1dP9cbv/wIz3kY=", + "dev": true, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "bundled": true, + "dev": true + }, + "babel-generator": { + "version": "6.24.1", + "bundled": true, + "dev": true + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true + }, + "babel-runtime": { + "version": "6.23.0", + "bundled": true, + "dev": true + }, + "babel-template": { + "version": "6.24.1", + "bundled": true, + "dev": true + }, + "babel-traverse": { + "version": "6.24.1", + "bundled": true, + "dev": true + }, + "babel-types": { + "version": "6.24.1", + "bundled": true, + "dev": true + }, + "babylon": { + "version": "6.17.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.4.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true + }, + "debug": { + "version": "2.6.6", + "bundled": true, + "dev": true + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "globals": { + "version": "9.17.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.8", + "bundled": true, + "dev": true, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-dotfile": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.7.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-report": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "istanbul-reports": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.0", + "bundled": true, + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.0.2", + "bundled": true, + "dev": true + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "merge-source-map": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "0.7.3", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "bundled": true, + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "bundled": true, + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.6", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "dependencies": { + "signal-exit": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.22", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "which": { + "version": "1.2.14", + "bundled": true, + "dev": true + }, + "which-module": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "7.1.0", + "bundled": true, + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "obj-props": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.1.0.tgz", + "integrity": "sha1-YmMT+qRCvv1KROmgLDy2vek3tRE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true + }, + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "object.pick": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "ora": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.3.0.tgz", + "integrity": "sha1-NnoHitJc+wltpQERXrW0AeB9dJU=", + "dev": true + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "dependencies": { + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true + } + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-browserify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", + "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true + }, + "os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true + }, + "osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true + }, + "path-array": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz", + "integrity": "sha1-fi8PNfB6IBUSK4aLfqwOssT+wnE=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz", + "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true + }, + "pkginfo": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", + "integrity": "sha1-NJ27f/04CB/K3AhT32h/DHdEzWU=", + "dev": true + }, + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "dev": true + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "postprocessing": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postprocessing/-/postprocessing-2.2.0.tgz", + "integrity": "sha512-tuvQp3r7uk8IDdAe2QeWTFFAesROiGcahAiVhG+qolIx7w6PhWuTS4Bit/ns7ffuN/qE5AeMvugRXNzYExiSQA==", + "dev": true, + "dependencies": { + "three": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.86.0.tgz", + "integrity": "sha1-HDPkdqFTfpqKGPV5LQJLEEbNIAA=", + "dev": true + } + } + }, + "prebuild": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-5.1.2.tgz", + "integrity": "sha1-0rWdLZzE3IxkbaQzbYJ9R/Ww9BE=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "present": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/present/-/present-1.0.0.tgz", + "integrity": "sha1-bS+GW+epaIURj0Zg6D4hYftxzys=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-19.0.0.tgz", + "integrity": "sha1-VlMNMqy5ij+khRxOK503tCBoTIQ=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "dev": true + } + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true + }, + "prompt": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", + "dev": true + }, + "proto-props": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-0.2.1.tgz", + "integrity": "sha1-XgHcJnWg3pq/p255nfozTW9IP0s=", + "dev": true + }, + "proxy-addr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true + }, + "pug": { + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.2.tgz", + "integrity": "sha1-B4RVJ3kKssa+Z9z16x8xgECB8Eo=", + "dev": true + }, + "pug-attrs": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.2.tgz", + "integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=", + "dev": true + }, + "pug-code-gen": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-1.1.1.tgz", + "integrity": "sha1-HPcnRO8qA56uajNAyqoRBYcSWOg=", + "dev": true + }, + "pug-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", + "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=", + "dev": true + }, + "pug-filters": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.3.tgz", + "integrity": "sha1-1ZdnoiDeeX3XVUifZoNM+aqDqlQ=", + "dev": true, + "dependencies": { + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true + } + } + }, + "pug-lexer": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", + "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", + "dev": true, + "dependencies": { + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true + } + } + }, + "pug-linker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.1.tgz", + "integrity": "sha1-uj+P8hPKjzowSFm0T+0Tynud+hk=", + "dev": true + }, + "pug-load": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.7.tgz", + "integrity": "sha1-Ux0MbhFUYBDphGMNA99AY2fS3nc=", + "dev": true + }, + "pug-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-3.0.0.tgz", + "integrity": "sha1-N8YZ3YAPZCGHzk1s4aFkzddUh6M=", + "dev": true + }, + "pug-runtime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.3.tgz", + "integrity": "sha1-mBYmB7D86eJU1CfzOYelrucWi9o=", + "dev": true + }, + "pug-strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz", + "integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=", + "dev": true + }, + "pug-walk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.3.tgz", + "integrity": "sha1-181bI9s8qHxjbIaglz+c2OAwQ2w=", + "dev": true + }, + "pump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", + "dev": true + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + } + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true + }, + "redux": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.0.tgz", + "integrity": "sha512-GHjaOkEQtQnnuLoYPFkRKHIqs1i1tdTlisu/xUHfk2juzCobSy4STxs4Lz5bPkc07Owb6BeGKx/r76c9IVTkOw==", + "dev": true + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regenerator-transform": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true + }, + "regexp-quote": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz", + "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "resolve-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", + "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "dev": true + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", + "dev": true + }, + "rfile": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rfile/-/rfile-1.0.0.tgz", + "integrity": "sha1-WXCM+Qyh50xUw8/Fw2/bmBBDUmE=", + "dev": true, + "dependencies": { + "resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz", + "integrity": "sha1-NMY0R8ZkxwWY0cmxJvxDsqJDEKQ=", + "dev": true + } + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true + }, + "ruglify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ruglify/-/ruglify-1.0.0.tgz", + "integrity": "sha1-3Ikw4qlUSidDAcyZcldMDQmGtnU=", + "dev": true, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true + }, + "uglify-js": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", + "dev": true + } + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sane": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.5.0.tgz", + "integrity": "sha1-pK3q52TQSGIeyyfV+ez1ExAZOfM=", + "dev": true, + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sanitize-html": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.14.1.tgz", + "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semantic-ui-less": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/semantic-ui-less/-/semantic-ui-less-2.2.10.tgz", + "integrity": "sha1-X3Grd/618HBexygKIfId7Ii8TOE=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.0.0.tgz", + "integrity": "sha1-T7RB4qjSbEC1mDJ1VzGN4nKlWKA=", + "dev": true, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "dev": true + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true + }, + "shellwords": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-get": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", + "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", + "dev": true + }, + "simple-mime": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz", + "integrity": "sha1-lfUXxPRm18/1YacfydqyWW6p7y4=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "smartenv": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/smartenv/-/smartenv-1.2.5.tgz", + "integrity": "sha1-XlA0PsRlOVPvJJKfxUjNdOpTIFw=", + "dev": true, + "dependencies": { + "beautylog": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/beautylog/-/beautylog-4.2.2.tgz", + "integrity": "sha1-bOvf+GZQmWk9SIFR3u4CiQuSzmk=", + "dev": true + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true + } + } + }, + "smartq": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/smartq/-/smartq-1.1.1.tgz", + "integrity": "sha1-77NYcFJg1Brhiu9//YFfe2/hfdM=", + "dev": true + }, + "smartshell": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/smartshell/-/smartshell-1.0.6.tgz", + "integrity": "sha1-J7HHkCl4Sr5yrH6R/mmLfr7MZik=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true + }, + "snyk": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.36.0.tgz", + "integrity": "sha1-Ff6jlzheIHX6Xm40WcuW4jAsEqs=", + "dev": true + }, + "snyk-config": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-1.0.1.tgz", + "integrity": "sha1-8nrsJJiyQCescZIUAmUhWRERUI8=", + "dev": true + }, + "snyk-gradle-plugin": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-1.0.2.tgz", + "integrity": "sha512-mFGMmSLj3lIBZay0pJ+8+Y5QB6B55ywOaLYA85TJHQfsoRp3A5LpQvTd6jBWDCo+oZw65wrDQxu4EsGEew+Y6Q==", + "dev": true + }, + "snyk-module": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.8.1.tgz", + "integrity": "sha1-MdUID7HA39b6hWfdNKUj/QK/H8o=", + "dev": true + }, + "snyk-mvn-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-1.0.0.tgz", + "integrity": "sha512-23K3VGMKS3W2l53cyQyb+EnbScKW3idUmylKRJRYEcK95ACzghdpI7tU4XBv5FH9LX60QybOskHYs0Phkim2Aw==", + "dev": true + }, + "snyk-policy": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.7.1.tgz", + "integrity": "sha1-5BO2vUr2BQxeX0RSh5CeTpigmyI=", + "dev": true + }, + "snyk-python-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.2.0.tgz", + "integrity": "sha512-JrS57B7vlCuEDH8zZhg3qEewjKMebo5HgjgbNQNg9r7qUYnQElhadVs0X/nV8Gv+0P/8+OqQXV/N3IhSj4dwFg==", + "dev": true + }, + "snyk-recursive-readdir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/snyk-recursive-readdir/-/snyk-recursive-readdir-2.0.0.tgz", + "integrity": "sha1-XLWelGmBaeAgWmDn1qUG0LTVL/M=", + "dev": true, + "dependencies": { + "minimatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", + "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=", + "dev": true + } + } + }, + "snyk-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.0.tgz", + "integrity": "sha1-u+kZbTf1fDklHmvnXM3Vsgl+maI=", + "dev": true + }, + "snyk-resolve-deps": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-1.7.0.tgz", + "integrity": "sha1-E3Q6BYQ33/iQuq9DfDM8lmp0PLY=", + "dev": true, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "snyk-sbt-plugin": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-1.0.2.tgz", + "integrity": "sha512-j+vVwqlrbMr6LSEM6sLOCykdOsRXhhJ23y8FdJHo22UfTVbRMCr6MFLrlMkNmsHcWhIFuzgqIdjkP5LMRdRktA==", + "dev": true + }, + "snyk-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", + "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "dev": true + }, + "snyk-try-require": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.2.0.tgz", + "integrity": "sha1-MPwrEcBwZFke41eAyCa+kTEvIUQ=", + "dev": true, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + } + } + }, + "socket.io": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", + "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true + }, + "source-list-map": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", + "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stack-trace": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=", + "dev": true + }, + "stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "dependencies": { + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "surge": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/surge/-/surge-0.19.0.tgz", + "integrity": "sha1-rkMN8PKDK6JKo3m3dmWG/mi3I5w=", + "dev": true, + "dependencies": { + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", + "dev": true, + "optional": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", + "dev": true, + "optional": true + }, + "boom": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "dev": true + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "dev": true, + "optional": true + }, + "cryptiles": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "dev": true, + "optional": true + }, + "forever-agent": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=", + "dev": true + }, + "form-data": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", + "dev": true, + "optional": true + }, + "hawk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", + "dev": true, + "optional": true + }, + "hoek": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=", + "dev": true + }, + "http-signature": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "dev": true, + "optional": true + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true, + "optional": true + }, + "mime-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=", + "dev": true + }, + "minimist": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", + "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true + }, + "oauth-sign": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", + "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", + "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=", + "dev": true + }, + "request": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz", + "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=", + "dev": true + }, + "sntp": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", + "dev": true, + "optional": true + }, + "tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.0.tgz", + "integrity": "sha1-NmNtduiuErS8EalArGBrXKil/h8=", + "dev": true + } + } + }, + "surge-ignore": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", + "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=", + "dev": true + }, + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tapable": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true + }, + "tar-fs": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz", + "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", + "dev": true + }, + "tar-stream": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "dev": true, + "dependencies": { + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + } + } + }, + "tar.gz": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", + "integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=", + "dev": true, + "dependencies": { + "commander": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", + "integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=", + "dev": true + }, + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true + }, + "tar": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", + "dev": true + } + } + }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "term-size": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz", + "integrity": "sha1-hzYLljlsq1dgljcUzaDQy+7K2co=", + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "the-argv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", + "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=", + "dev": true + }, + "then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "dev": true + }, + "three": { + "version": "0.85.2", + "resolved": "https://registry.npmjs.org/three/-/three-0.85.2.tgz", + "integrity": "sha1-iTb4nDZo978S+bCF3fXdQJkW6ic=" + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true + }, + "timers-ext": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.2.tgz", + "integrity": "sha1-YcxHp2wavTGV8UUn+XjViulMUgQ=", + "dev": true + }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true + }, + "tmp": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", + "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true + }, + "tslint": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz", + "integrity": "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=", + "dev": true + }, + "tsutils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.4.0.tgz", + "integrity": "sha1-rUzm26Dlo+2934Ymt8oEB4IYn+o=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true + }, + "typed-promisify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/typed-promisify/-/typed-promisify-0.3.0.tgz", + "integrity": "sha1-G6CvXkRMh9gEdAbxjOSQkqEZGFM=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "dev": true + }, + "typings-global": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/typings-global/-/typings-global-1.0.19.tgz", + "integrity": "sha512-Yzm7IVhTZq6q/9V0N+eBnpb0neqXVLkyvR859KIf6WOXDI9jxk/kfpd2GjRzVGqZ+tUMbbjJSjP8zS/sWJlimQ==", + "dev": true + }, + "uglify-js": { + "version": "2.4.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", + "dev": true, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "source-map": { + "version": "0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", + "dev": true + } + } + }, + "uglify-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uglify-loader/-/uglify-loader-2.0.0.tgz", + "integrity": "sha1-7vwYP68XssFotQO77tAbGmFA7AE=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undefsafe": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", + "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", + "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", + "dev": true, + "dependencies": { + "got": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", + "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", + "dev": true + }, + "latest-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", + "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", + "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", + "dev": true + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "dev": true + }, + "timed-out": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", + "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", + "dev": true + } + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-as-address": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", + "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-extend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=", + "dev": true + }, + "utile": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", + "dev": true, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "dependencies": { + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true + } + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", + "dev": true + }, + "watchpack": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "dev": true + }, + "webidl-conversions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz", + "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=", + "dev": true + }, + "webpack": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", + "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true + } + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + } + } + } + } + }, + "webpack-dashboard": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/webpack-dashboard/-/webpack-dashboard-0.4.0.tgz", + "integrity": "sha1-nh1RbuMcjF5ENhSNw+sJ7+ngxV8=", + "dev": true + }, + "webpack-dev-middleware": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", + "dev": true + }, + "webpack-sources": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "dev": true + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "dev": true, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", + "dev": true + } + } + }, + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.3.1.tgz", + "integrity": "sha1-QzMRK7SbF6oFC4eJXKayys9A5f8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "wreck": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-6.3.0.tgz", + "integrity": "sha1-oTaXafB7u2LWo3gzanhx/Hc8dAs=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true + }, + "write-json-file": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", + "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", + "dev": true, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "write-file-atomic": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", + "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", + "dev": true + } + } + }, + "write-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-2.1.0.tgz", + "integrity": "sha1-NTqkTDnEjCFED1wIzmq9RhQcnAg=", + "dev": true + }, + "ws": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", + "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", + "dev": true + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xo": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.18.2.tgz", + "integrity": "sha1-kqQusCpPsUnf6lUYAhkU9arIT/A=", + "dev": true, + "dependencies": { + "boxen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.1.0.tgz", + "integrity": "sha1-sbad1SIwXoB6md7ud329blFnsQI=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "configstore": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.0.tgz", + "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=", + "dev": true + }, + "dot-prop": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", + "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", + "dev": true + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", + "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", + "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", + "dev": true + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + } + } + }, + "xo-init": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xo-init/-/xo-init-0.5.0.tgz", + "integrity": "sha1-jijex5Z2zF4EL95f2PcQ4mRrDjY=", + "dev": true, + "dependencies": { + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true + }, + "os-locale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 2dfd2140..b76b652b 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "license": "MIT", "homepage": "https://github.com/WhitestormJS/whitestorm.js#readme", "dependencies": { + "@types/node": "^7.0.32", "lodash-es": "^4.17.4", "minivents": "^2.1.0", "three": "^0.85.2" diff --git a/src/components/lights/PointLight.js b/src/components/lights/PointLight.js index e3788e7a..475eb0b5 100644 --- a/src/components/lights/PointLight.js +++ b/src/components/lights/PointLight.js @@ -34,6 +34,7 @@ class PointLight extends LightComponent { } build(params = {}) { + console.log(params); return this.applyBridge({light: new PointLightNative( params.color, params.intensity, From 3873e782a78cd146f55aa119d59245eabee15543 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 17:45:21 +0300 Subject: [PATCH 10/44] StateModule --- examples/basic/state/index.pug | 5 ++ examples/basic/state/script.js | 61 ++++++++++++++++++++++ src/modules/app/StateModule.js | 95 ++++++++++++++++++++++++++++++++++ src/modules/app/index.js | 1 + 4 files changed, 162 insertions(+) create mode 100644 examples/basic/state/index.pug create mode 100644 examples/basic/state/script.js create mode 100644 src/modules/app/StateModule.js diff --git a/examples/basic/state/index.pug b/examples/basic/state/index.pug new file mode 100644 index 00000000..315a7c2e --- /dev/null +++ b/examples/basic/state/index.pug @@ -0,0 +1,5 @@ +extends ../../layout.pug + +//- block body +//- div(class="ui active dimmer") +//- div(class="ui loader") diff --git a/examples/basic/state/script.js b/examples/basic/state/script.js new file mode 100644 index 00000000..60113df2 --- /dev/null +++ b/examples/basic/state/script.js @@ -0,0 +1,61 @@ +import * as UTILS from '../../globals'; + +const world = new WHS.App([ + new WHS.ElementModule(), + new WHS.SceneModule(), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), + new WHS.RenderingModule(UTILS.appDefaults.rendering, { + shadow: true + }), + new PHYSICS.WorldModule(UTILS.appDefaults.physics), + new WHS.OrbitControlsModule(), + new WHS.ResizeModule(), + new StatsModule(), + new WHS.StateModule().default({ + sphereColor: UTILS.$colors.mesh + }) +]); + +const state = world.manager.use('state'); +window.state = state; + +const sphere = new WHS.Sphere({ // Create sphere comonent. + geometry: { + radius: 5, + widthSegments: 32, + heightSegments: 32 + }, + + modules: [ + new PHYSICS.SphereModule({ + mass: 10, + restitution: 1 + }) + ], + + material: new THREE.MeshPhongMaterial({ + color: state.get('sphereColor') + }), + + position: new THREE.Vector3(0, 20, 0) +}); + +sphere.addTo(world); + +UTILS.addBoxPlane(world); +UTILS.addBasicLights(world); + +world.start(); // Start animations and physics simulation. + +// STATE +state.update({ + sphereColor: color => { + sphere.material.color.setHex(color); + } +}); + +state.config({ + green: { + sphereColor: 0x00ff00 + } +}); diff --git a/src/modules/app/StateModule.js b/src/modules/app/StateModule.js new file mode 100644 index 00000000..596d4ca7 --- /dev/null +++ b/src/modules/app/StateModule.js @@ -0,0 +1,95 @@ +import {createStore} from 'redux'; + +const isEqualDefault = (a, b) => { + if (a === b) return true; + else if (a && a.equals && a.equals(b)) return true; + + return false; +}; + +export class StateModule { + static actionGenerate(isEqual) { + return (state = [{}, ''], {key, data}) => { + if (isEqual(state[0][key], data)) return state; + + state[0][key] = data; + state[1] = key; + + return state; + }; + } + + constructor(equalCheck = isEqualDefault) { + this.store = createStore( + StateModule.actionGenerate(equalCheck) + ); + + this.configuration = {}; + this.currentConfig = 'default'; + this.prevConfig = 'default'; + } + + default(data) { + this.config({default: data}); + return this; + } + + setEqualCheck(func) { + this.store.replaceReducer( + StateModule.actionGenerate(func) + ); + } + + manager(manager) { + manager.define('state'); + } + + config(configs) { + for (const key in configs) { + if (key) { + this.configuration[key] = key === 'default' + ? configs[key] + : Object.assign({}, this.configuration.default, configs[key]); + } + } + } + + update(updates = {}) { + this.store.subscribe(() => { + const [data, changedKey] = this.store.getState(); + const callback = updates[changedKey]; + + if (callback) callback(data[changedKey]); + }); + } + + to(configName) { + this.prevConfig = this.currentConfig; + this.currentConfig = configName; + + const config = this.configuration[configName] + ? this.configuration[configName] + : this.configuration.default; + + this.set(config); + } + + set(data) { + for (const key in data) + if (key) this.store.dispatch({type: 'ADD', key, data: data[key]}); + } + + get(key) { + return this.store.getState()[0][key]; + } + + prev(config, trueVal, falseVal) { + if (this.prevConfig === config) return trueVal; + return falseVal; + } + + current(config, trueVal, falseVal) { + if (this.currentConfig === config) return trueVal; + return falseVal; + } +} diff --git a/src/modules/app/index.js b/src/modules/app/index.js index e0c5440e..cc840ca0 100644 --- a/src/modules/app/index.js +++ b/src/modules/app/index.js @@ -8,6 +8,7 @@ export * from './VirtualMouseModule'; export * from './EventsPatchModule'; export * from './ControlsModule'; export * from './FogModule'; +export * from './StateModule'; // controls export * from './controls/index'; From 3f49442d994dc9d4bcc2c41aa93f4091ca55db88 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 18:32:41 +0300 Subject: [PATCH 11/44] Change StateModule example --- examples/VRKit/basic/script.js | 10 +++---- examples/VRKit/post-processing/script.js | 10 +++---- examples/animation/alien/script.js | 18 +++++------ examples/assets/css/layout.css | 26 ++++++++++++++++ examples/assets/less/layout.less | 30 +++++++++++++++++++ examples/basic/cube/script.js | 12 ++++---- examples/basic/cylinder/script.js | 10 +++---- examples/basic/embeded/script.js | 10 +++---- examples/basic/fogexp/script.js | 18 +++++------ examples/basic/helloworld/script.js | 10 +++---- examples/basic/line/script.js | 18 +++++------ examples/basic/model/script.js | 14 ++++----- examples/basic/mouse/script.js | 10 +++---- examples/basic/state/index.pug | 24 +++++++++++++-- examples/basic/state/script.js | 25 +++++++++------- examples/basic/terrain/script.js | 10 +++---- examples/basic/threejs/script.js | 18 +++++------ examples/constraints/dof/script.js | 16 +++++----- examples/constraints/hinge/script.js | 16 +++++----- examples/constraints/point/script.js | 16 +++++----- examples/constraints/slider/script.js | 14 ++++----- examples/design/points/script.js | 6 ++-- examples/design/saturn/script.js | 12 ++++---- examples/fps/shooter/script.js | 12 ++++---- examples/globals.js | 20 ++++++------- examples/lights/ambient/script.js | 10 +++---- examples/lights/area/script.js | 12 ++++---- examples/lights/directional/script.js | 10 +++---- examples/lights/hemisphere/script.js | 16 +++++----- examples/lights/point/script.js | 18 +++++------ examples/lights/spot/script.js | 12 ++++---- examples/performance/softbodies/script.js | 12 ++++---- examples/performance/sticks/script.js | 14 ++++----- examples/physics/compound/script.js | 10 +++---- examples/physics/domino/script.js | 18 +++++------ examples/physics/filtering/script.js | 16 +++++----- .../post-processing/basic-glitch/script.js | 10 +++---- examples/softbody/cloth/script.js | 12 ++++---- examples/softbody/cloth2/script.js | 14 ++++----- examples/softbody/cloth3/script.js | 14 ++++----- examples/softbody/ropes/script.js | 24 +++++++-------- examples/softbody/sphere/script.js | 12 ++++---- examples/textures/phong/script.js | 20 ++++++------- .../whs-module-audio/positional/script.js | 10 +++---- src/core/App.js | 8 +++++ 45 files changed, 371 insertions(+), 286 deletions(-) diff --git a/examples/VRKit/basic/script.js b/examples/VRKit/basic/script.js index 56d1b339..441e8304 100644 --- a/examples/VRKit/basic/script.js +++ b/examples/VRKit/basic/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const postprocessor = new WHS.PostProcessorModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), @@ -37,9 +37,9 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/VRKit/post-processing/script.js b/examples/VRKit/post-processing/script.js index 894ff48d..694e4b79 100644 --- a/examples/VRKit/post-processing/script.js +++ b/examples/VRKit/post-processing/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const postprocessor = new WHS.PostProcessorModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), @@ -75,9 +75,9 @@ const sphere = new WHS.Sphere({ position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/animation/alien/script.js b/examples/animation/alien/script.js index cc2ec08a..a23da05d 100644 --- a/examples/animation/alien/script.js +++ b/examples/animation/alien/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(5, 5, 10), renderer: { @@ -16,7 +16,7 @@ const world = new WHS.App([ new WHS.ResizeModule() ]); -const animationModule = new WHS.AnimationModule(world, false, { +const animationModule = new WHS.AnimationModule(app, false, { speed: 1.2 }); @@ -60,7 +60,7 @@ new WHS.Importer({ position: [0, -5, 0] -}).addTo(world).then(() => { +}).addTo(app).then(() => { animationModule.play('observe'); }); @@ -76,7 +76,7 @@ new WHS.PointLight({ position: [-1, 3, 5] -}).addTo(world); +}).addTo(app); const floorTextureRepeat = new THREE.Vector2(15, 15); @@ -117,7 +117,7 @@ new WHS.Box({ position: [0, -5, 0] -}).addTo(world); +}).addTo(app); new WHS.SpotLight({ color: 0xffffff, @@ -134,11 +134,11 @@ new WHS.SpotLight({ y: 30, z: 10 } -}).addTo(world); +}).addTo(app); -UTILS.addAmbient(world, 0.1); +UTILS.addAmbient(app, 0.1); new WHS.Loop(() => { -}).start(world); +}).start(app); -world.start(); +app.start(); diff --git a/examples/assets/css/layout.css b/examples/assets/css/layout.css index 1f0829ce..e6fe6f91 100644 --- a/examples/assets/css/layout.css +++ b/examples/assets/css/layout.css @@ -16,3 +16,29 @@ body { z-index: 999; background: rgba(255, 237, 222, 0.9); } +.note { + position: fixed; + right: 20px; + background: rgba(0, 0, 0, 0.5); + padding: 20px; + z-index: 3; + color: white; + top: 20px; + min-width: 400px; + max-width: 500px; +} +.note h4 { + margin: 0; +} +.note p { + line-height: 1.8; + letter-spacing: 0.3px; + color: #eee; +} +.note code { + padding: 2px 10px; + background: rgba(255, 255, 255, 0.1); + margin: 10px 5px; + display: inline-block; + border-radius: 5px; +} diff --git a/examples/assets/less/layout.less b/examples/assets/less/layout.less index d52bdc07..0c05a5e9 100644 --- a/examples/assets/less/layout.less +++ b/examples/assets/less/layout.less @@ -17,3 +17,33 @@ body { z-index: 999; background: rgba(255, 237, 222, 0.9); } + +.note { + position: fixed; + right: 20px; + background: rgba(0, 0, 0, 0.5); + padding: 20px; + z-index: 3; + color: white; + top: 20px; + min-width: 400px; + max-width: 500px; + + h4 { + margin: 0; + } + + p { + line-height: 1.8; + letter-spacing: 0.3px; + color: #eee; + } + + code { + padding: 2px 10px; + background: rgba(255, 255, 255, 0.1); + margin: 10px 5px; + display: inline-block; + border-radius: 5px; + } +} diff --git a/examples/basic/cube/script.js b/examples/basic/cube/script.js index 403e443d..106a6f78 100644 --- a/examples/basic/cube/script.js +++ b/examples/basic/cube/script.js @@ -4,7 +4,7 @@ const ad = UTILS.appDefaults; const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200) }, ad.rendering, ad.physics, false), @@ -113,19 +113,19 @@ new WHS.Box({ position: [-50, 0, 0] }).addTo(box); - box.addTo(world).then(() => { + box.addTo(app).then(() => { const v = new THREE.Vector3(0, 0, 1); box.setLinearFactor(new THREE.Vector3(0, 0, 0)); new WHS.Loop(() => { box.setAngularVelocity(v); - }).start(world); + }).start(app); }); }); -ball.addTo(world); +ball.addTo(app); -UTILS.addBasicLights(world); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/basic/cylinder/script.js b/examples/basic/cylinder/script.js index 86f005a6..2c714a51 100644 --- a/examples/basic/cylinder/script.js +++ b/examples/basic/cylinder/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules() ]); @@ -27,9 +27,9 @@ const sphere = new WHS.Cylinder({ // Create sphere comonent. position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/basic/embeded/script.js b/examples/basic/embeded/script.js index d9341ac4..68a5c01d 100644 --- a/examples/basic/embeded/script.js +++ b/examples/basic/embeded/script.js @@ -3,7 +3,7 @@ import * as UTILS from '../../globals'; const resizer = new WHS.ResizeModule(); const mouse = new WHS.VirtualMouseModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule({ container: document.getElementById('embed') }), @@ -52,7 +52,7 @@ const sphere = new WHS.Sphere({ // Create sphere component. position: [0, 100, 0] }); -sphere.addTo(world); +sphere.addTo(app); mouse.track(sphere); sphere.on('mouseover', () => { @@ -73,10 +73,10 @@ sphere.on('click', () => { alert('click!'); }); -UTILS.addPlane(world); -UTILS.addBasicLights(world); +UTILS.addPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. // DOM diff --git a/examples/basic/fogexp/script.js b/examples/basic/fogexp/script.js index 716baf70..1f7f8250 100644 --- a/examples/basic/fogexp/script.js +++ b/examples/basic/fogexp/script.js @@ -13,7 +13,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ const controlsModule = new WHS.OrbitControlsModule(); const fogModule = new WHS.FogModule({color: 0xaaaaaa, near: 10, far: 200}); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), cameraModule, @@ -57,7 +57,7 @@ new WHS.Box({ )], position: [0, 4, 0] -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -85,7 +85,7 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -109,7 +109,7 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -133,7 +133,7 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); // z wall new WHS.Box({ @@ -163,7 +163,7 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); new WHS.Sphere({ geometry: { @@ -187,11 +187,11 @@ new WHS.Sphere({ material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ color: 0xffffff, intensity: 0.3 -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); diff --git a/examples/basic/helloworld/script.js b/examples/basic/helloworld/script.js index 512547ba..0affe485 100644 --- a/examples/basic/helloworld/script.js +++ b/examples/basic/helloworld/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), @@ -34,9 +34,9 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/basic/line/script.js b/examples/basic/line/script.js index 967ac0fc..4368a9d0 100644 --- a/examples/basic/line/script.js +++ b/examples/basic/line/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200) }), @@ -46,7 +46,7 @@ function drawRectangle(points, color) { }) }); - line.addTo(world); + line.addTo(app); } // top square @@ -62,7 +62,7 @@ function drawRectangle(points, color) { }) }); - line.addTo(world); + line.addTo(app); } // closes the top square @@ -83,7 +83,7 @@ function drawRectangle(points, color) { color }) }); - line2.addTo(world); + line2.addTo(app); // closes the bottom square const line = new WHS.Line({ @@ -96,7 +96,7 @@ function drawRectangle(points, color) { color }) }); - line.addTo(world); + line.addTo(app); // vertical join for (let i = 0; i < points.length - 1; i++) { @@ -111,7 +111,7 @@ function drawRectangle(points, color) { }) }); - line.addTo(world); + line.addTo(app); } // closes the vertical one const line3 = new WHS.Line({ @@ -124,7 +124,7 @@ function drawRectangle(points, color) { color }) }); - line3.addTo(world); + line3.addTo(app); } new WHS.Box({ @@ -150,6 +150,6 @@ new WHS.Box({ wireframe: true, color: 0x444444 }) -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); diff --git a/examples/basic/model/script.js b/examples/basic/model/script.js index 422793fc..fc98e800 100644 --- a/examples/basic/model/script.js +++ b/examples/basic/model/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 40, 250) }) @@ -58,11 +58,11 @@ const ball = new WHS.Sphere({ position: [10, 250, -1.969] }); -teapot.addTo(world).then(() => { - ball.addTo(world); +teapot.addTo(app).then(() => { + ball.addTo(app); }); -UTILS.addBoxPlane(world, 500); +UTILS.addBoxPlane(app, 500); new WHS.SpotLight({ color: 0xffffff, @@ -79,8 +79,8 @@ new WHS.SpotLight({ y: 150, z: 50 } -}).addTo(world); +}).addTo(app); -UTILS.addAmbient(world, 0.3); +UTILS.addAmbient(app, 0.3); -world.start(); +app.start(); diff --git a/examples/basic/mouse/script.js b/examples/basic/mouse/script.js index dcf8d63e..d5815ecb 100644 --- a/examples/basic/mouse/script.js +++ b/examples/basic/mouse/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const mouse = new WHS.VirtualMouseModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -46,7 +46,7 @@ const sphere = new WHS.Sphere({ // Create sphere component. position: [0, 100, 0] }); -sphere.addTo(world); +sphere.addTo(app); mouse.track(sphere); sphere.on('mouseover', () => { @@ -67,7 +67,7 @@ sphere.on('click', () => { alert('click!'); }); -UTILS.addPlane(world); -UTILS.addBasicLights(world); +UTILS.addPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/basic/state/index.pug b/examples/basic/state/index.pug index 315a7c2e..5a44efc3 100644 --- a/examples/basic/state/index.pug +++ b/examples/basic/state/index.pug @@ -1,5 +1,23 @@ extends ../../layout.pug -//- block body -//- div(class="ui active dimmer") -//- div(class="ui loader") +block body + div(class="note") + h4 Guide to StateModule + p + | 1) Go to the `console` in devtools. + br + | 2) Type: + br + code state.to('green'); + br + | The example `plane` and `sphere` should change their color to green by loading to configuration called `green`. + br + | 3) Type: + br + code state.to('default'); + br + | Now you switched back to `default` configuration. + br + | 4) You can also change only specific parameter of state using .set() : + br + code state.set({sphereColor: 0x00ff00}); diff --git a/examples/basic/state/script.js b/examples/basic/state/script.js index 60113df2..c92b24a1 100644 --- a/examples/basic/state/script.js +++ b/examples/basic/state/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera(UTILS.appDefaults.camera)), @@ -12,11 +12,12 @@ const world = new WHS.App([ new WHS.ResizeModule(), new StatsModule(), new WHS.StateModule().default({ - sphereColor: UTILS.$colors.mesh + sphereColor: UTILS.$colors.mesh, + planeColor: 0x447F8B }) ]); -const state = world.manager.use('state'); +const state = app.use('state'); window.state = state; const sphere = new WHS.Sphere({ // Create sphere comonent. @@ -40,22 +41,24 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app, 100, state.get('planeColor')).then(plane => + state.update({planeColor: color => plane.material.color.setHex(color)}) +); -world.start(); // Start animations and physics simulation. +UTILS.addBasicLights(app); + +app.start(); // Start animations and physics simulation. // STATE state.update({ - sphereColor: color => { - sphere.material.color.setHex(color); - } + sphereColor: color => sphere.material.color.setHex(color) }); state.config({ green: { - sphereColor: 0x00ff00 + sphereColor: 0x00ff00, + planeColor: 0x00ff00 } }); diff --git a/examples/basic/terrain/script.js b/examples/basic/terrain/script.js index 3e44761d..c5e27ec4 100644 --- a/examples/basic/terrain/script.js +++ b/examples/basic/terrain/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 30, -100) }) @@ -34,7 +34,7 @@ const terrain = new WHS.Parametric({ ] }); -terrain.addTo(world); +terrain.addTo(app); const sphere = new WHS.Sphere({ geometry: { @@ -57,9 +57,9 @@ const sphere = new WHS.Sphere({ position: new THREE.Vector3(-31, 20, 0) // -30, 120, -40 }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBasicLights(world, 0.5, [0, 10, 10], 100, { +UTILS.addBasicLights(app, 0.5, [0, 10, 10], 100, { bias: 0.0001, radius: 2, @@ -68,4 +68,4 @@ UTILS.addBasicLights(world, 0.5, [0, 10, 10], 100, { } }); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/basic/threejs/script.js b/examples/basic/threejs/script.js index 4f38fbbe..056d5d72 100644 --- a/examples/basic/threejs/script.js +++ b/examples/basic/threejs/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(true) ]); @@ -32,9 +32,9 @@ mesh3.position.set(0, 0, 1); // Nested object. mesh2.add(mesh3); -world.setScene(scene); +app.setScene(scene); -world +app .module(new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ position: new THREE.Vector3(0, 2, 12) }))) @@ -53,7 +53,7 @@ const sphere = new WHS.Sphere({ material: materialWHS }); -sphere.addTo(world); +sphere.addTo(app); sphere.position.y = 2; const mesh1 = WHS.MeshComponent.create( @@ -63,13 +63,13 @@ const mesh1 = WHS.MeshComponent.create( mesh1.position.set(2, 2, 0); -world.add(mesh1); +app.add(mesh1); const light = new WHS.PointLight(); -light.addTo(world); +light.addTo(app); -UTILS.addPlane(world); -UTILS.addBasicLights(world); +UTILS.addPlane(app); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/constraints/dof/script.js b/examples/constraints/dof/script.js index bb10657d..c3f19163 100644 --- a/examples/constraints/dof/script.js +++ b/examples/constraints/dof/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 40, 70) }) @@ -72,19 +72,19 @@ const pointer = new WHS.Sphere({ console.log(pointer); pointer.position.set(0, 60, -8); -pointer.addTo(world); +pointer.addTo(app); -box.addTo(world); -box2.addTo(world).then(() => { +box.addTo(app); +box2.addTo(app).then(() => { const constraint = new PHYSICS.DOFConstraint(box2, box, new THREE.Vector3(0, 38, 1) ); - world.addConstraint(constraint); + app.addConstraint(constraint); constraint.enableAngularMotor(10, 20); }); -UTILS.addPlane(world, 250); -UTILS.addBasicLights(world); +UTILS.addPlane(app, 250); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/constraints/hinge/script.js b/examples/constraints/hinge/script.js index e84fc8e9..aadcf3ae 100644 --- a/examples/constraints/hinge/script.js +++ b/examples/constraints/hinge/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 40, 70) }) @@ -72,20 +72,20 @@ const pointer = new WHS.Sphere({ console.log(pointer); pointer.position.set(0, 60, -8); -pointer.addTo(world); +pointer.addTo(app); -box.addTo(world); -box2.addTo(world).then(() => { +box.addTo(app); +box2.addTo(app).then(() => { const constraint = new PHYSICS.HingeConstraint(box2, box, new THREE.Vector3(0, 38, 1), new THREE.Vector3(1, 0, 0) ); - world.addConstraint(constraint); + app.addConstraint(constraint); constraint.enableAngularMotor(10, 20); }); -UTILS.addPlane(world, 250); -UTILS.addBasicLights(world); +UTILS.addPlane(app, 250); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/constraints/point/script.js b/examples/constraints/point/script.js index eaac0555..33c577ef 100644 --- a/examples/constraints/point/script.js +++ b/examples/constraints/point/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 40, 70) }) @@ -72,18 +72,18 @@ const pointer = new WHS.Sphere({ console.log(pointer); pointer.position.set(0.5, 60, -8); -pointer.addTo(world); +pointer.addTo(app); -box.addTo(world); -box2.addTo(world).then(() => { +box.addTo(app); +box2.addTo(app).then(() => { const constraint = new PHYSICS.PointConstraint(box2, box, new THREE.Vector3(0, box2.position.y, 1) ); - world.addConstraint(constraint); + app.addConstraint(constraint); }); -UTILS.addPlane(world, 250); -UTILS.addBasicLights(world); +UTILS.addPlane(app, 250); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/constraints/slider/script.js b/examples/constraints/slider/script.js index 72cec247..e2c8ad5b 100644 --- a/examples/constraints/slider/script.js +++ b/examples/constraints/slider/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 40, 70) }) @@ -60,17 +60,17 @@ const box2 = new WHS.Box({ } }); -box.addTo(world); -box2.addTo(world).then(() => { +box.addTo(app); +box2.addTo(app).then(() => { const constraint = new PHYSICS.SliderConstraint(box2, box, new THREE.Vector3(0, box2.position.y, 0), new THREE.Vector3(0, 1, 0) ); - world.addConstraint(constraint); + app.addConstraint(constraint); }); -UTILS.addPlane(world, 250); -UTILS.addBasicLights(world); +UTILS.addPlane(app, 250); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/design/points/script.js b/examples/design/points/script.js index 6ddfc590..9e603342 100644 --- a/examples/design/points/script.js +++ b/examples/design/points/script.js @@ -1,4 +1,4 @@ -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -50,7 +50,7 @@ class Points extends WHS.MeshComponent { } } -new Points({geom}).addTo(world); +new Points({geom}).addTo(app); // Start rendering. -world.start(); +app.start(); diff --git a/examples/design/saturn/script.js b/examples/design/saturn/script.js index a80c765b..33d8bb55 100644 --- a/examples/design/saturn/script.js +++ b/examples/design/saturn/script.js @@ -12,7 +12,7 @@ const colors = { yellow: 0xfaff70 }; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -35,7 +35,7 @@ const world = new WHS.App([ ]); const space = new WHS.Group(); -space.addTo(world); +space.addTo(app); space.rotation.z = Math.PI / 12; const planet = new WHS.Tetrahedron({ @@ -58,7 +58,7 @@ planet.addTo(space); new WHS.AmbientLight({ color: 0x663344, intensity: 2 -}).addTo(world); +}).addTo(app); new WHS.DirectionalLight({ color: 0xffffff, @@ -81,7 +81,7 @@ new WHS.DirectionalLight({ z: 300, y: 100 } -}).addTo(world); +}).addTo(app); const dynamicGeometry = new WHS.DynamicGeometryModule(); @@ -219,9 +219,9 @@ const animation = new WHS.Loop(() => { planet.rotation.y += 0.005; }); -world.addLoop(animation); +app.addLoop(animation); animation.start(); // Start rendering. -world.start(); +app.start(); diff --git a/examples/fps/shooter/script.js b/examples/fps/shooter/script.js index 41600ba0..7c991094 100644 --- a/examples/fps/shooter/script.js +++ b/examples/fps/shooter/script.js @@ -21,7 +21,7 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: new THREE.Vector3(0, 100, 0) }); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -47,7 +47,7 @@ const world = new WHS.App([ new WHS.ResizeModule() ]); -sphere.addTo(world); +sphere.addTo(app); for (let i = 0; i < 10; i++) { const height = 10 + Math.random() * 90; @@ -73,10 +73,10 @@ for (let i = 0; i < 10; i++) { y: height / 2, z: Math.random() * 1000 - 500 } - }).addTo(world); + }).addTo(app); } -UTILS.addPlane(world, 1000); -UTILS.addBasicLights(world); +UTILS.addPlane(app, 1000); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/globals.js b/examples/globals.js index 1bbc6eaf..b6852f4c 100644 --- a/examples/globals.js +++ b/examples/globals.js @@ -81,14 +81,14 @@ export const $colors = { softbody: 0x434B7F }; -export function addAmbient(world, intensity) { +export function addAmbient(app, intensity) { new WHS.AmbientLight({ intensity - }).addTo(world); + }).addTo(app); } -export function addBasicLights(world, intensity = 0.5, position = [0, 10, 10], distance = 100, shadowmap) { - addAmbient(world, 1 - intensity); +export function addBasicLights(app, intensity = 0.5, position = [0, 10, 10], distance = 100, shadowmap) { + addAmbient(app, 1 - intensity); return new WHS.PointLight({ intensity, @@ -99,10 +99,10 @@ export function addBasicLights(world, intensity = 0.5, position = [0, 10, 10], d }, shadowmap), position - }).addTo(world); + }).addTo(app); } -export function addPlane(world, size = 100) { +export function addPlane(app, size = 100) { return new WHS.Plane({ geometry: { width: size, @@ -120,10 +120,10 @@ export function addPlane(world, size = 100) { rotation: { x: -Math.PI / 2 } - }).addTo(world); + }).addTo(app); } -export function addBoxPlane(world, size = 100) { +export function addBoxPlane(app, size = 100, color = 0x447F8B) { return new WHS.Box({ geometry: { width: size, @@ -137,8 +137,8 @@ export function addBoxPlane(world, size = 100) { }) ], - material: new THREE.MeshPhongMaterial({color: 0x447F8B}) - }).addTo(world); + material: new THREE.MeshPhongMaterial({color}) + }).addTo(app); } function hexToRgb(hex) { diff --git a/examples/lights/ambient/script.js b/examples/lights/ambient/script.js index 7b8e1428..d475d272 100644 --- a/examples/lights/ambient/script.js +++ b/examples/lights/ambient/script.js @@ -12,7 +12,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200), renderer: { @@ -53,7 +53,7 @@ new WHS.Box({ ) ], position: [0, 4, 0] -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -71,11 +71,11 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ side: THREE.DoubleSide }) -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ color: 0xffffff, intensity: 0.4 -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); diff --git a/examples/lights/area/script.js b/examples/lights/area/script.js index 6f4eb1cd..196104ce 100644 --- a/examples/lights/area/script.js +++ b/examples/lights/area/script.js @@ -12,7 +12,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ near: 10 })); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200) }, ad.rendering, ad.physics, false), @@ -36,7 +36,7 @@ new WHS.Box({ position: [0, 0, 0], rotation: [0, 0, 25] -}).addTo(world); +}).addTo(app); const plane = new WHS.Box({ geometry: { @@ -50,7 +50,7 @@ const plane = new WHS.Box({ position: [0, -60, 0], rotation: [0, 0, 25] }); -plane.addTo(world); +plane.addTo(app); const lightDimension = {width: 50, height: 200}; const lightPosition = {x: 0, y: 100, z: -200}; @@ -70,7 +70,7 @@ const planeLight = new WHS.Box({ position: [lightPosition.x, lightPosition.y, lightPosition.z], rotation: [lightRotation.x, lightRotation.y, lightRotation.z] }); -planeLight.addTo(world); +planeLight.addTo(app); const intensityFactor = 2000; const areaLight = new WHS.AreaLight({ @@ -91,6 +91,6 @@ const areaLight = new WHS.AreaLight({ z: lightRotation.z } }); -areaLight.addTo(world); +areaLight.addTo(app); -world.start(); +app.start(); diff --git a/examples/lights/directional/script.js b/examples/lights/directional/script.js index 77318b5c..6f2cca1c 100644 --- a/examples/lights/directional/script.js +++ b/examples/lights/directional/script.js @@ -13,7 +13,7 @@ const controlsModule = new WHS.OrbitControlsModule(); console.log(THREE.PCFSoftShadowMap); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200), renderer: { @@ -43,7 +43,7 @@ new WHS.Importer({ position: [0, -10, 0], rotation: new THREE.Euler(0, Math.PI / 2 * 3, 0) -}).addTo(world).then(o => { +}).addTo(app).then(o => { console.log(o); }); @@ -52,7 +52,7 @@ const radius = 55; new WHS.Sphere({ material: new THREE.MeshBasicMaterial({color: 0xffffff}), position: [20, 20, 0] -}).addTo(world).then(mesh => { +}).addTo(app).then(mesh => { let angle = 0; new WHS.DirectionalLight({ @@ -77,7 +77,7 @@ new WHS.Sphere({ mesh.position.set(x, 35, z); angle += 0.01; - }).start(world); + }).start(app); }); -world.start(); +app.start(); diff --git a/examples/lights/hemisphere/script.js b/examples/lights/hemisphere/script.js index 0e0df874..47d6bc42 100644 --- a/examples/lights/hemisphere/script.js +++ b/examples/lights/hemisphere/script.js @@ -12,7 +12,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200), renderer: { @@ -52,7 +52,7 @@ new WHS.Sphere({ receive: false } -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -77,7 +77,7 @@ new WHS.Box({ )], material: new THREE.MeshPhongMaterial({ }) -}).addTo(world); +}).addTo(app); new WHS.DirectionalLight({ intensity: 0.4, @@ -94,14 +94,14 @@ new WHS.DirectionalLight({ }, position: [-105, 70, -10] -}).addTo(world); +}).addTo(app); // The hemisphere light const hemisphereLight = new WHS.HemisphereLight({ skyColor: 0xFCD440, intensity: 0.4 }); -hemisphereLight.addTo(world); +hemisphereLight.addTo(app); const pilar1 = {x: 0, y: -3.5, z: 0}; const pilar2 = {x: 0, y: -3.5, z: 20}; @@ -151,7 +151,7 @@ function addPillar(position) { }, scale: [2, 3, 2] - }).addTo(world); + }).addTo(app); } const topPlaneSize = 30; @@ -204,7 +204,7 @@ function addTopPlane(geometry, y) { emissive: 0xffffff, emissiveIntensity: 0.2 }) - }).addTo(world); + }).addTo(app); } -world.start(); +app.start(); diff --git a/examples/lights/point/script.js b/examples/lights/point/script.js index 1bc36ed7..773f233c 100644 --- a/examples/lights/point/script.js +++ b/examples/lights/point/script.js @@ -16,7 +16,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200), renderer: { @@ -60,7 +60,7 @@ new WHS.Box({ ) ], position: [0, 5, 0] -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -80,12 +80,12 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ side: THREE.DoubleSide }) -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ color: 0xffffff, intensity: 0.05 -}).addTo(world); +}).addTo(app); const redSpotLight = new WHS.PointLight({ color: red, @@ -100,7 +100,7 @@ const redSpotLight = new WHS.PointLight({ color: red }) }); -redSpotLight.addTo(world); +redSpotLight.addTo(app); new WHS.Sphere({ geometry: [1, 32, 32], @@ -115,7 +115,7 @@ const whiteSpotLight = new WHS.PointLight({ intensity: lightIntensity, distance: 90 }); -whiteSpotLight.addTo(world); +whiteSpotLight.addTo(app); new WHS.Sphere({ geometry: [1, 32, 32], @@ -134,7 +134,7 @@ const blueSpotLight = new WHS.PointLight({ cast: false } }); -blueSpotLight.addTo(world); +blueSpotLight.addTo(app); new WHS.Sphere({ geometry: [1, 32, 32], @@ -159,6 +159,6 @@ new WHS.Loop(() => { whiteSpotLight.position.x = distance * Math.sin(t); whiteSpotLight.position.y = Math.abs(distance * Math.cos(t)); whiteSpotLight.position.z = distance * Math.cos(t); -}).start(world); +}).start(app); -world.start(); +app.start(); diff --git a/examples/lights/spot/script.js b/examples/lights/spot/script.js index 50e25be6..d7d3b615 100644 --- a/examples/lights/spot/script.js +++ b/examples/lights/spot/script.js @@ -16,7 +16,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ const controlsModule = new WHS.OrbitControlsModule(); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200), renderer: { @@ -57,7 +57,7 @@ new WHS.Box({ ) ], position: [0, 4, 0] -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -75,12 +75,12 @@ new WHS.Box({ material: new THREE.MeshPhongMaterial({ side: THREE.DoubleSide }) -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ color: 0xffffff, intensity: 0.05 -}).addTo(world); +}).addTo(app); const spotLight = new WHS.SpotLight({ color: white, @@ -97,7 +97,7 @@ const spotLight = new WHS.SpotLight({ color: white }) }); -spotLight.addTo(world); +spotLight.addTo(app); const cylinder = new WHS.Cylinder({ geometry: { @@ -120,4 +120,4 @@ const cylinder = new WHS.Cylinder({ cylinder.addTo(spotLight); cylinder.rotation = new THREE.Euler(-Math.PI / 4, 0, 0); -world.start(); +app.start(); diff --git a/examples/performance/softbodies/script.js b/examples/performance/softbodies/script.js index c25201a5..06a1d8e1 100644 --- a/examples/performance/softbodies/script.js +++ b/examples/performance/softbodies/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -61,12 +61,12 @@ const sphere = new WHS.Icosahedron({ // Softbody. sphere.native.frustumCulled = false; -UTILS.addBoxPlane(world, 250).then(() => sphere.addTo(world)).then(() => { +UTILS.addBoxPlane(app, 250).then(() => sphere.addTo(app)).then(() => { for (let i = 0; i < 30; i++) { const newSphere = sphere.clone(true, false); newSphere.position.y = 5 + 4 * (i + 1); newSphere.native.frustumCulled = false; - newSphere.addTo(world); + newSphere.addTo(app); } }); @@ -79,11 +79,11 @@ new WHS.DirectionalLight({ y: 10, z: 30 } -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ color: 0xffffff, intensity: 0.5 -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); diff --git a/examples/performance/sticks/script.js b/examples/performance/sticks/script.js index b26e7178..3381fb6c 100644 --- a/examples/performance/sticks/script.js +++ b/examples/performance/sticks/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 50) }, UTILS.appDefaults.rendering, { @@ -72,8 +72,8 @@ for (let k = 0; k < rows; k++) { objects += 2; - newStick.addTo(world); - newStick2.addTo(world); + newStick.addTo(app); + newStick2.addTo(app); } } } @@ -106,7 +106,7 @@ const sphere = new WHS.Sphere({ } }); -sphere.addTo(world).then((sphere) => { +sphere.addTo(app).then((sphere) => { const mx = 96, mz = 32; @@ -114,10 +114,10 @@ sphere.addTo(world).then((sphere) => { sphere.setLinearVelocity({x: mx, y: 0, z: mz}); }); -UTILS.addBoxPlane(world, 250).then(o => { +UTILS.addBoxPlane(app, 250).then(o => { o.position.y = -1; }); -UTILS.addBasicLights(world, 0.5, [100, 100, 100], 200); +UTILS.addBasicLights(app, 0.5, [100, 100, 100], 200); -world.start(); +app.start(); diff --git a/examples/physics/compound/script.js b/examples/physics/compound/script.js index 94f1fc9a..9c442c18 100644 --- a/examples/physics/compound/script.js +++ b/examples/physics/compound/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules() ]); @@ -41,9 +41,9 @@ const box = new WHS.Box({ // Create sphere comonent. }); box.addTo(sphere); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addPlane(world); -UTILS.addBasicLights(world); +UTILS.addPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation.] +app.start(); // Start animations and physics simulation.] diff --git a/examples/physics/domino/script.js b/examples/physics/domino/script.js index 23b8eac3..5b7f50a3 100644 --- a/examples/physics/domino/script.js +++ b/examples/physics/domino/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(62, 30, 130) }) @@ -21,7 +21,7 @@ new WHS.Sphere({ }), position: [0, 100, 0] -}).addTo(world); +}).addTo(app); const tramplin = new WHS.Box({ geometry: { @@ -54,16 +54,16 @@ const tramplin = new WHS.Box({ tramplin.rotation = new THREE.Euler(0, 0, -Math.PI / 6); -tramplin.addTo(world); +tramplin.addTo(app); const tramplin2 = tramplin.clone(); tramplin2.position.y = 44; -tramplin2.addTo(world); +tramplin2.addTo(app); const tramplin3 = tramplin.clone(); tramplin3.position.set(24, 24, 0); tramplin3.rotation.z = Math.PI / 6; -tramplin3.addTo(world); +tramplin3.addTo(app); const domino = new WHS.Box({ geometry: { @@ -95,12 +95,12 @@ let d = domino.clone(); for (let i = 0; i < 13; i++) { d = d.clone(); d.position.x += 8; - d.addTo(world); + d.addTo(app); } -UTILS.addBoxPlane(world, 250).then(o => { +UTILS.addBoxPlane(app, 250).then(o => { o.position.y = -0.5 }); -UTILS.addBasicLights(world); -world.start(); +UTILS.addBasicLights(app); +app.start(); diff --git a/examples/physics/filtering/script.js b/examples/physics/filtering/script.js index 17af361b..8e541a82 100644 --- a/examples/physics/filtering/script.js +++ b/examples/physics/filtering/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules() ]); @@ -26,7 +26,7 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: [-20, 100, 0] }); -sphere.addTo(world); +sphere.addTo(app); const sphere2 = new WHS.Sphere({ // Create sphere comonent. geometry: { @@ -50,9 +50,9 @@ const sphere2 = new WHS.Sphere({ // Create sphere comonent. position: [20, 100, 0] }); -sphere2.addTo(world); +sphere2.addTo(app); -UTILS.addPlane(world).then(o => { +UTILS.addPlane(app).then(o => { const boxModule = new PHYSICS.BoxModule({ mass: 0 }); @@ -67,14 +67,14 @@ UTILS.addPlane(world).then(o => { ...planeParams, rotation: [0, 0, -Math.PI / 4], position: [-20, 3, 0] - }).addTo(world); + }).addTo(app); new WHS.Box({ ...planeParams, rotation: [0, 0, Math.PI / 4], position: [20, 3, 0] - }).addTo(world); + }).addTo(app); }); -UTILS.addBasicLights(world); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/post-processing/basic-glitch/script.js b/examples/post-processing/basic-glitch/script.js index 7a2aec5c..ce5ba4db 100644 --- a/examples/post-processing/basic-glitch/script.js +++ b/examples/post-processing/basic-glitch/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const postprocessor = new WHS.PostProcessorModule(); -window.world = new WHS.App( +window.app = new WHS.App( new WHS.BasicAppPreset({ camera: { position: new THREE.Vector3(0, 10, 50) @@ -51,12 +51,12 @@ const sphere = new WHS.Sphere({ // Create sphere comonent. position: new THREE.Vector3(0, 20, 0) }); -sphere.addTo(world); +sphere.addTo(app); -UTILS.addBoxPlane(world); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. const glitchPass = new POSTPROCESSING.GlitchPass(); diff --git a/examples/softbody/cloth/script.js b/examples/softbody/cloth/script.js index 5e6eafd4..1642683e 100644 --- a/examples/softbody/cloth/script.js +++ b/examples/softbody/cloth/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -59,7 +59,7 @@ const cloth = new WHS.Plane({ // Softbody (blue). } }); -cloth.addTo(world); +cloth.addTo(app); new WHS.Box({ // Rigidbody (green). geometry: { @@ -81,9 +81,9 @@ new WHS.Box({ // Rigidbody (green). position: { y: 36 } -}).addTo(world); +}).addTo(app); -UTILS.addBoxPlane(world, 250); -UTILS.addBasicLights(world, 0.5, [60, 60, 20], 400); +UTILS.addBoxPlane(app, 250); +UTILS.addBasicLights(app, 0.5, [60, 60, 20], 400); -world.start(); +app.start(); diff --git a/examples/softbody/cloth2/script.js b/examples/softbody/cloth2/script.js index 38578e08..673a4ba9 100644 --- a/examples/softbody/cloth2/script.js +++ b/examples/softbody/cloth2/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -80,8 +80,8 @@ const arm = new WHS.Box({ // Rigidbody (green). } }); -arm.addTo(world); -cloth.addTo(world).then(() => { +arm.addTo(app); +cloth.addTo(app).then(() => { cloth.appendAnchor(arm, 0, 1, false); cloth.appendAnchor(arm, 20, 1, false); }); @@ -106,9 +106,9 @@ new WHS.Box({ // Rigidbody (green). position: { y: 18 } -}).addTo(world); +}).addTo(app); -UTILS.addBoxPlane(world, 250); -UTILS.addBasicLights(world, 0.5, [60, 60, 20], 400); +UTILS.addBoxPlane(app, 250); +UTILS.addBasicLights(app, 0.5, [60, 60, 20], 400); -world.start(); +app.start(); diff --git a/examples/softbody/cloth3/script.js b/examples/softbody/cloth3/script.js index 3ffef90b..c7b3155c 100644 --- a/examples/softbody/cloth3/script.js +++ b/examples/softbody/cloth3/script.js @@ -2,7 +2,7 @@ import * as UTILS from '../../globals'; const mouse = new WHS.VirtualMouseModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -78,8 +78,8 @@ const arm = new WHS.Box({ // Rigidbody (green). } }); -arm.addTo(world); -cloth.addTo(world).then(() => { +arm.addTo(app); +cloth.addTo(app).then(() => { cloth.appendAnchor(arm, 0, 1, false); cloth.appendAnchor(arm, 40, 1, false); }); @@ -104,13 +104,13 @@ new WHS.Box({ // Rigidbody (green). position: { y: 18 } -}).addTo(world).then(box => { +}).addTo(app).then(box => { mouse.on('move', () => { box.setLinearVelocity(mouse.project().sub(box.position)); }); }); -UTILS.addBoxPlane(world, 250); -UTILS.addBasicLights(world, 0.5, [60, 60, 20], 400); +UTILS.addBoxPlane(app, 250); +UTILS.addBasicLights(app, 0.5, [60, 60, 20], 400); -world.start(); +app.start(); diff --git a/examples/softbody/ropes/script.js b/examples/softbody/ropes/script.js index 33b021b2..761fa862 100644 --- a/examples/softbody/ropes/script.js +++ b/examples/softbody/ropes/script.js @@ -1,6 +1,6 @@ const mouse = new WHS.VirtualMouseModule(); -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -49,7 +49,7 @@ const toptube = new WHS.Tube({ material: tubeMaterial }); -toptube.addTo(world); +toptube.addTo(app); // LEFT. new WHS.Tube({ @@ -65,7 +65,7 @@ new WHS.Tube({ ], material: tubeMaterial -}).addTo(world); +}).addTo(app); // RIGHT. new WHS.Tube({ @@ -81,7 +81,7 @@ new WHS.Tube({ ], material: tubeMaterial -}).addTo(world); +}).addTo(app); const sphere = new WHS.Sphere({ geometry: { @@ -114,7 +114,7 @@ for (let i = 0; i < 5; i++) { const sc = sphere.clone(); sc.position.x = -20 + i * 6; sc.material = sc.material.clone(); - sc.addTo(world); + sc.addTo(app); sphereHandler.push(sc); const v1 = sc.position.clone(); @@ -137,7 +137,7 @@ for (let i = 0; i < 5; i++) { ] }); - rope.addTo(world).then(() => { + rope.addTo(app).then(() => { rope.appendAnchor(toptube, 50, 1); rope.appendAnchor(sc, 0, 1); }); @@ -167,7 +167,7 @@ const sphereStart = new WHS.Sphere({ } }); -sphereStart.addTo(world); +sphereStart.addTo(app); sphereHandler.push(sphereStart); const rope1 = new WHS.Line({ @@ -186,7 +186,7 @@ const rope1 = new WHS.Line({ ] }); -rope1.addTo(world).then(() => { +rope1.addTo(app).then(() => { rope1.appendAnchor(toptube, 50, 1); rope1.appendAnchor(sphereStart, 0, 1); }); @@ -218,7 +218,7 @@ new WHS.Plane({ rotation: { x: -Math.PI / 2 } -}).addTo(world); +}).addTo(app); new WHS.SpotLight({ intensity: 6, @@ -228,14 +228,14 @@ new WHS.SpotLight({ position: { y: 50 } -}).addTo(world); +}).addTo(app); new WHS.AmbientLight({ intensity: 0.6, color: 0xffffff -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); // Check mouse. diff --git a/examples/softbody/sphere/script.js b/examples/softbody/sphere/script.js index 2e6af2da..ffdd00a8 100644 --- a/examples/softbody/sphere/script.js +++ b/examples/softbody/sphere/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ @@ -47,7 +47,7 @@ new WHS.Icosahedron({ // Softbody (blue). position: { y: 4 } -}).addTo(world).then(obj => { obj.native.frustumCulled = false }); +}).addTo(app).then(obj => { obj.native.frustumCulled = false }); // TODO: Make sphere position start from specific position. [Softbodies issue] new WHS.Sphere({ // Rigidbody (green). @@ -72,11 +72,11 @@ new WHS.Sphere({ // Rigidbody (green). x: -0.5, z: 0.5 } -}).addTo(world) +}).addTo(app) -UTILS.addBoxPlane(world, 2500); -UTILS.addBasicLights(world); +UTILS.addBoxPlane(app, 2500); +UTILS.addBasicLights(app); -world.start(); +app.start(); diff --git a/examples/textures/phong/script.js b/examples/textures/phong/script.js index b24f04ca..5ff22d9b 100644 --- a/examples/textures/phong/script.js +++ b/examples/textures/phong/script.js @@ -1,6 +1,6 @@ import * as UTILS from '../../globals'; -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules() ]); @@ -34,8 +34,8 @@ const label = new UTILS.Label({ position: [-15, 7, 0] }); -box.addTo(world); -label.addTo(world); +box.addTo(app); +label.addTo(app); // normalMap @@ -66,8 +66,8 @@ const labelNormal = new UTILS.Label({ position: [0, 7, 0] }); -boxNormal.addTo(world); -labelNormal.addTo(world); +boxNormal.addTo(app); +labelNormal.addTo(app); // displacementMap @@ -99,14 +99,14 @@ const labelDisplace = new UTILS.Label({ position: [15, 7, 0] }); -boxDisplace.addTo(world); -labelDisplace.addTo(world); +boxDisplace.addTo(app); +labelDisplace.addTo(app); new WHS.PointLight({ distance: 100, position: [0, 0, 10] -}).addTo(world); +}).addTo(app); -UTILS.addBasicLights(world); +UTILS.addBasicLights(app); -world.start(); // Start animations and physics simulation. +app.start(); // Start animations and physics simulation. diff --git a/examples/whs-module-audio/positional/script.js b/examples/whs-module-audio/positional/script.js index ea3c17af..01f61037 100644 --- a/examples/whs-module-audio/positional/script.js +++ b/examples/whs-module-audio/positional/script.js @@ -12,7 +12,7 @@ const cameraModule = new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ near: 1 })); -const world = new WHS.App([ +const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(0, 10, 200) }), @@ -49,7 +49,7 @@ const sphere = new WHS.Sphere({ } }); -sphere.addTo(world); +sphere.addTo(app); audioModule.addListener(cameraModule.camera); audioModule.playAudio(`${process.assetsPath}/sounds/folk.mp3`); @@ -60,7 +60,7 @@ new WHS.PointLight({ distance: 1000, position: [10, 40, 10] -}).addTo(world); +}).addTo(app); new WHS.Box({ geometry: { @@ -79,6 +79,6 @@ new WHS.Box({ position: [0, -60, 0], rotation: [0, 0, 25] -}).addTo(world); +}).addTo(app); -world.start(); +app.start(); diff --git a/src/core/App.js b/src/core/App.js index 5293462b..de054220 100644 --- a/src/core/App.js +++ b/src/core/App.js @@ -120,6 +120,14 @@ class App extends ModuleSystem { resolve(loop); }); } + + get(key) { + return this.manager.get(key); + } + + use(key) { + return this.manager.use(key); + } } export { From 49820800433f2f52b5da90196cc4d30da05e2b55 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 18:37:43 +0300 Subject: [PATCH 12/44] Fix StateModule example --- examples/index.pug | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/index.pug b/examples/index.pug index a9e8ee78..aa73bffb 100644 --- a/examples/index.pug +++ b/examples/index.pug @@ -68,4 +68,8 @@ html document.getElementById('cat_').innerText = la[1]; document.getElementById('ex_').innerText = la[2]; + + setTimeout(function () { + window.state = iframe.contentWindow['state']; + }, 1000); script(src='/examples/assets/js/script.js') From a785fa45d918362785bcf8e64293cb1a55d3aa8c Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 18:44:17 +0300 Subject: [PATCH 13/44] Fix shadows on saturn example --- examples/design/saturn/script.js | 54 ++++++++++++++------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/examples/design/saturn/script.js b/examples/design/saturn/script.js index 33d8bb55..4be4eb9c 100644 --- a/examples/design/saturn/script.js +++ b/examples/design/saturn/script.js @@ -16,7 +16,7 @@ const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ - position: new THREE.Vector3(0, 100, 400), + position: new THREE.Vector3(0, 200, 800), far: 2000, near: 1 })), @@ -29,7 +29,7 @@ const app = new WHS.App([ type: THREE.PCFSoftShadowMap } } - }), + }, {shadow: true}), new WHS.OrbitControlsModule(), new WHS.ResizeModule() ]); @@ -65,15 +65,19 @@ new WHS.DirectionalLight({ intensity: 1.5, distance: 800, - shadowmap: { - width: 2048, - height: 2048, + shadow: { + mapSize: { + width: 2048, + height: 2048 + }, - left: -800, - right: 800, - top: 800, - bottom: -800, - far: 800 + camera: { + left: -800, + right: 800, + top: 800, + bottom: -800, + far: 800 + } }, position: { @@ -85,6 +89,12 @@ new WHS.DirectionalLight({ const dynamicGeometry = new WHS.DynamicGeometryModule(); +const material = new THREE.MeshStandardMaterial({ + shading: THREE.FlatShading, + emissive: 0x270000, + roughness: 0.9 +}); + const s1 = new WHS.Dodecahedron({ geometry: { buffer: true, @@ -95,11 +105,7 @@ const s1 = new WHS.Dodecahedron({ dynamicGeometry ], - material: new THREE.MeshStandardMaterial({ - shading: THREE.FlatShading, - emissive: 0x270000, - roughness: 0.9 - }) + material }); const s2 = new WHS.Box({ @@ -114,11 +120,7 @@ const s2 = new WHS.Box({ dynamicGeometry ], - material: new THREE.MeshStandardMaterial({ - shading: THREE.FlatShading, - roughness: 0.9, - emissive: 0x270000 - }) + material }); const s3 = new WHS.Cylinder({ @@ -133,11 +135,7 @@ const s3 = new WHS.Cylinder({ dynamicGeometry ], - material: new THREE.MeshStandardMaterial({ - shading: THREE.FlatShading, - roughness: 0.9, - emissive: 0x270000 - }) + material }); const s4 = new WHS.Sphere({ @@ -150,11 +148,7 @@ const s4 = new WHS.Sphere({ dynamicGeometry ], - material: new THREE.MeshStandardMaterial({ - shading: THREE.FlatShading, - roughness: 0.9, - emissive: 0x270000 - }) + material }); const asteroids = new WHS.Group(); From 61387658f386933c2423d64959090b81984cb51a Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 18:59:10 +0300 Subject: [PATCH 14/44] Fix fov --- examples/design/saturn/script.js | 3 ++- examples/globals.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/design/saturn/script.js b/examples/design/saturn/script.js index 4be4eb9c..9243c30c 100644 --- a/examples/design/saturn/script.js +++ b/examples/design/saturn/script.js @@ -16,8 +16,9 @@ const app = new WHS.App([ new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera({ - position: new THREE.Vector3(0, 200, 800), + position: new THREE.Vector3(0, 100, 400), far: 2000, + fov: 75, near: 1 })), new WHS.RenderingModule({ diff --git a/examples/globals.js b/examples/globals.js index b6852f4c..f8af2482 100644 --- a/examples/globals.js +++ b/examples/globals.js @@ -65,7 +65,7 @@ export const appModules = ( // appModules(camera, rendering); [ new WHS.ElementModule(), new WHS.SceneModule(), - new WHS.DefineModule('camera', new WHS.PerspectiveCamera(camera)), + new WHS.DefineModule('camera', new WHS.PerspectiveCamera(Object.assign(camera, {fov: 75}))), new WHS.RenderingModule(rendering), new PHYSICS.WorldModule(physics), useControls ? new WHS.OrbitControlsModule() : null, From e911aa5882f2baaa7fdb2e72d026a73695015411 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 19:00:05 +0300 Subject: [PATCH 15/44] Fix docs link --- examples/index.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/index.pug b/examples/index.pug index aa73bffb..d83851fd 100644 --- a/examples/index.pug +++ b/examples/index.pug @@ -17,7 +17,7 @@ html = " " span / = " " - a(href='https://whsjs.readme.io/docs' target='_blank') Docs + a(href='https://whsjs.io/' target='_blank') Docs = " " span / = " " From 1a3e65f3037e544e66f7aed6bdb1c47e57f2f38a Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 21:53:51 +0300 Subject: [PATCH 16/44] Remove CameraModule test --- .../app/__tests__/CameraModule.spec.js | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 src/modules/app/__tests__/CameraModule.spec.js diff --git a/src/modules/app/__tests__/CameraModule.spec.js b/src/modules/app/__tests__/CameraModule.spec.js deleted file mode 100644 index 61e6c71d..00000000 --- a/src/modules/app/__tests__/CameraModule.spec.js +++ /dev/null @@ -1,60 +0,0 @@ -import {CameraModule} from '../CameraModule'; - -const modules = {}; - -test('CameraModule', () => { - modules.camera = new CameraModule(); -}); - -describe('CameraModule', () => { - const cameraModule = new CameraModule(); - - test('can be assigned to modules', () => { - modules.camera = cameraModule; - }); - - test('has the correct default Camera Position', () => { - expect(cameraModule.camera.position.x).toBeCloseTo(0, 5); - expect(cameraModule.camera.position.y).toBeCloseTo(0, 5); - expect(cameraModule.camera.position.z).toBeCloseTo(0, 5); - }); - - const position = { x: 10, y: 20, z: 30 }; - const fov = 40; - const aspect = 50; - const near = 60; - const far = 70; - - const params = { - position, - fov, - aspect, - near, - far - }; - - const customCameraModule = new CameraModule(params); - const customCameraNative = customCameraModule.camera.native; - - test('has the custom Camera Position', () => { - expect(customCameraModule.camera.position.x).toBeCloseTo(position.x, 5); - expect(customCameraModule.camera.position.y).toBeCloseTo(position.y, 5); - expect(customCameraModule.camera.position.z).toBeCloseTo(position.z, 5); - }); - - test('passes a custom fov value', () => { - expect(customCameraNative.fov).toBeCloseTo(fov, 5); - }); - - test('passes a custom aspect value', () => { - expect(customCameraNative.aspect).toBeCloseTo(aspect, 5); - }); - - test('passes a custom near value', () => { - expect(customCameraNative.near).toBeCloseTo(near, 5); - }); - - test('passes a custom far value', () => { - expect(customCameraNative.far).toBeCloseTo(far, 5); - }); -}); From 36b03d6fe674f55aa80f8539345295b5c323c30d Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 21:58:41 +0300 Subject: [PATCH 17/44] Fix fov --- src/components/cameras/PerspectiveCamera.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/cameras/PerspectiveCamera.js b/src/components/cameras/PerspectiveCamera.js index 5c53c003..0e99016e 100644 --- a/src/components/cameras/PerspectiveCamera.js +++ b/src/components/cameras/PerspectiveCamera.js @@ -32,7 +32,7 @@ class PerspectiveCamera extends CameraComponent { * { * near: 1, * far: 1000, - * fov: 45, + * fov: 75, * aspect: system.window.innerWidth / system.window.innerHeight * } */ @@ -41,7 +41,7 @@ class PerspectiveCamera extends CameraComponent { near: 1, far: 1000, - fov: 45, + fov: 75, aspect: system.window.innerWidth / system.window.innerHeight }; From 71582f6df73e0b29934649a439363c06f7800b51 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 22:40:13 +0300 Subject: [PATCH 18/44] Fix alien example --- examples/animation/alien/script.js | 27 +++++++++++++++++++++------ examples/globals.js | 2 +- src/modules/app/StateModule.js | 25 +++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/examples/animation/alien/script.js b/examples/animation/alien/script.js index a23da05d..12edb8de 100644 --- a/examples/animation/alien/script.js +++ b/examples/animation/alien/script.js @@ -3,6 +3,8 @@ import * as UTILS from '../../globals'; const app = new WHS.App([ ...UTILS.appModules({ position: new THREE.Vector3(5, 5, 10), + near: true + }, { renderer: { shadowMap: { type: THREE.PCFSoftShadowMap, @@ -20,22 +22,35 @@ const animationModule = new WHS.AnimationModule(app, false, { speed: 1.2 }); +const fix = texture => { + texture.anisotropy = 2; + texture.magFilter = THREE.LinearFilter; + texture.minFilter = THREE.LinearMipMapLinearFilter; + + return texture; +}; + const characterTexturePath = `${process.assetsPath}/textures/space-alien/`; const textureModule = new WHS.TextureModule({ url: `${characterTexturePath}diffuse.png`, - type: 'map' + type: 'map', + fix }, { url: `${characterTexturePath}emissive.png`, - type: 'emissiveMap' + type: 'emissiveMap', + fix }, { url: `${characterTexturePath}normal.png`, - type: 'normalMap' + type: 'normalMap', + fix }, { url: `${characterTexturePath}metalness.png`, - type: 'metalnessMap' + type: 'metalnessMap', + fix }, { url: `${characterTexturePath}ao.png`, - type: 'aoMap' + type: 'aoMap', + fix }); new WHS.Importer({ @@ -61,7 +76,7 @@ new WHS.Importer({ position: [0, -5, 0] }).addTo(app).then(() => { - animationModule.play('observe'); + // animationModule.play('observe'); }); new WHS.PointLight({ diff --git a/examples/globals.js b/examples/globals.js index f8af2482..052b89b8 100644 --- a/examples/globals.js +++ b/examples/globals.js @@ -66,7 +66,7 @@ export const appModules = ( // appModules(camera, rendering); new WHS.ElementModule(), new WHS.SceneModule(), new WHS.DefineModule('camera', new WHS.PerspectiveCamera(Object.assign(camera, {fov: 75}))), - new WHS.RenderingModule(rendering), + new WHS.RenderingModule(rendering, {shadow: true}), new PHYSICS.WorldModule(physics), useControls ? new WHS.OrbitControlsModule() : null, new StatsModule(), diff --git a/src/modules/app/StateModule.js b/src/modules/app/StateModule.js index 596d4ca7..f4d25f7c 100644 --- a/src/modules/app/StateModule.js +++ b/src/modules/app/StateModule.js @@ -7,6 +7,19 @@ const isEqualDefault = (a, b) => { return false; }; +/** + * @class StateModule + * @category modules/app + * @param {Object} [params] + * @memberof module:modules/app + * @example Creating a state module + * new App([ + * // ... + * new StateModule().default({ + * sphereColor: 0xff0000 + * }) + * ]); + */ export class StateModule { static actionGenerate(isEqual) { return (state = [{}, ''], {key, data}) => { @@ -29,11 +42,23 @@ export class StateModule { this.prevConfig = 'default'; } + /** + * @method default + * @description Add default configuration. + * @param {Object} data Configuration setup + * @memberof module:modules/app.StateModule + */ default(data) { this.config({default: data}); return this; } + /** + * @method setEqualCheck + * @description Sets an equalCheck function + * @param {Object} data Configuration setup + * @memberof module:modules/app.StateModule + */ setEqualCheck(func) { this.store.replaceReducer( StateModule.actionGenerate(func) From 5ced094b6d8110435a184cfe39c35bb6e8cad83f Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sat, 24 Jun 2017 22:41:28 +0300 Subject: [PATCH 19/44] Fix animation --- examples/animation/alien/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/animation/alien/script.js b/examples/animation/alien/script.js index 12edb8de..e217ed6d 100644 --- a/examples/animation/alien/script.js +++ b/examples/animation/alien/script.js @@ -76,7 +76,7 @@ new WHS.Importer({ position: [0, -5, 0] }).addTo(app).then(() => { - // animationModule.play('observe'); + animationModule.play('observe'); }); new WHS.PointLight({ From 663db0f73f22fecea5a9300c165977948d4c34dd Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Sun, 25 Jun 2017 21:34:07 +0300 Subject: [PATCH 20/44] StateModule docs --- gulp/dev.js | 1 + gulp/docs.js | 2 +- src/modules/app/StateModule.js | 67 ++++++++++++++++++++++++++++++++-- 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/gulp/dev.js b/gulp/dev.js index 987bd977..82cb3be9 100644 --- a/gulp/dev.js +++ b/gulp/dev.js @@ -23,6 +23,7 @@ gulp.task('dev', () => { const app = express(); const compilerInstance = new FrameworkCompilerInstance(); const templateData = getTemplateData({devPhysics: argv.devPhysics, devMode: true}); + const exampleCompiler = new ExampleCompilerInstance({ path: { ammojs: templateData.ammojs, diff --git a/gulp/docs.js b/gulp/docs.js index 714e8bdf..eae58289 100644 --- a/gulp/docs.js +++ b/gulp/docs.js @@ -34,7 +34,7 @@ gulp.task('docs:watch', ['docs'], () => { './docs/template/**/*.tmpl', './docs/template/publish.js', './docs/data/**/*', - './src/core/*.js' + argv.all ? './src/**/*.js' : './src/core/Component.js' ], () => { del('./docs/public/*.html'); console.log(`update #${i++}`); diff --git a/src/modules/app/StateModule.js b/src/modules/app/StateModule.js index f4d25f7c..d5436de8 100644 --- a/src/modules/app/StateModule.js +++ b/src/modules/app/StateModule.js @@ -69,6 +69,19 @@ export class StateModule { manager.define('state'); } + /** + * @method config + * @description Load configurations from object. + * @param {Object} configs Configuration data + * @memberof module:modules/app.StateModule + * @example Adding `green` configuration + * state.config({ + * green: { + * sphereColor: 0x00ff00, + * planeColor: 0x00ff00 + * } + * }); + */ config(configs) { for (const key in configs) { if (key) { @@ -79,6 +92,16 @@ export class StateModule { } } + /** + * @method update + * @description Load updates from object. + * @param {Object} updates Updates data + * @memberof module:modules/app.StateModule + * @example Update callback for `sphereColor` + * state.update({ + * sphereColor: color => sphere.material.color.setHex(color) + * }); + */ update(updates = {}) { this.store.subscribe(() => { const [data, changedKey] = this.store.getState(); @@ -88,6 +111,14 @@ export class StateModule { }); } + /** + * @method to + * @description Switch to configuration. + * @param {String} configName Configuration name. + * @memberof module:modules/app.StateModule + * @example Changes configuration to `green` + * state.to('green'); + */ to(configName) { this.prevConfig = this.currentConfig; this.currentConfig = configName; @@ -99,22 +130,50 @@ export class StateModule { this.set(config); } + /** + * @method set + * @description Set current parameters. + * @param {Object} data Configuration parameters. + * @memberof module:modules/app.StateModule + */ set(data) { for (const key in data) if (key) this.store.dispatch({type: 'ADD', key, data: data[key]}); } + /** + * @method get + * @description Return data of parameter. + * @param {String} key Parameter name. + * @memberof module:modules/app.StateModule + * @example + * state.get('sphereColor'); // 0x00ff00 + */ get(key) { return this.store.getState()[0][key]; } + /** + * @method prev + * @description Return `trueVal` if `config` match previous configuration, in other case - return `falseVal`. + * @param {String} config Configuration name. + * @param {Any} trueVal Value returned if condition is truthy. + * @param {Any} falseVal CValue returned if condition is falsy. + * @memberof module:modules/app.StateModule + */ prev(config, trueVal, falseVal) { - if (this.prevConfig === config) return trueVal; - return falseVal; + return this.prevConfig === config ? trueVal : falseVal; } + /** + * @method current + * @description Return `trueVal` if `config` match current configuration, in other case - return `falseVal`. + * @param {String} config Configuration name. + * @param {Any} trueVal Value returned if condition is truthy. + * @param {Any} falseVal CValue returned if condition is falsy. + * @memberof module:modules/app.StateModule + */ current(config, trueVal, falseVal) { - if (this.currentConfig === config) return trueVal; - return falseVal; + return this.currentConfig === config ? trueVal : falseVal; } } From 2d647ab7ccc3e5c22b86c4d67cc8a60516ee293b Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Mon, 26 Jun 2017 09:28:46 +0300 Subject: [PATCH 21/44] StateModule docs --- docs/data/Modules.md | 4 ++++ docs/template/publish.js | 14 +++++++------- src/modules/app/StateModule.js | 12 ++++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/docs/data/Modules.md b/docs/data/Modules.md index 66d6c6a5..fe1a1a55 100644 --- a/docs/data/Modules.md +++ b/docs/data/Modules.md @@ -2,6 +2,10 @@ Modules provide easy integration with components. They can make a lot of complex things much simpler to other developers (such as adding 3D physics). +### Articles: + +- [Migrating to WhitestormJS v2 beta. Module system](https://hackernoon.com/migrating-to-whitestormjs-v2-beta-module-system-2eeaeda08a80) + ## Simple module Let's create a simple module that will add `.alertRandom()` method to component, in which this module is used. diff --git a/docs/template/publish.js b/docs/template/publish.js index 1c5ea312..4b688dfd 100644 --- a/docs/template/publish.js +++ b/docs/template/publish.js @@ -296,13 +296,13 @@ function generateSourceFiles(sourceFiles, encoding) { logger.error("Error while generating source file %s: %s", file, e.message) } - generate( - "Source", - sourceFiles[file].shortened, - [source], - helper.getUniqueFilename(sourceFiles[file].shortened), - false - ) + // generate( + // "Source", + // sourceFiles[file].shortened, + // [source], + // helper.getUniqueFilename(sourceFiles[file].shortened), + // false + // ) }) } diff --git a/src/modules/app/StateModule.js b/src/modules/app/StateModule.js index d5436de8..57722f0e 100644 --- a/src/modules/app/StateModule.js +++ b/src/modules/app/StateModule.js @@ -9,6 +9,9 @@ const isEqualDefault = (a, b) => { /** * @class StateModule + * @description `StateModule` is useful for apps, where you need state manipulation. + * This can be: _transitions between screens, games, development moments_. + * You can check [basic/state](https://whs-dev.surge.sh/examples/?basic/state) example. * @category modules/app * @param {Object} [params] * @memberof module:modules/app @@ -47,6 +50,11 @@ export class StateModule { * @description Add default configuration. * @param {Object} data Configuration setup * @memberof module:modules/app.StateModule + * @example + * new WHS.StateModule().default({ + * sphereColor: UTILS.$colors.mesh, + * planeColor: 0x447F8B + * }) */ default(data) { this.config({default: data}); @@ -135,6 +143,10 @@ export class StateModule { * @description Set current parameters. * @param {Object} data Configuration parameters. * @memberof module:modules/app.StateModule + * @example + * state.set({ + * sphereColor: 0x00ff00 + * }); */ set(data) { for (const key in data) From 0beefff295600103d2385e85acdfdd528d81181b Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Mon, 26 Jun 2017 10:01:10 +0300 Subject: [PATCH 22/44] iframes --- docs/template/static/less/jsdoc-default.less | 6 ++++++ src/components/lights/HemisphereLight.js | 2 ++ src/components/lights/PointLight.js | 4 +++- src/components/lights/SpotLight.js | 4 +++- src/components/meshes/Box.js | 2 ++ src/components/meshes/Cylinder.js | 4 +++- src/components/meshes/Dodecahedron.js | 2 ++ src/components/meshes/Extrude.js | 2 ++ src/components/meshes/Icosahedron.js | 2 ++ src/components/meshes/Lathe.js | 2 ++ src/components/meshes/Octahedron.js | 2 ++ src/components/meshes/Parametric.js | 2 ++ src/components/meshes/Plane.js | 2 ++ src/components/meshes/Ring.js | 2 ++ src/components/meshes/Shape.js | 2 ++ src/components/meshes/Sphere.js | 2 ++ src/components/meshes/Tetrahedron.js | 2 ++ src/components/meshes/Text.js | 2 ++ src/components/meshes/Torus.js | 2 ++ src/components/meshes/Torusknot.js | 2 ++ src/components/meshes/Tube.js | 2 ++ 21 files changed, 49 insertions(+), 3 deletions(-) diff --git a/docs/template/static/less/jsdoc-default.less b/docs/template/static/less/jsdoc-default.less index d14058a6..748d39b8 100644 --- a/docs/template/static/less/jsdoc-default.less +++ b/docs/template/static/less/jsdoc-default.less @@ -188,6 +188,12 @@ samp { &:empty { margin: 0; } + + iframe { + width: 100%; + height: 400px; + border: none; + } } #main { diff --git a/src/components/lights/HemisphereLight.js b/src/components/lights/HemisphereLight.js index 08cef1c9..7d142034 100644 --- a/src/components/lights/HemisphereLight.js +++ b/src/components/lights/HemisphereLight.js @@ -6,6 +6,8 @@ import {LightComponent} from '../../core/LightComponent'; * @category components/lights * @description HemisphereLight is a light source positioned directly above the scene.
* It also doesn't need position and target properties. + * @classDesc + * * @param {Object} [params={light: {skyColor: 0xffffff, groundColor: 0xffffff, intensity: 1}}] - The params. * @extends LightComponent * @memberof module:components/lights diff --git a/src/components/lights/PointLight.js b/src/components/lights/PointLight.js index 475eb0b5..7bf278a9 100644 --- a/src/components/lights/PointLight.js +++ b/src/components/lights/PointLight.js @@ -7,10 +7,12 @@ import {LightComponent} from '../../core/LightComponent'; * @description PointLight creates a light at a specific position in the scene. The light shines in all directions (roughly similar to a light bulb.)

* It has the same options as AmbientLight in light paramater, but it also supports position, distance and decay.
* @param {Object} [params={light: {color: 0xffffff, intensity: 1, distance: 100, decay: 1}}] - The params. + * @classDesc + * * @extends LightComponent * @memberof module:components/lights * @example Creating a PointLight - * new LightComponent({ + * new PointLight({ * color: 0xff0000, * intensity: 3, * distance: 1000, diff --git a/src/components/lights/SpotLight.js b/src/components/lights/SpotLight.js index 367b5741..7b3e6999 100644 --- a/src/components/lights/SpotLight.js +++ b/src/components/lights/SpotLight.js @@ -7,11 +7,13 @@ import {LightComponent} from '../../core/LightComponent'; * @description SpotLight creates spot light that can cast shadow in one direction.

* It has the same parameters as AmbientLight in light, but it also supports pos and target.

* SpotLight affects meshes with lambert and phong material. + * @classDesc + * * @param {Object} [params={light: {color: 0xffffff, intensity: 1, distance: 100, angle: Math.PI / 3, exponent: 0, decay: 1}}] - The params. * @extends LightComponent * @memberof module:components/lights * @example Creating a SpotLight that falls down from vec3(10, 20, 10) to vec3(0, 0, 0) - * new LightComponent({ + * new SpotLight({ * color: 0x00ff00, * intensity: 3, * distance: 1000, diff --git a/src/components/meshes/Box.js b/src/components/meshes/Box.js index 346c1aa9..57ae0b1a 100644 --- a/src/components/meshes/Box.js +++ b/src/components/meshes/Box.js @@ -11,6 +11,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @category components/meshes * @description As told on Component definition, while you can pass any of the inherited params for this component construction, you will need to * pass specific parameters to build this mesh as a geometry object. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Cylinder.js b/src/components/meshes/Cylinder.js index 52dc8f93..d867de62 100644 --- a/src/components/meshes/Cylinder.js +++ b/src/components/meshes/Cylinder.js @@ -12,12 +12,14 @@ import {MeshComponent} from '../../core/MeshComponent'; * @description A cylinder is one of the most basic curvilinear geometric shapes, the surface formed by the points at a fixed distance from a given straight line, the axis of the cylinder.

* The solid enclosed by this surface and by two planes perpendicular to the axis is also called a cylinder.
* The surface area and the volume of a cylinder have been known since deep antiquity. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes * @example Creating a Cylinder, and adding to app * new Cylinder({ - * geometry: { + * geometry: { * radiusTop: 2, * radiusBottom: 4, * height: 5 diff --git a/src/components/meshes/Dodecahedron.js b/src/components/meshes/Dodecahedron.js index cac71b06..626b51f0 100644 --- a/src/components/meshes/Dodecahedron.js +++ b/src/components/meshes/Dodecahedron.js @@ -14,6 +14,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * There are also three regular star dodecahedra, which are constructed as stellations of the convex form.
* All of these have icosahedral symmetry, order 120. * Dodecahedron creates Dodecahedron object by it's radius and detail. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Extrude.js b/src/components/meshes/Extrude.js index 79a8f3f8..aeb24e47 100644 --- a/src/components/meshes/Extrude.js +++ b/src/components/meshes/Extrude.js @@ -19,6 +19,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * Such examples can be easily implemented using whitestorm.js or it's plugins. Use `Extrude` class with THREE.Shape to get extrude effect of shape defined by 2D vectors. * This class is similar to THREE.ExtrudeGeometry, * but it also contains all properties, applied by `Shape`, such as material, mass and vectors like position (pos) and rotation (rot). + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Icosahedron.js b/src/components/meshes/Icosahedron.js index b9746e5f..c52070d8 100644 --- a/src/components/meshes/Icosahedron.js +++ b/src/components/meshes/Icosahedron.js @@ -12,6 +12,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @description In geometry, an icosahedron is a polyhedron with 20 faces.
* There are many kinds of icosahedra, with some being more symmetrical than others. The most well known is the Platonic, convex regular icosahedron.
* `Icosahedron` creates an Icosahedron object by its radius and detail. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Lathe.js b/src/components/meshes/Lathe.js index 2b591d58..fee94edf 100644 --- a/src/components/meshes/Lathe.js +++ b/src/components/meshes/Lathe.js @@ -15,6 +15,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * The lathing may be partial; the amount of rotation is not necessarily a full 360 degrees. * The point set providing the initial source data can be thought of as a cross section through the object along a plane containing its axis of radial symmetry.

* The following example shows a geometry which can be generated using `Lathe` class. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Octahedron.js b/src/components/meshes/Octahedron.js index 861756ba..b72d45e5 100644 --- a/src/components/meshes/Octahedron.js +++ b/src/components/meshes/Octahedron.js @@ -13,6 +13,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * A regular octahedron is a Platonic solid composed of eight equilateral triangles, four of which meet at each vertex. *

* `Octahedron` creates an Octahedron object by its `radius` and `detail`. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Parametric.js b/src/components/meshes/Parametric.js index 24a60c6e..e1b40833 100644 --- a/src/components/meshes/Parametric.js +++ b/src/components/meshes/Parametric.js @@ -17,6 +17,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * - Parametric surface * - "Graphulus" *

+ * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Plane.js b/src/components/meshes/Plane.js index 02eab41f..ec26ad45 100644 --- a/src/components/meshes/Plane.js +++ b/src/components/meshes/Plane.js @@ -10,6 +10,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Plane * @category components/meshes * @description `Plane` is used for creating planes given some `width` and `height`. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Ring.js b/src/components/meshes/Ring.js index 1685bb6f..6c523a4a 100644 --- a/src/components/meshes/Ring.js +++ b/src/components/meshes/Ring.js @@ -10,6 +10,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Ring * @category components/meshes * @description Ring class creates a circle or just 2D Torus. Does not support physics. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Shape.js b/src/components/meshes/Shape.js index db9ba7e5..08ccf1e5 100644 --- a/src/components/meshes/Shape.js +++ b/src/components/meshes/Shape.js @@ -13,6 +13,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * Unfortunately, not all of them support physics, an alternative is to make a similar 3D object and scale its width down to near zero. *

* `Shape` consists of shapes that are in its shapes parameter. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Sphere.js b/src/components/meshes/Sphere.js index 7a460758..6b7f09ee 100644 --- a/src/components/meshes/Sphere.js +++ b/src/components/meshes/Sphere.js @@ -15,6 +15,8 @@ import {MeshComponent} from '../../core/MeshComponent'; *

* Then it creates an `Three.js mesh` or a `Physijs mesh`, that is similar to `Three.js mesh`, but it also take into consideration collision calculations. * This mesh is a combination of `Three.js geometry` and `Physijs material` (The same as in three.js, but with friction and restitution). + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Tetrahedron.js b/src/components/meshes/Tetrahedron.js index 1afbea00..7a2a47d3 100644 --- a/src/components/meshes/Tetrahedron.js +++ b/src/components/meshes/Tetrahedron.js @@ -13,6 +13,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * The tetrahedron is the simplest of all the ordinary convex polyhedra and the only one that has fewer than 5 faces. *

* `Tetrahedron` creates a Tetrahedron object by its `radius` and `detail` + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Text.js b/src/components/meshes/Text.js index c4524d70..357613e5 100644 --- a/src/components/meshes/Text.js +++ b/src/components/meshes/Text.js @@ -11,6 +11,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Text * @category components/meshes * @description Text class is made for creating 3D text objects. + * @classDesc + * *

* Physics text object can be convex or concave. By default it's convex but you can also switch to concave. * @param {Object} [params] - The params. diff --git a/src/components/meshes/Torus.js b/src/components/meshes/Torus.js index 63fc1290..ca1720a1 100644 --- a/src/components/meshes/Torus.js +++ b/src/components/meshes/Torus.js @@ -9,6 +9,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Torus * @category components/meshes * @description Torus class makes a torus figure. A donut is a torus. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Torusknot.js b/src/components/meshes/Torusknot.js index b5de2650..8f808169 100644 --- a/src/components/meshes/Torusknot.js +++ b/src/components/meshes/Torusknot.js @@ -10,6 +10,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Torusknot * @category components/meshes * @description Torusknot class makes a torusknot figure. It's like a crooked donut, very crooked. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes diff --git a/src/components/meshes/Tube.js b/src/components/meshes/Tube.js index 814d11d8..6952086d 100644 --- a/src/components/meshes/Tube.js +++ b/src/components/meshes/Tube.js @@ -12,6 +12,8 @@ import {MeshComponent} from '../../core/MeshComponent'; * @class Tube * @category components/meshes * @description Tube class makes a tube that extrudes along a 3d curve. + * @classDesc + * * @param {Object} [params] - The params. * @extends MeshComponent * @memberof module:components/meshes From 0e97fc83e206d2b12d05da67908f73747f9b7b1e Mon Sep 17 00:00:00 2001 From: Hirako2000 Date: Mon, 26 Jun 2017 14:20:47 +0700 Subject: [PATCH 23/44] Fixes spot and point light examples in doc - patch#2 --- src/components/lights/PointLight.js | 6 +++--- src/components/lights/SpotLight.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/lights/PointLight.js b/src/components/lights/PointLight.js index 475eb0b5..738f96e1 100644 --- a/src/components/lights/PointLight.js +++ b/src/components/lights/PointLight.js @@ -10,10 +10,10 @@ import {LightComponent} from '../../core/LightComponent'; * @extends LightComponent * @memberof module:components/lights * @example Creating a PointLight - * new LightComponent({ + * new PointLight( { * color: 0xff0000, - * intensity: 3, - * distance: 1000, + * intensity: 2, + * distance: 300 * * position: [10, 20, 10] * }).addTo(app); diff --git a/src/components/lights/SpotLight.js b/src/components/lights/SpotLight.js index 367b5741..47cf70e7 100644 --- a/src/components/lights/SpotLight.js +++ b/src/components/lights/SpotLight.js @@ -11,10 +11,10 @@ import {LightComponent} from '../../core/LightComponent'; * @extends LightComponent * @memberof module:components/lights * @example Creating a SpotLight that falls down from vec3(10, 20, 10) to vec3(0, 0, 0) - * new LightComponent({ + * new SpotLight( { * color: 0x00ff00, * intensity: 3, - * distance: 1000, + * distance: 1000 * * position: [10, 20, 10] * }).addTo(app); From 60e2590cbadc0a20ca9a0fda89301724c862003d Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Mon, 26 Jun 2017 10:35:46 +0300 Subject: [PATCH 24/44] Make extend links --- src/components/cameras/CubeCamera.js | 2 +- src/components/cameras/OrthographicCamera.js | 2 +- src/components/cameras/PerspectiveCamera.js | 2 +- src/components/lights/AmbientLight.js | 2 +- src/components/lights/DirectionalLight.js | 2 +- src/components/lights/HemisphereLight.js | 2 +- src/components/lights/PointLight.js | 2 +- src/components/lights/SpotLight.js | 2 +- src/components/meshes/Box.js | 2 +- src/components/meshes/Cylinder.js | 2 +- src/components/meshes/Dodecahedron.js | 2 +- src/components/meshes/Extrude.js | 2 +- src/components/meshes/Group.js | 2 +- src/components/meshes/Icosahedron.js | 2 +- src/components/meshes/Lathe.js | 2 +- src/components/meshes/Line.js | 2 +- src/components/meshes/Octahedron.js | 2 +- src/components/meshes/Parametric.js | 2 +- src/components/meshes/Plane.js | 2 +- src/components/meshes/Polyhedron.js | 2 +- src/components/meshes/Ring.js | 2 +- src/components/meshes/Shape.js | 2 +- src/components/meshes/Sphere.js | 2 +- src/components/meshes/Tetrahedron.js | 2 +- src/components/meshes/Text.js | 2 +- src/components/meshes/Torus.js | 2 +- src/components/meshes/Torusknot.js | 2 +- src/components/meshes/Tube.js | 2 +- src/core/App.js | 1 + src/core/CameraComponent.js | 2 +- src/core/LightComponent.js | 90 +++++++++++++++++++- src/core/MeshComponent.js | 67 +++++++++++++++ 32 files changed, 185 insertions(+), 31 deletions(-) diff --git a/src/components/cameras/CubeCamera.js b/src/components/cameras/CubeCamera.js index 041bd5b7..464938b8 100644 --- a/src/components/cameras/CubeCamera.js +++ b/src/components/cameras/CubeCamera.js @@ -7,7 +7,7 @@ import {CameraComponent} from '../../core/CameraComponent'; * @description Creates 6 cameras that render to a WebGLRenderTargetCube * @param {Object} [params] - The parameters object. * @memberof module:components/cameras - * @extends CameraComponent + * @extends module:core.CameraComponent * @example Creates a CubeCamera and set it as app's camera * const camera = new CubeCamera({ * camera: { diff --git a/src/components/cameras/OrthographicCamera.js b/src/components/cameras/OrthographicCamera.js index 02837d0f..c71d4fa6 100644 --- a/src/components/cameras/OrthographicCamera.js +++ b/src/components/cameras/OrthographicCamera.js @@ -8,7 +8,7 @@ import {system} from '../../polyfill'; * @description Camera with orthographic projection. * @param {Object} [params] - The parameters object. * @memberof module:components/cameras - * @extends CameraComponent + * @extends module:core.CameraComponent * @example Create an OrthographicCamera and set it as app's camera * const camera = new OrthographicCamera({ * camera: { diff --git a/src/components/cameras/PerspectiveCamera.js b/src/components/cameras/PerspectiveCamera.js index 0e99016e..082a25f0 100644 --- a/src/components/cameras/PerspectiveCamera.js +++ b/src/components/cameras/PerspectiveCamera.js @@ -8,7 +8,7 @@ import {system} from '../../polyfill'; * @category components/cameras * @param {Object} [params] - The parameters object. * @memberof module:components/cameras - * @extends CameraComponent + * @extends module:core.CameraComponent * @example Create an PerspectiveCamera and set it as app's camera * const camera = new PerspectiveCamera({ * fov: 75, diff --git a/src/components/lights/AmbientLight.js b/src/components/lights/AmbientLight.js index 53b56f79..e160e9bb 100644 --- a/src/components/lights/AmbientLight.js +++ b/src/components/lights/AmbientLight.js @@ -8,7 +8,7 @@ import {LightComponent} from '../../core/LightComponent'; * AmbientLight creates basic light around all scene, so it doesn't need properties like pos or target. * It supports only color and intensity as parameters, which defines the color of the surrounded light and intensity of light. * @param {Object} [params={light: {color: 0xffffff, intensity: 1}}] - The params. - * @extends LightComponent + * @extends module:core.LightComponent * @memberof module:components/lights * @example Creating an AmbientLight * new AmbientLight({ diff --git a/src/components/lights/DirectionalLight.js b/src/components/lights/DirectionalLight.js index 8455ab9d..abbd41bf 100644 --- a/src/components/lights/DirectionalLight.js +++ b/src/components/lights/DirectionalLight.js @@ -9,7 +9,7 @@ import {LightComponent} from '../../core/LightComponent'; * The best analogy would be a light source that acts like the sun: the sun is so far away that all sunlight hitting objects comes from the same angle.

* It has the same options as AmbientLight in light paramater, but it also supports pos and target paramaters. * @param {Object} [params={light: {color: 0xffffff, intensity: 1}}] - The params. - * @extends LightComponent + * @extends module:core.LightComponent * @memberof module:components/lights * @example Creating a DirectionalLight to fall down from vec3(10, 20, 10) to vec3(0, 0, 0) * new DirectionalLight({ diff --git a/src/components/lights/HemisphereLight.js b/src/components/lights/HemisphereLight.js index 7d142034..106d30ef 100644 --- a/src/components/lights/HemisphereLight.js +++ b/src/components/lights/HemisphereLight.js @@ -9,7 +9,7 @@ import {LightComponent} from '../../core/LightComponent'; * @classDesc * * @param {Object} [params={light: {skyColor: 0xffffff, groundColor: 0xffffff, intensity: 1}}] - The params. - * @extends LightComponent + * @extends module:core.LightComponent * @memberof module:components/lights * @example Creating a HemisphereLight * new HemisphereLight({ diff --git a/src/components/lights/PointLight.js b/src/components/lights/PointLight.js index 7bf278a9..542de469 100644 --- a/src/components/lights/PointLight.js +++ b/src/components/lights/PointLight.js @@ -9,7 +9,7 @@ import {LightComponent} from '../../core/LightComponent'; * @param {Object} [params={light: {color: 0xffffff, intensity: 1, distance: 100, decay: 1}}] - The params. * @classDesc * - * @extends LightComponent + * @extends module:core.LightComponent * @memberof module:components/lights * @example Creating a PointLight * new PointLight({ diff --git a/src/components/lights/SpotLight.js b/src/components/lights/SpotLight.js index 7b3e6999..3df707c7 100644 --- a/src/components/lights/SpotLight.js +++ b/src/components/lights/SpotLight.js @@ -10,7 +10,7 @@ import {LightComponent} from '../../core/LightComponent'; * @classDesc * * @param {Object} [params={light: {color: 0xffffff, intensity: 1, distance: 100, angle: Math.PI / 3, exponent: 0, decay: 1}}] - The params. - * @extends LightComponent + * @extends module:core.LightComponent * @memberof module:components/lights * @example Creating a SpotLight that falls down from vec3(10, 20, 10) to vec3(0, 0, 0) * new SpotLight({ diff --git a/src/components/meshes/Box.js b/src/components/meshes/Box.js index 57ae0b1a..a9ef9fa7 100644 --- a/src/components/meshes/Box.js +++ b/src/components/meshes/Box.js @@ -14,7 +14,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Box, and adding to app * new Box({ diff --git a/src/components/meshes/Cylinder.js b/src/components/meshes/Cylinder.js index d867de62..a3c8b977 100644 --- a/src/components/meshes/Cylinder.js +++ b/src/components/meshes/Cylinder.js @@ -15,7 +15,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Cylinder, and adding to app * new Cylinder({ diff --git a/src/components/meshes/Dodecahedron.js b/src/components/meshes/Dodecahedron.js index 626b51f0..892ad830 100644 --- a/src/components/meshes/Dodecahedron.js +++ b/src/components/meshes/Dodecahedron.js @@ -17,7 +17,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Dodecahedron, and adding to app * new Dodecahedron({ diff --git a/src/components/meshes/Extrude.js b/src/components/meshes/Extrude.js index aeb24e47..d846ba5c 100644 --- a/src/components/meshes/Extrude.js +++ b/src/components/meshes/Extrude.js @@ -22,7 +22,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a shape, then an Extrude from it * const shape = new THREE.Shape([ diff --git a/src/components/meshes/Group.js b/src/components/meshes/Group.js index 34b581ff..eb4fdbeb 100644 --- a/src/components/meshes/Group.js +++ b/src/components/meshes/Group.js @@ -8,7 +8,7 @@ import {Component} from '../../core/Component'; * @description Sometimes you need to make groups of objects (it's not conveniently to apply transforms to each object when can make just one to a group).
* In Three.js you make it using `THREE.Object3D` and it's children.

* In whs.js we have `Group` - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Approach 2 - Adding objects to an empty group * const sphere = new Sphere(); diff --git a/src/components/meshes/Icosahedron.js b/src/components/meshes/Icosahedron.js index c52070d8..82d15e8b 100644 --- a/src/components/meshes/Icosahedron.js +++ b/src/components/meshes/Icosahedron.js @@ -15,7 +15,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Icosahedron, and adding to app * new Icosahedron({ diff --git a/src/components/meshes/Lathe.js b/src/components/meshes/Lathe.js index fee94edf..5eec3f37 100644 --- a/src/components/meshes/Lathe.js +++ b/src/components/meshes/Lathe.js @@ -18,7 +18,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Lath, and adding to app * const points = []; diff --git a/src/components/meshes/Line.js b/src/components/meshes/Line.js index 3b8a6105..cb9b3ccf 100644 --- a/src/components/meshes/Line.js +++ b/src/components/meshes/Line.js @@ -13,7 +13,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @category components/meshes * @description Line component is generated from a curve/line and amount of vectors that should be used (points). * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Line, and adding to app * new Line({ diff --git a/src/components/meshes/Octahedron.js b/src/components/meshes/Octahedron.js index b72d45e5..0427651f 100644 --- a/src/components/meshes/Octahedron.js +++ b/src/components/meshes/Octahedron.js @@ -16,7 +16,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating an Octahedron, and adding to app * new Octahedron({ diff --git a/src/components/meshes/Parametric.js b/src/components/meshes/Parametric.js index e1b40833..a732adc5 100644 --- a/src/components/meshes/Parametric.js +++ b/src/components/meshes/Parametric.js @@ -20,7 +20,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Example creating an heightfield-like geometry. `u` and `v` are like `x` and `y` in shape, but their values are always from `0` to `1`. * We use them in `THREE.Vector3` like `x` and `z` and `Math.random() * 5` for `y`. diff --git a/src/components/meshes/Plane.js b/src/components/meshes/Plane.js index ec26ad45..123f5969 100644 --- a/src/components/meshes/Plane.js +++ b/src/components/meshes/Plane.js @@ -13,7 +13,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Plane, and adding to app * new Plane({ diff --git a/src/components/meshes/Polyhedron.js b/src/components/meshes/Polyhedron.js index af88460c..c75cb1c3 100644 --- a/src/components/meshes/Polyhedron.js +++ b/src/components/meshes/Polyhedron.js @@ -29,7 +29,7 @@ const [verticesOfCube, indicesOfFaces] = [ * `Polyhedron` creates a Polyhedron by its `radius` and `detail`. *

* @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating an Polyhedron, and adding to app * new Polyhedron({ diff --git a/src/components/meshes/Ring.js b/src/components/meshes/Ring.js index 6c523a4a..21490b1f 100644 --- a/src/components/meshes/Ring.js +++ b/src/components/meshes/Ring.js @@ -13,7 +13,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Ring, and adding to app * new Ring({ diff --git a/src/components/meshes/Shape.js b/src/components/meshes/Shape.js index 08ccf1e5..e2644afe 100644 --- a/src/components/meshes/Shape.js +++ b/src/components/meshes/Shape.js @@ -16,7 +16,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a plane looking Shape from a THREE.Shape, and adding it to app * const rectWidth = 10, diff --git a/src/components/meshes/Sphere.js b/src/components/meshes/Sphere.js index 6b7f09ee..561e9b7f 100644 --- a/src/components/meshes/Sphere.js +++ b/src/components/meshes/Sphere.js @@ -18,7 +18,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Sphere, and adding it to app * new Sphere({ diff --git a/src/components/meshes/Tetrahedron.js b/src/components/meshes/Tetrahedron.js index 7a2a47d3..588cc337 100644 --- a/src/components/meshes/Tetrahedron.js +++ b/src/components/meshes/Tetrahedron.js @@ -16,7 +16,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Tetrahedron, and adding it to app * new Tetrahedron({ diff --git a/src/components/meshes/Text.js b/src/components/meshes/Text.js index 357613e5..509e69b4 100644 --- a/src/components/meshes/Text.js +++ b/src/components/meshes/Text.js @@ -16,7 +16,7 @@ import {MeshComponent} from '../../core/MeshComponent'; *

* Physics text object can be convex or concave. By default it's convex but you can also switch to concave. * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Text, and adding it to app * new Text({ diff --git a/src/components/meshes/Torus.js b/src/components/meshes/Torus.js index ca1720a1..50cf13c5 100644 --- a/src/components/meshes/Torus.js +++ b/src/components/meshes/Torus.js @@ -12,7 +12,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Torus, and adding it to app * new Torus({ diff --git a/src/components/meshes/Torusknot.js b/src/components/meshes/Torusknot.js index 8f808169..c4c48e74 100644 --- a/src/components/meshes/Torusknot.js +++ b/src/components/meshes/Torusknot.js @@ -13,7 +13,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Torusknot, and adding it to app * new Torusknot({ diff --git a/src/components/meshes/Tube.js b/src/components/meshes/Tube.js index 6952086d..12cba394 100644 --- a/src/components/meshes/Tube.js +++ b/src/components/meshes/Tube.js @@ -15,7 +15,7 @@ import {MeshComponent} from '../../core/MeshComponent'; * @classDesc * * @param {Object} [params] - The params. - * @extends MeshComponent + * @extends module:core.MeshComponent * @memberof module:components/meshes * @example Creating a Tube from a three.js Curve, and adding it to app * const CustomSinCurve = THREE.Curve.create( diff --git a/src/core/App.js b/src/core/App.js index de054220..d878456c 100644 --- a/src/core/App.js +++ b/src/core/App.js @@ -1,6 +1,7 @@ import {system} from '../polyfill'; import {ModuleSystem} from './ModuleSystem'; import {ModuleManager} from './ModuleManager'; + /** * @class App * @category core diff --git a/src/core/CameraComponent.js b/src/core/CameraComponent.js index 7261d22a..0ec551fa 100644 --- a/src/core/CameraComponent.js +++ b/src/core/CameraComponent.js @@ -11,7 +11,7 @@ import {CompositionError} from './errors'; * @category core * @param {Object} [params] - The parameters object. * @param {Object} [instructions] - The instructions object. - * @extends Component + * @extends module:core.Component * @memberof module:core */ class CameraComponent extends Component { diff --git a/src/core/LightComponent.js b/src/core/LightComponent.js index e1ddc2d1..818ce689 100644 --- a/src/core/LightComponent.js +++ b/src/core/LightComponent.js @@ -6,7 +6,50 @@ import {CompositionError} from './errors'; @attributes( copy('position', 'rotation', 'quaternion', 'target') ) +/** + * @class LightComponent + * @category core + * @param {Object} [params] - The parameters object. + * @param {Object} [instructions] - The instructions object. + * @extends module:core.Component + * @memberof module:core + */ class LightComponent extends Component { + /** + * Default values for parameters + * @member {Object} module:core.LightComponent#defaults + * @static + * @default + * { + * build: true, + * + * shadow: { + * cast: true, + * + * bias: 0, + * radius: 1, + * + * mapSize: { + * width: 1024, + * height: 1024 + * }, + * + * camera: { + * near: true, + * far: 400, + * fov: 90, + * + * top: 200, + * bottom: -200, + * left: -200, + * right: 200 + * } + * }, + * + * position: {x: 0, y: 0, z: 0}, + * rotation: {x: 0, y: 0, z: 0} + * } + */ static defaults = { ...Component.defaults, @@ -39,10 +82,19 @@ class LightComponent extends Component { rotation: {x: 0, y: 0, z: 0} }; + /** + * Static instructions + * @member {Object} module:core.LightComponent#instructions + * @static + * @default + * { + * position: ['x', 'y', 'z'], + * rotation: ['x', 'y', 'z'] + * } + */ static instructions = { position: ['x', 'y', 'z'], - rotation: ['x', 'y', 'z'], - scale: ['x', 'y', 'z'] + rotation: ['x', 'y', 'z'] }; constructor(params, defaults = LightComponent.defaults, instructions = LightComponent.instructions) { @@ -71,6 +123,13 @@ class LightComponent extends Component { // BUILDING & WRAPPING + /** + * @method build + * @instance + * @description Build livecycle should return a native object. + * @throws {CompositionError} + * @memberof module:core.LightComponent + */ build() { throw new CompositionError( 'MeshComponent', @@ -79,6 +138,13 @@ class LightComponent extends Component { ); } + /** + * @method wrap + * @instance + * @description Wraps transforms (`position` & `rotation`) + * @return {Promise} Resolved when action is completed + * @memberof module:core.LightComponent + */ wrap() { return new Promise(resolve => { this.defer(() => { @@ -94,6 +160,12 @@ class LightComponent extends Component { }); } + /** + * @method wrapShadow + * @instance + * @description Wraps shadow properties + * @memberof module:core.LightComponent + */ wrapShadow() { const {native, params: {shadow}} = this; @@ -118,6 +190,13 @@ class LightComponent extends Component { // COPYING & CLONING + /** + * @method copy + * @instance + * @description Copy source transforms & execute `Component.copy()` + * @return {this} LightComponent + * @memberof module:core.LightComponent + */ copy(source) { return super.copy(source, () => { if (this.target) this.target.copy(source.target()); @@ -128,6 +207,13 @@ class LightComponent extends Component { }); } + /** + * @method clone + * @instance + * @description Make a clone of this LightComponent using `.copy()` + * @return {LightComponent} clone of this object + * @memberof module:core.LightComponent + */ clone() { return new this.constructor({build: false}).copy(this); } diff --git a/src/core/MeshComponent.js b/src/core/MeshComponent.js index f3368276..25eeca23 100644 --- a/src/core/MeshComponent.js +++ b/src/core/MeshComponent.js @@ -8,7 +8,35 @@ import {CompositionError} from './errors'; copy('position', 'rotation', 'quaternion', 'scale'), mirror('material', 'geometry') ) +/** + * @class MeshComponent + * @category core + * @param {Object} [params] - The parameters object. + * @param {Object} [instructions] - The instructions object. + * @extends module:core.Component + * @memberof module:core + */ class MeshComponent extends Component { + /** + * Default values for parameters + * @member {Object} module:core.MeshComponent#defaults + * @static + * @default + * { + * build: true, + * geometry: {}, + * material: false, + * + * shadow: { + * cast: true, + * receive: true + * }, + * + * position: {x: 0, y: 0, z: 0}, + * rotation: {x: 0, y: 0, z: 0}, + * scale: {x: 1, y: 1, z: 1} + * } + */ static defaults = { ...Component.defaults, @@ -26,6 +54,17 @@ class MeshComponent extends Component { scale: {x: 1, y: 1, z: 1} }; + /** + * Static instructions + * @member {Object} module:core.MeshComponent#instructions + * @static + * @default + * { + * position: ['x', 'y', 'z'], + * rotation: ['x', 'y', 'z'], + * scale: ['x', 'y', 'z'] + * } + */ static instructions = { position: ['x', 'y', 'z'], rotation: ['x', 'y', 'z'], @@ -79,6 +118,13 @@ class MeshComponent extends Component { // BUILDING & WRAPPING + /** + * @method build + * @instance + * @description Build livecycle should return a native object. + * @throws {CompositionError} + * @memberof module:core.MeshComponent + */ build() { throw new CompositionError( 'MeshComponent', @@ -87,6 +133,13 @@ class MeshComponent extends Component { ); } + /** + * @method wrap + * @instance + * @description Wraps transforms (`position` & `rotation`) + * @return {Promise} Resolved when action is completed + * @memberof module:core.MeshComponent + */ wrap() { return new Promise(resolve => { // TODO: Fix defer with physics @@ -109,6 +162,13 @@ class MeshComponent extends Component { // COPYING & CLONING + /** + * @method copy + * @instance + * @description Copy source transforms & execute `Component.copy()` + * @return {this} MeshComponent + * @memberof module:core.MeshComponent + */ copy(source) { return super.copy(source, () => { this.position.copy(source.position); @@ -117,6 +177,13 @@ class MeshComponent extends Component { }); } + /** + * @method clone + * @instance + * @description Make a clone of this MeshComponent using `.copy()` + * @return {MeshComponent} clone of this object + * @memberof module:core.MeshComponent + */ clone(geometry, material) { const dest = new this.constructor({build: false}).copy(this); From 6d86ea35a21d51423284da2ee848eea6ea6c1ec5 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Mon, 26 Jun 2017 10:44:26 +0300 Subject: [PATCH 25/44] Move extends --- docs/template/static/less/jsdoc-default.less | 4 ++-- docs/template/tmpl/augments.tmpl | 6 +++--- docs/template/tmpl/container.tmpl | 4 ---- docs/template/tmpl/method.tmpl | 3 +++ 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/template/static/less/jsdoc-default.less b/docs/template/static/less/jsdoc-default.less index 748d39b8..4f798b9b 100644 --- a/docs/template/static/less/jsdoc-default.less +++ b/docs/template/static/less/jsdoc-default.less @@ -1048,7 +1048,7 @@ dl.param-type { padding-left: 20px; } - &.section-members h4 { + &.section-members h4:not(.no-dec) { border-left: 4px solid #efefef; padding: 0; padding-left: 20px; @@ -1066,7 +1066,7 @@ dl.param-type { } } - &.section-method h4 { + &.section-method h4:not(.no-dec) { border-left: 4px solid #efefef; padding: 0; padding-left: 20px; diff --git a/docs/template/tmpl/augments.tmpl b/docs/template/tmpl/augments.tmpl index 446d28aa..557f0ea5 100644 --- a/docs/template/tmpl/augments.tmpl +++ b/docs/template/tmpl/augments.tmpl @@ -4,7 +4,7 @@ ?> -
    -
  • -
+ + + diff --git a/docs/template/tmpl/container.tmpl b/docs/template/tmpl/container.tmpl index f714938f..8aaa7795 100644 --- a/docs/template/tmpl/container.tmpl +++ b/docs/template/tmpl/container.tmpl @@ -98,11 +98,7 @@ - -

Extends

- -

Requires

diff --git a/docs/template/tmpl/method.tmpl b/docs/template/tmpl/method.tmpl index c92cd2f9..9e849f57 100644 --- a/docs/template/tmpl/method.tmpl +++ b/docs/template/tmpl/method.tmpl @@ -114,4 +114,7 @@ var self = this; + +

Extends

+ From b690ff360691135c2e5938cf2bbf16eff3455186 Mon Sep 17 00:00:00 2001 From: Alexander Buzin Date: Mon, 26 Jun 2017 10:59:00 +0300 Subject: [PATCH 26/44] Add links --- docs/template/static/less/jsdoc-default.less | 2 +- docs/template/tmpl/layout.tmpl | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/template/static/less/jsdoc-default.less b/docs/template/static/less/jsdoc-default.less index 4f798b9b..7e0427b0 100644 --- a/docs/template/static/less/jsdoc-default.less +++ b/docs/template/static/less/jsdoc-default.less @@ -871,7 +871,7 @@ dl.param-type { .sidebar { position: fixed; right: 6%; - top: 80px; + top: 100px; h5 { margin: 20px 0; diff --git a/docs/template/tmpl/layout.tmpl b/docs/template/tmpl/layout.tmpl index 008ed9d8..3bd80d91 100644 --- a/docs/template/tmpl/layout.tmpl +++ b/docs/template/tmpl/layout.tmpl @@ -28,7 +28,11 @@
  • chat (discord)
  • github (source code)
  • -
  • twitter
  • +
  • examples
  • +
  •  
  • +
  • three.js
  • +
  • twitter (me)
  • +
  •  
  • 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 literal 0 HcmV?d00001 diff --git a/docs/template/static/images/showcase/supertiny.jpg b/docs/template/static/images/showcase/supertiny.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a6fdfe0710c012673139449356b2fb92fcc1a1d GIT binary patch literal 79495 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

    Rf_A1FUd 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 Date: Fri, 30 Jun 2017 19:05:07 +0300 Subject: [PATCH 41/44] Add link to logo --- docs/template/static/less/jsdoc-default.less | 4 ++++ docs/template/tmpl/layout.tmpl | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/template/static/less/jsdoc-default.less b/docs/template/static/less/jsdoc-default.less index 26c16a41..ed34389d 100644 --- a/docs/template/static/less/jsdoc-default.less +++ b/docs/template/static/less/jsdoc-default.less @@ -1153,3 +1153,7 @@ hr { } } } + +.no-u:hover { + text-decoration: none; +} diff --git a/docs/template/tmpl/layout.tmpl b/docs/template/tmpl/layout.tmpl index c4408978..86181103 100644 --- a/docs/template/tmpl/layout.tmpl +++ b/docs/template/tmpl/layout.tmpl @@ -25,7 +25,7 @@