├── index.html
├── .gitignore
├── examples
└── todomvc
│ ├── .gitignore
│ ├── package.json
│ ├── bower.json
│ ├── index.html
│ ├── src
│ └── Main.purs
│ └── package-lock.json
├── .travis.yml
├── psc-package.json
├── test
├── Main.purs
├── Bench.purs
└── ChannelSpec.purs
├── .jshintrc
├── .jscsrc
├── bower.json
├── README.md
├── package.json
├── LICENSE
└── src
└── Concur
├── UniqueMap.purs
├── React.purs
├── Channel.purs
└── Core.purs
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /bower_components/
2 | /node_modules/
3 | /.pulp-cache/
4 | /output/
5 | /generated-docs/
6 | /.psc*
7 | /.purs*
8 | /.psa*
9 | app.js
10 |
--------------------------------------------------------------------------------
/examples/todomvc/.gitignore:
--------------------------------------------------------------------------------
1 | /bower_components/
2 | /node_modules/
3 | /.pulp-cache/
4 | /output/
5 | /generated-docs/
6 | /.psc-package/
7 | /.psc*
8 | /.purs*
9 | /.psa*
10 |
--------------------------------------------------------------------------------
/examples/todomvc/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "dependencies": {
4 | "todomvc-app-css": "^2.1.0",
5 | "todomvc-common": "^1.0.4"
6 | },
7 | "devDependencies": {
8 | "pulp": "^12.0.1",
9 | "purescript": "^0.11.6"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | dist: trusty
3 | sudo: required
4 | node_js: 6
5 | install:
6 | - npm install -g bower
7 | - npm install
8 | script:
9 | - bower install --production
10 | - npm run -s build
11 | - bower install
12 | - npm -s test
13 |
--------------------------------------------------------------------------------
/psc-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "purescript-concur",
3 | "set": "psc-0.11.6-09272017",
4 | "source": "https://github.com/purescript/package-sets.git",
5 | "depends": [
6 | "free",
7 | "exists",
8 | "maps",
9 | "aff",
10 | "react-dom",
11 | "prelude"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/test/Main.purs:
--------------------------------------------------------------------------------
1 | module Test.Main where
2 |
3 | import Prelude
4 |
5 | import ChannelSpec as ChannelSpec
6 | import Control.Monad.Eff (Eff)
7 | import Test.Spec.Reporter (consoleReporter)
8 | import Test.Spec.Runner (RunnerEffects, run)
9 |
10 | main :: Eff (RunnerEffects ()) Unit
11 | main = run [consoleReporter] do
12 | ChannelSpec.spec
13 |
--------------------------------------------------------------------------------
/examples/todomvc/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "todomvc",
3 | "ignore": [
4 | "**/.*",
5 | "node_modules",
6 | "bower_components",
7 | "output"
8 | ],
9 | "dependencies": {
10 | "purescript-prelude": "^3.1.1",
11 | "purescript-console": "^3.0.0",
12 | "purescript-concur": "../../"
13 | },
14 | "devDependencies": {
15 | "purescript-psci-support": "^3.0.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "bitwise": true,
3 | "eqeqeq": true,
4 | "forin": true,
5 | "freeze": true,
6 | "funcscope": true,
7 | "futurehostile": true,
8 | "strict": "global",
9 | "latedef": true,
10 | "noarg": true,
11 | "nocomma": true,
12 | "nonew": true,
13 | "notypeof": true,
14 | "singleGroups": true,
15 | "undef": true,
16 | "unused": true,
17 | "eqnull": true,
18 | "predef": ["exports"]
19 | }
--------------------------------------------------------------------------------
/.jscsrc:
--------------------------------------------------------------------------------
1 | {
2 | "preset": "grunt",
3 | "disallowSpacesInFunctionExpression": null,
4 | "requireSpacesInFunctionExpression": {
5 | "beforeOpeningRoundBrace": true,
6 | "beforeOpeningCurlyBrace": true
7 | },
8 | "disallowSpacesInAnonymousFunctionExpression": null,
9 | "requireSpacesInAnonymousFunctionExpression": {
10 | "beforeOpeningRoundBrace": true,
11 | "beforeOpeningCurlyBrace": true
12 | },
13 | "disallowSpacesInsideObjectBrackets": null,
14 | "requireSpacesInsideObjectBrackets": "all",
15 | "validateQuoteMarks": "\"",
16 | "requireCurlyBraces": null
17 | }
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "purescript-concur",
3 | "ignore": [
4 | "**/.*",
5 | "node_modules",
6 | "bower_components",
7 | "output"
8 | ],
9 | "dependencies": {
10 | "purescript-prelude": "^3.1.0",
11 | "purescript-console": "^3.0.0",
12 | "purescript-exists": "^3.0.0",
13 | "purescript-free": "^4.1.0",
14 | "purescript-react": "^4.4.0",
15 | "purescript-react-dom": "^4.1.0",
16 | "purescript-refs": "^3.0.0",
17 | "purescript-aff": "^4.0.0"
18 | },
19 | "devDependencies": {
20 | "purescript-psci-support": "^3.0.0",
21 | "purescript-spec": "^2.0.0",
22 | "purescript-benchmark": "^0.1.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # purescript-concur
2 |
3 | An attempt to port the [concur](https://github.com/ajnsit/concur) library to PureScript.
4 |
5 | ## State
6 |
7 | **Note**: I'm not developing this anymore (focusing instead on [purescript-specular](https://github.com/restaumatic/purescript-specular)), but the author or Concur for Haskell has started his own PureScript port: .
8 |
9 | It somewhat works, you can make a UI with it. See `examples/todomvc`.
10 |
11 | Needs documentation on semantics of `Widget`.
12 |
13 | Has severe performance problems. Rendering is probably quadratic in the number
14 | of DOM elements placed sequentially. This should be fixable.
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "clean": "rimraf output && rimraf .pulp-cache",
5 | "build": "jshint src --verbose && jscs src && pulp build -- --censor-lib --strict",
6 | "test": "pulp test"
7 | },
8 | "devDependencies": {
9 | "benchmark": "^2.1.4",
10 | "jscs": "^3.0.7",
11 | "jshint": "^2.9.4",
12 | "pulp": "^11.0.0",
13 | "purescript": "^0.11.0",
14 | "purescript-psa": "^0.5.0",
15 | "rimraf": "^2.5.4"
16 | },
17 | "jscsConfig": {
18 | "validateIndentation": false
19 | },
20 | "dependencies": {
21 | "create-react-class": "^15.6.2",
22 | "react": "^16.0.0",
23 | "react-dom": "^16.0.0"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/test/Bench.purs:
--------------------------------------------------------------------------------
1 | module Bench where
2 |
3 | import Prelude
4 |
5 | import Benchmark (fnEff, runBench)
6 | import Concur.Core (Widget(..), WidgetF(..), awaitViewAction, display, orr)
7 | import Control.Monad.Eff (Eff)
8 | import Control.Monad.Eff.Class (liftEff)
9 | import Control.Monad.Free (resume)
10 | import Control.Monad.ST (ST)
11 | import Data.Array (replicate)
12 | import Data.Either (Either(..))
13 | import Data.Foldable (for_)
14 |
15 | runToFirstRender :: forall v eff a. Widget v eff a -> Eff eff Unit
16 | runToFirstRender (Widget widget) =
17 | case resume widget of
18 | Right _ -> pure unit
19 | Left (Effect eff) -> do
20 | w <- eff
21 | runToFirstRender (Widget w)
22 | Left (Display v _) -> pure unit
23 |
24 | renderAllWith :: forall eff a. (String -> Widget (Array String) eff a) -> Array String -> Widget (Array String) eff a
25 | renderAllWith f = orr <<< map f
26 |
27 | main :: forall eff s. Eff (st :: ST s | eff) Unit
28 | main = do
29 | let bench name f =
30 | runBench $ do
31 | for_ [5,10,15,20,25] $ \n ->
32 | fnEff (name <> " " <> show n)
33 | (runToFirstRender $ renderAllWith f $ replicate n "foo")
34 |
35 | bench "liftEff pure" (\text -> liftEff (pure unit) >>= \_ -> display [text])
36 | bench "awaitViewAction" (\text -> awaitViewAction $ \_ -> [text])
37 | bench "pure" (\text -> pure unit >>= \_ -> display [text])
38 | bench "display" (\text -> display [text])
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Maciej Bielecki (c) 2017
2 |
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 |
11 | * Redistributions in binary form must reproduce the above
12 | copyright notice, this list of conditions and the following
13 | disclaimer in the documentation and/or other materials provided
14 | with the distribution.
15 |
16 | * Neither the name of Maciej Bielecki nor the names of other
17 | contributors may be used to endorse or promote products derived
18 | from this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/src/Concur/UniqueMap.purs:
--------------------------------------------------------------------------------
1 | module Concur.UniqueMap (
2 | Unique
3 | , UniqueMap
4 | , newUnique
5 | , empty
6 | , insert
7 | , lookup
8 | , delete
9 | , deleteAny
10 | ) where
11 |
12 | import Prelude
13 |
14 | import Control.Monad.Eff (Eff)
15 | import Control.Monad.Eff.Ref (Ref, newRef, readRef, writeRef)
16 | import Control.Monad.Eff.Ref.Unsafe (unsafeRunRef)
17 | import Control.Monad.Eff.Unsafe (unsafePerformEff)
18 | import Data.Array as Array
19 | import Data.Maybe (Maybe)
20 | import Data.StrMap (StrMap)
21 | import Data.StrMap as SM
22 | import Data.Tuple (Tuple(..))
23 |
24 | newtype UniqueMap a = UniqueMap (StrMap a)
25 |
26 | newtype Unique = Unique String
27 |
28 | nextUniqueRef :: Ref Int
29 | nextUniqueRef = unsafePerformEff (newRef 0)
30 |
31 | newUnique :: forall eff. Eff eff Unique
32 | newUnique = unsafeRunRef $ do
33 | id <- readRef nextUniqueRef
34 | writeRef nextUniqueRef (id + 1)
35 | pure (Unique (show id))
36 |
37 | empty :: forall a. UniqueMap a
38 | empty = UniqueMap SM.empty
39 |
40 | insert :: forall a. Unique -> a -> UniqueMap a -> UniqueMap a
41 | insert (Unique k) v (UniqueMap m) = UniqueMap (SM.insert k v m)
42 |
43 | lookup :: forall a. Unique -> UniqueMap a -> Maybe a
44 | lookup (Unique k) (UniqueMap m) = SM.lookup k m
45 |
46 | delete :: forall a. Unique -> UniqueMap a -> UniqueMap a
47 | delete (Unique k) (UniqueMap m) = UniqueMap (SM.delete k m)
48 |
49 | -- | Take any element from the map, if it's not empty.
50 | deleteAny :: forall a. UniqueMap a -> Maybe { value :: a, map :: UniqueMap a }
51 | deleteAny (UniqueMap m) = do
52 | key <- Array.head (SM.keys m)
53 | Tuple value map <- SM.pop key m
54 | pure { value, map: UniqueMap map }
55 |
--------------------------------------------------------------------------------
/examples/todomvc/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Template • TodoMVC
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
43 |
44 |
62 |
63 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/test/ChannelSpec.purs:
--------------------------------------------------------------------------------
1 | module ChannelSpec where
2 |
3 | import Prelude
4 |
5 | import Concur.Channel (Awaits, await, newChannel, runAwaits, yield)
6 | import Control.Monad.Aff (Aff, forkAff, joinFiber, makeAff, nonCanceler)
7 | import Control.Monad.Eff.Class (liftEff)
8 | import Data.Array as Array
9 | import Data.Either (Either(..))
10 | import Data.List.Lazy as LL
11 | import Test.Spec (Spec, describe, it)
12 | import Test.Spec.Assertions (shouldEqual)
13 | import Test.Spec.Runner (RunnerEffects)
14 |
15 | spec :: forall eff. Spec (RunnerEffects eff) Unit
16 | spec = describe "Awaits" $ do
17 |
18 | it "single channel, 1 element present" $ do
19 | chan <- liftEff newChannel
20 | liftEff $ yield chan "foo"
21 | value <- runAwaitsAff (await chan)
22 | value `shouldEqual` "foo"
23 |
24 | it "single channel, 2 elements present" $ do
25 | chan <- liftEff newChannel
26 | liftEff $ yield chan "foo"
27 | liftEff $ yield chan "bar"
28 |
29 | value <- runAwaitsAff (await chan)
30 | value `shouldEqual` "foo"
31 |
32 | value <- runAwaitsAff (await chan)
33 | value `shouldEqual` "bar"
34 |
35 | it "single channel, 2 elements listened" $ do
36 | chan <- liftEff newChannel
37 |
38 | fiber <- forkAff $ replicateM 2 $ runAwaitsAff (await chan)
39 |
40 | liftEff $ yield chan "foo"
41 | liftEff $ yield chan "bar"
42 |
43 | values <- joinFiber fiber
44 | values `shouldEqual` ["foo", "bar"]
45 |
46 | it "two channels, elements present" $ do
47 | chan1 <- liftEff newChannel
48 | chan2 <- liftEff newChannel
49 |
50 | liftEff $ yield chan1 "foo"
51 | liftEff $ yield chan2 "bar"
52 |
53 | value1 <- runAwaitsAff (await chan1 <> await chan2)
54 | value1 `shouldEqual` "foo"
55 |
56 | value2 <- runAwaitsAff (await chan1 <> await chan2)
57 | value2 `shouldEqual` "bar"
58 |
59 | it "two channels, elements listened" $ do
60 | chan1 <- liftEff newChannel
61 | chan2 <- liftEff newChannel
62 |
63 | fiber <- forkAff $ replicateM 2 $ runAwaitsAff $
64 | await chan1 <> await chan2
65 |
66 | liftEff $ yield chan1 "foo"
67 | liftEff $ yield chan2 "bar"
68 |
69 | values <- joinFiber fiber
70 | values `shouldEqual` ["foo", "bar"]
71 |
72 | it "single channel, two runs, two elements listened" $ do
73 | chan <- liftEff newChannel
74 |
75 | fiber1 <- forkAff $ runAwaitsAff $ await chan
76 | fiber2 <- forkAff $ runAwaitsAff $ await chan
77 |
78 | liftEff $ yield chan "000"
79 | liftEff $ yield chan "001"
80 |
81 | value1 <- joinFiber fiber1
82 | value2 <- joinFiber fiber2
83 |
84 | Array.sort [value1, value2] `shouldEqual` ["000", "001"]
85 |
86 | replicateM :: forall m a. Monad m => Int -> m a -> m (Array a)
87 | replicateM n = map Array.fromFoldable <<< LL.replicateM n
88 |
89 | runAwaitsAff :: forall eff a. Awaits a -> Aff eff a
90 | runAwaitsAff awaits = makeAff $ \cont -> do
91 | runAwaits awaits (\value -> cont (Right value))
92 | pure nonCanceler
93 |
--------------------------------------------------------------------------------
/src/Concur/React.purs:
--------------------------------------------------------------------------------
1 | module Concur.React where
2 |
3 | import Prelude
4 |
5 | import Concur.Channel (await, newChannel, yield)
6 | import Concur.Core (class MonadView, Widget, awaitViewAction, display, liftAwaits, mapView, orr, runWidgetWith)
7 | import Control.Alternative (class Alternative)
8 | import Control.Monad.Aff (Aff)
9 | import Control.Monad.Eff.Class (liftEff)
10 | import DOM (DOM)
11 | import DOM.Node.Types (Element)
12 | import React (Event, ReactElement, createElementTagName)
13 | import React.DOM as R
14 | import React.DOM.Props (Props, unsafeFromPropsArray)
15 | import React.DOM.Props as P
16 | import ReactDOM (render)
17 | import Unsafe.Coerce (unsafeCoerce)
18 |
19 | type HTML = Array ReactElement
20 |
21 | runWidget :: forall eff a. Element -> Widget HTML (dom :: DOM | eff) a -> Aff (dom :: DOM | eff) a
22 | runWidget root widget = do
23 | let viewChanged elements = liftEff $ do
24 | _ <- render (createElementTagName "div" {} elements) root
25 | pure unit
26 |
27 | runWidgetWith viewChanged widget
28 |
29 | el :: forall a m
30 | . MonadView HTML m
31 | => Alternative m
32 | => String
33 | -> Array Props
34 | -> Array (m a)
35 | -> m a
36 | el tag props =
37 | orr >>>
38 | mapView (\elems -> [createElementTagName tag (unsafeFromPropsArray props) elems])
39 |
40 | text :: forall eff a. String -> Widget HTML eff a
41 | text t = display [R.text t]
42 |
43 | -- | Input widget, rendering the given value. Returns on each change.
44 | inputOnChange :: forall eff. String -> Array Props -> Widget HTML eff String
45 | inputOnChange value props =
46 | awaitViewAction $ \channel ->
47 | [ createElementTagName "input"
48 | (unsafeFromPropsArray $
49 | [ P.onChange $ \event -> yield channel (unsafeTargetValue event)
50 | , P.value value
51 | ] <> props
52 | )
53 | []
54 | ]
55 |
56 | -- | Input widget, with the given initial value. Returns on Enter keypress.
57 | inputOnEnter :: forall eff. String -> Array Props -> Widget HTML eff String
58 | inputOnEnter initialValue props = do
59 | channel <- liftEff newChannel
60 | go channel initialValue
61 |
62 | where
63 | go channel value = orr
64 | [ do newValue <- inputOnChange value $
65 | [ P.onKeyDown $ \keyEvent -> do
66 | when (keyEvent.key == "Enter") $
67 | yield channel (unsafeTargetValue (unsafeCoerce keyEvent))
68 | ] <> props
69 | go channel newValue
70 | , liftAwaits (await channel)
71 | ]
72 |
73 | unsafeTargetValue :: Event -> String
74 | unsafeTargetValue event = (unsafeCoerce event).target.value
75 |
76 | unsafeTargetChecked :: Event -> Boolean
77 | unsafeTargetChecked event = (unsafeCoerce event).target.checked
78 |
79 | -- | A button widget. Returns when pressed.
80 | button :: forall eff. Array Props -> Array (Widget HTML eff Unit) -> Widget HTML eff Unit
81 | button props children = do
82 | channel <- liftEff newChannel
83 | let handleClick _event = yield channel unit
84 | el "button" (props <> [P.onClick handleClick]) $
85 | [ liftAwaits (await channel) ] <>
86 | children
87 |
88 | -- | Checkbox, rendering the given value. Returns on each change.
89 | checkbox :: forall eff. Boolean -> Array Props -> Widget HTML eff Boolean
90 | checkbox value props =
91 | awaitViewAction $ \channel ->
92 | [ createElementTagName "input"
93 | (unsafeFromPropsArray $
94 | [ P.onChange $ \event -> yield channel (unsafeTargetChecked event)
95 | , P._type "checkbox"
96 | , P.checked value
97 | ] <> props
98 | )
99 | []
100 | ]
101 |
--------------------------------------------------------------------------------
/src/Concur/Channel.purs:
--------------------------------------------------------------------------------
1 | module Concur.Channel (
2 | Awaits
3 | , Channel
4 | , newChannel
5 | , yield
6 | , await
7 | , runAwaits
8 | ) where
9 |
10 | import Prelude
11 |
12 | import Concur.UniqueMap (UniqueMap)
13 | import Concur.UniqueMap as UM
14 | import Control.Monad.Eff (Eff)
15 | import Control.Monad.Eff.Ref (Ref, newRef, readRef, writeRef)
16 | import Control.Monad.Eff.Ref.Unsafe (unsafeRunRef)
17 | import Control.Monad.Eff.Unsafe (unsafeCoerceEff)
18 | import Data.Array (uncons)
19 | import Data.Exists (Exists, mkExists, runExists)
20 | import Data.Foldable (for_)
21 | import Data.Maybe (Maybe(..))
22 | import Data.Monoid (class Monoid)
23 | import Data.Newtype (class Newtype)
24 |
25 | newtype IO a = IO (forall eff. Eff eff a)
26 | instance functorIO :: Functor IO where
27 | map f (IO eff) = IO (map f eff)
28 |
29 | unsafeRunIO :: forall eff a. IO a -> Eff eff a
30 | unsafeRunIO (IO eff) = eff
31 |
32 | liftEffIO :: forall eff a. Eff eff a -> IO a
33 | liftEffIO = IO <<< unsafeCoerceEff
34 |
35 | data Channel a = Channel (Ref (ChannelState a))
36 |
37 | type ChannelState a =
38 | { items :: Array a
39 | , listeners :: UniqueMap (a -> IO Unit)
40 | }
41 |
42 | newtype Await r = Await (Exists (AwaitF r))
43 |
44 | instance functorAwait :: Functor Await where
45 | map f (Await ex) =
46 | Await (runExists (\(AwaitF chan k) -> mkExists (AwaitF chan (f <<< k))) ex)
47 |
48 | data AwaitF r a = AwaitF (Channel a) (a -> r)
49 |
50 | newtype Awaits a = Awaits (Array (Await a))
51 |
52 | derive instance newtypeAwaits :: Newtype (Awaits a) _
53 | derive instance functorAwaits :: Functor Awaits
54 | derive newtype instance semigroupAwaits :: Semigroup (Awaits a)
55 | derive newtype instance monoidAwaits :: Monoid (Awaits a)
56 |
57 | await :: forall a. Channel a -> Awaits a
58 | await chan = Awaits [Await (mkExists (AwaitF chan id))]
59 |
60 | newChannel :: forall eff a. Eff eff (Channel a)
61 | newChannel = unsafeRunRef $ Channel <$> newRef { items: [], listeners: UM.empty }
62 |
63 | yield :: forall eff a. Channel a -> a -> Eff eff Unit
64 | yield (Channel ref) item = unsafeRunRef $ do
65 | state <- readRef ref
66 | case UM.deleteAny state.listeners of
67 | Just { value: listener, map } -> do
68 | writeRef ref $ state { listeners = map }
69 | unsafeRunIO $ listener item
70 | Nothing ->
71 | writeRef ref $ state { items = state.items <> [item] }
72 |
73 | -- | If the channel waited on has items, take the first item
74 | -- and return the value. Else no change to channel state.
75 | takeIfFull :: forall eff a. Await a -> Eff eff (Maybe a)
76 | takeIfFull (Await ex) = unsafeRunRef $
77 | runExists (\(AwaitF (Channel ref) k) -> do
78 | state <- readRef ref
79 | case uncons state.items of
80 | Just { head, tail } -> do
81 | writeRef ref $ state { items = tail }
82 | pure (Just (k head))
83 | Nothing ->
84 | pure Nothing
85 | ) ex
86 |
87 | firstM :: forall m a b. Monad m => (a -> m (Maybe b)) -> Array a -> m (Maybe b)
88 | firstM f xs =
89 | case uncons xs of
90 |
91 | Just { head, tail } -> do
92 | result <- f head
93 | case result of
94 | Just x -> pure (Just x)
95 | Nothing -> firstM f tail
96 |
97 | Nothing ->
98 | pure Nothing
99 |
100 | runAwaits :: forall eff a. Awaits a -> (a -> Eff eff Unit) -> Eff eff Unit
101 | runAwaits (Awaits awaits) cont = unsafeRunRef $ do
102 | m_item <- firstM takeIfFull awaits
103 | case m_item of
104 |
105 | Just item ->
106 | unsafeCoerceEff $ cont item
107 |
108 | Nothing -> do
109 | key <- UM.newUnique
110 |
111 | let finish value = do
112 | for_ awaits $ \(Await ex) ->
113 | runExists (\(AwaitF (Channel ref) _) -> do
114 | state <- readRef ref
115 | writeRef ref $ state { listeners = UM.delete key state.listeners }
116 | ) ex
117 | unsafeCoerceEff $ cont value
118 |
119 | for_ awaits $ \(Await ex) ->
120 | runExists (\(AwaitF (Channel ref) k) -> do
121 | state <- readRef ref
122 | writeRef ref $
123 | state
124 | { listeners = UM.insert key (liftEffIO <<< finish <<< k) state.listeners }
125 | ) ex
126 |
--------------------------------------------------------------------------------
/src/Concur/Core.purs:
--------------------------------------------------------------------------------
1 | module Concur.Core where
2 |
3 | import Prelude
4 |
5 | import Concur.Channel (Awaits, Channel, await, newChannel, runAwaits)
6 | import Control.Alt (class Alt, alt, (<|>))
7 | import Control.Alternative (class Alternative, class Plus, empty)
8 | import Control.Monad.Aff (Aff, makeAff, nonCanceler)
9 | import Control.Monad.Eff (Eff)
10 | import Control.Monad.Eff.Class (class MonadEff, liftEff)
11 | import Control.Monad.Free (Free, foldFree, hoistFree, liftF, resume)
12 | import Control.Monad.Rec.Class (class MonadRec)
13 | import Control.Monad.State (StateT, mapStateT)
14 | import Data.Array (foldr)
15 | import Data.Either (Either(..))
16 | import Data.Monoid (class Monoid, mempty)
17 | import Data.Newtype (class Newtype, over)
18 |
19 | data Notify a
20 |
21 | data WidgetF v eff k = Effect (Eff eff k) | Display v (Awaits k)
22 |
23 | derive instance functorWidgetF :: Functor (WidgetF v eff)
24 |
25 | newtype Widget v eff a = Widget (Free (WidgetF v eff) a)
26 |
27 | derive instance newtypeWidget :: Newtype (Widget v eff a) _
28 | derive newtype instance functorWidget :: Functor (Widget v eff)
29 | derive newtype instance applyWidget :: Apply (Widget v eff)
30 | derive newtype instance applicativeWidget :: Applicative (Widget v eff)
31 | derive newtype instance bindWidget :: Bind (Widget v eff)
32 | derive newtype instance monadWidget :: Monad (Widget v eff)
33 | derive newtype instance monadRecWidget :: MonadRec (Widget v eff)
34 |
35 | instance monadEffWidget :: Monoid v => MonadEff eff (Widget v eff) where
36 | liftEff eff = Widget $ liftF $ Effect eff
37 |
38 | instance altWidget :: Monoid v => Alt (Widget v eff) where
39 | alt (Widget a) (Widget b) = Widget (altWidgetFree a b)
40 | where
41 | altWidgetFree a b =
42 | case resume a, resume b of
43 | Right x, _ ->
44 | pure x
45 |
46 | _, Right x ->
47 | pure x
48 |
49 | Left (Effect effl), Left (Effect effr) ->
50 | join $ liftF $ Effect $
51 | altWidgetFree <$> effl <*> effr
52 |
53 | Left (Effect eff), _ ->
54 | join $ liftF $ Effect (map (\l -> l `altWidgetFree` b) eff)
55 |
56 | _, Left (Effect eff) ->
57 | join $ liftF $ Effect (map (\r -> a `altWidgetFree` r) eff)
58 |
59 | Left (Display v1 k1), Left (Display v2 k2) ->
60 | join $ liftF $ Display (v1 <> v2) $
61 | map (\result1 -> result1 `altWidgetFree` b) k1 <>
62 | map (\result2 -> a `altWidgetFree` result2) k2
63 |
64 | instance plusWidget :: Monoid v => Plus (Widget v eff) where
65 | empty = display mempty
66 |
67 | instance alternativeWidget :: Monoid v => Alternative (Widget v eff)
68 |
69 | awaitViewAction :: forall a v eff. Monoid v => (Channel a -> v) -> Widget v eff a
70 | awaitViewAction f = do
71 | ch <- liftEff newChannel
72 | Widget $ liftF $ Display (f ch) (await ch)
73 |
74 | awaitAction :: forall a v eff. Monoid v => (Channel a -> Widget v eff a) -> Widget v eff a
75 | awaitAction f = do
76 | ch <- liftEff newChannel
77 | f ch <|> liftAwaits (await ch)
78 |
79 | display :: forall v eff a. v -> Widget v eff a
80 | display v = Widget $ liftF $ Display v mempty
81 |
82 | liftAwaits :: forall v eff a. Monoid v => Awaits a -> Widget v eff a
83 | liftAwaits awaits = Widget $ liftF $ Display mempty awaits
84 |
85 | mapViewWidget :: forall v v' eff. (v -> v') -> Widget v eff ~> Widget v' eff
86 | mapViewWidget f = over Widget (hoistFree (mapViewWidgetF f))
87 |
88 | mapViewWidgetF :: forall v v' eff. (v -> v') -> WidgetF v eff ~> WidgetF v' eff
89 | mapViewWidgetF f (Effect eff) = Effect eff
90 | mapViewWidgetF f (Display v k) = Display (f v) k
91 |
92 | runWidgetWith :: forall v eff a. (v -> Aff eff Unit) -> Widget v eff a -> Aff eff a
93 | runWidgetWith onViewChange (Widget w) = foldFree f w
94 | where
95 | f :: WidgetF v eff ~> Aff eff
96 |
97 | f (Effect eff) = liftEff eff
98 |
99 | f (Display v awaits) = do
100 | onViewChange v
101 | makeAff $ \k -> do
102 | runAwaits awaits (k <<< Right)
103 | pure nonCanceler
104 |
105 | class MonadView v m | m -> v where
106 | mapView :: (v -> v) -> m ~> m
107 |
108 | instance monadViewWidget :: MonadView v (Widget v eff) where
109 | mapView = mapViewWidget
110 |
111 | instance monadViewStateT :: MonadView v m => MonadView v (StateT s m) where
112 | mapView f = mapStateT (mapView f)
113 |
114 | orr :: forall m a. Alternative m => Array (m a) -> m a
115 | orr = foldr alt empty
116 |
--------------------------------------------------------------------------------
/examples/todomvc/src/Main.purs:
--------------------------------------------------------------------------------
1 | module Main where
2 |
3 | import Prelude
4 |
5 | import Concur.Channel (yield)
6 | import Concur.Core (Widget, awaitAction, orr)
7 | import Concur.React (HTML, button, checkbox, el, inputOnEnter, runWidget, text, unsafeTargetValue)
8 | import Control.Alternative (class Alternative)
9 | import Control.Monad.Aff (launchAff_)
10 | import Control.Monad.Eff (Eff)
11 | import Control.Monad.Eff.Console (CONSOLE, log)
12 | import DOM (DOM)
13 | import DOM.HTML (window)
14 | import DOM.HTML.Types (htmlDocumentToDocument)
15 | import DOM.HTML.Window (document)
16 | import DOM.Node.NonElementParentNode (getElementById)
17 | import DOM.Node.Types (Element, ElementId(ElementId), documentToNonElementParentNode)
18 | import Data.Array (mapWithIndex)
19 | import Data.Array as Array
20 | import Data.Either (Either(..))
21 | import Data.Maybe (Maybe(..), fromMaybe)
22 | import Data.Tuple (Tuple(..))
23 | import Partial.Unsafe (unsafePartial)
24 | import React.DOM.Props as P
25 |
26 | type Todo =
27 | { completed :: Boolean
28 | , text :: String
29 | }
30 |
31 | type TodoList = Array Todo
32 |
33 | initialTodos :: Array Todo
34 | initialTodos =
35 | [ { completed: true, text: "Taste JavaScript" }
36 | , { completed: false, text: "Buy a unicorn" }
37 | ]
38 |
39 | stateful :: forall s m a. Monad m => (s -> m s) -> s -> m a
40 | stateful fn initialState = fn initialState >>= stateful fn
41 |
42 | mainWidget :: forall eff a. Widget HTML eff a
43 | mainWidget = stateful todoList initialTodos
44 |
45 | processArray :: forall m a. Alternative m => (a -> m (Maybe a)) -> Array a -> m (Array a)
46 | processArray f array = map updateArray $ orr $ mapWithIndex (\index value -> Tuple index <$> f value) array
47 | where
48 | updateArray (Tuple index Nothing) =
49 | fromMaybe array $ Array.deleteAt index array
50 | updateArray (Tuple index (Just value)) =
51 | fromMaybe array $ Array.updateAt index value array
52 |
53 | todoList :: forall eff. TodoList -> Widget HTML eff TodoList
54 | todoList todos =
55 | el "section" [ P.className "todoapp" ]
56 | [ el "header" [ P.className "header" ]
57 | [ el "h1" [] [ text "todos" ]
58 | , inputOnEnter ""
59 | [ P.className "new-todo"
60 | , P.placeholder "What needs to be done?"
61 | , P.autoFocus true
62 | ]
63 | >>= \newText ->
64 | let newTodo = { completed: false, text: newText }
65 | in pure (todos <> [newTodo])
66 | ]
67 | , el "section" [ P.className "main" ]
68 | [ el "input"
69 | [ P._id "toggle-all"
70 | , P.className "toggle-all"
71 | , P._type "checkbox"
72 | ] []
73 | , el "label" [ P.htmlFor "toggle-all" ]
74 | [ text "Mark all as complete" ]
75 | , el "ul" [ P.className "todo-list" ]
76 | [ processArray todoItemWidget todos
77 | ]
78 | ]
79 | ]
80 |
81 | -- | A Widget that displays a Todo item.
82 | -- Returns when editing is finished. Returns Nothing if the todo is to be destroyed.
83 | todoItemWidget :: forall eff. Todo -> Widget HTML eff (Maybe Todo)
84 | todoItemWidget = go false
85 | where
86 |
87 | go editing todo = do
88 | action <- el "li"
89 | [ P.className $
90 | (if todo.completed then " completed" else "") <>
91 | (if editing then " editing" else "")
92 | ]
93 | [ el "div" [ P.className "view" ]
94 | [ checkbox todo.completed
95 | [ P.className "toggle"
96 | , P.checked todo.completed
97 | ]
98 | >>= \completed ->
99 | pure $ Right $ Just $ todo { completed = completed }
100 |
101 | , do awaitAction $ \channel ->
102 | el "label"
103 | [ P.onDoubleClick $ \_ ->
104 | unless todo.completed $
105 | yield channel unit
106 | ]
107 | [ text todo.text ]
108 | pure $ Left true
109 |
110 | , button [ P.className "destroy" ] []
111 | *> pure (Right Nothing)
112 |
113 | ]
114 | , do newText <- awaitAction $ \channel ->
115 | inputOnEnter todo.text
116 | [ P.className "edit"
117 | , P.autoFocus true
118 | , P.onBlur $ \event -> yield channel (unsafeTargetValue event) -- FIXME
119 | ]
120 | pure $ Right $ Just $ todo { text = newText }
121 | ]
122 |
123 | case action of
124 | Left editing' ->
125 | go editing' todo
126 | Right newTodo ->
127 | pure newTodo
128 |
129 |
130 | getElementByIdOrDie :: forall eff. String -> Eff (dom :: DOM | eff) Element
131 | getElementByIdOrDie id = do
132 | doc <- documentToNonElementParentNode <$> htmlDocumentToDocument <$> (window >>= document)
133 | m_elem <- getElementById (ElementId id) doc
134 | unsafePartial (case m_elem of
135 | Just element -> pure element)
136 |
137 |
138 | main :: forall eff. Eff (dom :: DOM, console :: CONSOLE | eff) Unit
139 | main = do
140 | root <- getElementByIdOrDie "app"
141 | launchAff_ $ runWidget root mainWidget
142 | log "Started"
143 |
--------------------------------------------------------------------------------
/examples/todomvc/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": true,
3 | "lockfileVersion": 1,
4 | "dependencies": {
5 | "JSONStream": {
6 | "version": "1.3.1",
7 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
8 | "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
9 | "dev": true,
10 | "requires": {
11 | "jsonparse": "1.3.1",
12 | "through": "2.3.8"
13 | }
14 | },
15 | "acorn": {
16 | "version": "4.0.13",
17 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
18 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
19 | "dev": true
20 | },
21 | "ansi-regex": {
22 | "version": "2.1.1",
23 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
24 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
25 | "dev": true
26 | },
27 | "ansi-styles": {
28 | "version": "2.2.1",
29 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
30 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
31 | "dev": true
32 | },
33 | "anymatch": {
34 | "version": "1.3.2",
35 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
36 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
37 | "dev": true,
38 | "requires": {
39 | "micromatch": "2.3.11",
40 | "normalize-path": "2.1.1"
41 | }
42 | },
43 | "archive-type": {
44 | "version": "3.2.0",
45 | "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz",
46 | "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=",
47 | "dev": true,
48 | "requires": {
49 | "file-type": "3.9.0"
50 | }
51 | },
52 | "arr-diff": {
53 | "version": "2.0.0",
54 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
55 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
56 | "dev": true,
57 | "requires": {
58 | "arr-flatten": "1.1.0"
59 | }
60 | },
61 | "arr-flatten": {
62 | "version": "1.1.0",
63 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
64 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
65 | "dev": true
66 | },
67 | "array-differ": {
68 | "version": "1.0.0",
69 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
70 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
71 | "dev": true
72 | },
73 | "array-filter": {
74 | "version": "0.0.1",
75 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
76 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
77 | "dev": true
78 | },
79 | "array-find-index": {
80 | "version": "1.0.2",
81 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
82 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
83 | "dev": true
84 | },
85 | "array-map": {
86 | "version": "0.0.0",
87 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
88 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
89 | "dev": true
90 | },
91 | "array-reduce": {
92 | "version": "0.0.0",
93 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
94 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
95 | "dev": true
96 | },
97 | "array-uniq": {
98 | "version": "1.0.3",
99 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
100 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
101 | "dev": true
102 | },
103 | "array-unique": {
104 | "version": "0.2.1",
105 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
106 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
107 | "dev": true
108 | },
109 | "asn1.js": {
110 | "version": "4.9.2",
111 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
112 | "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
113 | "dev": true,
114 | "requires": {
115 | "bn.js": "4.11.8",
116 | "inherits": "2.0.3",
117 | "minimalistic-assert": "1.0.0"
118 | }
119 | },
120 | "assert": {
121 | "version": "1.4.1",
122 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
123 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
124 | "dev": true,
125 | "requires": {
126 | "util": "0.10.3"
127 | }
128 | },
129 | "astw": {
130 | "version": "2.2.0",
131 | "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
132 | "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
133 | "dev": true,
134 | "requires": {
135 | "acorn": "4.0.13"
136 | }
137 | },
138 | "async": {
139 | "version": "1.5.2",
140 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
141 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
142 | "dev": true
143 | },
144 | "async-each": {
145 | "version": "1.0.1",
146 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
147 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
148 | "dev": true
149 | },
150 | "async-each-series": {
151 | "version": "1.1.0",
152 | "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz",
153 | "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=",
154 | "dev": true
155 | },
156 | "balanced-match": {
157 | "version": "1.0.0",
158 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
159 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
160 | "dev": true
161 | },
162 | "base64-js": {
163 | "version": "1.2.1",
164 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
165 | "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
166 | "dev": true
167 | },
168 | "beeper": {
169 | "version": "1.1.1",
170 | "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
171 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
172 | "dev": true
173 | },
174 | "bin-build": {
175 | "version": "2.2.0",
176 | "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz",
177 | "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=",
178 | "dev": true,
179 | "requires": {
180 | "archive-type": "3.2.0",
181 | "decompress": "3.0.0",
182 | "download": "4.4.3",
183 | "exec-series": "1.0.3",
184 | "rimraf": "2.2.8",
185 | "tempfile": "1.1.1",
186 | "url-regex": "3.2.0"
187 | }
188 | },
189 | "bin-check": {
190 | "version": "2.0.0",
191 | "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz",
192 | "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=",
193 | "dev": true,
194 | "requires": {
195 | "executable": "1.1.0"
196 | }
197 | },
198 | "bin-version": {
199 | "version": "1.0.4",
200 | "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz",
201 | "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=",
202 | "dev": true,
203 | "requires": {
204 | "find-versions": "1.2.1"
205 | }
206 | },
207 | "bin-version-check": {
208 | "version": "2.1.0",
209 | "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz",
210 | "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=",
211 | "dev": true,
212 | "requires": {
213 | "bin-version": "1.0.4",
214 | "minimist": "1.2.0",
215 | "semver": "4.3.6",
216 | "semver-truncate": "1.1.2"
217 | },
218 | "dependencies": {
219 | "semver": {
220 | "version": "4.3.6",
221 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
222 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
223 | "dev": true
224 | }
225 | }
226 | },
227 | "bin-wrapper": {
228 | "version": "3.0.2",
229 | "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz",
230 | "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=",
231 | "dev": true,
232 | "requires": {
233 | "bin-check": "2.0.0",
234 | "bin-version-check": "2.1.0",
235 | "download": "4.4.3",
236 | "each-async": "1.1.1",
237 | "lazy-req": "1.1.0",
238 | "os-filter-obj": "1.0.3"
239 | }
240 | },
241 | "binary-extensions": {
242 | "version": "1.10.0",
243 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
244 | "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
245 | "dev": true
246 | },
247 | "bl": {
248 | "version": "1.2.1",
249 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
250 | "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
251 | "dev": true,
252 | "requires": {
253 | "readable-stream": "2.3.3"
254 | }
255 | },
256 | "bn.js": {
257 | "version": "4.11.8",
258 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
259 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
260 | "dev": true
261 | },
262 | "brace-expansion": {
263 | "version": "1.1.8",
264 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
265 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
266 | "dev": true,
267 | "requires": {
268 | "balanced-match": "1.0.0",
269 | "concat-map": "0.0.1"
270 | }
271 | },
272 | "braces": {
273 | "version": "1.8.5",
274 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
275 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
276 | "dev": true,
277 | "requires": {
278 | "expand-range": "1.8.2",
279 | "preserve": "0.2.0",
280 | "repeat-element": "1.1.2"
281 | }
282 | },
283 | "brorand": {
284 | "version": "1.1.0",
285 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
286 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
287 | "dev": true
288 | },
289 | "browser-pack": {
290 | "version": "6.0.2",
291 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz",
292 | "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
293 | "dev": true,
294 | "requires": {
295 | "JSONStream": "1.3.1",
296 | "combine-source-map": "0.7.2",
297 | "defined": "1.0.0",
298 | "through2": "2.0.3",
299 | "umd": "3.0.1"
300 | }
301 | },
302 | "browser-resolve": {
303 | "version": "1.11.2",
304 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
305 | "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
306 | "dev": true,
307 | "requires": {
308 | "resolve": "1.1.7"
309 | },
310 | "dependencies": {
311 | "resolve": {
312 | "version": "1.1.7",
313 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
314 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
315 | "dev": true
316 | }
317 | }
318 | },
319 | "browserify": {
320 | "version": "13.3.0",
321 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz",
322 | "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=",
323 | "dev": true,
324 | "requires": {
325 | "JSONStream": "1.3.1",
326 | "assert": "1.4.1",
327 | "browser-pack": "6.0.2",
328 | "browser-resolve": "1.11.2",
329 | "browserify-zlib": "0.1.4",
330 | "buffer": "4.9.1",
331 | "cached-path-relative": "1.0.1",
332 | "concat-stream": "1.5.2",
333 | "console-browserify": "1.1.0",
334 | "constants-browserify": "1.0.0",
335 | "crypto-browserify": "3.11.1",
336 | "defined": "1.0.0",
337 | "deps-sort": "2.0.0",
338 | "domain-browser": "1.1.7",
339 | "duplexer2": "0.1.4",
340 | "events": "1.1.1",
341 | "glob": "7.1.2",
342 | "has": "1.0.1",
343 | "htmlescape": "1.1.1",
344 | "https-browserify": "0.0.1",
345 | "inherits": "2.0.3",
346 | "insert-module-globals": "7.0.1",
347 | "labeled-stream-splicer": "2.0.0",
348 | "module-deps": "4.1.1",
349 | "os-browserify": "0.1.2",
350 | "parents": "1.0.1",
351 | "path-browserify": "0.0.0",
352 | "process": "0.11.10",
353 | "punycode": "1.4.1",
354 | "querystring-es3": "0.2.1",
355 | "read-only-stream": "2.0.0",
356 | "readable-stream": "2.3.3",
357 | "resolve": "1.5.0",
358 | "shasum": "1.0.2",
359 | "shell-quote": "1.6.1",
360 | "stream-browserify": "2.0.1",
361 | "stream-http": "2.7.2",
362 | "string_decoder": "0.10.31",
363 | "subarg": "1.0.0",
364 | "syntax-error": "1.3.0",
365 | "through2": "2.0.3",
366 | "timers-browserify": "1.4.2",
367 | "tty-browserify": "0.0.0",
368 | "url": "0.11.0",
369 | "util": "0.10.3",
370 | "vm-browserify": "0.0.4",
371 | "xtend": "4.0.1"
372 | },
373 | "dependencies": {
374 | "concat-stream": {
375 | "version": "1.5.2",
376 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
377 | "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
378 | "dev": true,
379 | "requires": {
380 | "inherits": "2.0.3",
381 | "readable-stream": "2.0.6",
382 | "typedarray": "0.0.6"
383 | },
384 | "dependencies": {
385 | "readable-stream": {
386 | "version": "2.0.6",
387 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
388 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
389 | "dev": true,
390 | "requires": {
391 | "core-util-is": "1.0.2",
392 | "inherits": "2.0.3",
393 | "isarray": "1.0.0",
394 | "process-nextick-args": "1.0.7",
395 | "string_decoder": "0.10.31",
396 | "util-deprecate": "1.0.2"
397 | }
398 | }
399 | }
400 | }
401 | }
402 | },
403 | "browserify-aes": {
404 | "version": "1.1.1",
405 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
406 | "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
407 | "dev": true,
408 | "requires": {
409 | "buffer-xor": "1.0.3",
410 | "cipher-base": "1.0.4",
411 | "create-hash": "1.1.3",
412 | "evp_bytestokey": "1.0.3",
413 | "inherits": "2.0.3",
414 | "safe-buffer": "5.1.1"
415 | }
416 | },
417 | "browserify-cache-api": {
418 | "version": "3.0.1",
419 | "resolved": "https://registry.npmjs.org/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz",
420 | "integrity": "sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI=",
421 | "dev": true,
422 | "requires": {
423 | "async": "1.5.2",
424 | "through2": "2.0.3",
425 | "xtend": "4.0.1"
426 | }
427 | },
428 | "browserify-cipher": {
429 | "version": "1.0.0",
430 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
431 | "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
432 | "dev": true,
433 | "requires": {
434 | "browserify-aes": "1.1.1",
435 | "browserify-des": "1.0.0",
436 | "evp_bytestokey": "1.0.3"
437 | }
438 | },
439 | "browserify-des": {
440 | "version": "1.0.0",
441 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
442 | "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
443 | "dev": true,
444 | "requires": {
445 | "cipher-base": "1.0.4",
446 | "des.js": "1.0.0",
447 | "inherits": "2.0.3"
448 | }
449 | },
450 | "browserify-incremental": {
451 | "version": "3.1.1",
452 | "resolved": "https://registry.npmjs.org/browserify-incremental/-/browserify-incremental-3.1.1.tgz",
453 | "integrity": "sha1-BxPLdYckemMqnwjPG9FpuHi2Koo=",
454 | "dev": true,
455 | "requires": {
456 | "JSONStream": "0.10.0",
457 | "browserify-cache-api": "3.0.1",
458 | "through2": "2.0.3",
459 | "xtend": "4.0.1"
460 | },
461 | "dependencies": {
462 | "JSONStream": {
463 | "version": "0.10.0",
464 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz",
465 | "integrity": "sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=",
466 | "dev": true,
467 | "requires": {
468 | "jsonparse": "0.0.5",
469 | "through": "2.3.8"
470 | }
471 | },
472 | "jsonparse": {
473 | "version": "0.0.5",
474 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
475 | "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
476 | "dev": true
477 | }
478 | }
479 | },
480 | "browserify-rsa": {
481 | "version": "4.0.1",
482 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
483 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
484 | "dev": true,
485 | "requires": {
486 | "bn.js": "4.11.8",
487 | "randombytes": "2.0.5"
488 | }
489 | },
490 | "browserify-sign": {
491 | "version": "4.0.4",
492 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
493 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
494 | "dev": true,
495 | "requires": {
496 | "bn.js": "4.11.8",
497 | "browserify-rsa": "4.0.1",
498 | "create-hash": "1.1.3",
499 | "create-hmac": "1.1.6",
500 | "elliptic": "6.4.0",
501 | "inherits": "2.0.3",
502 | "parse-asn1": "5.1.0"
503 | }
504 | },
505 | "browserify-zlib": {
506 | "version": "0.1.4",
507 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
508 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
509 | "dev": true,
510 | "requires": {
511 | "pako": "0.2.9"
512 | }
513 | },
514 | "buffer": {
515 | "version": "4.9.1",
516 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
517 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
518 | "dev": true,
519 | "requires": {
520 | "base64-js": "1.2.1",
521 | "ieee754": "1.1.8",
522 | "isarray": "1.0.0"
523 | }
524 | },
525 | "buffer-crc32": {
526 | "version": "0.2.13",
527 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
528 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
529 | "dev": true
530 | },
531 | "buffer-to-vinyl": {
532 | "version": "1.1.0",
533 | "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz",
534 | "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=",
535 | "dev": true,
536 | "requires": {
537 | "file-type": "3.9.0",
538 | "readable-stream": "2.3.3",
539 | "uuid": "2.0.3",
540 | "vinyl": "1.2.0"
541 | }
542 | },
543 | "buffer-xor": {
544 | "version": "1.0.3",
545 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
546 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
547 | "dev": true
548 | },
549 | "builtin-modules": {
550 | "version": "1.1.1",
551 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
552 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
553 | "dev": true
554 | },
555 | "builtin-status-codes": {
556 | "version": "3.0.0",
557 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
558 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
559 | "dev": true
560 | },
561 | "cached-path-relative": {
562 | "version": "1.0.1",
563 | "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz",
564 | "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=",
565 | "dev": true
566 | },
567 | "camelcase": {
568 | "version": "2.1.1",
569 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
570 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
571 | "dev": true
572 | },
573 | "camelcase-keys": {
574 | "version": "2.1.0",
575 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
576 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
577 | "dev": true,
578 | "requires": {
579 | "camelcase": "2.1.1",
580 | "map-obj": "1.0.1"
581 | }
582 | },
583 | "capture-stack-trace": {
584 | "version": "1.0.0",
585 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
586 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
587 | "dev": true
588 | },
589 | "caw": {
590 | "version": "1.2.0",
591 | "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz",
592 | "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=",
593 | "dev": true,
594 | "requires": {
595 | "get-proxy": "1.1.0",
596 | "is-obj": "1.0.1",
597 | "object-assign": "3.0.0",
598 | "tunnel-agent": "0.4.3"
599 | },
600 | "dependencies": {
601 | "object-assign": {
602 | "version": "3.0.0",
603 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
604 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
605 | "dev": true
606 | }
607 | }
608 | },
609 | "chalk": {
610 | "version": "1.1.3",
611 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
612 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
613 | "dev": true,
614 | "requires": {
615 | "ansi-styles": "2.2.1",
616 | "escape-string-regexp": "1.0.5",
617 | "has-ansi": "2.0.0",
618 | "strip-ansi": "3.0.1",
619 | "supports-color": "2.0.0"
620 | }
621 | },
622 | "chokidar": {
623 | "version": "1.7.0",
624 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
625 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
626 | "dev": true,
627 | "requires": {
628 | "anymatch": "1.3.2",
629 | "async-each": "1.0.1",
630 | "glob-parent": "2.0.0",
631 | "inherits": "2.0.3",
632 | "is-binary-path": "1.0.1",
633 | "is-glob": "2.0.1",
634 | "path-is-absolute": "1.0.1",
635 | "readdirp": "2.1.0"
636 | }
637 | },
638 | "cipher-base": {
639 | "version": "1.0.4",
640 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
641 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
642 | "dev": true,
643 | "requires": {
644 | "inherits": "2.0.3",
645 | "safe-buffer": "5.1.1"
646 | }
647 | },
648 | "clone": {
649 | "version": "1.0.2",
650 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
651 | "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
652 | "dev": true
653 | },
654 | "clone-stats": {
655 | "version": "0.0.1",
656 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
657 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
658 | "dev": true
659 | },
660 | "co": {
661 | "version": "3.1.0",
662 | "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
663 | "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
664 | "dev": true
665 | },
666 | "colors": {
667 | "version": "1.1.2",
668 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
669 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
670 | "dev": true
671 | },
672 | "combine-source-map": {
673 | "version": "0.7.2",
674 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz",
675 | "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=",
676 | "dev": true,
677 | "requires": {
678 | "convert-source-map": "1.1.3",
679 | "inline-source-map": "0.6.2",
680 | "lodash.memoize": "3.0.4",
681 | "source-map": "0.5.7"
682 | }
683 | },
684 | "commander": {
685 | "version": "2.8.1",
686 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
687 | "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
688 | "dev": true,
689 | "requires": {
690 | "graceful-readlink": "1.0.1"
691 | }
692 | },
693 | "concat-map": {
694 | "version": "0.0.1",
695 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
696 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
697 | "dev": true
698 | },
699 | "concat-stream": {
700 | "version": "1.6.0",
701 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
702 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
703 | "dev": true,
704 | "requires": {
705 | "inherits": "2.0.3",
706 | "readable-stream": "2.3.3",
707 | "typedarray": "0.0.6"
708 | }
709 | },
710 | "console-browserify": {
711 | "version": "1.1.0",
712 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
713 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
714 | "dev": true,
715 | "requires": {
716 | "date-now": "0.1.4"
717 | }
718 | },
719 | "console-stream": {
720 | "version": "0.1.1",
721 | "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz",
722 | "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=",
723 | "dev": true
724 | },
725 | "constants-browserify": {
726 | "version": "1.0.0",
727 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
728 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
729 | "dev": true
730 | },
731 | "convert-source-map": {
732 | "version": "1.1.3",
733 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
734 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
735 | "dev": true
736 | },
737 | "core-util-is": {
738 | "version": "1.0.2",
739 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
740 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
741 | "dev": true
742 | },
743 | "create-ecdh": {
744 | "version": "4.0.0",
745 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
746 | "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
747 | "dev": true,
748 | "requires": {
749 | "bn.js": "4.11.8",
750 | "elliptic": "6.4.0"
751 | }
752 | },
753 | "create-error-class": {
754 | "version": "3.0.2",
755 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
756 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
757 | "dev": true,
758 | "requires": {
759 | "capture-stack-trace": "1.0.0"
760 | }
761 | },
762 | "create-hash": {
763 | "version": "1.1.3",
764 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
765 | "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
766 | "dev": true,
767 | "requires": {
768 | "cipher-base": "1.0.4",
769 | "inherits": "2.0.3",
770 | "ripemd160": "2.0.1",
771 | "sha.js": "2.4.9"
772 | }
773 | },
774 | "create-hmac": {
775 | "version": "1.1.6",
776 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
777 | "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
778 | "dev": true,
779 | "requires": {
780 | "cipher-base": "1.0.4",
781 | "create-hash": "1.1.3",
782 | "inherits": "2.0.3",
783 | "ripemd160": "2.0.1",
784 | "safe-buffer": "5.1.1",
785 | "sha.js": "2.4.9"
786 | }
787 | },
788 | "crypto-browserify": {
789 | "version": "3.11.1",
790 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz",
791 | "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==",
792 | "dev": true,
793 | "requires": {
794 | "browserify-cipher": "1.0.0",
795 | "browserify-sign": "4.0.4",
796 | "create-ecdh": "4.0.0",
797 | "create-hash": "1.1.3",
798 | "create-hmac": "1.1.6",
799 | "diffie-hellman": "5.0.2",
800 | "inherits": "2.0.3",
801 | "pbkdf2": "3.0.14",
802 | "public-encrypt": "4.0.0",
803 | "randombytes": "2.0.5"
804 | }
805 | },
806 | "currently-unhandled": {
807 | "version": "0.4.1",
808 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
809 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
810 | "dev": true,
811 | "requires": {
812 | "array-find-index": "1.0.2"
813 | }
814 | },
815 | "date-now": {
816 | "version": "0.1.4",
817 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
818 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
819 | "dev": true
820 | },
821 | "dateformat": {
822 | "version": "2.2.0",
823 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
824 | "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
825 | "dev": true
826 | },
827 | "decamelize": {
828 | "version": "1.2.0",
829 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
830 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
831 | "dev": true
832 | },
833 | "decompress": {
834 | "version": "3.0.0",
835 | "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz",
836 | "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=",
837 | "dev": true,
838 | "requires": {
839 | "buffer-to-vinyl": "1.1.0",
840 | "concat-stream": "1.6.0",
841 | "decompress-tar": "3.1.0",
842 | "decompress-tarbz2": "3.1.0",
843 | "decompress-targz": "3.1.0",
844 | "decompress-unzip": "3.4.0",
845 | "stream-combiner2": "1.1.1",
846 | "vinyl-assign": "1.2.1",
847 | "vinyl-fs": "2.4.4"
848 | }
849 | },
850 | "decompress-tar": {
851 | "version": "3.1.0",
852 | "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz",
853 | "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=",
854 | "dev": true,
855 | "requires": {
856 | "is-tar": "1.0.0",
857 | "object-assign": "2.1.1",
858 | "strip-dirs": "1.1.1",
859 | "tar-stream": "1.5.4",
860 | "through2": "0.6.5",
861 | "vinyl": "0.4.6"
862 | },
863 | "dependencies": {
864 | "clone": {
865 | "version": "0.2.0",
866 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
867 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
868 | "dev": true
869 | },
870 | "isarray": {
871 | "version": "0.0.1",
872 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
873 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
874 | "dev": true
875 | },
876 | "readable-stream": {
877 | "version": "1.0.34",
878 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
879 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
880 | "dev": true,
881 | "requires": {
882 | "core-util-is": "1.0.2",
883 | "inherits": "2.0.3",
884 | "isarray": "0.0.1",
885 | "string_decoder": "0.10.31"
886 | }
887 | },
888 | "through2": {
889 | "version": "0.6.5",
890 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
891 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
892 | "dev": true,
893 | "requires": {
894 | "readable-stream": "1.0.34",
895 | "xtend": "4.0.1"
896 | }
897 | },
898 | "vinyl": {
899 | "version": "0.4.6",
900 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
901 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
902 | "dev": true,
903 | "requires": {
904 | "clone": "0.2.0",
905 | "clone-stats": "0.0.1"
906 | }
907 | }
908 | }
909 | },
910 | "decompress-tarbz2": {
911 | "version": "3.1.0",
912 | "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz",
913 | "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=",
914 | "dev": true,
915 | "requires": {
916 | "is-bzip2": "1.0.0",
917 | "object-assign": "2.1.1",
918 | "seek-bzip": "1.0.5",
919 | "strip-dirs": "1.1.1",
920 | "tar-stream": "1.5.4",
921 | "through2": "0.6.5",
922 | "vinyl": "0.4.6"
923 | },
924 | "dependencies": {
925 | "clone": {
926 | "version": "0.2.0",
927 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
928 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
929 | "dev": true
930 | },
931 | "isarray": {
932 | "version": "0.0.1",
933 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
934 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
935 | "dev": true
936 | },
937 | "readable-stream": {
938 | "version": "1.0.34",
939 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
940 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
941 | "dev": true,
942 | "requires": {
943 | "core-util-is": "1.0.2",
944 | "inherits": "2.0.3",
945 | "isarray": "0.0.1",
946 | "string_decoder": "0.10.31"
947 | }
948 | },
949 | "through2": {
950 | "version": "0.6.5",
951 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
952 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
953 | "dev": true,
954 | "requires": {
955 | "readable-stream": "1.0.34",
956 | "xtend": "4.0.1"
957 | }
958 | },
959 | "vinyl": {
960 | "version": "0.4.6",
961 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
962 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
963 | "dev": true,
964 | "requires": {
965 | "clone": "0.2.0",
966 | "clone-stats": "0.0.1"
967 | }
968 | }
969 | }
970 | },
971 | "decompress-targz": {
972 | "version": "3.1.0",
973 | "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz",
974 | "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=",
975 | "dev": true,
976 | "requires": {
977 | "is-gzip": "1.0.0",
978 | "object-assign": "2.1.1",
979 | "strip-dirs": "1.1.1",
980 | "tar-stream": "1.5.4",
981 | "through2": "0.6.5",
982 | "vinyl": "0.4.6"
983 | },
984 | "dependencies": {
985 | "clone": {
986 | "version": "0.2.0",
987 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
988 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
989 | "dev": true
990 | },
991 | "isarray": {
992 | "version": "0.0.1",
993 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
994 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
995 | "dev": true
996 | },
997 | "readable-stream": {
998 | "version": "1.0.34",
999 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
1000 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
1001 | "dev": true,
1002 | "requires": {
1003 | "core-util-is": "1.0.2",
1004 | "inherits": "2.0.3",
1005 | "isarray": "0.0.1",
1006 | "string_decoder": "0.10.31"
1007 | }
1008 | },
1009 | "through2": {
1010 | "version": "0.6.5",
1011 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
1012 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
1013 | "dev": true,
1014 | "requires": {
1015 | "readable-stream": "1.0.34",
1016 | "xtend": "4.0.1"
1017 | }
1018 | },
1019 | "vinyl": {
1020 | "version": "0.4.6",
1021 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
1022 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
1023 | "dev": true,
1024 | "requires": {
1025 | "clone": "0.2.0",
1026 | "clone-stats": "0.0.1"
1027 | }
1028 | }
1029 | }
1030 | },
1031 | "decompress-unzip": {
1032 | "version": "3.4.0",
1033 | "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz",
1034 | "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=",
1035 | "dev": true,
1036 | "requires": {
1037 | "is-zip": "1.0.0",
1038 | "read-all-stream": "3.1.0",
1039 | "stat-mode": "0.2.2",
1040 | "strip-dirs": "1.1.1",
1041 | "through2": "2.0.3",
1042 | "vinyl": "1.2.0",
1043 | "yauzl": "2.9.1"
1044 | }
1045 | },
1046 | "deep-extend": {
1047 | "version": "0.4.2",
1048 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
1049 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
1050 | "dev": true
1051 | },
1052 | "defined": {
1053 | "version": "1.0.0",
1054 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1055 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
1056 | "dev": true
1057 | },
1058 | "deps-sort": {
1059 | "version": "2.0.0",
1060 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
1061 | "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
1062 | "dev": true,
1063 | "requires": {
1064 | "JSONStream": "1.3.1",
1065 | "shasum": "1.0.2",
1066 | "subarg": "1.0.0",
1067 | "through2": "2.0.3"
1068 | }
1069 | },
1070 | "des.js": {
1071 | "version": "1.0.0",
1072 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
1073 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
1074 | "dev": true,
1075 | "requires": {
1076 | "inherits": "2.0.3",
1077 | "minimalistic-assert": "1.0.0"
1078 | }
1079 | },
1080 | "detective": {
1081 | "version": "4.5.0",
1082 | "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz",
1083 | "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=",
1084 | "dev": true,
1085 | "requires": {
1086 | "acorn": "4.0.13",
1087 | "defined": "1.0.0"
1088 | }
1089 | },
1090 | "diffie-hellman": {
1091 | "version": "5.0.2",
1092 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
1093 | "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
1094 | "dev": true,
1095 | "requires": {
1096 | "bn.js": "4.11.8",
1097 | "miller-rabin": "4.0.1",
1098 | "randombytes": "2.0.5"
1099 | }
1100 | },
1101 | "domain-browser": {
1102 | "version": "1.1.7",
1103 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
1104 | "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
1105 | "dev": true
1106 | },
1107 | "download": {
1108 | "version": "4.4.3",
1109 | "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz",
1110 | "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=",
1111 | "dev": true,
1112 | "requires": {
1113 | "caw": "1.2.0",
1114 | "concat-stream": "1.6.0",
1115 | "each-async": "1.1.1",
1116 | "filenamify": "1.2.1",
1117 | "got": "5.7.1",
1118 | "gulp-decompress": "1.2.0",
1119 | "gulp-rename": "1.2.2",
1120 | "is-url": "1.2.2",
1121 | "object-assign": "4.1.1",
1122 | "read-all-stream": "3.1.0",
1123 | "readable-stream": "2.3.3",
1124 | "stream-combiner2": "1.1.1",
1125 | "vinyl": "1.2.0",
1126 | "vinyl-fs": "2.4.4",
1127 | "ware": "1.3.0"
1128 | },
1129 | "dependencies": {
1130 | "object-assign": {
1131 | "version": "4.1.1",
1132 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1133 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1134 | "dev": true
1135 | }
1136 | }
1137 | },
1138 | "duplexer2": {
1139 | "version": "0.1.4",
1140 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
1141 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1142 | "dev": true,
1143 | "requires": {
1144 | "readable-stream": "2.3.3"
1145 | }
1146 | },
1147 | "duplexify": {
1148 | "version": "3.5.1",
1149 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
1150 | "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
1151 | "dev": true,
1152 | "requires": {
1153 | "end-of-stream": "1.4.0",
1154 | "inherits": "2.0.3",
1155 | "readable-stream": "2.3.3",
1156 | "stream-shift": "1.0.0"
1157 | }
1158 | },
1159 | "each-async": {
1160 | "version": "1.1.1",
1161 | "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
1162 | "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
1163 | "dev": true,
1164 | "requires": {
1165 | "onetime": "1.1.0",
1166 | "set-immediate-shim": "1.0.1"
1167 | }
1168 | },
1169 | "elliptic": {
1170 | "version": "6.4.0",
1171 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
1172 | "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
1173 | "dev": true,
1174 | "requires": {
1175 | "bn.js": "4.11.8",
1176 | "brorand": "1.1.0",
1177 | "hash.js": "1.1.3",
1178 | "hmac-drbg": "1.0.1",
1179 | "inherits": "2.0.3",
1180 | "minimalistic-assert": "1.0.0",
1181 | "minimalistic-crypto-utils": "1.0.1"
1182 | }
1183 | },
1184 | "end-of-stream": {
1185 | "version": "1.4.0",
1186 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
1187 | "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
1188 | "dev": true,
1189 | "requires": {
1190 | "once": "1.4.0"
1191 | }
1192 | },
1193 | "error-ex": {
1194 | "version": "1.3.1",
1195 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
1196 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
1197 | "dev": true,
1198 | "requires": {
1199 | "is-arrayish": "0.2.1"
1200 | }
1201 | },
1202 | "escape-string-regexp": {
1203 | "version": "1.0.5",
1204 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1205 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1206 | "dev": true
1207 | },
1208 | "events": {
1209 | "version": "1.1.1",
1210 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
1211 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
1212 | "dev": true
1213 | },
1214 | "evp_bytestokey": {
1215 | "version": "1.0.3",
1216 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1217 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1218 | "dev": true,
1219 | "requires": {
1220 | "md5.js": "1.3.4",
1221 | "safe-buffer": "5.1.1"
1222 | }
1223 | },
1224 | "exec-series": {
1225 | "version": "1.0.3",
1226 | "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz",
1227 | "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=",
1228 | "dev": true,
1229 | "requires": {
1230 | "async-each-series": "1.1.0",
1231 | "object-assign": "4.1.1"
1232 | },
1233 | "dependencies": {
1234 | "object-assign": {
1235 | "version": "4.1.1",
1236 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1237 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1238 | "dev": true
1239 | }
1240 | }
1241 | },
1242 | "executable": {
1243 | "version": "1.1.0",
1244 | "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz",
1245 | "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=",
1246 | "dev": true,
1247 | "requires": {
1248 | "meow": "3.7.0"
1249 | }
1250 | },
1251 | "expand-brackets": {
1252 | "version": "0.1.5",
1253 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
1254 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
1255 | "dev": true,
1256 | "requires": {
1257 | "is-posix-bracket": "0.1.1"
1258 | }
1259 | },
1260 | "expand-range": {
1261 | "version": "1.8.2",
1262 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
1263 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
1264 | "dev": true,
1265 | "requires": {
1266 | "fill-range": "2.2.3"
1267 | }
1268 | },
1269 | "extend": {
1270 | "version": "3.0.1",
1271 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
1272 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
1273 | "dev": true
1274 | },
1275 | "extend-shallow": {
1276 | "version": "2.0.1",
1277 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1278 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1279 | "dev": true,
1280 | "requires": {
1281 | "is-extendable": "0.1.1"
1282 | }
1283 | },
1284 | "extglob": {
1285 | "version": "0.3.2",
1286 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
1287 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
1288 | "dev": true,
1289 | "requires": {
1290 | "is-extglob": "1.0.0"
1291 | }
1292 | },
1293 | "fancy-log": {
1294 | "version": "1.3.0",
1295 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
1296 | "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
1297 | "dev": true,
1298 | "requires": {
1299 | "chalk": "1.1.3",
1300 | "time-stamp": "1.1.0"
1301 | }
1302 | },
1303 | "fd-slicer": {
1304 | "version": "1.0.1",
1305 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
1306 | "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
1307 | "dev": true,
1308 | "requires": {
1309 | "pend": "1.2.0"
1310 | }
1311 | },
1312 | "figures": {
1313 | "version": "1.7.0",
1314 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
1315 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
1316 | "dev": true,
1317 | "requires": {
1318 | "escape-string-regexp": "1.0.5",
1319 | "object-assign": "4.1.1"
1320 | },
1321 | "dependencies": {
1322 | "object-assign": {
1323 | "version": "4.1.1",
1324 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1325 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1326 | "dev": true
1327 | }
1328 | }
1329 | },
1330 | "file-type": {
1331 | "version": "3.9.0",
1332 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
1333 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
1334 | "dev": true
1335 | },
1336 | "filename-regex": {
1337 | "version": "2.0.1",
1338 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
1339 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
1340 | "dev": true
1341 | },
1342 | "filename-reserved-regex": {
1343 | "version": "1.0.0",
1344 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz",
1345 | "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=",
1346 | "dev": true
1347 | },
1348 | "filenamify": {
1349 | "version": "1.2.1",
1350 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz",
1351 | "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=",
1352 | "dev": true,
1353 | "requires": {
1354 | "filename-reserved-regex": "1.0.0",
1355 | "strip-outer": "1.0.0",
1356 | "trim-repeated": "1.0.0"
1357 | }
1358 | },
1359 | "fill-range": {
1360 | "version": "2.2.3",
1361 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
1362 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
1363 | "dev": true,
1364 | "requires": {
1365 | "is-number": "2.1.0",
1366 | "isobject": "2.1.0",
1367 | "randomatic": "1.1.7",
1368 | "repeat-element": "1.1.2",
1369 | "repeat-string": "1.6.1"
1370 | }
1371 | },
1372 | "find-up": {
1373 | "version": "1.1.2",
1374 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
1375 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
1376 | "dev": true,
1377 | "requires": {
1378 | "path-exists": "2.1.0",
1379 | "pinkie-promise": "2.0.1"
1380 | }
1381 | },
1382 | "find-versions": {
1383 | "version": "1.2.1",
1384 | "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz",
1385 | "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=",
1386 | "dev": true,
1387 | "requires": {
1388 | "array-uniq": "1.0.3",
1389 | "get-stdin": "4.0.1",
1390 | "meow": "3.7.0",
1391 | "semver-regex": "1.0.0"
1392 | }
1393 | },
1394 | "first-chunk-stream": {
1395 | "version": "1.0.0",
1396 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
1397 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
1398 | "dev": true
1399 | },
1400 | "for-in": {
1401 | "version": "1.0.2",
1402 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1403 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1404 | "dev": true
1405 | },
1406 | "for-own": {
1407 | "version": "0.1.5",
1408 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
1409 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
1410 | "dev": true,
1411 | "requires": {
1412 | "for-in": "1.0.2"
1413 | }
1414 | },
1415 | "fs.realpath": {
1416 | "version": "1.0.0",
1417 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1418 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1419 | "dev": true
1420 | },
1421 | "function-bind": {
1422 | "version": "1.1.1",
1423 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1424 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1425 | "dev": true
1426 | },
1427 | "get-proxy": {
1428 | "version": "1.1.0",
1429 | "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz",
1430 | "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=",
1431 | "dev": true,
1432 | "requires": {
1433 | "rc": "1.2.2"
1434 | }
1435 | },
1436 | "get-stdin": {
1437 | "version": "4.0.1",
1438 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
1439 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
1440 | "dev": true
1441 | },
1442 | "glob": {
1443 | "version": "7.1.2",
1444 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
1445 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
1446 | "dev": true,
1447 | "requires": {
1448 | "fs.realpath": "1.0.0",
1449 | "inflight": "1.0.6",
1450 | "inherits": "2.0.3",
1451 | "minimatch": "3.0.4",
1452 | "once": "1.4.0",
1453 | "path-is-absolute": "1.0.1"
1454 | }
1455 | },
1456 | "glob-base": {
1457 | "version": "0.3.0",
1458 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
1459 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
1460 | "dev": true,
1461 | "requires": {
1462 | "glob-parent": "2.0.0",
1463 | "is-glob": "2.0.1"
1464 | }
1465 | },
1466 | "glob-parent": {
1467 | "version": "2.0.0",
1468 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
1469 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
1470 | "dev": true,
1471 | "requires": {
1472 | "is-glob": "2.0.1"
1473 | }
1474 | },
1475 | "glob-stream": {
1476 | "version": "5.3.5",
1477 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
1478 | "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
1479 | "dev": true,
1480 | "requires": {
1481 | "extend": "3.0.1",
1482 | "glob": "5.0.15",
1483 | "glob-parent": "3.1.0",
1484 | "micromatch": "2.3.11",
1485 | "ordered-read-streams": "0.3.0",
1486 | "through2": "0.6.5",
1487 | "to-absolute-glob": "0.1.1",
1488 | "unique-stream": "2.2.1"
1489 | },
1490 | "dependencies": {
1491 | "glob": {
1492 | "version": "5.0.15",
1493 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
1494 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
1495 | "dev": true,
1496 | "requires": {
1497 | "inflight": "1.0.6",
1498 | "inherits": "2.0.3",
1499 | "minimatch": "3.0.4",
1500 | "once": "1.4.0",
1501 | "path-is-absolute": "1.0.1"
1502 | }
1503 | },
1504 | "glob-parent": {
1505 | "version": "3.1.0",
1506 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
1507 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
1508 | "dev": true,
1509 | "requires": {
1510 | "is-glob": "3.1.0",
1511 | "path-dirname": "1.0.2"
1512 | }
1513 | },
1514 | "is-extglob": {
1515 | "version": "2.1.1",
1516 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1517 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1518 | "dev": true
1519 | },
1520 | "is-glob": {
1521 | "version": "3.1.0",
1522 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1523 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1524 | "dev": true,
1525 | "requires": {
1526 | "is-extglob": "2.1.1"
1527 | }
1528 | },
1529 | "isarray": {
1530 | "version": "0.0.1",
1531 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
1532 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
1533 | "dev": true
1534 | },
1535 | "readable-stream": {
1536 | "version": "1.0.34",
1537 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
1538 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
1539 | "dev": true,
1540 | "requires": {
1541 | "core-util-is": "1.0.2",
1542 | "inherits": "2.0.3",
1543 | "isarray": "0.0.1",
1544 | "string_decoder": "0.10.31"
1545 | }
1546 | },
1547 | "through2": {
1548 | "version": "0.6.5",
1549 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
1550 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
1551 | "dev": true,
1552 | "requires": {
1553 | "readable-stream": "1.0.34",
1554 | "xtend": "4.0.1"
1555 | }
1556 | }
1557 | }
1558 | },
1559 | "glogg": {
1560 | "version": "1.0.0",
1561 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
1562 | "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
1563 | "dev": true,
1564 | "requires": {
1565 | "sparkles": "1.0.0"
1566 | }
1567 | },
1568 | "got": {
1569 | "version": "5.7.1",
1570 | "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz",
1571 | "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
1572 | "dev": true,
1573 | "requires": {
1574 | "create-error-class": "3.0.2",
1575 | "duplexer2": "0.1.4",
1576 | "is-redirect": "1.0.0",
1577 | "is-retry-allowed": "1.1.0",
1578 | "is-stream": "1.1.0",
1579 | "lowercase-keys": "1.0.0",
1580 | "node-status-codes": "1.0.0",
1581 | "object-assign": "4.1.1",
1582 | "parse-json": "2.2.0",
1583 | "pinkie-promise": "2.0.1",
1584 | "read-all-stream": "3.1.0",
1585 | "readable-stream": "2.3.3",
1586 | "timed-out": "3.1.3",
1587 | "unzip-response": "1.0.2",
1588 | "url-parse-lax": "1.0.0"
1589 | },
1590 | "dependencies": {
1591 | "object-assign": {
1592 | "version": "4.1.1",
1593 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1594 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1595 | "dev": true
1596 | }
1597 | }
1598 | },
1599 | "graceful-fs": {
1600 | "version": "4.1.11",
1601 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1602 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1603 | "dev": true
1604 | },
1605 | "graceful-readlink": {
1606 | "version": "1.0.1",
1607 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
1608 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
1609 | "dev": true
1610 | },
1611 | "gulp-decompress": {
1612 | "version": "1.2.0",
1613 | "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz",
1614 | "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=",
1615 | "dev": true,
1616 | "requires": {
1617 | "archive-type": "3.2.0",
1618 | "decompress": "3.0.0",
1619 | "gulp-util": "3.0.8",
1620 | "readable-stream": "2.3.3"
1621 | }
1622 | },
1623 | "gulp-rename": {
1624 | "version": "1.2.2",
1625 | "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz",
1626 | "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=",
1627 | "dev": true
1628 | },
1629 | "gulp-sourcemaps": {
1630 | "version": "1.6.0",
1631 | "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
1632 | "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
1633 | "dev": true,
1634 | "requires": {
1635 | "convert-source-map": "1.1.3",
1636 | "graceful-fs": "4.1.11",
1637 | "strip-bom": "2.0.0",
1638 | "through2": "2.0.3",
1639 | "vinyl": "1.2.0"
1640 | }
1641 | },
1642 | "gulp-util": {
1643 | "version": "3.0.8",
1644 | "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
1645 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
1646 | "dev": true,
1647 | "requires": {
1648 | "array-differ": "1.0.0",
1649 | "array-uniq": "1.0.3",
1650 | "beeper": "1.1.1",
1651 | "chalk": "1.1.3",
1652 | "dateformat": "2.2.0",
1653 | "fancy-log": "1.3.0",
1654 | "gulplog": "1.0.0",
1655 | "has-gulplog": "0.1.0",
1656 | "lodash._reescape": "3.0.0",
1657 | "lodash._reevaluate": "3.0.0",
1658 | "lodash._reinterpolate": "3.0.0",
1659 | "lodash.template": "3.6.2",
1660 | "minimist": "1.2.0",
1661 | "multipipe": "0.1.2",
1662 | "object-assign": "3.0.0",
1663 | "replace-ext": "0.0.1",
1664 | "through2": "2.0.3",
1665 | "vinyl": "0.5.3"
1666 | },
1667 | "dependencies": {
1668 | "object-assign": {
1669 | "version": "3.0.0",
1670 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
1671 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
1672 | "dev": true
1673 | },
1674 | "vinyl": {
1675 | "version": "0.5.3",
1676 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
1677 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
1678 | "dev": true,
1679 | "requires": {
1680 | "clone": "1.0.2",
1681 | "clone-stats": "0.0.1",
1682 | "replace-ext": "0.0.1"
1683 | }
1684 | }
1685 | }
1686 | },
1687 | "gulplog": {
1688 | "version": "1.0.0",
1689 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
1690 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
1691 | "dev": true,
1692 | "requires": {
1693 | "glogg": "1.0.0"
1694 | }
1695 | },
1696 | "has": {
1697 | "version": "1.0.1",
1698 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
1699 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
1700 | "dev": true,
1701 | "requires": {
1702 | "function-bind": "1.1.1"
1703 | }
1704 | },
1705 | "has-ansi": {
1706 | "version": "2.0.0",
1707 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1708 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1709 | "dev": true,
1710 | "requires": {
1711 | "ansi-regex": "2.1.1"
1712 | }
1713 | },
1714 | "has-gulplog": {
1715 | "version": "0.1.0",
1716 | "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
1717 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
1718 | "dev": true,
1719 | "requires": {
1720 | "sparkles": "1.0.0"
1721 | }
1722 | },
1723 | "hash-base": {
1724 | "version": "2.0.2",
1725 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
1726 | "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
1727 | "dev": true,
1728 | "requires": {
1729 | "inherits": "2.0.3"
1730 | }
1731 | },
1732 | "hash.js": {
1733 | "version": "1.1.3",
1734 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
1735 | "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
1736 | "dev": true,
1737 | "requires": {
1738 | "inherits": "2.0.3",
1739 | "minimalistic-assert": "1.0.0"
1740 | }
1741 | },
1742 | "hmac-drbg": {
1743 | "version": "1.0.1",
1744 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
1745 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
1746 | "dev": true,
1747 | "requires": {
1748 | "hash.js": "1.1.3",
1749 | "minimalistic-assert": "1.0.0",
1750 | "minimalistic-crypto-utils": "1.0.1"
1751 | }
1752 | },
1753 | "hosted-git-info": {
1754 | "version": "2.5.0",
1755 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
1756 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
1757 | "dev": true
1758 | },
1759 | "htmlescape": {
1760 | "version": "1.1.1",
1761 | "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
1762 | "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
1763 | "dev": true
1764 | },
1765 | "https-browserify": {
1766 | "version": "0.0.1",
1767 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
1768 | "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
1769 | "dev": true
1770 | },
1771 | "ieee754": {
1772 | "version": "1.1.8",
1773 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
1774 | "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
1775 | "dev": true
1776 | },
1777 | "indent-string": {
1778 | "version": "2.1.0",
1779 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
1780 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
1781 | "dev": true,
1782 | "requires": {
1783 | "repeating": "2.0.1"
1784 | }
1785 | },
1786 | "indexof": {
1787 | "version": "0.0.1",
1788 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
1789 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
1790 | "dev": true
1791 | },
1792 | "inflight": {
1793 | "version": "1.0.6",
1794 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1795 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1796 | "dev": true,
1797 | "requires": {
1798 | "once": "1.4.0",
1799 | "wrappy": "1.0.2"
1800 | }
1801 | },
1802 | "inherits": {
1803 | "version": "2.0.3",
1804 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1805 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1806 | "dev": true
1807 | },
1808 | "ini": {
1809 | "version": "1.3.4",
1810 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
1811 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
1812 | "dev": true
1813 | },
1814 | "inline-source-map": {
1815 | "version": "0.6.2",
1816 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
1817 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
1818 | "dev": true,
1819 | "requires": {
1820 | "source-map": "0.5.7"
1821 | }
1822 | },
1823 | "insert-module-globals": {
1824 | "version": "7.0.1",
1825 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
1826 | "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
1827 | "dev": true,
1828 | "requires": {
1829 | "JSONStream": "1.3.1",
1830 | "combine-source-map": "0.7.2",
1831 | "concat-stream": "1.5.2",
1832 | "is-buffer": "1.1.6",
1833 | "lexical-scope": "1.2.0",
1834 | "process": "0.11.10",
1835 | "through2": "2.0.3",
1836 | "xtend": "4.0.1"
1837 | },
1838 | "dependencies": {
1839 | "concat-stream": {
1840 | "version": "1.5.2",
1841 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
1842 | "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
1843 | "dev": true,
1844 | "requires": {
1845 | "inherits": "2.0.3",
1846 | "readable-stream": "2.0.6",
1847 | "typedarray": "0.0.6"
1848 | }
1849 | },
1850 | "readable-stream": {
1851 | "version": "2.0.6",
1852 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
1853 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
1854 | "dev": true,
1855 | "requires": {
1856 | "core-util-is": "1.0.2",
1857 | "inherits": "2.0.3",
1858 | "isarray": "1.0.0",
1859 | "process-nextick-args": "1.0.7",
1860 | "string_decoder": "0.10.31",
1861 | "util-deprecate": "1.0.2"
1862 | }
1863 | }
1864 | }
1865 | },
1866 | "ip-regex": {
1867 | "version": "1.0.3",
1868 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz",
1869 | "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=",
1870 | "dev": true
1871 | },
1872 | "is-absolute": {
1873 | "version": "0.1.7",
1874 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz",
1875 | "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=",
1876 | "dev": true,
1877 | "requires": {
1878 | "is-relative": "0.1.3"
1879 | }
1880 | },
1881 | "is-arrayish": {
1882 | "version": "0.2.1",
1883 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1884 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1885 | "dev": true
1886 | },
1887 | "is-binary-path": {
1888 | "version": "1.0.1",
1889 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
1890 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
1891 | "dev": true,
1892 | "requires": {
1893 | "binary-extensions": "1.10.0"
1894 | }
1895 | },
1896 | "is-buffer": {
1897 | "version": "1.1.6",
1898 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1899 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1900 | "dev": true
1901 | },
1902 | "is-builtin-module": {
1903 | "version": "1.0.0",
1904 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
1905 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
1906 | "dev": true,
1907 | "requires": {
1908 | "builtin-modules": "1.1.1"
1909 | }
1910 | },
1911 | "is-bzip2": {
1912 | "version": "1.0.0",
1913 | "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz",
1914 | "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=",
1915 | "dev": true
1916 | },
1917 | "is-dotfile": {
1918 | "version": "1.0.3",
1919 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
1920 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
1921 | "dev": true
1922 | },
1923 | "is-equal-shallow": {
1924 | "version": "0.1.3",
1925 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
1926 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
1927 | "dev": true,
1928 | "requires": {
1929 | "is-primitive": "2.0.0"
1930 | }
1931 | },
1932 | "is-extendable": {
1933 | "version": "0.1.1",
1934 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1935 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1936 | "dev": true
1937 | },
1938 | "is-extglob": {
1939 | "version": "1.0.0",
1940 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1941 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1942 | "dev": true
1943 | },
1944 | "is-finite": {
1945 | "version": "1.0.2",
1946 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
1947 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
1948 | "dev": true,
1949 | "requires": {
1950 | "number-is-nan": "1.0.1"
1951 | }
1952 | },
1953 | "is-glob": {
1954 | "version": "2.0.1",
1955 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1956 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1957 | "dev": true,
1958 | "requires": {
1959 | "is-extglob": "1.0.0"
1960 | }
1961 | },
1962 | "is-gzip": {
1963 | "version": "1.0.0",
1964 | "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
1965 | "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=",
1966 | "dev": true
1967 | },
1968 | "is-natural-number": {
1969 | "version": "2.1.1",
1970 | "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz",
1971 | "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=",
1972 | "dev": true
1973 | },
1974 | "is-number": {
1975 | "version": "2.1.0",
1976 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
1977 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
1978 | "dev": true,
1979 | "requires": {
1980 | "kind-of": "3.2.2"
1981 | }
1982 | },
1983 | "is-obj": {
1984 | "version": "1.0.1",
1985 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
1986 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
1987 | "dev": true
1988 | },
1989 | "is-posix-bracket": {
1990 | "version": "0.1.1",
1991 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
1992 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
1993 | "dev": true
1994 | },
1995 | "is-primitive": {
1996 | "version": "2.0.0",
1997 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
1998 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
1999 | "dev": true
2000 | },
2001 | "is-redirect": {
2002 | "version": "1.0.0",
2003 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
2004 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
2005 | "dev": true
2006 | },
2007 | "is-relative": {
2008 | "version": "0.1.3",
2009 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz",
2010 | "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=",
2011 | "dev": true
2012 | },
2013 | "is-retry-allowed": {
2014 | "version": "1.1.0",
2015 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
2016 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
2017 | "dev": true
2018 | },
2019 | "is-stream": {
2020 | "version": "1.1.0",
2021 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
2022 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
2023 | "dev": true
2024 | },
2025 | "is-tar": {
2026 | "version": "1.0.0",
2027 | "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz",
2028 | "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=",
2029 | "dev": true
2030 | },
2031 | "is-url": {
2032 | "version": "1.2.2",
2033 | "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz",
2034 | "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=",
2035 | "dev": true
2036 | },
2037 | "is-utf8": {
2038 | "version": "0.2.1",
2039 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
2040 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
2041 | "dev": true
2042 | },
2043 | "is-valid-glob": {
2044 | "version": "0.3.0",
2045 | "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
2046 | "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
2047 | "dev": true
2048 | },
2049 | "is-zip": {
2050 | "version": "1.0.0",
2051 | "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz",
2052 | "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=",
2053 | "dev": true
2054 | },
2055 | "isarray": {
2056 | "version": "1.0.0",
2057 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2058 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2059 | "dev": true
2060 | },
2061 | "isexe": {
2062 | "version": "2.0.0",
2063 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2064 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2065 | "dev": true
2066 | },
2067 | "isobject": {
2068 | "version": "2.1.0",
2069 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2070 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2071 | "dev": true,
2072 | "requires": {
2073 | "isarray": "1.0.0"
2074 | }
2075 | },
2076 | "json-stable-stringify": {
2077 | "version": "0.0.1",
2078 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
2079 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
2080 | "dev": true,
2081 | "requires": {
2082 | "jsonify": "0.0.0"
2083 | }
2084 | },
2085 | "jsonify": {
2086 | "version": "0.0.0",
2087 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
2088 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
2089 | "dev": true
2090 | },
2091 | "jsonparse": {
2092 | "version": "1.3.1",
2093 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
2094 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
2095 | "dev": true
2096 | },
2097 | "kind-of": {
2098 | "version": "3.2.2",
2099 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2100 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2101 | "dev": true,
2102 | "requires": {
2103 | "is-buffer": "1.1.6"
2104 | }
2105 | },
2106 | "labeled-stream-splicer": {
2107 | "version": "2.0.0",
2108 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz",
2109 | "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=",
2110 | "dev": true,
2111 | "requires": {
2112 | "inherits": "2.0.3",
2113 | "isarray": "0.0.1",
2114 | "stream-splicer": "2.0.0"
2115 | },
2116 | "dependencies": {
2117 | "isarray": {
2118 | "version": "0.0.1",
2119 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2120 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2121 | "dev": true
2122 | }
2123 | }
2124 | },
2125 | "lazy-req": {
2126 | "version": "1.1.0",
2127 | "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz",
2128 | "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=",
2129 | "dev": true
2130 | },
2131 | "lazystream": {
2132 | "version": "1.0.0",
2133 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
2134 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
2135 | "dev": true,
2136 | "requires": {
2137 | "readable-stream": "2.3.3"
2138 | }
2139 | },
2140 | "lexical-scope": {
2141 | "version": "1.2.0",
2142 | "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
2143 | "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
2144 | "dev": true,
2145 | "requires": {
2146 | "astw": "2.2.0"
2147 | }
2148 | },
2149 | "load-json-file": {
2150 | "version": "1.1.0",
2151 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
2152 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
2153 | "dev": true,
2154 | "requires": {
2155 | "graceful-fs": "4.1.11",
2156 | "parse-json": "2.2.0",
2157 | "pify": "2.3.0",
2158 | "pinkie-promise": "2.0.1",
2159 | "strip-bom": "2.0.0"
2160 | }
2161 | },
2162 | "lodash": {
2163 | "version": "4.17.4",
2164 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2165 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2166 | "dev": true
2167 | },
2168 | "lodash._basecopy": {
2169 | "version": "3.0.1",
2170 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
2171 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
2172 | "dev": true
2173 | },
2174 | "lodash._basetostring": {
2175 | "version": "3.0.1",
2176 | "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
2177 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
2178 | "dev": true
2179 | },
2180 | "lodash._basevalues": {
2181 | "version": "3.0.0",
2182 | "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
2183 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
2184 | "dev": true
2185 | },
2186 | "lodash._getnative": {
2187 | "version": "3.9.1",
2188 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
2189 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
2190 | "dev": true
2191 | },
2192 | "lodash._isiterateecall": {
2193 | "version": "3.0.9",
2194 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
2195 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
2196 | "dev": true
2197 | },
2198 | "lodash._reescape": {
2199 | "version": "3.0.0",
2200 | "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
2201 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
2202 | "dev": true
2203 | },
2204 | "lodash._reevaluate": {
2205 | "version": "3.0.0",
2206 | "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
2207 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
2208 | "dev": true
2209 | },
2210 | "lodash._reinterpolate": {
2211 | "version": "3.0.0",
2212 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
2213 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
2214 | "dev": true
2215 | },
2216 | "lodash._root": {
2217 | "version": "3.0.1",
2218 | "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
2219 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
2220 | "dev": true
2221 | },
2222 | "lodash.escape": {
2223 | "version": "3.2.0",
2224 | "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
2225 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
2226 | "dev": true,
2227 | "requires": {
2228 | "lodash._root": "3.0.1"
2229 | }
2230 | },
2231 | "lodash.isarguments": {
2232 | "version": "3.1.0",
2233 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
2234 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
2235 | "dev": true
2236 | },
2237 | "lodash.isarray": {
2238 | "version": "3.0.4",
2239 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
2240 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
2241 | "dev": true
2242 | },
2243 | "lodash.isequal": {
2244 | "version": "4.5.0",
2245 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
2246 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
2247 | "dev": true
2248 | },
2249 | "lodash.keys": {
2250 | "version": "3.1.2",
2251 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
2252 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
2253 | "dev": true,
2254 | "requires": {
2255 | "lodash._getnative": "3.9.1",
2256 | "lodash.isarguments": "3.1.0",
2257 | "lodash.isarray": "3.0.4"
2258 | }
2259 | },
2260 | "lodash.memoize": {
2261 | "version": "3.0.4",
2262 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
2263 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
2264 | "dev": true
2265 | },
2266 | "lodash.restparam": {
2267 | "version": "3.6.1",
2268 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
2269 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
2270 | "dev": true
2271 | },
2272 | "lodash.template": {
2273 | "version": "3.6.2",
2274 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
2275 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
2276 | "dev": true,
2277 | "requires": {
2278 | "lodash._basecopy": "3.0.1",
2279 | "lodash._basetostring": "3.0.1",
2280 | "lodash._basevalues": "3.0.0",
2281 | "lodash._isiterateecall": "3.0.9",
2282 | "lodash._reinterpolate": "3.0.0",
2283 | "lodash.escape": "3.2.0",
2284 | "lodash.keys": "3.1.2",
2285 | "lodash.restparam": "3.6.1",
2286 | "lodash.templatesettings": "3.1.1"
2287 | }
2288 | },
2289 | "lodash.templatesettings": {
2290 | "version": "3.1.1",
2291 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
2292 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
2293 | "dev": true,
2294 | "requires": {
2295 | "lodash._reinterpolate": "3.0.0",
2296 | "lodash.escape": "3.2.0"
2297 | }
2298 | },
2299 | "logalot": {
2300 | "version": "2.1.0",
2301 | "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz",
2302 | "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=",
2303 | "dev": true,
2304 | "requires": {
2305 | "figures": "1.7.0",
2306 | "squeak": "1.3.0"
2307 | }
2308 | },
2309 | "longest": {
2310 | "version": "1.0.1",
2311 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
2312 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
2313 | "dev": true
2314 | },
2315 | "loud-rejection": {
2316 | "version": "1.6.0",
2317 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
2318 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
2319 | "dev": true,
2320 | "requires": {
2321 | "currently-unhandled": "0.4.1",
2322 | "signal-exit": "3.0.2"
2323 | }
2324 | },
2325 | "lowercase-keys": {
2326 | "version": "1.0.0",
2327 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
2328 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
2329 | "dev": true
2330 | },
2331 | "lpad-align": {
2332 | "version": "1.1.2",
2333 | "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
2334 | "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=",
2335 | "dev": true,
2336 | "requires": {
2337 | "get-stdin": "4.0.1",
2338 | "indent-string": "2.1.0",
2339 | "longest": "1.0.1",
2340 | "meow": "3.7.0"
2341 | }
2342 | },
2343 | "map-obj": {
2344 | "version": "1.0.1",
2345 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
2346 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
2347 | "dev": true
2348 | },
2349 | "md5.js": {
2350 | "version": "1.3.4",
2351 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
2352 | "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
2353 | "dev": true,
2354 | "requires": {
2355 | "hash-base": "3.0.4",
2356 | "inherits": "2.0.3"
2357 | },
2358 | "dependencies": {
2359 | "hash-base": {
2360 | "version": "3.0.4",
2361 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
2362 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
2363 | "dev": true,
2364 | "requires": {
2365 | "inherits": "2.0.3",
2366 | "safe-buffer": "5.1.1"
2367 | }
2368 | }
2369 | }
2370 | },
2371 | "meow": {
2372 | "version": "3.7.0",
2373 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
2374 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
2375 | "dev": true,
2376 | "requires": {
2377 | "camelcase-keys": "2.1.0",
2378 | "decamelize": "1.2.0",
2379 | "loud-rejection": "1.6.0",
2380 | "map-obj": "1.0.1",
2381 | "minimist": "1.2.0",
2382 | "normalize-package-data": "2.4.0",
2383 | "object-assign": "4.1.1",
2384 | "read-pkg-up": "1.0.1",
2385 | "redent": "1.0.0",
2386 | "trim-newlines": "1.0.0"
2387 | },
2388 | "dependencies": {
2389 | "object-assign": {
2390 | "version": "4.1.1",
2391 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2392 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
2393 | "dev": true
2394 | }
2395 | }
2396 | },
2397 | "merge-stream": {
2398 | "version": "1.0.1",
2399 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
2400 | "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
2401 | "dev": true,
2402 | "requires": {
2403 | "readable-stream": "2.3.3"
2404 | }
2405 | },
2406 | "micromatch": {
2407 | "version": "2.3.11",
2408 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
2409 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
2410 | "dev": true,
2411 | "requires": {
2412 | "arr-diff": "2.0.0",
2413 | "array-unique": "0.2.1",
2414 | "braces": "1.8.5",
2415 | "expand-brackets": "0.1.5",
2416 | "extglob": "0.3.2",
2417 | "filename-regex": "2.0.1",
2418 | "is-extglob": "1.0.0",
2419 | "is-glob": "2.0.1",
2420 | "kind-of": "3.2.2",
2421 | "normalize-path": "2.1.1",
2422 | "object.omit": "2.0.1",
2423 | "parse-glob": "3.0.4",
2424 | "regex-cache": "0.4.4"
2425 | }
2426 | },
2427 | "miller-rabin": {
2428 | "version": "4.0.1",
2429 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
2430 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
2431 | "dev": true,
2432 | "requires": {
2433 | "bn.js": "4.11.8",
2434 | "brorand": "1.1.0"
2435 | }
2436 | },
2437 | "mime": {
2438 | "version": "1.4.1",
2439 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
2440 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
2441 | "dev": true
2442 | },
2443 | "minimalistic-assert": {
2444 | "version": "1.0.0",
2445 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
2446 | "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
2447 | "dev": true
2448 | },
2449 | "minimalistic-crypto-utils": {
2450 | "version": "1.0.1",
2451 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
2452 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
2453 | "dev": true
2454 | },
2455 | "minimatch": {
2456 | "version": "3.0.4",
2457 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2458 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2459 | "dev": true,
2460 | "requires": {
2461 | "brace-expansion": "1.1.8"
2462 | }
2463 | },
2464 | "minimist": {
2465 | "version": "1.2.0",
2466 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2467 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
2468 | "dev": true
2469 | },
2470 | "mkdirp": {
2471 | "version": "0.5.1",
2472 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2473 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
2474 | "dev": true,
2475 | "requires": {
2476 | "minimist": "0.0.8"
2477 | },
2478 | "dependencies": {
2479 | "minimist": {
2480 | "version": "0.0.8",
2481 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2482 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2483 | "dev": true
2484 | }
2485 | }
2486 | },
2487 | "module-deps": {
2488 | "version": "4.1.1",
2489 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
2490 | "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
2491 | "dev": true,
2492 | "requires": {
2493 | "JSONStream": "1.3.1",
2494 | "browser-resolve": "1.11.2",
2495 | "cached-path-relative": "1.0.1",
2496 | "concat-stream": "1.5.2",
2497 | "defined": "1.0.0",
2498 | "detective": "4.5.0",
2499 | "duplexer2": "0.1.4",
2500 | "inherits": "2.0.3",
2501 | "parents": "1.0.1",
2502 | "readable-stream": "2.3.3",
2503 | "resolve": "1.5.0",
2504 | "stream-combiner2": "1.1.1",
2505 | "subarg": "1.0.0",
2506 | "through2": "2.0.3",
2507 | "xtend": "4.0.1"
2508 | },
2509 | "dependencies": {
2510 | "concat-stream": {
2511 | "version": "1.5.2",
2512 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
2513 | "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
2514 | "dev": true,
2515 | "requires": {
2516 | "inherits": "2.0.3",
2517 | "readable-stream": "2.0.6",
2518 | "typedarray": "0.0.6"
2519 | },
2520 | "dependencies": {
2521 | "readable-stream": {
2522 | "version": "2.0.6",
2523 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
2524 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
2525 | "dev": true,
2526 | "requires": {
2527 | "core-util-is": "1.0.2",
2528 | "inherits": "2.0.3",
2529 | "isarray": "1.0.0",
2530 | "process-nextick-args": "1.0.7",
2531 | "string_decoder": "0.10.31",
2532 | "util-deprecate": "1.0.2"
2533 | }
2534 | }
2535 | }
2536 | }
2537 | }
2538 | },
2539 | "multipipe": {
2540 | "version": "0.1.2",
2541 | "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
2542 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
2543 | "dev": true,
2544 | "requires": {
2545 | "duplexer2": "0.0.2"
2546 | },
2547 | "dependencies": {
2548 | "duplexer2": {
2549 | "version": "0.0.2",
2550 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
2551 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
2552 | "dev": true,
2553 | "requires": {
2554 | "readable-stream": "1.1.14"
2555 | }
2556 | },
2557 | "isarray": {
2558 | "version": "0.0.1",
2559 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2560 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2561 | "dev": true
2562 | },
2563 | "readable-stream": {
2564 | "version": "1.1.14",
2565 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
2566 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
2567 | "dev": true,
2568 | "requires": {
2569 | "core-util-is": "1.0.2",
2570 | "inherits": "2.0.3",
2571 | "isarray": "0.0.1",
2572 | "string_decoder": "0.10.31"
2573 | }
2574 | }
2575 | }
2576 | },
2577 | "mute-stream": {
2578 | "version": "0.0.7",
2579 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
2580 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
2581 | "dev": true
2582 | },
2583 | "node-static": {
2584 | "version": "0.7.10",
2585 | "resolved": "https://registry.npmjs.org/node-static/-/node-static-0.7.10.tgz",
2586 | "integrity": "sha512-bd7zO5hvCWzdglgwz9t82T4mYTEUzEG5pXnSqEzitvmEacusbhl8/VwuCbMaYR9g2PNK5191yBtAEQLJEmQh1A==",
2587 | "dev": true,
2588 | "requires": {
2589 | "colors": "1.1.2",
2590 | "mime": "1.4.1",
2591 | "optimist": "0.6.1"
2592 | }
2593 | },
2594 | "node-status-codes": {
2595 | "version": "1.0.0",
2596 | "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
2597 | "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
2598 | "dev": true
2599 | },
2600 | "normalize-package-data": {
2601 | "version": "2.4.0",
2602 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
2603 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
2604 | "dev": true,
2605 | "requires": {
2606 | "hosted-git-info": "2.5.0",
2607 | "is-builtin-module": "1.0.0",
2608 | "semver": "5.4.1",
2609 | "validate-npm-package-license": "3.0.1"
2610 | }
2611 | },
2612 | "normalize-path": {
2613 | "version": "2.1.1",
2614 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
2615 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
2616 | "dev": true,
2617 | "requires": {
2618 | "remove-trailing-separator": "1.1.0"
2619 | }
2620 | },
2621 | "number-is-nan": {
2622 | "version": "1.0.1",
2623 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
2624 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
2625 | "dev": true
2626 | },
2627 | "object-assign": {
2628 | "version": "2.1.1",
2629 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
2630 | "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
2631 | "dev": true
2632 | },
2633 | "object.omit": {
2634 | "version": "2.0.1",
2635 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
2636 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
2637 | "dev": true,
2638 | "requires": {
2639 | "for-own": "0.1.5",
2640 | "is-extendable": "0.1.1"
2641 | }
2642 | },
2643 | "once": {
2644 | "version": "1.4.0",
2645 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2646 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2647 | "dev": true,
2648 | "requires": {
2649 | "wrappy": "1.0.2"
2650 | }
2651 | },
2652 | "onetime": {
2653 | "version": "1.1.0",
2654 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
2655 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
2656 | "dev": true
2657 | },
2658 | "optimist": {
2659 | "version": "0.6.1",
2660 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
2661 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
2662 | "dev": true,
2663 | "requires": {
2664 | "minimist": "0.0.10",
2665 | "wordwrap": "0.0.3"
2666 | },
2667 | "dependencies": {
2668 | "minimist": {
2669 | "version": "0.0.10",
2670 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
2671 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
2672 | "dev": true
2673 | },
2674 | "wordwrap": {
2675 | "version": "0.0.3",
2676 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
2677 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
2678 | "dev": true
2679 | }
2680 | }
2681 | },
2682 | "ordered-read-streams": {
2683 | "version": "0.3.0",
2684 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
2685 | "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
2686 | "dev": true,
2687 | "requires": {
2688 | "is-stream": "1.1.0",
2689 | "readable-stream": "2.3.3"
2690 | }
2691 | },
2692 | "os-browserify": {
2693 | "version": "0.1.2",
2694 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
2695 | "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=",
2696 | "dev": true
2697 | },
2698 | "os-filter-obj": {
2699 | "version": "1.0.3",
2700 | "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz",
2701 | "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=",
2702 | "dev": true
2703 | },
2704 | "os-tmpdir": {
2705 | "version": "1.0.2",
2706 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2707 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2708 | "dev": true
2709 | },
2710 | "pako": {
2711 | "version": "0.2.9",
2712 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
2713 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
2714 | "dev": true
2715 | },
2716 | "parents": {
2717 | "version": "1.0.1",
2718 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
2719 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
2720 | "dev": true,
2721 | "requires": {
2722 | "path-platform": "0.11.15"
2723 | }
2724 | },
2725 | "parse-asn1": {
2726 | "version": "5.1.0",
2727 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
2728 | "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
2729 | "dev": true,
2730 | "requires": {
2731 | "asn1.js": "4.9.2",
2732 | "browserify-aes": "1.1.1",
2733 | "create-hash": "1.1.3",
2734 | "evp_bytestokey": "1.0.3",
2735 | "pbkdf2": "3.0.14"
2736 | }
2737 | },
2738 | "parse-glob": {
2739 | "version": "3.0.4",
2740 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
2741 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
2742 | "dev": true,
2743 | "requires": {
2744 | "glob-base": "0.3.0",
2745 | "is-dotfile": "1.0.3",
2746 | "is-extglob": "1.0.0",
2747 | "is-glob": "2.0.1"
2748 | }
2749 | },
2750 | "parse-json": {
2751 | "version": "2.2.0",
2752 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
2753 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
2754 | "dev": true,
2755 | "requires": {
2756 | "error-ex": "1.3.1"
2757 | }
2758 | },
2759 | "path-browserify": {
2760 | "version": "0.0.0",
2761 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
2762 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
2763 | "dev": true
2764 | },
2765 | "path-dirname": {
2766 | "version": "1.0.2",
2767 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
2768 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
2769 | "dev": true
2770 | },
2771 | "path-exists": {
2772 | "version": "2.1.0",
2773 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
2774 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
2775 | "dev": true,
2776 | "requires": {
2777 | "pinkie-promise": "2.0.1"
2778 | }
2779 | },
2780 | "path-is-absolute": {
2781 | "version": "1.0.1",
2782 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2783 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2784 | "dev": true
2785 | },
2786 | "path-parse": {
2787 | "version": "1.0.5",
2788 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
2789 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
2790 | "dev": true
2791 | },
2792 | "path-platform": {
2793 | "version": "0.11.15",
2794 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
2795 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
2796 | "dev": true
2797 | },
2798 | "path-type": {
2799 | "version": "1.1.0",
2800 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
2801 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
2802 | "dev": true,
2803 | "requires": {
2804 | "graceful-fs": "4.1.11",
2805 | "pify": "2.3.0",
2806 | "pinkie-promise": "2.0.1"
2807 | }
2808 | },
2809 | "pbkdf2": {
2810 | "version": "3.0.14",
2811 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
2812 | "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
2813 | "dev": true,
2814 | "requires": {
2815 | "create-hash": "1.1.3",
2816 | "create-hmac": "1.1.6",
2817 | "ripemd160": "2.0.1",
2818 | "safe-buffer": "5.1.1",
2819 | "sha.js": "2.4.9"
2820 | }
2821 | },
2822 | "pend": {
2823 | "version": "1.2.0",
2824 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
2825 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
2826 | "dev": true
2827 | },
2828 | "pify": {
2829 | "version": "2.3.0",
2830 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2831 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2832 | "dev": true
2833 | },
2834 | "pinkie": {
2835 | "version": "2.0.4",
2836 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
2837 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
2838 | "dev": true
2839 | },
2840 | "pinkie-promise": {
2841 | "version": "2.0.1",
2842 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
2843 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
2844 | "dev": true,
2845 | "requires": {
2846 | "pinkie": "2.0.4"
2847 | }
2848 | },
2849 | "prepend-http": {
2850 | "version": "1.0.4",
2851 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
2852 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
2853 | "dev": true
2854 | },
2855 | "preserve": {
2856 | "version": "0.2.0",
2857 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
2858 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
2859 | "dev": true
2860 | },
2861 | "process": {
2862 | "version": "0.11.10",
2863 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
2864 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
2865 | "dev": true
2866 | },
2867 | "process-nextick-args": {
2868 | "version": "1.0.7",
2869 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
2870 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
2871 | "dev": true
2872 | },
2873 | "public-encrypt": {
2874 | "version": "4.0.0",
2875 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
2876 | "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
2877 | "dev": true,
2878 | "requires": {
2879 | "bn.js": "4.11.8",
2880 | "browserify-rsa": "4.0.1",
2881 | "create-hash": "1.1.3",
2882 | "parse-asn1": "5.1.0",
2883 | "randombytes": "2.0.5"
2884 | }
2885 | },
2886 | "pulp": {
2887 | "version": "12.0.1",
2888 | "resolved": "https://registry.npmjs.org/pulp/-/pulp-12.0.1.tgz",
2889 | "integrity": "sha512-nm+/cLqMhm5nkyX4SDA00tCENPZfuDi7TIcMRPgONZjozyO+0OnEYLFECtfmMCGYqrEGrs0epHLAcUnz9tEE7A==",
2890 | "dev": true,
2891 | "requires": {
2892 | "browserify": "13.3.0",
2893 | "browserify-incremental": "3.1.1",
2894 | "concat-stream": "1.6.0",
2895 | "glob": "7.1.2",
2896 | "minimatch": "3.0.4",
2897 | "node-static": "0.7.10",
2898 | "read": "1.0.7",
2899 | "string-stream": "0.0.7",
2900 | "temp": "0.8.3",
2901 | "through": "2.3.8",
2902 | "tree-kill": "1.2.0",
2903 | "watchpack": "1.4.0",
2904 | "which": "1.3.0",
2905 | "wordwrap": "1.0.0"
2906 | }
2907 | },
2908 | "punycode": {
2909 | "version": "1.4.1",
2910 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2911 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2912 | "dev": true
2913 | },
2914 | "purescript": {
2915 | "version": "0.11.6",
2916 | "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.11.6.tgz",
2917 | "integrity": "sha512-KTZpBWMkyTnovshWrqwvAJGLTdQ+X/bdDulyyWkZgbukSUKbLG7mzJgl2+EXiZMBBrqe3NDJQgiDSOnqxsab6Q==",
2918 | "dev": true,
2919 | "requires": {
2920 | "bin-build": "2.2.0",
2921 | "bin-wrapper": "3.0.2",
2922 | "logalot": "2.1.0",
2923 | "rimraf": "2.6.2",
2924 | "to-executable-name": "1.1.1"
2925 | },
2926 | "dependencies": {
2927 | "rimraf": {
2928 | "version": "2.6.2",
2929 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
2930 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
2931 | "dev": true,
2932 | "requires": {
2933 | "glob": "7.1.2"
2934 | }
2935 | }
2936 | }
2937 | },
2938 | "querystring": {
2939 | "version": "0.2.0",
2940 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
2941 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
2942 | "dev": true
2943 | },
2944 | "querystring-es3": {
2945 | "version": "0.2.1",
2946 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
2947 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
2948 | "dev": true
2949 | },
2950 | "randomatic": {
2951 | "version": "1.1.7",
2952 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
2953 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
2954 | "dev": true,
2955 | "requires": {
2956 | "is-number": "3.0.0",
2957 | "kind-of": "4.0.0"
2958 | },
2959 | "dependencies": {
2960 | "is-number": {
2961 | "version": "3.0.0",
2962 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2963 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2964 | "dev": true,
2965 | "requires": {
2966 | "kind-of": "3.2.2"
2967 | },
2968 | "dependencies": {
2969 | "kind-of": {
2970 | "version": "3.2.2",
2971 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2972 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2973 | "dev": true,
2974 | "requires": {
2975 | "is-buffer": "1.1.6"
2976 | }
2977 | }
2978 | }
2979 | },
2980 | "kind-of": {
2981 | "version": "4.0.0",
2982 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
2983 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
2984 | "dev": true,
2985 | "requires": {
2986 | "is-buffer": "1.1.6"
2987 | }
2988 | }
2989 | }
2990 | },
2991 | "randombytes": {
2992 | "version": "2.0.5",
2993 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
2994 | "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
2995 | "dev": true,
2996 | "requires": {
2997 | "safe-buffer": "5.1.1"
2998 | }
2999 | },
3000 | "rc": {
3001 | "version": "1.2.2",
3002 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
3003 | "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
3004 | "dev": true,
3005 | "requires": {
3006 | "deep-extend": "0.4.2",
3007 | "ini": "1.3.4",
3008 | "minimist": "1.2.0",
3009 | "strip-json-comments": "2.0.1"
3010 | }
3011 | },
3012 | "read": {
3013 | "version": "1.0.7",
3014 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
3015 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
3016 | "dev": true,
3017 | "requires": {
3018 | "mute-stream": "0.0.7"
3019 | }
3020 | },
3021 | "read-all-stream": {
3022 | "version": "3.1.0",
3023 | "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
3024 | "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
3025 | "dev": true,
3026 | "requires": {
3027 | "pinkie-promise": "2.0.1",
3028 | "readable-stream": "2.3.3"
3029 | }
3030 | },
3031 | "read-only-stream": {
3032 | "version": "2.0.0",
3033 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
3034 | "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
3035 | "dev": true,
3036 | "requires": {
3037 | "readable-stream": "2.3.3"
3038 | }
3039 | },
3040 | "read-pkg": {
3041 | "version": "1.1.0",
3042 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
3043 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
3044 | "dev": true,
3045 | "requires": {
3046 | "load-json-file": "1.1.0",
3047 | "normalize-package-data": "2.4.0",
3048 | "path-type": "1.1.0"
3049 | }
3050 | },
3051 | "read-pkg-up": {
3052 | "version": "1.0.1",
3053 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
3054 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
3055 | "dev": true,
3056 | "requires": {
3057 | "find-up": "1.1.2",
3058 | "read-pkg": "1.1.0"
3059 | }
3060 | },
3061 | "readable-stream": {
3062 | "version": "2.3.3",
3063 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
3064 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
3065 | "dev": true,
3066 | "requires": {
3067 | "core-util-is": "1.0.2",
3068 | "inherits": "2.0.3",
3069 | "isarray": "1.0.0",
3070 | "process-nextick-args": "1.0.7",
3071 | "safe-buffer": "5.1.1",
3072 | "string_decoder": "1.0.3",
3073 | "util-deprecate": "1.0.2"
3074 | },
3075 | "dependencies": {
3076 | "string_decoder": {
3077 | "version": "1.0.3",
3078 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
3079 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
3080 | "dev": true,
3081 | "requires": {
3082 | "safe-buffer": "5.1.1"
3083 | }
3084 | }
3085 | }
3086 | },
3087 | "readdirp": {
3088 | "version": "2.1.0",
3089 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
3090 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
3091 | "dev": true,
3092 | "requires": {
3093 | "graceful-fs": "4.1.11",
3094 | "minimatch": "3.0.4",
3095 | "readable-stream": "2.3.3",
3096 | "set-immediate-shim": "1.0.1"
3097 | }
3098 | },
3099 | "redent": {
3100 | "version": "1.0.0",
3101 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
3102 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
3103 | "dev": true,
3104 | "requires": {
3105 | "indent-string": "2.1.0",
3106 | "strip-indent": "1.0.1"
3107 | }
3108 | },
3109 | "regex-cache": {
3110 | "version": "0.4.4",
3111 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
3112 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
3113 | "dev": true,
3114 | "requires": {
3115 | "is-equal-shallow": "0.1.3"
3116 | }
3117 | },
3118 | "remove-trailing-separator": {
3119 | "version": "1.1.0",
3120 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
3121 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
3122 | "dev": true
3123 | },
3124 | "repeat-element": {
3125 | "version": "1.1.2",
3126 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
3127 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
3128 | "dev": true
3129 | },
3130 | "repeat-string": {
3131 | "version": "1.6.1",
3132 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3133 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3134 | "dev": true
3135 | },
3136 | "repeating": {
3137 | "version": "2.0.1",
3138 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
3139 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
3140 | "dev": true,
3141 | "requires": {
3142 | "is-finite": "1.0.2"
3143 | }
3144 | },
3145 | "replace-ext": {
3146 | "version": "0.0.1",
3147 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
3148 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
3149 | "dev": true
3150 | },
3151 | "resolve": {
3152 | "version": "1.5.0",
3153 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
3154 | "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
3155 | "dev": true,
3156 | "requires": {
3157 | "path-parse": "1.0.5"
3158 | }
3159 | },
3160 | "rimraf": {
3161 | "version": "2.2.8",
3162 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
3163 | "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
3164 | "dev": true
3165 | },
3166 | "ripemd160": {
3167 | "version": "2.0.1",
3168 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
3169 | "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
3170 | "dev": true,
3171 | "requires": {
3172 | "hash-base": "2.0.2",
3173 | "inherits": "2.0.3"
3174 | }
3175 | },
3176 | "safe-buffer": {
3177 | "version": "5.1.1",
3178 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
3179 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
3180 | "dev": true
3181 | },
3182 | "seek-bzip": {
3183 | "version": "1.0.5",
3184 | "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz",
3185 | "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=",
3186 | "dev": true,
3187 | "requires": {
3188 | "commander": "2.8.1"
3189 | }
3190 | },
3191 | "semver": {
3192 | "version": "5.4.1",
3193 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
3194 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
3195 | "dev": true
3196 | },
3197 | "semver-regex": {
3198 | "version": "1.0.0",
3199 | "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz",
3200 | "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=",
3201 | "dev": true
3202 | },
3203 | "semver-truncate": {
3204 | "version": "1.1.2",
3205 | "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz",
3206 | "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=",
3207 | "dev": true,
3208 | "requires": {
3209 | "semver": "5.4.1"
3210 | }
3211 | },
3212 | "set-immediate-shim": {
3213 | "version": "1.0.1",
3214 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
3215 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
3216 | "dev": true
3217 | },
3218 | "sha.js": {
3219 | "version": "2.4.9",
3220 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
3221 | "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
3222 | "dev": true,
3223 | "requires": {
3224 | "inherits": "2.0.3",
3225 | "safe-buffer": "5.1.1"
3226 | }
3227 | },
3228 | "shasum": {
3229 | "version": "1.0.2",
3230 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
3231 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
3232 | "dev": true,
3233 | "requires": {
3234 | "json-stable-stringify": "0.0.1",
3235 | "sha.js": "2.4.9"
3236 | }
3237 | },
3238 | "shell-quote": {
3239 | "version": "1.6.1",
3240 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
3241 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
3242 | "dev": true,
3243 | "requires": {
3244 | "array-filter": "0.0.1",
3245 | "array-map": "0.0.0",
3246 | "array-reduce": "0.0.0",
3247 | "jsonify": "0.0.0"
3248 | }
3249 | },
3250 | "signal-exit": {
3251 | "version": "3.0.2",
3252 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3253 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3254 | "dev": true
3255 | },
3256 | "source-map": {
3257 | "version": "0.5.7",
3258 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3259 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
3260 | "dev": true
3261 | },
3262 | "sparkles": {
3263 | "version": "1.0.0",
3264 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
3265 | "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
3266 | "dev": true
3267 | },
3268 | "spdx-correct": {
3269 | "version": "1.0.2",
3270 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
3271 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
3272 | "dev": true,
3273 | "requires": {
3274 | "spdx-license-ids": "1.2.2"
3275 | }
3276 | },
3277 | "spdx-expression-parse": {
3278 | "version": "1.0.4",
3279 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
3280 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
3281 | "dev": true
3282 | },
3283 | "spdx-license-ids": {
3284 | "version": "1.2.2",
3285 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
3286 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
3287 | "dev": true
3288 | },
3289 | "squeak": {
3290 | "version": "1.3.0",
3291 | "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz",
3292 | "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=",
3293 | "dev": true,
3294 | "requires": {
3295 | "chalk": "1.1.3",
3296 | "console-stream": "0.1.1",
3297 | "lpad-align": "1.1.2"
3298 | }
3299 | },
3300 | "stat-mode": {
3301 | "version": "0.2.2",
3302 | "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
3303 | "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
3304 | "dev": true
3305 | },
3306 | "stream-browserify": {
3307 | "version": "2.0.1",
3308 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
3309 | "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
3310 | "dev": true,
3311 | "requires": {
3312 | "inherits": "2.0.3",
3313 | "readable-stream": "2.3.3"
3314 | }
3315 | },
3316 | "stream-combiner2": {
3317 | "version": "1.1.1",
3318 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
3319 | "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
3320 | "dev": true,
3321 | "requires": {
3322 | "duplexer2": "0.1.4",
3323 | "readable-stream": "2.3.3"
3324 | }
3325 | },
3326 | "stream-http": {
3327 | "version": "2.7.2",
3328 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
3329 | "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
3330 | "dev": true,
3331 | "requires": {
3332 | "builtin-status-codes": "3.0.0",
3333 | "inherits": "2.0.3",
3334 | "readable-stream": "2.3.3",
3335 | "to-arraybuffer": "1.0.1",
3336 | "xtend": "4.0.1"
3337 | }
3338 | },
3339 | "stream-shift": {
3340 | "version": "1.0.0",
3341 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
3342 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
3343 | "dev": true
3344 | },
3345 | "stream-splicer": {
3346 | "version": "2.0.0",
3347 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
3348 | "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
3349 | "dev": true,
3350 | "requires": {
3351 | "inherits": "2.0.3",
3352 | "readable-stream": "2.3.3"
3353 | }
3354 | },
3355 | "string-stream": {
3356 | "version": "0.0.7",
3357 | "resolved": "https://registry.npmjs.org/string-stream/-/string-stream-0.0.7.tgz",
3358 | "integrity": "sha1-z83oJ5n6YvMDQpqqeTNu6INDMv4=",
3359 | "dev": true
3360 | },
3361 | "string_decoder": {
3362 | "version": "0.10.31",
3363 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
3364 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
3365 | "dev": true
3366 | },
3367 | "strip-ansi": {
3368 | "version": "3.0.1",
3369 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
3370 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
3371 | "dev": true,
3372 | "requires": {
3373 | "ansi-regex": "2.1.1"
3374 | }
3375 | },
3376 | "strip-bom": {
3377 | "version": "2.0.0",
3378 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
3379 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
3380 | "dev": true,
3381 | "requires": {
3382 | "is-utf8": "0.2.1"
3383 | }
3384 | },
3385 | "strip-bom-stream": {
3386 | "version": "1.0.0",
3387 | "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
3388 | "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
3389 | "dev": true,
3390 | "requires": {
3391 | "first-chunk-stream": "1.0.0",
3392 | "strip-bom": "2.0.0"
3393 | }
3394 | },
3395 | "strip-dirs": {
3396 | "version": "1.1.1",
3397 | "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz",
3398 | "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=",
3399 | "dev": true,
3400 | "requires": {
3401 | "chalk": "1.1.3",
3402 | "get-stdin": "4.0.1",
3403 | "is-absolute": "0.1.7",
3404 | "is-natural-number": "2.1.1",
3405 | "minimist": "1.2.0",
3406 | "sum-up": "1.0.3"
3407 | }
3408 | },
3409 | "strip-indent": {
3410 | "version": "1.0.1",
3411 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
3412 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
3413 | "dev": true,
3414 | "requires": {
3415 | "get-stdin": "4.0.1"
3416 | }
3417 | },
3418 | "strip-json-comments": {
3419 | "version": "2.0.1",
3420 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
3421 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
3422 | "dev": true
3423 | },
3424 | "strip-outer": {
3425 | "version": "1.0.0",
3426 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz",
3427 | "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=",
3428 | "dev": true,
3429 | "requires": {
3430 | "escape-string-regexp": "1.0.5"
3431 | }
3432 | },
3433 | "subarg": {
3434 | "version": "1.0.0",
3435 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
3436 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
3437 | "dev": true,
3438 | "requires": {
3439 | "minimist": "1.2.0"
3440 | }
3441 | },
3442 | "sum-up": {
3443 | "version": "1.0.3",
3444 | "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz",
3445 | "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=",
3446 | "dev": true,
3447 | "requires": {
3448 | "chalk": "1.1.3"
3449 | }
3450 | },
3451 | "supports-color": {
3452 | "version": "2.0.0",
3453 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
3454 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
3455 | "dev": true
3456 | },
3457 | "syntax-error": {
3458 | "version": "1.3.0",
3459 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz",
3460 | "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=",
3461 | "dev": true,
3462 | "requires": {
3463 | "acorn": "4.0.13"
3464 | }
3465 | },
3466 | "tar-stream": {
3467 | "version": "1.5.4",
3468 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz",
3469 | "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=",
3470 | "dev": true,
3471 | "requires": {
3472 | "bl": "1.2.1",
3473 | "end-of-stream": "1.4.0",
3474 | "readable-stream": "2.3.3",
3475 | "xtend": "4.0.1"
3476 | }
3477 | },
3478 | "temp": {
3479 | "version": "0.8.3",
3480 | "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
3481 | "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
3482 | "dev": true,
3483 | "requires": {
3484 | "os-tmpdir": "1.0.2",
3485 | "rimraf": "2.2.8"
3486 | }
3487 | },
3488 | "tempfile": {
3489 | "version": "1.1.1",
3490 | "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
3491 | "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
3492 | "dev": true,
3493 | "requires": {
3494 | "os-tmpdir": "1.0.2",
3495 | "uuid": "2.0.3"
3496 | }
3497 | },
3498 | "through": {
3499 | "version": "2.3.8",
3500 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
3501 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
3502 | "dev": true
3503 | },
3504 | "through2": {
3505 | "version": "2.0.3",
3506 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
3507 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
3508 | "dev": true,
3509 | "requires": {
3510 | "readable-stream": "2.3.3",
3511 | "xtend": "4.0.1"
3512 | }
3513 | },
3514 | "through2-filter": {
3515 | "version": "2.0.0",
3516 | "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
3517 | "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
3518 | "dev": true,
3519 | "requires": {
3520 | "through2": "2.0.3",
3521 | "xtend": "4.0.1"
3522 | }
3523 | },
3524 | "time-stamp": {
3525 | "version": "1.1.0",
3526 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
3527 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
3528 | "dev": true
3529 | },
3530 | "timed-out": {
3531 | "version": "3.1.3",
3532 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
3533 | "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=",
3534 | "dev": true
3535 | },
3536 | "timers-browserify": {
3537 | "version": "1.4.2",
3538 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
3539 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
3540 | "dev": true,
3541 | "requires": {
3542 | "process": "0.11.10"
3543 | }
3544 | },
3545 | "to-absolute-glob": {
3546 | "version": "0.1.1",
3547 | "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
3548 | "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
3549 | "dev": true,
3550 | "requires": {
3551 | "extend-shallow": "2.0.1"
3552 | }
3553 | },
3554 | "to-arraybuffer": {
3555 | "version": "1.0.1",
3556 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
3557 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
3558 | "dev": true
3559 | },
3560 | "to-executable-name": {
3561 | "version": "1.1.1",
3562 | "resolved": "https://registry.npmjs.org/to-executable-name/-/to-executable-name-1.1.1.tgz",
3563 | "integrity": "sha512-r+6FRFK8VnpimozExAVA9b5WXgo9e8W04UHqfToyhY4hznxygCdp5zww8lei55hNnZuyw5xWZjhZooq4c4kieA==",
3564 | "dev": true
3565 | },
3566 | "todomvc-app-css": {
3567 | "version": "2.1.0",
3568 | "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz",
3569 | "integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU="
3570 | },
3571 | "todomvc-common": {
3572 | "version": "1.0.4",
3573 | "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz",
3574 | "integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw=="
3575 | },
3576 | "tree-kill": {
3577 | "version": "1.2.0",
3578 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
3579 | "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
3580 | "dev": true
3581 | },
3582 | "trim-newlines": {
3583 | "version": "1.0.0",
3584 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
3585 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
3586 | "dev": true
3587 | },
3588 | "trim-repeated": {
3589 | "version": "1.0.0",
3590 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
3591 | "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
3592 | "dev": true,
3593 | "requires": {
3594 | "escape-string-regexp": "1.0.5"
3595 | }
3596 | },
3597 | "tty-browserify": {
3598 | "version": "0.0.0",
3599 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
3600 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
3601 | "dev": true
3602 | },
3603 | "tunnel-agent": {
3604 | "version": "0.4.3",
3605 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
3606 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
3607 | "dev": true
3608 | },
3609 | "typedarray": {
3610 | "version": "0.0.6",
3611 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3612 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3613 | "dev": true
3614 | },
3615 | "umd": {
3616 | "version": "3.0.1",
3617 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz",
3618 | "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=",
3619 | "dev": true
3620 | },
3621 | "unique-stream": {
3622 | "version": "2.2.1",
3623 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
3624 | "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
3625 | "dev": true,
3626 | "requires": {
3627 | "json-stable-stringify": "1.0.1",
3628 | "through2-filter": "2.0.0"
3629 | },
3630 | "dependencies": {
3631 | "json-stable-stringify": {
3632 | "version": "1.0.1",
3633 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
3634 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
3635 | "dev": true,
3636 | "requires": {
3637 | "jsonify": "0.0.0"
3638 | }
3639 | }
3640 | }
3641 | },
3642 | "unzip-response": {
3643 | "version": "1.0.2",
3644 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
3645 | "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
3646 | "dev": true
3647 | },
3648 | "url": {
3649 | "version": "0.11.0",
3650 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
3651 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
3652 | "dev": true,
3653 | "requires": {
3654 | "punycode": "1.3.2",
3655 | "querystring": "0.2.0"
3656 | },
3657 | "dependencies": {
3658 | "punycode": {
3659 | "version": "1.3.2",
3660 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
3661 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
3662 | "dev": true
3663 | }
3664 | }
3665 | },
3666 | "url-parse-lax": {
3667 | "version": "1.0.0",
3668 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
3669 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
3670 | "dev": true,
3671 | "requires": {
3672 | "prepend-http": "1.0.4"
3673 | }
3674 | },
3675 | "url-regex": {
3676 | "version": "3.2.0",
3677 | "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz",
3678 | "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=",
3679 | "dev": true,
3680 | "requires": {
3681 | "ip-regex": "1.0.3"
3682 | }
3683 | },
3684 | "util": {
3685 | "version": "0.10.3",
3686 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
3687 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
3688 | "dev": true,
3689 | "requires": {
3690 | "inherits": "2.0.1"
3691 | },
3692 | "dependencies": {
3693 | "inherits": {
3694 | "version": "2.0.1",
3695 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
3696 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
3697 | "dev": true
3698 | }
3699 | }
3700 | },
3701 | "util-deprecate": {
3702 | "version": "1.0.2",
3703 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3704 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3705 | "dev": true
3706 | },
3707 | "uuid": {
3708 | "version": "2.0.3",
3709 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
3710 | "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
3711 | "dev": true
3712 | },
3713 | "vali-date": {
3714 | "version": "1.0.0",
3715 | "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
3716 | "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
3717 | "dev": true
3718 | },
3719 | "validate-npm-package-license": {
3720 | "version": "3.0.1",
3721 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
3722 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
3723 | "dev": true,
3724 | "requires": {
3725 | "spdx-correct": "1.0.2",
3726 | "spdx-expression-parse": "1.0.4"
3727 | }
3728 | },
3729 | "vinyl": {
3730 | "version": "1.2.0",
3731 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
3732 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
3733 | "dev": true,
3734 | "requires": {
3735 | "clone": "1.0.2",
3736 | "clone-stats": "0.0.1",
3737 | "replace-ext": "0.0.1"
3738 | }
3739 | },
3740 | "vinyl-assign": {
3741 | "version": "1.2.1",
3742 | "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz",
3743 | "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=",
3744 | "dev": true,
3745 | "requires": {
3746 | "object-assign": "4.1.1",
3747 | "readable-stream": "2.3.3"
3748 | },
3749 | "dependencies": {
3750 | "object-assign": {
3751 | "version": "4.1.1",
3752 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3753 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3754 | "dev": true
3755 | }
3756 | }
3757 | },
3758 | "vinyl-fs": {
3759 | "version": "2.4.4",
3760 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
3761 | "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
3762 | "dev": true,
3763 | "requires": {
3764 | "duplexify": "3.5.1",
3765 | "glob-stream": "5.3.5",
3766 | "graceful-fs": "4.1.11",
3767 | "gulp-sourcemaps": "1.6.0",
3768 | "is-valid-glob": "0.3.0",
3769 | "lazystream": "1.0.0",
3770 | "lodash.isequal": "4.5.0",
3771 | "merge-stream": "1.0.1",
3772 | "mkdirp": "0.5.1",
3773 | "object-assign": "4.1.1",
3774 | "readable-stream": "2.3.3",
3775 | "strip-bom": "2.0.0",
3776 | "strip-bom-stream": "1.0.0",
3777 | "through2": "2.0.3",
3778 | "through2-filter": "2.0.0",
3779 | "vali-date": "1.0.0",
3780 | "vinyl": "1.2.0"
3781 | },
3782 | "dependencies": {
3783 | "object-assign": {
3784 | "version": "4.1.1",
3785 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3786 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3787 | "dev": true
3788 | }
3789 | }
3790 | },
3791 | "vm-browserify": {
3792 | "version": "0.0.4",
3793 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
3794 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
3795 | "dev": true,
3796 | "requires": {
3797 | "indexof": "0.0.1"
3798 | }
3799 | },
3800 | "ware": {
3801 | "version": "1.3.0",
3802 | "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz",
3803 | "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=",
3804 | "dev": true,
3805 | "requires": {
3806 | "wrap-fn": "0.1.5"
3807 | }
3808 | },
3809 | "watchpack": {
3810 | "version": "1.4.0",
3811 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
3812 | "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",
3813 | "dev": true,
3814 | "requires": {
3815 | "async": "2.5.0",
3816 | "chokidar": "1.7.0",
3817 | "graceful-fs": "4.1.11"
3818 | },
3819 | "dependencies": {
3820 | "async": {
3821 | "version": "2.5.0",
3822 | "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
3823 | "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
3824 | "dev": true,
3825 | "requires": {
3826 | "lodash": "4.17.4"
3827 | }
3828 | }
3829 | }
3830 | },
3831 | "which": {
3832 | "version": "1.3.0",
3833 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
3834 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
3835 | "dev": true,
3836 | "requires": {
3837 | "isexe": "2.0.0"
3838 | }
3839 | },
3840 | "wordwrap": {
3841 | "version": "1.0.0",
3842 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
3843 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
3844 | "dev": true
3845 | },
3846 | "wrap-fn": {
3847 | "version": "0.1.5",
3848 | "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz",
3849 | "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=",
3850 | "dev": true,
3851 | "requires": {
3852 | "co": "3.1.0"
3853 | }
3854 | },
3855 | "wrappy": {
3856 | "version": "1.0.2",
3857 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3858 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3859 | "dev": true
3860 | },
3861 | "xtend": {
3862 | "version": "4.0.1",
3863 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
3864 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
3865 | "dev": true
3866 | },
3867 | "yauzl": {
3868 | "version": "2.9.1",
3869 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz",
3870 | "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=",
3871 | "dev": true,
3872 | "requires": {
3873 | "buffer-crc32": "0.2.13",
3874 | "fd-slicer": "1.0.1"
3875 | }
3876 | }
3877 | }
3878 | }
3879 |
--------------------------------------------------------------------------------