├── 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 | 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 | --------------------------------------------------------------------------------