git.iko.soy/purescript-stream
on master help sign in
40 files changed+5487−1647
since splitsnapshots
unifiedsplit
.eslintignore−1 .gitignore+2 CHANGELOG.md+28 README.md+28 bower.json+4−3 ffi/Control/Stream/LinkedList.js−47 ffi/Control/Stream/Stream.js−5 ffi/Control/Stream/combinators/drain.js−4 ffi/Control/Stream/combinators/index.js−2 ffi/Control/Stream/combinators/mergeConcurrently.js−123 ffi/Control/Stream/combinators/tap.js−50 ffi/Control/Stream/disposables/Disposable.js−15 ffi/Control/Stream/disposables/MemoizedDisposable.js−17 ffi/Control/Stream/disposables/SettableDisposable.js−29 ffi/Control/Stream/disposables/disposeSafely.js−3 ffi/Control/Stream/disposables/index.js−12 ffi/Control/Stream/index.js−4 ffi/Control/Stream/runEffects.js−28 ffi/Control/Stream/scheduler/ClockTimer.js−48 ffi/Control/Stream/scheduler/PropagateTask.js−30 ffi/Control/Stream/scheduler/ScheduledTask.js−14 ffi/Control/Stream/scheduler/Scheduler.js−99 ffi/Control/Stream/scheduler/Timeline.js−124 ffi/Control/Stream/scheduler/index.js−16 ffi/Control/Stream/sink/IndexSink.js−24 ffi/Control/Stream/sink/index.js−1 package.json+23−12 rollup.config.js−14 src/Control/Disposable/Disposable.js+32 src/Control/Disposable/Disposable.purs+10 src/Control/Scheduler/Scheduler.js+370 src/Control/Scheduler/Scheduler.purs+32 src/Control/Sink/Sink.purs+9 src/Control/Stream.js−688 src/Control/Stream.purs+52−123 src/Control/Stream/Stream.js+1244 src/Control/Stream/Stream.purs+340 src/Control/Time.purs+3 test/Main.purs+9 yarn.lock+3301−111
.eslintignore−1
@@ -1,2 +1 @@
11output/
2−src/
.gitignore+2
@@ -5,3 +5,5 @@
55/generated-docs/
66/.psc*
77/.psa*
8+src/Main.purs
9+.npm-debug.log*
CHANGELOG.mdnew file+28
@@ -0,0 +1,28 @@
1+<a name="0.2.0"></a>
2+# [0.2.0](https://github.com/TylorS/purescript-stream/compare/v0.1.0...v0.2.0) (2017-03-21)
3+
4+
5+### Bug Fixes
6+
7+* **Stream:** add missing filter import ([d4e1c8e](https://github.com/TylorS/purescript-stream/commit/d4e1c8e))
8+
9+
10+
11+<a name="0.1.0"></a>
12+# [0.1.0](https://github.com/TylorS/purescript-stream/compare/6b75d2f...v0.1.0) (2017-03-16)
13+
14+
15+### Bug Fixes
16+
17+* **Stream:** add missing exports ([13c18b7](https://github.com/TylorS/purescript-stream/commit/13c18b7))
18+
19+
20+### Features
21+
22+* **stream:** implement more helpers and combinators ([8e8b516](https://github.com/TylorS/purescript-stream/commit/8e8b516))
23+* **stream:** more combinators ([a50a246](https://github.com/TylorS/purescript-stream/commit/a50a246))
24+* **stream:** reimplement ([0813a54](https://github.com/TylorS/purescript-stream/commit/0813a54))
25+* **stream:** start of a stream library ([6b75d2f](https://github.com/TylorS/purescript-stream/commit/6b75d2f))
26+
27+
28+
README.mdnew file+28
@@ -0,0 +1,28 @@
1+# Purescript Stream
2+
3+> An ultra-fast reactive stream library for purescript
4+
5+## Let me have it
6+```sh
7+bower install --save purescript-stream
8+```
9+
10+## Basic usage
11+```purescript
12+module Main where
13+
14+import Prelude
15+import Control.Monad.Eff (Eff)
16+import Control.Monad.Eff.Console (CONSOLE, logShow, log)
17+import Control.Stream (STREAM, periodic, constant, scan, tapEvent, tapEnd, drain)
18+import Data.Unit (Unit)
19+
20+main :: Eff (stream :: STREAM, console :: CONSOLE) Unit
21+main = do
22+ periodic 1000.0 -- Stream Unit
23+ # constant 1 -- Stream Int
24+ # scan (+) 0 -- Stream Int
25+ # tapEvent logShow -- Perform side-effects on events
26+ # tapEnd (log "done") -- Perform a side-effect on stream completion
27+ # drain -- activate your stream
28+```
bower.json+4−3
@@ -1,5 +1,5 @@
11{
2− "name": "tempest",
2+ "name": "purescript-stream",
33 "ignore": [
44 "**/.*",
55 "node_modules",
@@ -9,8 +9,9 @@
99 "dependencies": {
1010 "purescript-eff": "^2.0.0",
1111 "purescript-prelude": "^2.5.0",
12− "purescript-aff-promise": "^0.4.0",
13− "purescript-aff": "^2.0.3"
12+ "purescript-refs": "^2.0.0",
13+ "purescript-maybe": "^2.1.1",
14+ "purescript-partial": "^1.2.0"
1415 },
1516 "devDependencies": {
1617 "purescript-console": "^2.0.0",
ffi/Control/Stream/LinkedList.jsdeleted−47
@@ -1,47 +0,0 @@
1−export class LinkedList {
2− constructor () {
3− this.head = null
4− this.length = 0
5− }
6−
7− add (x) {
8− if (this.head !== null) {
9− this.head.prev = x
10− x.next = this.head
11− }
12− this.head = x
13− ++this.length
14− }
15−
16− remove (x) { // eslint-disable-line complexity
17− --this.length
18− if (x === this.head) {
19− this.head = this.head.next
20− }
21− if (x.next !== null) {
22− x.next.prev = x.prev
23− x.next = null
24− }
25− if (x.prev !== null) {
26− x.prev.next = x.next
27− x.prev = null
28− }
29− }
30−
31− isEmpty () {
32− return this.length === 0
33− }
34−
35− dispose () {
36− if (this.isEmpty()) return
37−
38− var x = this.head
39− this.head = null
40− this.length = 0
41−
42− while (x !== null) {
43− x.dispose()
44− x = x.next
45− }
46− }
47−}
ffi/Control/Stream/Stream.jsdeleted−5
@@ -1,5 +0,0 @@
1−export class Stream {
2− constructor (source) {
3− this.source = source
4− }
5−}
ffi/Control/Stream/combinators/drain.jsdeleted−4
@@ -1,4 +0,0 @@
1−import { defaultScheduler } from '../scheduler'
2−import { runEffects } from '../runEffects'
3−
4−export const drain = stream => () => runEffects(stream, defaultScheduler)
ffi/Control/Stream/combinators/index.jsdeleted−2
@@ -1,2 +0,0 @@
1−export * from './tap'
2−export * from './drain'
ffi/Control/Stream/combinators/mergeConcurrently.jsdeleted−123
@@ -1,123 +0,0 @@
1−/** @license MIT License (c) copyright 2010-2016 original author or authors */
2−/** @author Brian Cavalier */
3−/** @author John Hann */
4−
5−import { LinkedList } from '../LinkedList'
6−import { MemoizedDisosable } from '../disposables/MemoizedDisposable'
7−import { id as identity } from '@most/prelude'
8−
9−export const mergeConcurrently = (concurrency, stream) =>
10− mergeMapConcurrently(identity, concurrency, stream)
11−
12−export const mergeMapConcurrently = (f, concurrency, stream) =>
13− new MergeConcurrently(f, concurrency, stream)
14−
15−class MergeConcurrently {
16− constructor (f, concurrency, source) {
17− this.f = f
18− this.concurrency = concurrency
19− this.source = source
20− }
21−
22− run (sink, scheduler) {
23− return new Outer(this.f, this.concurrency, this.source, sink, scheduler)
24− }
25−}
26−
27−class Outer {
28− constructor (f, concurrency, source, sink, scheduler) {
29− this.f = f
30− this.concurrency = concurrency
31− this.sink = sink
32− this.scheduler = scheduler
33− this.pending = []
34− this.current = new LinkedList()
35− this.disposable = new MemoizedDisosable(source.run(this, scheduler))
36− this.active = true
37− }
38−
39− event (t, x) {
40− this._addInner(t, x)
41− }
42−
43− _addInner (t, x) {
44− if (this.current.length < this.concurrency) {
45− this._startInner(t, x)
46− } else {
47− this.pending.push(x)
48− }
49− }
50−
51− _startInner (t, x) {
52− try {
53− this._initInner(t, x)
54− } catch (e) {
55− this.error(t, e)
56− }
57− }
58−
59− _initInner (t, x) {
60− const innerSink = new Inner(t, this, this.sink)
61− innerSink.disposable = mapAndRun(this.f, x, innerSink, this.scheduler)
62− this.current.add(innerSink)
63− }
64−
65− end (t, x) {
66− this.active = false
67− this.disposable.dispose()
68− this._checkEnd(t, x)
69− }
70−
71− dispose () {
72− this.active = false
73− this.pending.length = 0
74− this.disposable.dispose()
75− this.current.dispose()
76− }
77−
78− _endInner (t, x, inner) {
79− this.current.remove(inner)
80− inner.dispose()
81−
82− if (this.pending.length === 0) {
83− this._checkEnd(t, x)
84− } else {
85− this._startInner(t, this.pending.shift())
86− }
87− }
88−
89− _checkEnd (t, x) {
90− if (!this.active && this.current.isEmpty()) {
91− this.sink.end(t, x)
92− }
93− }
94−}
95−
96−const mapAndRun = (f, x, sink, scheduler) =>
97− f(x).run(sink, scheduler)
98−
99−class Inner {
100− constructor (time, outer, sink) {
101− this.prev = this.next = null
102− this.time = time
103− this.outer = outer
104− this.sink = sink
105− this.disposable = void 0
106− }
107−
108− event (t, x) {
109− this.sink.event(Math.max(t, this.time), x)
110− }
111−
112− end (t, x) {
113− this.outer._endInner(Math.max(t, this.time), x, this)
114− }
115−
116− error (t, e) {
117− this.outer.error(Math.max(t, this.time), e)
118− }
119−
120− dispose () {
121− return this.disposable.dispose()
122− }
123−}
ffi/Control/Stream/combinators/tap.jsdeleted−50
@@ -1,50 +0,0 @@
1−import { Stream } from '../Stream'
2−import { curry2 } from '@most/prelude'
3−
4−export const tapEnd = curry2((f, stream) => new Stream(new TapEnd(f, stream.source)))
5−
6−export const tapEvent = curry2((f, stream) => new Stream(new TapEvent(f, stream.source)))
7−
8−class TapEvent {
9− constructor (f, source) {
10− this.source = source
11− this.f = f
12−
13− this.run = sink => scheduler =>
14− source.run(new TapSink(f, sink))(scheduler)
15− }
16−}
17−
18−class TapSink {
19− constructor (f, sink) {
20− this.event = t => x => {
21− f(x)()
22− sink.event(t)(x)
23− }
24−
25− this.end = t => {
26− sink.end(t)
27− }
28− }
29−}
30−
31−class TapEnd {
32− constructor (f, source) {
33− this.source = source
34− this.f = f
35−
36− this.run = sink => scheduler =>
37− source.run(new TapEndSink(f, sink))(scheduler)
38− }
39−}
40−
41−class TapEndSink {
42− constructor (f, sink) {
43− this.event = t => x => sink.event(t)(x)
44−
45− this.end = t => {
46− f()
47− sink.end(t)
48− }
49− }
50−}
ffi/Control/Stream/disposables/Disposable.jsdeleted−15
@@ -1,15 +0,0 @@
1−export class Disposable {
2− /**
3− * Create a new Disposable which will dispose its underlying resource.
4− * @param {function} dispose function
5− * @param {*?} data any data to be passed to disposer function
6− */
7− constructor (dispose, data) {
8− this._dispose = dispose
9− this._data = data
10− }
11−
12− dispose () {
13− return this._dispose(this._data)
14− }
15−}
ffi/Control/Stream/disposables/MemoizedDisposable.jsdeleted−17
@@ -1,17 +0,0 @@
1−export class MemoizedDisposable {
2− constructor (disposable) {
3− this.disposed = false
4− this.value = undefined
5− this.disposable = disposable
6− }
7−
8− dispose () {
9− if (!this.disposed) {
10− this.disposed = true
11− this.value = disposeSafely(this.disposable)
12− this.disposable = undefined
13− }
14−
15− return this.value
16− }
17−}
ffi/Control/Stream/disposables/SettableDisposable.jsdeleted−29
@@ -1,29 +0,0 @@
1−export class SettableDisposable {
2− constructor () {
3− this.disposable = void 0
4− this.disposed = false
5− this.result = void 0
6− }
7−
8− setDisposable (disposable) {
9− this.disposable = disposable
10−
11− if (this.disposed) {
12− this.result = disposable.dispose()
13− }
14− }
15−
16− dispose () {
17− if (this.disposed) {
18− return this.result
19− }
20−
21− this.disposed = true
22−
23− if (this.disposable !== void 0) {
24− this.result = this.disposable.dispose()
25− }
26−
27− return this.result
28− }
29−}
ffi/Control/Stream/disposables/disposeSafely.jsdeleted−3
@@ -1,3 +0,0 @@
1−export function disposeSafely (disposable) {
2− disposable.dispose()
3−}
ffi/Control/Stream/disposables/index.jsdeleted−12
@@ -1,12 +0,0 @@
1−import { curry2, id, map } from '@most/prelude'
2−
3−import { Disposable } from './Disposable'
4−import { MemoizedDisposable } from './MemoizedDisposable'
5−import { disposeSafely } from './disposeSafely'
6−
7−export const createDisposable = curry2((dispose, data) => new MemoizedDisposable(new Disposable(dispose, data)))
8−
9−export const emptyDisposable = new Disposable(id, undefined)
10−
11−export const disposeAll = disposables =>
12− createDisposable(map(disposeSafely, disposables), disposables)
ffi/Control/Stream/index.jsdeleted−4
@@ -1,4 +0,0 @@
1−/* @flow */
2−export * from './disposables'
3−export * from './scheduler'
4−export * from './combinators'
ffi/Control/Stream/runEffects.jsdeleted−28
@@ -1,28 +0,0 @@
1−import { SettableDisposable } from './disposables/SettableDisposable'
2−
3−export function runEffects (stream, scheduler) {
4− return runSourceEffects(stream.source, scheduler)
5−}
6−
7−const runSourceEffects = (source, scheduler) => runSource(source, scheduler)
8−
9−function runSource (source, scheduler) {
10− const disposable = new SettableDisposable()
11− const observer = new RunEffectsSink(disposable)
12−
13− disposable.setDisposable(source.run(observer)(scheduler))
14−}
15−
16−var RunEffectsSink = function RunEffectsSink (disposable) {
17− this._disposable = disposable
18− this.active = true
19−}
20−
21−RunEffectsSink.prototype.event = function event (t) {
22− return function (x) {}
23−}
24−
25−RunEffectsSink.prototype.end = function end (t) {
26− this.active = false
27− Promise.resolve(this._disposable).then(d => d.dispose())
28−}
ffi/Control/Stream/scheduler/ClockTimer.jsdeleted−48
@@ -1,48 +0,0 @@
1−/** @license MIT License (c) copyright 2010-2016 original author or authors */
2−/** @author Brian Cavalier */
3−/** @author John Hann */
4−
5−/*global setTimeout, clearTimeout*/
6−
7−export function defer (task) {
8− return Promise.resolve(task).then(runTask)
9−}
10−
11−export function runTask (task) {
12− return task.run()
13−}
14−
15−export class ClockTimer {
16− constructor () {
17− this.now = Date.now
18− }
19−
20− setTimer (f, dt) {
21− return dt <= 0 ? runAsap(f) : setTimeout(f, dt)
22− }
23−
24− clearTimer (t) {
25− return t instanceof Asap ? t.cancel() : clearTimeout(t)
26− }
27−}
28−
29−class Asap {
30− constructor (f) {
31− this.f = f
32− this.active = true
33− }
34−
35− run () {
36− return this.active && this.f()
37− }
38−
39− cancel () {
40− this.active = false
41− }
42−}
43−
44−function runAsap (f) {
45− const task = new Asap(f)
46− defer(task)
47− return task
48−}
ffi/Control/Stream/scheduler/PropagateTask.jsdeleted−30
@@ -1,30 +0,0 @@
1−import { curry2, curry3 } from '@most/prelude'
2−
3−const propagateTask =
4− curry3((run, value, sink) => new PropagateTask(run, value, sink))
5−
6−export const eventTask =
7− curry2((value, sink) => propagateTask(runEvent, value, sink))
8−
9−export const endTask = sink => propagateTask(runEnd, void 0, sink)
10−
11−class PropagateTask {
12− constructor (run, value, sink) {
13− let active = true
14−
15− this.dispose = () => { active = false }
16− this.run = t => {
17− if (!active) return
18−
19− run(t, value, sink)
20− }
21− }
22−}
23−
24−function runEvent (time, value, sink) {
25− sink.event(time)(value)
26−}
27−
28−function runEnd (time, value, sink) {
29− sink.end(time, value)
30−}
ffi/Control/Stream/scheduler/ScheduledTask.jsdeleted−14
@@ -1,14 +0,0 @@
1−/* @flow */
2−export function ScheduledTask (delay, period, task, scheduler) {
3− this.time = delay
4− this.period = period
5− this.task = task
6− this.scheduler = scheduler
7− this.active = true
8−
9− this.run = () => task.run(this.time)
10− this.dispose = () => {
11− scheduler.cancel(this)
12− task.dispose()
13− }
14−}
ffi/Control/Stream/scheduler/Scheduler.jsdeleted−99
@@ -1,99 +0,0 @@
1−/* @flow */
2−import { ScheduledTask } from './ScheduledTask'
3−
4−function runTask (task) {
5− try {
6− return task.run()
7− } catch (e) {
8− console.error(e)
9− }
10−}
11−
12−export class Scheduler {
13− constructor (timer, timeline) {
14− this.timer = timer
15− this.timeline = timeline
16−
17− this._timer = null
18− this._nextArrival = Infinity
19−
20− this._runReadyTasksBound = () => this._runReadyTasks(this.now())
21− }
22−
23− now () {
24− return this.timer.now()
25− }
26−
27− asap (task) {
28− return this.schedule(0, -1, task)
29− }
30−
31− delay (delay, task) {
32− return this.schedule(delay, -1, task)
33− }
34−
35− periodic (period, task) {
36− return this.schedule(0, period, task)
37− }
38−
39− schedule (delay, period, task) {
40− const now = this.now()
41− const st = new ScheduledTask(now + Math.max(0, delay), period, task, this)
42−
43− this.timeline.add(st)
44− this._scheduleNextRun(now)
45− return st
46− }
47−
48− cancel (task) {
49− task.active = false
50− if (this.timeline.remove(task)) {
51− this._reschedule()
52− }
53− }
54−
55− cancelAll (f) {
56− this.timeline.removeAll(f)
57− this._reschedule()
58− }
59−
60− _reschedule () {
61− if (this.timeline.isEmpty()) {
62− this._unschedule()
63− } else {
64− this._scheduleNextRun(this.now())
65− }
66− }
67−
68− _unschedule () {
69− this.timer.clearTimer(this._timer)
70− this._timer = null
71− }
72−
73− _scheduleNextRun (now) { // eslint-disable-line complexity
74− if (this.timeline.isEmpty()) {
75− return
76− }
77−
78− const nextArrival = this.timeline.nextArrival()
79−
80− if (this._timer === null) {
81− this._scheduleNextArrival(nextArrival, now)
82− } else if (nextArrival < this._nextArrival) {
83− this._unschedule()
84− this._scheduleNextArrival(nextArrival, now)
85− }
86− }
87−
88− _scheduleNextArrival (nextArrival, now) {
89− this._nextArrival = nextArrival
90− const delay = Math.max(0, nextArrival - now)
91− this._timer = this.timer.setTimer(this._runReadyTasksBound, delay)
92− }
93−
94− _runReadyTasks (now) {
95− this._timer = null
96− this.timeline.runTasks(now, runTask)
97− this._scheduleNextRun(this.now())
98− }
99−}
ffi/Control/Stream/scheduler/Timeline.jsdeleted−124
@@ -1,124 +0,0 @@
1−/** @license MIT License (c) copyright 2010-2016 original author or authors */
2−/** @author Brian Cavalier */
3−/** @author John Hann */
4−
5−import * as base from '@most/prelude'
6−
7−export class Timeline {
8− constructor () {
9− this.tasks = []
10− }
11−
12− nextArrival () {
13− return this.isEmpty() ? Infinity : this.tasks[0].time
14− }
15−
16− isEmpty () {
17− return this.tasks.length === 0
18− }
19−
20− add (st) {
21− insertByTime(st, this.tasks)
22− }
23−
24− remove (st) {
25− const i = binarySearch(st.time, this.tasks)
26−
27− if (i >= 0 && i < this.tasks.length) {
28− const at = base.findIndex(st, this.tasks[i].events)
29− if (at >= 0) {
30− this.tasks[i].events.splice(at, 1)
31− return true
32− }
33− }
34−
35− return false
36− }
37−
38− removeAll (f) {
39− for (let i = 0; i < this.tasks.length; ++i) {
40− removeAllFrom(f, this.tasks[i])
41− }
42− }
43−
44− runTasks (t, runTask) {
45− const tasks = this.tasks
46− const l = tasks.length
47− let i = 0
48−
49− while (i < l && tasks[i].time <= t) {
50− ++i
51− }
52−
53− this.tasks = tasks.slice(i)
54−
55− // Run all ready tasks
56− for (let j = 0; j < i; ++j) {
57− this.tasks = runReadyTasks(runTask, tasks[j].events, this.tasks)
58− }
59− }
60−}
61−
62−function runReadyTasks (runTask, events, tasks) { // eslint-disable-line complexity
63− for (let i = 0; i < events.length; ++i) {
64− const task = events[i]
65−
66− if (task.active) {
67− runTask(task)
68−
69− // Reschedule periodic repeating tasks
70− // Check active again, since a task may have canceled itself
71− if (task.period >= 0 && task.active) {
72− task.time = task.time + task.period
73− insertByTime(task, tasks)
74− }
75− }
76− }
77−
78− return tasks
79−}
80−
81−function insertByTime (task, timeslots) { // eslint-disable-line complexity
82− const l = timeslots.length
83−
84− if (l === 0) {
85− timeslots.push(newTimeslot(task.time, [task]))
86− return
87− }
88−
89− const i = binarySearch(task.time, timeslots)
90−
91− if (i >= l) {
92− timeslots.push(newTimeslot(task.time, [task]))
93− } else if (task.time === timeslots[i].time) {
94− timeslots[i].events.push(task)
95− } else {
96− timeslots.splice(i, 0, newTimeslot(task.time, [task]))
97− }
98−}
99−
100−function removeAllFrom (f, timeslot) {
101− timeslot.events = base.removeAll(f, timeslot.events)
102−}
103−
104−function binarySearch (t, sortedArray) { // eslint-disable-line complexity
105− let lo = 0
106− let hi = sortedArray.length
107− let mid, y
108−
109− while (lo < hi) {
110− mid = Math.floor((lo + hi) / 2)
111− y = sortedArray[mid]
112−
113− if (t === y.time) {
114− return mid
115− } else if (t < y.time) {
116− hi = mid
117− } else {
118− lo = mid + 1
119− }
120− }
121− return hi
122−}
123−
124−const newTimeslot = (t, events) => ({ time: t, events: events })
ffi/Control/Stream/scheduler/index.jsdeleted−16
@@ -1,16 +0,0 @@
1−import { ClockTimer } from './ClockTimer'
2−import { Scheduler } from './Scheduler'
3−import { Timeline } from './Timeline'
4−import { curry2 } from '@most/prelude'
5−
6−export { endTask, eventTask } from './PropagateTask'
7−
8−export const defaultScheduler = new Scheduler(new ClockTimer(), new Timeline())
9−
10−export const scheduleTasks = curry2((tasks, scheduler) => {
11− const scheduledTasks = tasks.map(task => scheduler.asap(task))
12−
13− return {
14− dispose: () => scheduledTasks.forEach(task => task.dispose())
15− }
16−})
ffi/Control/Stream/sink/IndexSink.jsdeleted−24
@@ -1,24 +0,0 @@
1−export class IndexSink {
2− constructor (i, sink) {
3− this.sink = sink
4− this.index = i
5− this.active = true
6− this.value = void 0
7− }
8−
9− event (t) {
10− return x => {
11− if (!this.active) return
12−
13− this.value = x
14− this.sink.event(t)(this)
15− }
16− }
17−
18− end (t, x) {
19− if (!this.active) return
20−
21− this.active = false
22− this.sink.end(t, { index: this.index, value: x })
23− }
24−}
ffi/Control/Stream/sink/index.jsdeleted−1
@@ -1 +0,0 @@
1−export * from './IndexSink'
package.json+23−12
@@ -1,27 +1,38 @@
11{
2− "name": "purescript-tempest",
3− "version": "0.0.0",
2+ "name": "purescript-stream",
3+ "version": "0.2.0",
44 "description": "",
55 "main": "index.js",
66 "scripts": {
7− "test": "echo \"Error: no test specified\" && exit 1",
8− "build": "rollup -c && pulp build"
7+ "start": "yarn build && pulp run",
8+ "build": "pulp build",
9+ "changelog": "conventional-changelog -i CHANGELOG.md -s -r 0 -p angular",
10+ "clean": "rimraf lib lib.es2015",
11+ "commit": "git-cz",
12+ "commitmsg": "validate-commit-msg",
13+ "postchangelog": "git add CHANGELOG.md && git commit -m 'docs(CHANGELOG): amend changelog'",
14+ "postversion": "npm run changelog && git push origin master --tags",
15+ "preversion": "yarn test && yarn build && yarn login",
16+ "release:major": "npm version major -m 'chore(package): v%s'",
17+ "release:minor": "npm version minor -m 'chore(package): v%s'",
18+ "test": "pulp test"
919 },
1020 "author": "Tylor Steinberger",
1121 "license": "MIT",
1222 "devDependencies": {
1323 "@most/eslint-config-most": "^1.0.3",
24+ "bower": "^1.8.0",
25+ "commitizen": "^2.9.6",
26+ "conventional-changelog-cli": "^1.3.1",
27+ "cz-conventional-changelog": "^2.0.0",
1428 "eslint": "^3.17.1",
1529 "eslint-config-standard": "^7.0.1",
1630 "eslint-plugin-promise": "^3.5.0",
1731 "eslint-plugin-standard": "^2.1.1",
18− "rollup": "^0.41.4",
19− "rollup-plugin-buble": "^0.15.0",
20− "rollup-plugin-flow": "^1.1.1",
21− "rollup-plugin-node-resolve": "^2.0.0",
22− "uglify-js": "^2.8.11"
23− },
24− "dependencies": {
25− "@most/prelude": "^1.5.0"
32+ "husky": "^0.13.2",
33+ "pulp": "^10.0.4",
34+ "purescript": "^0.10.7",
35+ "uglify-js": "^2.8.11",
36+ "validate-commit-msg": "^2.11.2"
2637 }
2738}
rollup.config.jsdeleted−14
@@ -1,14 +0,0 @@
1−import buble from 'rollup-plugin-buble'
2−import flow from 'rollup-plugin-flow'
3−import resolve from 'rollup-plugin-node-resolve'
4−
5−export default {
6− entry: 'ffi/Control/Stream/index.js',
7− dest: 'src/Control/Stream.js',
8− format: 'cjs',
9− plugins: [
10− flow(),
11− buble(),
12− resolve({ module: true, jsnext: true })
13− ]
14−}
src/Control/Disposable/Disposable.jsnew file+32
@@ -0,0 +1,32 @@
1+exports.emptyDisposable = { dispose: function () { return {} } }
2+
3+exports.disposeAll = function (disposables) {
4+ var disposed = false
5+
6+ function dispose () {
7+ if (disposed) return
8+
9+ disposables.forEach(function (disposable) {
10+ disposable.dispose()
11+ })
12+
13+ disposed = true
14+ }
15+
16+ return { dispose: dispose }
17+}
18+
19+exports.lazyDisposable = function (f) {
20+ var disposed = false
21+
22+ function dispose () {
23+ if (disposed) return
24+ var disposable = f()
25+
26+ disposable.dispose()
27+
28+ disposed = true
29+ }
30+
31+ return { dispose: dispose }
32+}
src/Control/Disposable/Disposable.pursnew file+10
@@ -0,0 +1,10 @@
1+module Control.Stream.Disposable where
2+
3+import Control.Monad.Eff (Pure)
4+import Data.Unit (Unit)
5+
6+type Disposable = { dispose :: Pure Unit }
7+
8+foreign import emptyDisposable :: Disposable
9+foreign import disposeAll :: Array Disposable -> Disposable
10+foreign import lazyDisposable :: (Unit -> Disposable) -> Disposable
src/Control/Scheduler/Scheduler.jsnew file+370
@@ -0,0 +1,370 @@
1+exports.scheduleTasks = function (f) {
2+ return function (tasks) {
3+ var scheduledTasks = tasks.map(f.bind(scheduler))
4+
5+ function dispose () {
6+ scheduledTasks.forEach(function (task) {
7+ task.dispose()
8+ })
9+ }
10+
11+ return { dispose: dispose }
12+ }
13+}
14+
15+exports.eventTask = function (sink) {
16+ return function (value) {
17+ return new PropagateTask(runEvent, value, sink)
18+ }
19+}
20+
21+exports.endTask = function (sink) {
22+ return new PropagateTask(runEnd, void 0, sink)
23+}
24+
25+function PropagateTask (run, value, sink) {
26+ this.active = true
27+ this._run = run
28+ this.value = value
29+ this.sink = sink
30+}
31+
32+PropagateTask.prototype.dispose = function () {
33+ this.active = false
34+}
35+
36+PropagateTask.prototype.run = function (time) {
37+ if (!this.active) return
38+
39+ this._run(time, this.value, this.sink)
40+}
41+
42+function runEvent (time, value, sink) {
43+ sink.event(time)(value)
44+}
45+
46+function runEnd (time, value, sink) {
47+ sink.end(time)
48+}
49+
50+function defer (task) {
51+ return Promise.resolve(task).then(runTask)
52+}
53+
54+function runTask (task) {
55+ return task.run()
56+}
57+
58+var ClockTimer = function ClockTimer () {
59+ this.now = Date.now
60+}
61+
62+ClockTimer.prototype.setTimer = function setTimer (f, dt) {
63+ return dt <= 0 ? runAsap(f) : setTimeout(f, dt)
64+}
65+
66+ClockTimer.prototype.clearTimer = function clearTimer (t) {
67+ return t instanceof Asap ? t.cancel() : clearTimeout(t)
68+}
69+
70+var Asap = function Asap (f) {
71+ this.f = f
72+ this.active = true
73+}
74+
75+Asap.prototype.run = function run () {
76+ return this.active && this.f()
77+}
78+
79+Asap.prototype.cancel = function cancel () {
80+ this.active = false
81+}
82+
83+function runAsap (f) {
84+ var task = new Asap(f)
85+ defer(task)
86+ return task
87+}
88+
89+var ScheduledTask = function ScheduledTask (delay, period, task, scheduler) {
90+ this.time = delay
91+ this.period = period
92+ this.task = task
93+ this.scheduler = scheduler
94+ this.active = true
95+}
96+
97+ScheduledTask.prototype.run = function run () {
98+ this.task.run(this.time)
99+}
100+
101+ScheduledTask.prototype.dispose = function dispose () {
102+ this.scheduler.cancel(this)
103+ this.task.dispose()
104+}
105+
106+function runTask$1 (task) {
107+ try {
108+ return task.run()
109+ } catch (e) {
110+ console.error(e)
111+ }
112+}
113+
114+var Scheduler = function Scheduler (timer, timeline) {
115+ var this$1 = this
116+
117+ this.timer = timer
118+ this.timeline = timeline
119+
120+ this._timer = null
121+ this._nextArrival = Infinity
122+
123+ this._runReadyTasksBound = function () { return this$1._runReadyTasks(this$1.now()) }
124+}
125+
126+Scheduler.prototype.now = function now () {
127+ return this.timer.now()
128+}
129+
130+Scheduler.prototype.asap = function asap (task) {
131+ return this.schedule(0)(-1)(task)
132+}
133+
134+Scheduler.prototype.delay = function delay (delay$1) {
135+ var this$1 = this
136+
137+ return function (task) { return this$1.schedule(delay$1)(-1)(task) }
138+}
139+
140+Scheduler.prototype.periodic = function periodic (period) {
141+ var this$1 = this
142+
143+ return function (task) { return this$1.schedule(0)(period)(task) }
144+}
145+
146+Scheduler.prototype.schedule = function schedule (delay) {
147+ var this$1 = this
148+
149+ return function (period) {
150+ return function (task) {
151+ var now = this$1.now()
152+ var st = new ScheduledTask(now + Math.max(0, delay), period, task, this$1)
153+
154+ st.run = st.run.bind(st)
155+ st.dispose = st.dispose.bind(st)
156+
157+ this$1.timeline.add(st)
158+ this$1._scheduleNextRun(now)
159+ return st
160+ }
161+ }
162+}
163+
164+Scheduler.prototype.cancel = function cancel (task) {
165+ task.active = false
166+ if (this.timeline.remove(task)) {
167+ this._reschedule()
168+ }
169+}
170+
171+Scheduler.prototype.cancelAll = function cancelAll (f) {
172+ this.timeline.removeAll(f)
173+ this._reschedule()
174+}
175+
176+Scheduler.prototype._reschedule = function _reschedule () {
177+ if (this.timeline.isEmpty()) {
178+ this._unschedule()
179+ } else {
180+ this._scheduleNextRun(this.now())
181+ }
182+}
183+
184+Scheduler.prototype._unschedule = function _unschedule () {
185+ this.timer.clearTimer(this._timer)
186+ this._timer = null
187+}
188+
189+Scheduler.prototype._scheduleNextRun = function _scheduleNextRun (now) { // eslint-disable-line complexity
190+ if (this.timeline.isEmpty()) {
191+ return
192+ }
193+
194+ var nextArrival = this.timeline.nextArrival()
195+
196+ if (this._timer === null) {
197+ this._scheduleNextArrival(nextArrival, now)
198+ } else if (nextArrival < this._nextArrival) {
199+ this._unschedule()
200+ this._scheduleNextArrival(nextArrival, now)
201+ }
202+}
203+
204+Scheduler.prototype._scheduleNextArrival = function _scheduleNextArrival (nextArrival, now) {
205+ this._nextArrival = nextArrival
206+ var delay = Math.max(0, nextArrival - now)
207+ this._timer = this.timer.setTimer(this._runReadyTasksBound, delay)
208+}
209+
210+Scheduler.prototype._runReadyTasks = function _runReadyTasks (now) {
211+ this._timer = null
212+ this.timeline.runTasks(now, runTask$1)
213+ this._scheduleNextRun(this.now())
214+}
215+
216+/** @license MIT License (c) copyright 2010-2016 original author or authors */
217+/** @author Brian Cavalier */
218+/** @author John Hann */
219+
220+var Timeline = function Timeline () {
221+ this.tasks = []
222+}
223+
224+Timeline.prototype.nextArrival = function nextArrival () {
225+ return this.isEmpty() ? Infinity : this.tasks[0].time
226+}
227+
228+Timeline.prototype.isEmpty = function isEmpty () {
229+ return this.tasks.length === 0
230+}
231+
232+Timeline.prototype.add = function add (st) {
233+ insertByTime(st, this.tasks)
234+}
235+
236+Timeline.prototype.remove = function remove$$1 (st) {
237+ var i = binarySearch(st.time, this.tasks)
238+
239+ if (i >= 0 && i < this.tasks.length) {
240+ var at = findIndex(st, this.tasks[i].events)
241+ if (at >= 0) {
242+ this.tasks[i].events.splice(at, 1)
243+ return true
244+ }
245+ }
246+
247+ return false
248+}
249+
250+Timeline.prototype.removeAll = function removeAll$$1 (f) {
251+ var this$1 = this
252+
253+ for (var i = 0; i < this.tasks.length; ++i) {
254+ removeAllFrom(f, this$1.tasks[i])
255+ }
256+}
257+
258+Timeline.prototype.runTasks = function runTasks (t, runTask) {
259+ var this$1 = this
260+
261+ var tasks = this.tasks
262+ var l = tasks.length
263+ var i = 0
264+
265+ while (i < l && tasks[i].time <= t) {
266+ ++i
267+ }
268+
269+ this.tasks = tasks.slice(i)
270+
271+ // Run all ready tasks
272+ for (var j = 0; j < i; ++j) {
273+ this$1.tasks = runReadyTasks(runTask, tasks[j].events, this$1.tasks)
274+ }
275+}
276+
277+function runReadyTasks (runTask, events, tasks) { // eslint-disable-line complexity
278+ for (var i = 0; i < events.length; ++i) {
279+ var task = events[i]
280+
281+ if (task.active) {
282+ runTask(task)
283+
284+ // Reschedule periodic repeating tasks
285+ // Check active again, since a task may have canceled itself
286+ if (task.period >= 0 && task.active) {
287+ task.time = task.time + task.period
288+ insertByTime(task, tasks)
289+ }
290+ }
291+ }
292+
293+ return tasks
294+}
295+
296+function insertByTime (task, timeslots) { // eslint-disable-line complexity
297+ var l = timeslots.length
298+
299+ if (l === 0) {
300+ timeslots.push(newTimeslot(task.time, [task]))
301+ return
302+ }
303+
304+ var i = binarySearch(task.time, timeslots)
305+
306+ if (i >= l) {
307+ timeslots.push(newTimeslot(task.time, [task]))
308+ } else if (task.time === timeslots[i].time) {
309+ timeslots[i].events.push(task)
310+ } else {
311+ timeslots.splice(i, 0, newTimeslot(task.time, [task]))
312+ }
313+}
314+
315+function removeAllFrom (f, timeslot) {
316+ timeslot.events = removeAll(f, timeslot.events)
317+}
318+
319+function binarySearch (t, sortedArray) { // eslint-disable-line complexity
320+ var lo = 0
321+ var hi = sortedArray.length
322+ var mid, y
323+
324+ while (lo < hi) {
325+ mid = Math.floor((lo + hi) / 2)
326+ y = sortedArray[mid]
327+
328+ if (t === y.time) {
329+ return mid
330+ } else if (t < y.time) {
331+ hi = mid
332+ } else {
333+ lo = mid + 1
334+ }
335+ }
336+ return hi
337+}
338+
339+var newTimeslot = function (t, events) { return ({ time: t, events: events }) }
340+
341+function removeAll (f, a) {
342+ var l = a.length
343+ var b = new Array(l)
344+ var j = 0
345+ for (var x = (void 0), i = 0; i < l; ++i) {
346+ x = a[i]
347+ if (!f(x)) {
348+ b[j] = x
349+ ++j
350+ }
351+ }
352+
353+ b.length = j
354+ return b
355+}
356+
357+// findIndex :: a -> [a] -> Int
358+// find index of x in a, from the left
359+function findIndex (x, a) {
360+ for (var i = 0, l = a.length; i < l; ++i) {
361+ if (x === a[i]) {
362+ return i
363+ }
364+ }
365+ return -1
366+}
367+
368+var scheduler = new Scheduler(new ClockTimer(), new Timeline())
369+
370+exports.scheduler = scheduler
src/Control/Scheduler/Scheduler.pursnew file+32
@@ -0,0 +1,32 @@
1+module Control.Stream.Scheduler where
2+
3+import Control.Monad.Eff (Pure)
4+import Control.Stream.Disposable (Disposable)
5+import Control.Stream.Sink (Sink)
6+import Control.Stream.Time (Time)
7+import Data.Unit (Unit)
8+
9+newtype Scheduler = Scheduler
10+ { now :: Pure Time
11+ , asap :: Task -> ScheduledTask
12+ , delay :: Number -> Task -> ScheduledTask
13+ , periodic :: Number -> Task -> ScheduledTask
14+ , schedule :: Number -> Number -> Task -> ScheduledTask
15+ , cancel :: ScheduledTask -> Unit
16+ , cancelAll :: (ScheduledTask -> Boolean) -> Unit
17+ }
18+
19+type Task =
20+ { run :: Time -> Unit
21+ , dispose :: Pure Unit
22+ }
23+
24+type ScheduledTask =
25+ { run :: Pure Unit
26+ , dispose :: Pure Unit
27+ }
28+
29+foreign import scheduler :: Scheduler
30+foreign import scheduleTasks :: (Task -> ScheduledTask) -> Array Task -> Disposable
31+foreign import eventTask :: forall a. Sink a -> a -> Task
32+foreign import endTask :: forall a. Sink a -> Task
src/Control/Sink/Sink.pursnew file+9
@@ -0,0 +1,9 @@
1+module Control.Stream.Sink (Sink(..)) where
2+
3+import Control.Stream.Time (Time)
4+import Data.Unit (Unit)
5+
6+newtype Sink a = Sink
7+ { event :: Time -> a -> Unit
8+ , end :: Time -> Unit
9+ }
src/Control/Stream.jsdeleted−688
@@ -1,688 +0,0 @@
1−'use strict';
2−
3−Object.defineProperty(exports, '__esModule', { value: true });
4−
5−/** @license MIT License (c) copyright 2010-2016 original author or authors */
6−
7−// Non-mutating array operations
8−
9−// cons :: a -> [a] -> [a]
10−// a with x prepended
11−
12−
13−// append :: a -> [a] -> [a]
14−// a with x appended
15−
16−
17−// drop :: Int -> [a] -> [a]
18−// drop first n elements
19−
20−
21−// tail :: [a] -> [a]
22−// drop head element
23−
24−
25−// copy :: [a] -> [a]
26−// duplicate a (shallow duplication)
27−
28−
29−// map :: (a -> b) -> [a] -> [b]
30−// transform each element with f
31−function map (f, a) {
32− var l = a.length;
33− var b = new Array(l);
34− for (var i = 0; i < l; ++i) {
35− b[i] = f(a[i]);
36− }
37− return b
38−}
39−
40−// reduce :: (a -> b -> a) -> a -> [b] -> a
41−// accumulate via left-fold
42−
43−
44−// replace :: a -> Int -> [a]
45−// replace element at index
46−
47−
48−// remove :: Int -> [a] -> [a]
49−// remove element at index
50−
51−
52−// removeAll :: (a -> boolean) -> [a] -> [a]
53−// remove all elements matching a predicate
54−function removeAll (f, a) {
55− var l = a.length;
56− var b = new Array(l);
57− var j = 0;
58− for (var x = (void 0), i = 0; i < l; ++i) {
59− x = a[i];
60− if (!f(x)) {
61− b[j] = x;
62− ++j;
63− }
64− }
65−
66− b.length = j;
67− return b
68−}
69−
70−// findIndex :: a -> [a] -> Int
71−// find index of x in a, from the left
72−function findIndex (x, a) {
73− for (var i = 0, l = a.length; i < l; ++i) {
74− if (x === a[i]) {
75− return i
76− }
77− }
78− return -1
79−}
80−
81−// isArrayLike :: * -> boolean
82−// Return true iff x is array-like
83−
84−/** @license MIT License (c) copyright 2010-2016 original author or authors */
85−
86−// id :: a -> a
87−var id = function (x) { return x; };
88−
89−// compose :: (b -> c) -> (a -> b) -> (a -> c)
90−
91−
92−// apply :: (a -> b) -> a -> b
93−
94−
95−// curry2 :: ((a, b) -> c) -> (a -> b -> c)
96−function curry2 (f) {
97− function curried (a, b) {
98− switch (arguments.length) {
99− case 0: return curried
100− case 1: return function (b) { return f(a, b); }
101− default: return f(a, b)
102− }
103− }
104− return curried
105−}
106−
107−// curry3 :: ((a, b, c) -> d) -> (a -> b -> c -> d)
108−function curry3 (f) {
109− function curried (a, b, c) { // eslint-disable-line complexity
110− switch (arguments.length) {
111− case 0: return curried
112− case 1: return curry2(function (b, c) { return f(a, b, c); })
113− case 2: return function (c) { return f(a, b, c); }
114− default:return f(a, b, c)
115− }
116− }
117− return curried
118−}
119−
120−// curry4 :: ((a, b, c, d) -> e) -> (a -> b -> c -> d -> e)
121−
122−/** @license MIT License (c) copyright 2016 original author or authors */
123−
124−var Disposable = function Disposable (dispose, data) {
125− this._dispose = dispose;
126− this._data = data;
127−};
128−
129−Disposable.prototype.dispose = function dispose () {
130− return this._dispose(this._data)
131−};
132−
133−var MemoizedDisposable = function MemoizedDisposable (disposable) {
134− this.disposed = false;
135− this.value = undefined;
136− this.disposable = disposable;
137−};
138−
139−MemoizedDisposable.prototype.dispose = function dispose () {
140− if (!this.disposed) {
141− this.disposed = true;
142− this.value = disposeSafely(this.disposable);
143− this.disposable = undefined;
144− }
145−
146− return this.value
147−};
148−
149−function disposeSafely$1 (disposable) {
150− disposable.dispose();
151−}
152−
153−var createDisposable = curry2(function (dispose, data) { return new MemoizedDisposable(new Disposable(dispose, data)); });
154−
155−var emptyDisposable = new Disposable(id, undefined);
156−
157−var disposeAll = function (disposables) { return createDisposable(map(disposeSafely$1, disposables), disposables); };
158−
159−/** @license MIT License (c) copyright 2010-2016 original author or authors */
160−/** @author Brian Cavalier */
161−/** @author John Hann */
162−
163−/*global setTimeout, clearTimeout*/
164−
165−function defer (task) {
166− return Promise.resolve(task).then(runTask)
167−}
168−
169−function runTask (task) {
170− return task.run()
171−}
172−
173−var ClockTimer = function ClockTimer () {
174− this.now = Date.now;
175−};
176−
177−ClockTimer.prototype.setTimer = function setTimer (f, dt) {
178− return dt <= 0 ? runAsap(f) : setTimeout(f, dt)
179−};
180−
181−ClockTimer.prototype.clearTimer = function clearTimer (t) {
182− return t instanceof Asap ? t.cancel() : clearTimeout(t)
183−};
184−
185−var Asap = function Asap (f) {
186− this.f = f;
187− this.active = true;
188−};
189−
190−Asap.prototype.run = function run () {
191− return this.active && this.f()
192−};
193−
194−Asap.prototype.cancel = function cancel () {
195− this.active = false;
196−};
197−
198−function runAsap (f) {
199− var task = new Asap(f);
200− defer(task);
201− return task
202−}
203−
204−/* */
205−function ScheduledTask (delay, period, task, scheduler) {
206− var this$1 = this;
207−
208− this.time = delay;
209− this.period = period;
210− this.task = task;
211− this.scheduler = scheduler;
212− this.active = true;
213−
214− this.run = function () { return task.run(this$1.time); };
215− this.dispose = function () {
216− scheduler.cancel(this$1);
217− task.dispose();
218− };
219−}
220−
221−/* */
222−function runTask$1 (task) {
223− try {
224− return task.run()
225− } catch (e) {
226− console.error(e);
227− }
228−}
229−
230−var Scheduler = function Scheduler (timer, timeline) {
231− var this$1 = this;
232−
233− this.timer = timer;
234− this.timeline = timeline;
235−
236− this._timer = null;
237− this._nextArrival = Infinity;
238−
239− this._runReadyTasksBound = function () { return this$1._runReadyTasks(this$1.now()); };
240−};
241−
242−Scheduler.prototype.now = function now () {
243− return this.timer.now()
244−};
245−
246−Scheduler.prototype.asap = function asap (task) {
247− return this.schedule(0, -1, task)
248−};
249−
250−Scheduler.prototype.delay = function delay (delay$1, task) {
251− return this.schedule(delay$1, -1, task)
252−};
253−
254−Scheduler.prototype.periodic = function periodic (period, task) {
255− return this.schedule(0, period, task)
256−};
257−
258−Scheduler.prototype.schedule = function schedule (delay, period, task) {
259− var now = this.now();
260− var st = new ScheduledTask(now + Math.max(0, delay), period, task, this);
261−
262− this.timeline.add(st);
263− this._scheduleNextRun(now);
264− return st
265−};
266−
267−Scheduler.prototype.cancel = function cancel (task) {
268− task.active = false;
269− if (this.timeline.remove(task)) {
270− this._reschedule();
271− }
272−};
273−
274−Scheduler.prototype.cancelAll = function cancelAll (f) {
275− this.timeline.removeAll(f);
276− this._reschedule();
277−};
278−
279−Scheduler.prototype._reschedule = function _reschedule () {
280− if (this.timeline.isEmpty()) {
281− this._unschedule();
282− } else {
283− this._scheduleNextRun(this.now());
284− }
285−};
286−
287−Scheduler.prototype._unschedule = function _unschedule () {
288− this.timer.clearTimer(this._timer);
289− this._timer = null;
290−};
291−
292−Scheduler.prototype._scheduleNextRun = function _scheduleNextRun (now) { // eslint-disable-line complexity
293− if (this.timeline.isEmpty()) {
294− return
295− }
296−
297− var nextArrival = this.timeline.nextArrival();
298−
299− if (this._timer === null) {
300− this._scheduleNextArrival(nextArrival, now);
301− } else if (nextArrival < this._nextArrival) {
302− this._unschedule();
303− this._scheduleNextArrival(nextArrival, now);
304− }
305−};
306−
307−Scheduler.prototype._scheduleNextArrival = function _scheduleNextArrival (nextArrival, now) {
308− this._nextArrival = nextArrival;
309− var delay = Math.max(0, nextArrival - now);
310− this._timer = this.timer.setTimer(this._runReadyTasksBound, delay);
311−};
312−
313−Scheduler.prototype._runReadyTasks = function _runReadyTasks (now) {
314− this._timer = null;
315− this.timeline.runTasks(now, runTask$1);
316− this._scheduleNextRun(this.now());
317−};
318−
319−/** @license MIT License (c) copyright 2010-2016 original author or authors */
320−/** @author Brian Cavalier */
321−/** @author John Hann */
322−
323−var Timeline = function Timeline () {
324− this.tasks = [];
325−};
326−
327−Timeline.prototype.nextArrival = function nextArrival () {
328− return this.isEmpty() ? Infinity : this.tasks[0].time
329−};
330−
331−Timeline.prototype.isEmpty = function isEmpty () {
332− return this.tasks.length === 0
333−};
334−
335−Timeline.prototype.add = function add (st) {
336− insertByTime(st, this.tasks);
337−};
338−
339−Timeline.prototype.remove = function remove$$1 (st) {
340− var i = binarySearch(st.time, this.tasks);
341−
342− if (i >= 0 && i < this.tasks.length) {
343− var at = findIndex(st, this.tasks[i].events);
344− if (at >= 0) {
345− this.tasks[i].events.splice(at, 1);
346− return true
347− }
348− }
349−
350− return false
351−};
352−
353−Timeline.prototype.removeAll = function removeAll$$1 (f) {
354− var this$1 = this;
355−
356− for (var i = 0; i < this.tasks.length; ++i) {
357− removeAllFrom(f, this$1.tasks[i]);
358− }
359−};
360−
361−Timeline.prototype.runTasks = function runTasks (t, runTask) {
362− var this$1 = this;
363−
364− var tasks = this.tasks;
365− var l = tasks.length;
366− var i = 0;
367−
368− while (i < l && tasks[i].time <= t) {
369− ++i;
370− }
371−
372− this.tasks = tasks.slice(i);
373−
374− // Run all ready tasks
375− for (var j = 0; j < i; ++j) {
376− this$1.tasks = runReadyTasks(runTask, tasks[j].events, this$1.tasks);
377− }
378−};
379−
380−function runReadyTasks (runTask, events, tasks) { // eslint-disable-line complexity
381− for (var i = 0; i < events.length; ++i) {
382− var task = events[i];
383−
384− if (task.active) {
385− runTask(task);
386−
387− // Reschedule periodic repeating tasks
388− // Check active again, since a task may have canceled itself
389− if (task.period >= 0 && task.active) {
390− task.time = task.time + task.period;
391− insertByTime(task, tasks);
392− }
393− }
394− }
395−
396− return tasks
397−}
398−
399−function insertByTime (task, timeslots) { // eslint-disable-line complexity
400− var l = timeslots.length;
401−
402− if (l === 0) {
403− timeslots.push(newTimeslot(task.time, [task]));
404− return
405− }
406−
407− var i = binarySearch(task.time, timeslots);
408−
409− if (i >= l) {
410− timeslots.push(newTimeslot(task.time, [task]));
411− } else if (task.time === timeslots[i].time) {
412− timeslots[i].events.push(task);
413− } else {
414− timeslots.splice(i, 0, newTimeslot(task.time, [task]));
415− }
416−}
417−
418−function removeAllFrom (f, timeslot) {
419− timeslot.events = removeAll(f, timeslot.events);
420−}
421−
422−function binarySearch (t, sortedArray) { // eslint-disable-line complexity
423− var lo = 0;
424− var hi = sortedArray.length;
425− var mid, y;
426−
427− while (lo < hi) {
428− mid = Math.floor((lo + hi) / 2);
429− y = sortedArray[mid];
430−
431− if (t === y.time) {
432− return mid
433− } else if (t < y.time) {
434− hi = mid;
435− } else {
436− lo = mid + 1;
437− }
438− }
439− return hi
440−}
441−
442−var newTimeslot = function (t, events) { return ({ time: t, events: events }); };
443−
444−var propagateTask =
445− curry3(function (run, value, sink) { return new PropagateTask(run, value, sink); });
446−
447−var eventTask =
448− curry2(function (value, sink) { return propagateTask(runEvent, value, sink); });
449−
450−var endTask = function (sink) { return propagateTask(runEnd, void 0, sink); };
451−
452−var PropagateTask = function PropagateTask (run, value, sink) {
453− var active = true;
454−
455− this.dispose = function () { active = false; };
456− this.run = function (t) {
457− if (!active) { return }
458−
459− run(t, value, sink);
460− };
461−};
462−
463−function runEvent (time, value, sink) {
464− sink.event(time)(value);
465−}
466−
467−function runEnd (time, value, sink) {
468− sink.end(time, value);
469−}
470−
471−var defaultScheduler = new Scheduler(new ClockTimer(), new Timeline());
472−
473−var scheduleTasks = curry2(function (tasks, scheduler) {
474− var scheduledTasks = tasks.map(function (task) { return scheduler.asap(task); });
475−
476− return {
477− dispose: function () { return scheduledTasks.forEach(function (task) { return task.dispose(); }); }
478− }
479−});
480−
481−var Stream = function Stream (source) {
482− this.source = source;
483−};
484−
485−var tapEnd = curry2(function (f, stream) { return new Stream(new TapEnd(f, stream.source)); });
486−
487−var tapEvent = curry2(function (f, stream) { return new Stream(new TapEvent(f, stream.source)); });
488−
489−var TapEvent = function TapEvent (f, source) {
490− this.source = source;
491− this.f = f;
492−
493− this.run = function (sink) { return function (scheduler) { return source.run(new TapSink(f, sink))(scheduler); }; };
494−};
495−
496−var TapSink = function TapSink (f, sink) {
497− this.event = function (t) { return function (x) {
498− f(x)();
499− sink.event(t)(x);
500− }; };
501−
502− this.end = function (t) {
503− sink.end(t);
504− };
505−};
506−
507−var TapEnd = function TapEnd (f, source) {
508− this.source = source;
509− this.f = f;
510−
511− this.run = function (sink) { return function (scheduler) { return source.run(new TapEndSink(f, sink))(scheduler); }; };
512−};
513−
514−var TapEndSink = function TapEndSink (f, sink) {
515− this.event = function (t) { return function (x) { return sink.event(t)(x); }; };
516−
517− this.end = function (t) {
518− f();
519− sink.end(t);
520− };
521−};
522−
523−var SettableDisposable = function SettableDisposable () {
524− this.disposable = void 0;
525− this.disposed = false;
526− this.result = void 0;
527−};
528−
529−SettableDisposable.prototype.setDisposable = function setDisposable (disposable) {
530− this.disposable = disposable;
531−
532− if (this.disposed) {
533− this.result = disposable.dispose();
534− }
535−};
536−
537−SettableDisposable.prototype.dispose = function dispose () {
538− if (this.disposed) {
539− return this.result
540− }
541−
542− this.disposed = true;
543−
544− if (this.disposable !== void 0) {
545− this.result = this.disposable.dispose();
546− }
547−
548− return this.result
549−};
550−
551−function runEffects (stream, scheduler) {
552− return runSourceEffects(stream.source, scheduler)
553−}
554−
555−var runSourceEffects = function (source, scheduler) { return runSource(source, scheduler); };
556−
557−function runSource (source, scheduler) {
558− var disposable = new SettableDisposable();
559− var observer = new RunEffectsSink(disposable);
560−
561− disposable.setDisposable(source.run(observer)(scheduler));
562−}
563−
564−var RunEffectsSink = function RunEffectsSink (disposable) {
565− this._disposable = disposable;
566− this.active = true;
567−};
568−
569−RunEffectsSink.prototype.event = function event (t) {
570− return function (x) {}
571−};
572−
573−RunEffectsSink.prototype.end = function end (t) {
574− this.active = false;
575− Promise.resolve(this._disposable).then(function (d) { return d.dispose(); });
576−};
577−
578−var drain = function (stream) { return function () { return runEffects(stream, defaultScheduler); }; };
579−
580−var combine =
581− curry3(function (f, stream1, stream2) { return new Stream(new Combine(f, stream1.source, stream2.source)); });
582−
583−var Combine = function Combine (f, source1, source2) {
584− this.f = f;
585− this.source1 = source1;
586− this.source2 = source2;
587−};
588−
589−Combine.prototype.run = function run (sink) {
590− var this$1 = this;
591−
592− return function (scheduler) {
593− var disposables = Array(2);
594− var sinks = Array(2);
595−
596− var mergeSink = new CombineSink(disposables, sinks, sink, this$1.f);
597−
598− sinks[0] = new IndexSink(0, mergeSink);
599− sinks[1] = new IndexSink(1, mergeSink);
600− disposables[0] = this$1.source1.run(sinks[0])(scheduler);
601− disposables[1] = this$1.source2.run(sinks[1])(scheduler);
602−
603− return disposeAll(disposables)
604− }
605−};
606−
607−var IndexSink = function IndexSink () {};
608−
609−IndexSink.prototype.cosntructor = function cosntructor (i, sink) {
610− this.i = i;
611− this.sink = sink;
612−};
613−
614−IndexSink.prototype.event = function event (t) {
615− var this$1 = this;
616−
617− return function (x) {
618− this$1.sink.event(t)({ index: this$1.i, value: x });
619− }
620−};
621−
622−IndexSink.prototype.end = function end (t) {
623− this.sink.end(t, this.i);
624−};
625−
626−var CombineSink = function CombineSink (disposables, sinks, sink, f) {
627− this.disposables = disposables;
628− this.sinks = sinks;
629− this.sink = sink;
630− this.f = f;
631−
632− this.awaiting = 2;
633− this.values = Array(2);
634− this.hasValue = [false, false];
635− this.activeCount = 2;
636−};
637−
638−CombineSink.prototype.event = function event (t) {
639− var this$1 = this;
640−
641− return function (ref) {
642− var index = ref.index;
643− var value = ref.value;
644−
645− var f = this$1.f;
646− var awaiting = this$1._updateReady(index);
647− this$1.values[index] = value;
648−
649− if (awaiting === 0) {
650− var result = f(this$1.values[0])(this$1.values[1]);
651− this$1.sink.event(t)(result);
652− }
653− }
654−};
655−
656−CombineSink.prototype._updateReady = function _updateReady (index) {
657− if (this.awaiting > 0) {
658− if (!this.hasValue[index]) {
659− this.hasValue[index] = true;
660− this.awaiting -= 1;
661− }
662− }
663−
664− return this.awaiting
665−};
666−
667−CombineSink.prototype.end = function end (t, ref) {
668− var index = ref.index;
669− var value = ref.value;
670−
671− this.disposables[index].dispose();
672−
673− if (--this.activeCount === 0) { this.sink.end(t); }
674−};
675−
676−/* */
677−
678−exports.createDisposable = createDisposable;
679−exports.emptyDisposable = emptyDisposable;
680−exports.disposeAll = disposeAll;
681−exports.defaultScheduler = defaultScheduler;
682−exports.scheduleTasks = scheduleTasks;
683−exports.endTask = endTask;
684−exports.eventTask = eventTask;
685−exports.tapEnd = tapEnd;
686−exports.tapEvent = tapEvent;
687−exports.drain = drain;
688−exports.combine = combine;
src/Control/Stream.purs+52−123
@@ -1,130 +1,59 @@
11module Control.Stream
2− ( STREAM
2+ ( module Control.Stream.Stream
3+ , module Control.Stream.Disposable
4+ , module Control.Stream.Scheduler
5+ , module Control.Stream.Sink
6+ , module Control.Stream.Time
7+ ) where
8+
9+import Control.Stream.Stream
10+ (STREAM
311 , EffStream
4− , PureStream
5− , Stream
6− , Source
7− , Sink
8− , Scheduler
9− , Task
10− , ScheduledTask
11− , Disposable
12− , Time
13− , createStream
14− , getSource
15− , runSource
16− , defaultScheduler
17− , eventTask
18− , endTask
19− , createDisposable
20− , emptyDisposable
21− , disposeAll
22− , scheduleTasks
12+ , Stream(..)
13+ , just
14+ , empty
15+ , never
16+ , periodic
17+ , createCombinator
18+ , createEventCombinator
19+ , createEndCombinator
2320 , drain
2421 , tapEvent
2522 , tapEnd
26− , just
2723 , fromArray
24+ , filter
25+ , take
26+ , skip
27+ , constant
28+ , continueWith
29+ , concat
30+ , startWith
31+ , scan
32+ , loop
33+ , chain
34+ , mergeConcurrently
35+ , join
36+ , mergeMapConcurrently
37+ , concatMap
38+ , switch
39+ , combine2
40+ , combine3
41+ , combine4
42+ , combine5
43+ , combineArray
44+ , merge
45+ , skipRepeatsWith
46+ , skipRepeats
47+ , until
48+ , since
49+ , during
50+ , sample
51+ , debounce
52+ , throttle
53+ , delay
54+ , multicast
2855 )
29− where
30−
31−import Control.Monad.Eff (Eff, Pure)
32−import Data.Array (snoc)
33−import Data.Functor (class Functor, map)
34−import Data.Unit (Unit)
35−import Prelude (flip)
36−
37−newtype Time = Time Int
38−
39−foreign import data STREAM :: !
40−
41−type EffStream e a = Eff (stream :: STREAM | e) a
42−type PureStream a = EffStream () a
43−
44−newtype Stream a = Stream { source :: Source a }
45−
46−type Source a = { run :: Sink a -> Scheduler -> Disposable }
47−
48−type Sink a =
49− { event :: Time -> a -> Unit
50− , end :: Time -> Unit
51− }
52−
53−type Scheduler =
54− { now :: Pure Time
55− , asap :: Task -> ScheduledTask
56− , delay :: Number -> Task -> ScheduledTask
57− , period :: Number -> Task -> ScheduledTask
58− , schedule :: Number -> Number -> Task -> ScheduledTask
59− , cancel :: ScheduledTask -> Unit
60− , cancelAll :: (ScheduledTask -> Boolean) -> Unit
61− }
62−
63−type Task =
64− { run :: Time -> Unit
65− , dispose :: Pure Unit
66− }
67−
68−type ScheduledTask =
69− { run :: Pure Unit
70− , dispose :: Pure Unit
71− }
72−
73−type Disposable = { dispose :: Pure Unit }
74−
75−instance functorStream :: Functor Stream where
76− map = _map
77−
78−createStream :: forall a. (Sink a -> Scheduler -> Disposable) -> Stream a
79−createStream run = Stream { source: { run } }
80−
81−getSource :: forall a. Stream a -> Source a
82−getSource stream = case stream of Stream a -> a.source
83−
84−runSource :: forall a. Stream a -> Sink a -> Scheduler -> Disposable
85−runSource stream sink scheduler = (getSource stream).run sink scheduler
86−
87−just :: forall a. a -> Stream a
88−just a = createStream (runJust a)
89−
90−runJust :: forall a. a -> Sink a -> Scheduler -> Disposable
91−runJust a sink scheduler =
92− scheduleTasks [ eventTask a sink, endTask sink ] scheduler
93−
94−-- TODO: remove fromArray because it's not a real event stream
95−-- replace with a fromArray combinator
96−fromArray :: forall a. Array a -> Stream a
97−fromArray arr = createStream (runFromArray arr)
98−
99−runFromArray :: forall a. Array a -> Sink a -> Scheduler -> Disposable
100−runFromArray arr sink scheduler = scheduleTasks tasks scheduler
101− where
102− tasks :: Array Task
103− tasks = snoc eventTasks (endTask sink)
104−
105− eventTasks :: Array Task
106− eventTasks = map (flip eventTask sink) arr
107−
108−_map :: forall a b. (a -> b) -> Stream a -> Stream b
109−_map f stream = createStream runMap
110− where
111− runMap :: Sink b -> Scheduler -> Disposable
112− runMap sink scheduler =
113− runSource stream (mapSink f sink) scheduler
114−
115−mapSink :: forall a b. (a -> b) -> Sink b -> Sink a
116−mapSink f sink = { event: mapEvent, end: sink.end }
117− where
118− mapEvent :: Time -> a -> Unit
119− mapEvent time value = sink.event time (f value)
120−
121−foreign import defaultScheduler :: Scheduler
122−foreign import eventTask :: forall a. a -> Sink a -> Task
123−foreign import endTask :: forall a. Sink a -> Task
124−foreign import createDisposable :: forall a. (a -> Unit) -> a -> Disposable
125−foreign import emptyDisposable :: Disposable
126−foreign import disposeAll :: Array Disposable -> Disposable
127−foreign import scheduleTasks :: Array Task -> Scheduler -> Disposable
128−foreign import drain :: forall e a. Stream a -> EffStream e Unit
129−foreign import tapEvent :: forall e a. (a -> EffStream e Unit) -> Stream a -> Stream a
130−foreign import tapEnd :: forall e a. EffStream e Unit -> Stream a -> Stream a
56+import Control.Stream.Disposable (Disposable, emptyDisposable)
57+import Control.Stream.Scheduler (Scheduler(..), Task, ScheduledTask, scheduler, scheduleTasks, eventTask, endTask)
58+import Control.Stream.Sink (Sink(..))
59+import Control.Stream.Time (Time)
src/Control/Stream/Stream.jsnew file+1244
@@ -0,0 +1,1244 @@
1+var ControlStreamScheduler = require('../Control.Stream.Scheduler')
2+var ControlStreamStream = require('../Control.Stream.Stream')
3+
4+exports.drain = function (stream) { return function () { return runSource(stream, ControlStreamScheduler.scheduler) } }
5+
6+exports.subscribe = function (event) {
7+ return function (end) {
8+ return function (stream) {
9+ return function () {
10+ var disposable = new SettableDisposable()
11+
12+ var observer = { event: event, end: end }
13+
14+ var d = stream.run(observer)(ControlStreamScheduler.scheduler)
15+
16+ disposable.setDisposable(d)
17+
18+ return {}
19+ }
20+ }
21+ }
22+}
23+
24+function runSource (source, scheduler) {
25+ var disposable = new SettableDisposable()
26+
27+ function event (t) {
28+ return function (x) {
29+ return {}
30+ }
31+ }
32+
33+ function end (t) {
34+ disposable.dispose()
35+ return {}
36+ }
37+
38+ var observer = { event: event, end: end }
39+
40+ var d = source.run(observer)(scheduler)
41+
42+ disposable.setDisposable(d)
43+
44+ return {}
45+}
46+
47+var SettableDisposable = function SettableDisposable () {
48+ this.disposable = void 0
49+ this.disposed = false
50+ this.result = void 0
51+}
52+
53+SettableDisposable.prototype.setDisposable = function setDisposable (disposable) {
54+ this.disposable = disposable
55+
56+ if (this.disposed) {
57+ this.result = disposable.dispose()
58+ }
59+}
60+
61+SettableDisposable.prototype.dispose = function dispose () {
62+ if (this.disposed) {
63+ return this.result
64+ }
65+
66+ this.disposed = true
67+
68+ if (this.disposable !== void 0) {
69+ this.result = this.disposable.dispose()
70+ }
71+
72+ return this.result
73+}
74+
75+exports.fromArray = function (array) {
76+ return function (stream) {
77+ return new FromArray(array, stream)
78+ }
79+}
80+
81+function FromArray (array, stream) {
82+ this.array = array
83+ this.stream = stream
84+}
85+
86+FromArray.prototype.run = function (sink) {
87+ var that = this
88+
89+ return function (scheduler) {
90+ return that.stream.run(new FromArraySink(sink, that.array))(scheduler)
91+ }
92+}
93+
94+function FromArraySink (sink, array) {
95+ this.sink = sink
96+ this.array = array
97+}
98+
99+FromArraySink.prototype.event = function (time) {
100+ var array = this.array
101+ var sink = this.sink
102+ return function (x) {
103+ var value = array.shift()
104+
105+ if (value) {
106+ sink.event(time)(value)
107+ } else {
108+ sink.end(time)
109+ }
110+ }
111+}
112+
113+FromArraySink.prototype.end = function (time) {
114+ this.sink.end(time)
115+}
116+
117+var LinkedList = function LinkedList () {
118+ this.head = null
119+ this.length = 0
120+}
121+
122+LinkedList.prototype.add = function add (x) {
123+ if (this.head !== null) {
124+ this.head.prev = x
125+ x.next = this.head
126+ }
127+ this.head = x
128+ ++this.length
129+}
130+
131+LinkedList.prototype.remove = function remove (x) { // eslint-disable-line complexity
132+ --this.length
133+ if (x === this.head) {
134+ this.head = this.head.next
135+ }
136+ if (x.next !== null) {
137+ x.next.prev = x.prev
138+ x.next = null
139+ }
140+ if (x.prev !== null) {
141+ x.prev.next = x.next
142+ x.prev = null
143+ }
144+}
145+
146+LinkedList.prototype.isEmpty = function isEmpty () {
147+ return this.length === 0
148+}
149+
150+LinkedList.prototype.dispose = function dispose () {
151+ if (this.isEmpty()) { return }
152+
153+ var x = this.head
154+ this.head = null
155+ this.length = 0
156+
157+ while (x !== null) {
158+ x.dispose()
159+ x = x.next
160+ }
161+}
162+
163+exports.chain = function (f) {
164+ return function (stream) {
165+ return mergeMapConcurrently(f)(Infinity)(stream)
166+ }
167+}
168+
169+exports.mergeConcurrently = mergeConcurrently
170+
171+function mergeConcurrently (concurrency) {
172+ return function (stream) {
173+ return mergeMapConcurrently(function (x) { return x })(concurrency)(stream)
174+ }
175+}
176+
177+exports.join = mergeConcurrently(Infinity)
178+
179+exports.mergeMapConcurrently = mergeMapConcurrently
180+
181+function mergeMapConcurrently (f) {
182+ return function (concurrency) {
183+ return function (stream) {
184+ var mstream = new MergeConcurrently(f, concurrency, stream)
185+
186+ mstream.run.bind(mstream)
187+
188+ return mstream
189+ }
190+ }
191+}
192+
193+function MergeConcurrently (f, concurrency, source) {
194+ this.f = f
195+ this.concurrency = concurrency
196+ this.source = source
197+}
198+
199+MergeConcurrently.prototype.run = function run (sink) {
200+ var this$1 = this
201+
202+ return function (scheduler) { return new Outer(this$1.f, this$1.concurrency, this$1.source, sink, scheduler) }
203+}
204+
205+var Outer = function Outer (f, concurrency, source, sink, scheduler) {
206+ this.f = f
207+ this.concurrency = concurrency
208+ this.sink = sink
209+ this.scheduler = scheduler
210+ this.pending = []
211+ this.current = new LinkedList()
212+
213+ var disposed = false
214+ var disposable = source.run(this)(scheduler)
215+
216+ this.disposable = {
217+ dispose: function () {
218+ if (disposed) return
219+
220+ disposed = true
221+ disposable.dispose()
222+ }
223+ }
224+
225+ this.active = true
226+}
227+
228+Outer.prototype.event = function event (t) {
229+ var this$1 = this
230+
231+ return function (x) { return this$1._addInner(t, x) }
232+}
233+
234+Outer.prototype._addInner = function _addInner (t, x) {
235+ if (this.current.length < this.concurrency) {
236+ this._startInner(t, x)
237+ } else {
238+ this.pending.push(x)
239+ }
240+}
241+
242+Outer.prototype._startInner = function _startInner (t, x) {
243+ this._initInner(t, x)
244+}
245+
246+Outer.prototype._initInner = function _initInner (t, x) {
247+ var innerSink = new Inner(t, this, this.sink)
248+ innerSink.disposable = mapAndRun(this.f, x, innerSink, this.scheduler)
249+ this.current.add(innerSink)
250+}
251+
252+Outer.prototype.end = function end (t) {
253+ this.active = false
254+ this.disposable.dispose()
255+ this._checkEnd(t)
256+}
257+
258+Outer.prototype.dispose = function dispose () {
259+ this.active = false
260+ this.pending.length = 0
261+ this.disposable.dispose()
262+ this.current.dispose()
263+}
264+
265+Outer.prototype._endInner = function _endInner (t, inner) {
266+ this.current.remove(inner)
267+ inner.dispose()
268+
269+ if (this.pending.length === 0) {
270+ this._checkEnd(t)
271+ } else {
272+ this._startInner(t, this.pending.shift())
273+ }
274+}
275+
276+Outer.prototype._checkEnd = function _checkEnd (t) {
277+ if (!this.active && this.current.isEmpty()) {
278+ this.sink.end(t)
279+ }
280+}
281+
282+var mapAndRun = function (f, x, sink, scheduler) { return f(x).run(sink)(scheduler) }
283+
284+var Inner = function Inner (time, outer, sink) {
285+ this.prev = this.next = null
286+ this.time = time
287+ this.outer = outer
288+ this.sink = sink
289+ this.disposable = void 0
290+}
291+
292+Inner.prototype.event = function event (t) {
293+ var this$1 = this
294+
295+ return function (x) { return this$1.sink.event(Math.max(t, this$1.time))(x) }
296+}
297+
298+Inner.prototype.end = function end (t) {
299+ this.outer._endInner(Math.max(t, this.time), this)
300+}
301+
302+Inner.prototype.dispose = function dispose () {
303+ return this.disposable.dispose()
304+}
305+
306+exports.switch = function switchLatest (stream) {
307+ return new Switch(stream)
308+}
309+
310+function Switch (source) {
311+ this.source = source
312+}
313+
314+Switch.prototype.run = function (sink) {
315+ var this$1 = this
316+
317+ return function (scheduler) {
318+ var switchSink = new SwitchSink(sink, scheduler)
319+ var disposable = this$1.source.run(switchSink)(scheduler)
320+
321+ return {
322+ dispose: function () {
323+ switchSink.dispose()
324+ disposable.dispose()
325+ }
326+ }
327+ }
328+}
329+
330+function SwitchSink (sink, scheduler) {
331+ this.sink = sink
332+ this.scheduler = scheduler
333+ this.current = null
334+ this.ended = false
335+}
336+
337+SwitchSink.prototype.event = function (t) {
338+ var this$1 = this
339+
340+ return function (stream) {
341+ this$1._disposeCurrent(t) // TODO: capture the result of this dispose
342+ this$1.current = new Segment(t, Infinity, this$1, this$1.sink)
343+ this$1.current.disposable = stream.run(this$1.current)(this$1.scheduler)
344+ }
345+}
346+
347+SwitchSink.prototype.end = function (t, x) {
348+ this.ended = true
349+ this._checkEnd(t, x)
350+}
351+
352+SwitchSink.prototype.dispose = function () {
353+ return this._disposeCurrent(this.scheduler.now())
354+}
355+
356+SwitchSink.prototype._disposeCurrent = function (t) {
357+ if (this.current !== null) {
358+ return this.current._dispose(t)
359+ }
360+}
361+
362+SwitchSink.prototype._disposeInner = function (t, inner) {
363+ inner._dispose(t) // TODO: capture the result of this dispose
364+ if (inner === this.current) {
365+ this.current = null
366+ }
367+}
368+
369+SwitchSink.prototype._checkEnd = function (t, x) {
370+ if (this.ended && this.current === null) {
371+ this.sink.end(t, x)
372+ }
373+}
374+
375+SwitchSink.prototype._endInner = function (t, x, inner) {
376+ this._disposeInner(t, inner)
377+ this._checkEnd(t, x)
378+}
379+
380+function Segment (min, max, outer, sink) {
381+ this.min = min
382+ this.max = max
383+ this.outer = outer
384+ this.sink = sink
385+ this.disposable = { dispose: Function.prototype }
386+}
387+
388+Segment.prototype.event = function (t) {
389+ var this$1 = this
390+
391+ return function (x) {
392+ if (t < this$1.max) {
393+ this$1.sink.event(Math.max(t, this$1.min))(x)
394+ }
395+ }
396+}
397+
398+Segment.prototype.end = function (t, x) {
399+ this.outer._endInner(Math.max(t, this.min), x, this)
400+}
401+
402+Segment.prototype._dispose = function (t) {
403+ this.max = t
404+ this.disposable.dispose()
405+}
406+
407+exports.continueWith = function continueWith (f) {
408+ return function (stream) {
409+ return new ContinueWith(f, stream)
410+ }
411+}
412+
413+function ContinueWith (f, source) {
414+ this.f = f
415+ this.source = source
416+}
417+
418+ContinueWith.prototype.run = function (sink) {
419+ var that = this
420+ return function (scheduler) {
421+ return new ContinueWithSink(that.f, that.source, sink, scheduler)
422+ }
423+}
424+
425+function ContinueWithSink (f, source, sink, scheduler) {
426+ this.f = f
427+ this.sink = sink
428+ this.scheduler = scheduler
429+ this.active = true
430+ this.disposable = source.run(this)(scheduler)
431+}
432+
433+ContinueWithSink.prototype.event = function (t) {
434+ var that = this
435+
436+ return function (x) {
437+ if (!that.active) {
438+ return
439+ }
440+ that.sink.event(t)(x)
441+ }
442+}
443+
444+ContinueWithSink.prototype.end = function (t, x) {
445+ if (!this.active) {
446+ return
447+ }
448+
449+ this.disposable.dispose()
450+
451+ this._startNext(t, x, this.sink)
452+}
453+
454+ContinueWithSink.prototype._startNext = function (t, x, sink) {
455+ try {
456+ this.disposable = this._continue(this.f, x, sink)
457+ } catch (e) {
458+ sink.error(t, e)
459+ }
460+}
461+
462+ContinueWithSink.prototype._continue = function (f, x, sink) {
463+ return f(x).run(sink)(this.scheduler)
464+}
465+
466+ContinueWithSink.prototype.dispose = function () {
467+ this.active = false
468+ return this.disposable.dispose()
469+}
470+
471+exports.combine2 = function (f) { return function (s1) { return function (s2) { return combineArray(f, [s1, s2]) } } }
472+exports.combine3 = function (f) { return function (s1) { return function (s2) { return function (s3) { return combineArray(f, [s1, s2, s3]) } } } }
473+exports.combine4 = function (f) { return function (s1) { return function (s2) { return function (s3) { return function (s4) { return combineArray(f, [s1, s2, s3, s4]) } } } } }
474+exports.combine5 = function (f) { return function (s1) { return function (s2) { return function (s3) { return function (s4) { return function (s5) { return combineArray(f, [s1, s2, s3, s4, s5]) } } } } } }
475+
476+exports.combineArray = function (streams) {
477+ return combineArray(Array, streams)
478+}
479+
480+function combineArray (f, streams) {
481+ return new Combine(f, streams)
482+}
483+
484+function Combine (f, sources) {
485+ this.f = f
486+ this.sources = sources
487+}
488+
489+Combine.prototype.run = function (sink) {
490+ var this$1 = this
491+
492+ return function (scheduler) {
493+ var l = this$1.sources.length
494+ var disposables = new Array(l)
495+ var sinks = new Array(l)
496+
497+ var mergeSink = new CombineSink(disposables, sinks, sink, this$1.f)
498+
499+ for (var indexSink, i = 0; i < l; ++i) {
500+ indexSink = sinks[i] = new IndexSink(i, mergeSink)
501+ disposables[i] = this$1.sources[i].run(indexSink)(scheduler)
502+ }
503+
504+ return {
505+ dispose: function () {
506+ disposables.forEach(function (d) {
507+ d.dispose()
508+ })
509+ }
510+ }
511+ }
512+}
513+
514+function CombineSink (disposables, sinks, sink, f) {
515+ var this$1 = this
516+
517+ this.sink = sink
518+ this.disposables = disposables
519+ this.sinks = sinks
520+ this.f = f
521+
522+ var l = sinks.length
523+ this.awaiting = l
524+ this.values = new Array(l)
525+ this.hasValue = new Array(l)
526+
527+ for (var i = 0; i < l; ++i) {
528+ this$1.hasValue[i] = false
529+ }
530+
531+ this.activeCount = sinks.length
532+}
533+
534+CombineSink.prototype.event = function (t) {
535+ var this$1 = this
536+
537+ return function (indexedValue) {
538+ var i = indexedValue.index
539+ var awaiting = this$1._updateReady(i)
540+
541+ this$1.values[i] = indexedValue.value
542+ if (awaiting === 0) {
543+ var value = tail(this$1.values).reduce(function (f, x) { return f(x) }, this$1.f(this$1.values[0]))
544+ this$1.sink.event(t)(value)
545+ }
546+ }
547+}
548+
549+CombineSink.prototype._updateReady = function (index) {
550+ if (this.awaiting > 0) {
551+ if (!this.hasValue[index]) {
552+ this.hasValue[index] = true
553+ this.awaiting -= 1
554+ }
555+ }
556+ return this.awaiting
557+}
558+
559+CombineSink.prototype.end = function (t, indexedValue) {
560+ this.disposables[indexedValue.index].dispose()
561+
562+ if (--this.activeCount === 0) {
563+ this.sink.end(t)
564+ }
565+}
566+
567+var IndexSink = function IndexSink (i, sink) {
568+ this.sink = sink
569+ this.index = i
570+ this.active = true
571+ this.value = void 0
572+}
573+
574+IndexSink.prototype.event = function event (t) {
575+ var this$1 = this
576+
577+ return function (x) {
578+ if (!this$1.active) { return }
579+
580+ this$1.value = x
581+ this$1.sink.event(t)(this$1)
582+ }
583+}
584+
585+IndexSink.prototype.end = function end (t) {
586+ if (!this.active) { return }
587+
588+ this.active = false
589+ this.sink.end(t, { index: this.index })
590+}
591+
592+function drop (n, a) { // eslint-disable-line complexity
593+ if (n < 0) {
594+ throw new TypeError('n must be >= 0')
595+ }
596+
597+ var l = a.length
598+ if (n === 0 || l === 0) {
599+ return a
600+ }
601+
602+ if (n >= l) {
603+ return []
604+ }
605+
606+ return unsafeDrop(n, a, l - n)
607+}
608+
609+// unsafeDrop :: Int -> [a] -> Int -> [a]
610+// Internal helper for drop
611+function unsafeDrop (n, a, l) {
612+ var b = new Array(l)
613+ for (var i = 0; i < l; ++i) {
614+ b[i] = a[n + i]
615+ }
616+ return b
617+}
618+
619+// tail :: [a] -> [a]
620+// drop head element
621+function tail (a) {
622+ return drop(1, a)
623+}
624+
625+exports.merge = function merge (streams) {
626+ return mergeSources(streams)
627+}
628+
629+/**
630+ * This implements fusion/flattening for merge. It will
631+ * fuse adjacent merge operations. For example:
632+ * - a.merge(b).merge(c) effectively becomes merge(a, b, c)
633+ * - merge(a, merge(b, c)) effectively becomes merge(a, b, c)
634+ * It does this by concatenating the sources arrays of
635+ * any nested Merge sources, in effect "flattening" nested
636+ * merge operations into a single merge.
637+ */
638+function mergeSources (streams) {
639+ return new Merge(reduce(appendSources, [], streams))
640+}
641+
642+function appendSources (sources, stream) {
643+ return stream instanceof Merge
644+ ? sources.concat(stream.sources)
645+ : sources.concat(stream)
646+}
647+
648+function Merge (sources) {
649+ this.sources = sources
650+}
651+
652+Merge.prototype.run = function (sink) {
653+ var this$1 = this
654+
655+ return function (scheduler) {
656+ var l = this.sources.length
657+ var disposables = new Array(l)
658+ var sinks = new Array(l)
659+
660+ var mergeSink = new MergeSink(disposables, sinks, sink)
661+
662+ for (var indexSink, i = 0; i < l; ++i) {
663+ indexSink = sinks[i] = new IndexSink(i, mergeSink)
664+ disposables[i] = this$1.sources[i].run(indexSink, scheduler)
665+ }
666+
667+ return all(disposables)
668+ }
669+}
670+
671+function all (disposables) {
672+ return {
673+ dispose: function () {
674+ disposables.forEach(function (d) {
675+ d.dispose()
676+ })
677+ }
678+ }
679+}
680+
681+function MergeSink (disposables, sinks, sink) {
682+ this.sink = sink
683+ this.disposables = disposables
684+ this.activeCount = sinks.length
685+}
686+
687+MergeSink.prototype.event = function (t) {
688+ var that = this
689+ return function (indexValue) {
690+ that.sink.event(t)(indexValue.value)
691+ }
692+}
693+
694+MergeSink.prototype.end = function (t, indexedValue) {
695+ this.disposables[indexedValue.index].dispose()
696+ if (--this.activeCount === 0) {
697+ this.sink.end(t, indexedValue.value)
698+ }
699+}
700+
701+function reduce (f, z, a) {
702+ var r = z
703+ for (var i = 0, l = a.length; i < l; ++i) {
704+ r = f(r, a[i], i)
705+ }
706+ return r
707+}
708+
709+exports.until = function takeUntil (signal) {
710+ return function (stream) {
711+ return new Until(signal, stream)
712+ }
713+}
714+
715+exports.since = function skipUntil (signal) {
716+ return function (stream) {
717+ return new Since(signal, stream)
718+ }
719+}
720+
721+function Until (maxSignal, source) {
722+ this.maxSignal = maxSignal
723+ this.source = source
724+}
725+
726+Until.prototype.run = function (sink) {
727+ var that = this
728+ return function (scheduler) {
729+ var min = new Bound(-Infinity, sink)
730+ var max = new UpperBound(that.maxSignal, sink, scheduler)
731+ var disposable = that.source.run(new TimeWindowSink(min, max, sink), scheduler)
732+
733+ return all([min, max, disposable])
734+ }
735+}
736+
737+function Since (minSignal, source) {
738+ this.minSignal = minSignal
739+ this.source = source
740+}
741+
742+Since.prototype.run = function (sink) {
743+ var that = this
744+ return function (scheduler) {
745+ var min = new LowerBound(that.minSignal, sink, scheduler)
746+ var max = new Bound(Infinity, sink)
747+ var disposable = that.source.run(new TimeWindowSink(min, max, sink))(scheduler)
748+
749+ return all([min, max, disposable])
750+ }
751+}
752+
753+function Bound (value, sink) {
754+ this.value = value
755+ this.sink = sink
756+}
757+
758+Bound.prototype.event = noop
759+Bound.prototype.end = noop
760+Bound.prototype.dispose = noop
761+
762+function TimeWindowSink (min, max, sink) {
763+ this.min = min
764+ this.max = max
765+ this.sink = sink
766+}
767+
768+TimeWindowSink.prototype.event = function (t, x) {
769+ var that = this
770+ return function (x) {
771+ if (t >= that.min.value && t < that.max.value) {
772+ that.sink.event(t)(x)
773+ }
774+ }
775+}
776+
777+TimeWindowSink.prototype.end = function (time) {
778+ this.sink.end(time)
779+}
780+
781+function LowerBound (signal, sink, scheduler) {
782+ this.value = Infinity
783+ this.sink = sink
784+ this.disposable = signal.run(this)(scheduler)
785+}
786+
787+LowerBound.prototype.event = function (t /*, x */) {
788+ return function () {
789+ if (t < this.value) {
790+ this.value = t
791+ }
792+ }
793+}
794+
795+LowerBound.prototype.end = noop
796+
797+LowerBound.prototype.dispose = function () {
798+ return this.disposable.dispose()
799+}
800+
801+function UpperBound (signal, sink, scheduler) {
802+ this.value = Infinity
803+ this.sink = sink
804+ this.disposable = signal.run(this)(scheduler)
805+}
806+
807+UpperBound.prototype.event = function (t) {
808+ var that = this
809+
810+ return function (x) {
811+ if (t < this.value) {
812+ that.value = t
813+ that.sink.end(t)
814+ }
815+ }
816+}
817+
818+UpperBound.prototype.end = noop
819+
820+UpperBound.prototype.dispose = function () {
821+ return this.disposable.dispose()
822+}
823+
824+function noop () { }
825+
826+exports.throttle = function throttle (period) {
827+ return function (stream) {
828+ return throttleSource(period, stream)
829+ }
830+}
831+
832+function throttleSource (period, source) {
833+ return source instanceof Throttle
834+ ? fuseThrottle(period, source)
835+ : new Throttle(period, source)
836+}
837+
838+function fuseThrottle (period, source) {
839+ return new Throttle(Math.max(period, source.period), source.source)
840+}
841+
842+function Throttle (period, source) {
843+ this.period = period
844+ this.source = source
845+}
846+
847+Throttle.prototype.run = function (sink) {
848+ var that = this
849+ return function (scheduler) {
850+ return that.source.run(new ThrottleSink(that.period, sink), scheduler)
851+ }
852+}
853+
854+function ThrottleSink (period, sink) {
855+ this.time = 0
856+ this.period = period
857+ this.sink = sink
858+}
859+
860+ThrottleSink.prototype.event = function (t) {
861+ var that = this
862+ return function (x) {
863+ if (t >= this.time) {
864+ that.time = t + this.period
865+ that.sink.event(t)(x)
866+ }
867+ }
868+}
869+
870+ThrottleSink.prototype.end = function (t) { this.sink.end(t) }
871+
872+exports.debounce = function debounce (period) {
873+ return function (stream) {
874+ return new Debounce(period, stream)
875+ }
876+}
877+
878+function Debounce (dt, source) {
879+ this.dt = dt
880+ this.source = source
881+}
882+
883+Debounce.prototype.run = function (sink) {
884+ var that = this
885+ return function (scheduler) {
886+ return new DebounceSink(that.dt, that.source, sink, scheduler)
887+ }
888+}
889+
890+function DebounceSink (dt, source, sink, scheduler) {
891+ this.dt = dt
892+ this.sink = sink
893+ this.scheduler = scheduler
894+ this.value = void 0
895+ this.timer = null
896+
897+ var sourceDisposable = source.run(this)(scheduler)
898+ this.disposable = all([this, sourceDisposable])
899+}
900+
901+DebounceSink.prototype.event = function (t) {
902+ var that = this
903+ return function (x) {
904+ that._clearTimer()
905+ that.value = x
906+ var task = ControlStreamScheduler.eventTask(that.sink)(x)
907+ that.timer = this.scheduler.delay(this.dt, task)
908+ }
909+}
910+
911+DebounceSink.prototype.end = function (t, x) {
912+ if (this._clearTimer()) {
913+ this.sink.event(t, this.value)
914+ this.value = void 0
915+ }
916+ this.sink.end(t, x)
917+}
918+
919+DebounceSink.prototype.dispose = function () {
920+ this._clearTimer()
921+}
922+
923+DebounceSink.prototype._clearTimer = function () {
924+ if (this.timer === null) {
925+ return false
926+ }
927+ this.timer.dispose()
928+ this.timer = null
929+ return true
930+}
931+
932+exports.delay = function delay (delayTime) {
933+ return function (stream) {
934+ return delayTime <= 0 ? stream : new Delay(delayTime, stream)
935+ }
936+}
937+
938+function Delay (dt, source) {
939+ this.dt = dt
940+ this.source = source
941+}
942+
943+Delay.prototype.run = function (sink) {
944+ var that = this
945+
946+ return function (scheduler) {
947+ var delaySink = new DelaySink(that.dt, sink, scheduler)
948+ return all([delaySink, that.source.run(delaySink)(scheduler)])
949+ }
950+}
951+
952+function DelaySink (dt, sink, scheduler) {
953+ this.dt = dt
954+ this.sink = sink
955+ this.scheduler = scheduler
956+}
957+
958+DelaySink.prototype.dispose = function () {
959+ var self = this
960+ this.scheduler.cancelAll(function (task) {
961+ return task.sink === self.sink
962+ })
963+}
964+
965+DelaySink.prototype.event = function (t) {
966+ var that = this
967+ return function (x) {
968+ that.scheduler.delay(that.dt)(ControlStreamScheduler.eventTask(that.sink)(x))
969+ }
970+}
971+
972+DelaySink.prototype.end = function (t, x) {
973+ this.scheduler.delay(this.dt)(ControlStreamScheduler.endTask(this.sink))
974+}
975+
976+var MulticastDisposable = function MulticastDisposable (source, sink) {
977+ this.source = source
978+ this.sink = sink
979+ this.disposed = false
980+}
981+
982+MulticastDisposable.prototype.dispose = function dispose () {
983+ if (this.disposed) {
984+ return
985+ }
986+ this.disposed = true
987+ var remaining = this.source.remove(this.sink)
988+ return remaining === 0 && this.source._dispose()
989+}
990+
991+var dispose = function (disposable) { return disposable.dispose() }
992+
993+var emptyDisposable = {
994+ dispose: function dispose$1 () { }
995+}
996+
997+function MulticastSource (source) {
998+ this.source = source
999+ this.sinks = []
1000+ this._disposable = emptyDisposable
1001+}
1002+
1003+MulticastSource.prototype.run = function run (sink) {
1004+ var that = this
1005+ return function (scheduler) {
1006+ var n = that.add(sink)
1007+ if (n === 1) {
1008+ that._disposable = that.source.run(that)(scheduler)
1009+ }
1010+ return new MulticastDisposable(that, sink)
1011+ }
1012+}
1013+
1014+MulticastSource.prototype._dispose = function _dispose () {
1015+ var disposable = this._disposable
1016+ this._disposable = emptyDisposable
1017+ return Promise.resolve(disposable).then(dispose)
1018+}
1019+
1020+MulticastSource.prototype.add = function add (sink) {
1021+ this.sinks = append(sink, this.sinks)
1022+ return this.sinks.length
1023+}
1024+
1025+function append (x, a) {
1026+ var l = a.length
1027+ var b = new Array(l + 1)
1028+ for (var i = 0; i < l; ++i) {
1029+ b[i] = a[i]
1030+ }
1031+
1032+ b[l] = x
1033+ return b
1034+}
1035+
1036+MulticastSource.prototype.remove = function remove$1 (sink) {
1037+ var i = findIndex(sink, this.sinks)
1038+ // istanbul ignore next
1039+ if (i >= 0) {
1040+ this.sinks = remove(i, this.sinks)
1041+ }
1042+
1043+ return this.sinks.length
1044+}
1045+
1046+function findIndex (x, a) {
1047+ for (var i = 0, l = a.length; i < l; ++i) {
1048+ if (x === a[i]) {
1049+ return i
1050+ }
1051+ }
1052+ return -1
1053+}
1054+
1055+function remove (i, a) { // eslint-disable-line complexity
1056+ if (i < 0) {
1057+ throw new TypeError('i must be >= 0')
1058+ }
1059+
1060+ var l = a.length
1061+ if (l === 0 || i >= l) { // exit early if index beyond end of array
1062+ return a
1063+ }
1064+
1065+ if (l === 1) { // exit early if index in bounds and length === 1
1066+ return []
1067+ }
1068+
1069+ return unsafeRemove(i, a, l - 1)
1070+}
1071+
1072+// unsafeRemove :: Int -> [a] -> Int -> [a]
1073+// Internal helper to remove element at index
1074+function unsafeRemove (i, a, l) {
1075+ var b = new Array(l)
1076+ var j
1077+ for (j = 0; j < i; ++j) {
1078+ b[j] = a[j]
1079+ }
1080+ for (j = i; j < l; ++j) {
1081+ b[j] = a[j + 1]
1082+ }
1083+
1084+ return b
1085+}
1086+
1087+MulticastSource.prototype.event = function event (time) {
1088+ var that = this
1089+ return function (value) {
1090+ var s = that.sinks
1091+ if (s.length === 1) {
1092+ return s[0].event(time)(value)
1093+ }
1094+ for (var i = 0; i < s.length; ++i) {
1095+ s[i].event(time)(value)
1096+ }
1097+ }
1098+}
1099+
1100+MulticastSource.prototype.end = function end (time) {
1101+ var s = this.sinks
1102+ for (var i = 0; i < s.length; ++i) {
1103+ s[i].end(time)
1104+ }
1105+}
1106+
1107+MulticastSource.prototype.until = function (signal) {
1108+ return exports.until(signal)(this)
1109+}
1110+
1111+exports.multicast = function multicast (stream) {
1112+ return new MulticastSource(stream)
1113+}
1114+
1115+function __extends (d, b) { // eslint-disable-line complexity
1116+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]
1117+ function __ () { this.constructor = d }
1118+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __())
1119+}
1120+
1121+var HoldSubjectSource = (function (_super) {
1122+ __extends(HoldSubjectSource, _super)
1123+ function HoldSubjectSource (source, bufferSize) {
1124+ var _this = _super.call(this, source) || this
1125+ _this.has = false
1126+ _this.buffer = []
1127+ _this.bufferSize = bufferSize
1128+ return _this
1129+ }
1130+ HoldSubjectSource.prototype.add = function (sink) {
1131+ if (this.has) {
1132+ pushEvents(this.buffer, sink)
1133+ }
1134+ return _super.prototype.add.call(this, sink)
1135+ }
1136+ HoldSubjectSource.prototype.event = function (time) {
1137+ var that = this
1138+ return function (value) {
1139+ that.has = true
1140+ that.buffer = dropAndAppend(value, that.buffer, that.bufferSize)
1141+ return _super.prototype.event.call(that, time)(value)
1142+ }
1143+ }
1144+ return HoldSubjectSource
1145+}(MulticastSource))
1146+
1147+function pushEvents (buffer, sink) {
1148+ var length = buffer.length
1149+ for (var i = 0; i < length; ++i) {
1150+ sink.event(ControlStreamScheduler.scheduler.now(), buffer[i])
1151+ }
1152+}
1153+
1154+function dropAndAppend (value, buffer, bufferSize) {
1155+ if (buffer.length === bufferSize) {
1156+ return append(value, drop(1, buffer))
1157+ }
1158+ return append(value, buffer)
1159+}
1160+
1161+exports.hold = function hold (bufferSize) {
1162+ return function (stream) {
1163+ return new HoldSubjectSource(stream, bufferSize)
1164+ }
1165+}
1166+
1167+exports.toSubject = function (stream) {
1168+ return exports.multicast(stream)
1169+}
1170+
1171+exports.toHoldSubject = exports.hold
1172+
1173+exports.fromSubject = function (subject) {
1174+ return subject
1175+}
1176+
1177+exports.subjectEvent = function (value) {
1178+ return function (subject) {
1179+ ControlStreamScheduler.eventTask(subject)(value)
1180+ return subject
1181+ }
1182+}
1183+
1184+exports.subjectEnd = function (value) {
1185+ return function (subject) {
1186+ subject.end(Date.now())
1187+ return subject
1188+ }
1189+}
1190+
1191+exports.proxy = function (value) {
1192+ var stream = new ProxyStream(value)
1193+
1194+ function attach (original) {
1195+ stream.attach(original)
1196+ return original
1197+ }
1198+
1199+ return { attach: attach, stream: stream }
1200+}
1201+
1202+var ProxyStream = (function (_super) {
1203+ __extends(ProxyStream, _super)
1204+ function ProxyStream (value) {
1205+ var _this = _super.call(this, ControlStreamStream.never, 1) || this
1206+ _this.attached = false
1207+ _this.running = false
1208+ _this.buffer.push(value)
1209+ return _this
1210+ }
1211+ ProxyStream.prototype.run = function (sink) {
1212+ var that = this
1213+
1214+ that.add(sink)
1215+
1216+ return function (scheduler) {
1217+ if (that.attached && !that.running) {
1218+ that.running = true
1219+ that._disposable = that.source.run(that)(scheduler)
1220+ return that._disposable
1221+ }
1222+
1223+ return new MulticastDisposable(that, sink)
1224+ }
1225+ }
1226+
1227+ ProxyStream.prototype.attach = function (source) {
1228+ if (this.attached) throw new Error('Can only proxy 1 stream')
1229+ this.attached = true
1230+
1231+ this.source = source
1232+
1233+ if (this.sinks.length) { this._disposable = source.run(this)(ControlStreamScheduler.scheduler) }
1234+ }
1235+
1236+ ProxyStream.prototype.end = function end (time) {
1237+ this.attached = false
1238+ this.running = false
1239+
1240+ return _super.prototype.end.call(this, time)
1241+ }
1242+
1243+ return ProxyStream
1244+}(HoldSubjectSource))
src/Control/Stream/Stream.pursnew file+340
@@ -0,0 +1,340 @@
1+module Control.Stream.Stream
2+ ( STREAM
3+ , EffStream
4+ , Stream(..)
5+ , just
6+ , empty
7+ , never
8+ , periodic
9+ , createCombinator
10+ , createEventCombinator
11+ , createEndCombinator
12+ , drain
13+ , tapEvent
14+ , tapEnd
15+ , fromArray
16+ , filter
17+ , take
18+ , skip
19+ , constant
20+ , continueWith
21+ , concat
22+ , startWith
23+ , scan
24+ , loop
25+ , chain
26+ , mergeConcurrently
27+ , join
28+ , mergeMapConcurrently
29+ , concatMap
30+ , switch
31+ , combine2
32+ , combine3
33+ , combine4
34+ , combine5
35+ , combineArray
36+ , merge
37+ , skipRepeatsWith
38+ , skipRepeats
39+ , until
40+ , since
41+ , during
42+ , sample
43+ , debounce
44+ , throttle
45+ , delay
46+ , multicast
47+ , hold
48+ , Subject
49+ , toSubject
50+ , toHoldSubject
51+ , fromSubject
52+ , subjectEvent
53+ , subjectEnd
54+ , subscribe
55+ ) where
56+
57+import Control.Alternative (class Apply)
58+import Control.Bind (class Bind)
59+import Control.Category (id)
60+import Control.Monad.Eff (Eff, Pure, runPure)
61+import Control.Monad.Eff.Ref (Ref, modifyRef', newRef, readRef)
62+import Control.Monad.Eff.Unsafe (unsafeCoerceEff, unsafePerformEff)
63+import Control.MonadPlus (class Alt, class Alternative, class MonadPlus, class Plus)
64+import Control.MonadZero (class Applicative, class MonadZero)
65+import Control.Stream.Disposable (Disposable, emptyDisposable, disposeAll)
66+import Control.Stream.Scheduler (Scheduler(..), endTask, eventTask, scheduleTasks)
67+import Control.Stream.Sink (Sink(..))
68+import Control.Stream.Stream (Stream(..), EffStream, empty, just)
69+import Control.Stream.Time (Time)
70+import Data.Eq ((==))
71+import Data.EuclideanRing ((-))
72+import Data.Functor (class Functor)
73+import Data.Maybe (Maybe(..), fromJust, isNothing)
74+import Data.Monoid (class Monoid)
75+import Data.Unit (Unit, unit)
76+import Partial.Unsafe (unsafePartial)
77+import Prelude (class Eq, class Monad, class Semigroup, eq)
78+
79+foreign import data STREAM :: !
80+
81+type EffStream e a = Eff (stream :: STREAM | e) a
82+
83+foreign import data Subject :: * -> *
84+
85+newtype Stream a = Stream { run :: Sink a -> Scheduler -> Disposable }
86+
87+instance functorStream :: Functor Stream where
88+ map = mapStream
89+
90+instance applyStream :: Apply Stream where
91+ apply = combine2 id
92+
93+instance applicativeStream :: Applicative Stream where
94+ pure = just
95+
96+instance bindStream :: Bind Stream where
97+ bind = chain
98+
99+instance monadStream :: Monad Stream
100+
101+instance semigroupStream :: Semigroup (Stream a) where
102+ append = concat
103+
104+instance altStream :: Alt Stream where
105+ alt = \s1 s2 -> merge [s1, s2]
106+
107+instance monoidStream :: Monoid (Stream a) where
108+ mempty = empty
109+
110+instance plusStream :: Plus Stream where
111+ empty = empty
112+
113+instance alternativeStream :: Alternative Stream
114+
115+instance monadZeroStream :: MonadZero Stream
116+
117+instance monadPlusStream :: MonadPlus Stream
118+
119+just :: forall a. a -> Stream a
120+just a = Stream { run } where
121+ run :: Sink a -> Scheduler -> Disposable
122+ run sink (Scheduler scheduler) =
123+ scheduleTasks scheduler.asap [ (eventTask sink a), (endTask sink) ]
124+
125+empty :: forall a. Stream a
126+empty = Stream { run } where
127+ run :: Sink a -> Scheduler -> Disposable
128+ run sink (Scheduler scheduler) = scheduleTasks scheduler.asap [ endTask sink ]
129+
130+never :: forall a. Stream a
131+never = Stream { run: \sink scheduler -> emptyDisposable }
132+
133+periodic :: Number -> Stream Unit
134+periodic period = Stream { run } where
135+ run :: Sink Unit -> Scheduler -> Disposable
136+ run sink (Scheduler scheduler) = do
137+ let task = eventTask sink unit
138+ let scheduledTask = scheduler.periodic period task
139+ { dispose : scheduledTask.dispose }
140+
141+createCombinator :: forall a b. (Sink b -> Time -> a -> Unit) -> (Sink b -> Time -> Unit) -> Stream a -> Stream b
142+createCombinator event end (Stream stream) = Stream { run } where
143+ run :: Sink b -> Scheduler -> Disposable
144+ run sink scheduler = stream.run (Sink { event: (event sink), end: (end sink) }) scheduler
145+
146+createEventCombinator :: forall a b. (Sink b -> Time -> a -> Unit) -> Stream a -> Stream b
147+createEventCombinator event stream = createCombinator event end stream where
148+ end (Sink sink) time = sink.end time
149+
150+createEndCombinator :: forall a. (Sink a -> Time -> Unit) -> Stream a -> Stream a
151+createEndCombinator end stream = createCombinator event end stream where
152+ event (Sink sink) time value = sink.event time value
153+
154+tapEvent :: forall e a. (a -> Eff e Unit) -> Stream a -> Stream a
155+tapEvent f stream = createEventCombinator event stream where
156+ event :: Sink a -> Time -> a -> Unit
157+ event (Sink sink) time value = sink.event time (always value (unsafePerformEff (f value)))
158+
159+tapEnd :: forall e a. Eff e Unit -> Stream a -> Stream a
160+tapEnd f stream = createEndCombinator end stream where
161+ end :: Sink a -> Time -> Unit
162+ end (Sink sink) time = sink.end (always time (unsafePerformEff f))
163+
164+take :: forall a. Int -> Stream a -> Stream a
165+take 0 stream = empty
166+take amount (Stream stream) = Stream { run } where
167+ run (Sink sink) scheduler = disposable where
168+ disposable = stream.run (Sink { event, end }) scheduler where
169+ state :: State Int
170+ state = createState amount
171+
172+ event ::Time -> a -> Unit
173+ event time value = do
174+ let amountLeft = (getState state)
175+ if amountLeft == 0
176+ then unit
177+ else do
178+ let newAmountLeft = state.set \x -> x - 1
179+ let x = sink.event time value
180+ if newAmountLeft == 0
181+ then sink.end (always time (runPure disposable.dispose))
182+ else unit
183+
184+ end time = sink.end time
185+
186+skip :: forall a. Int -> Stream a -> Stream a
187+skip 0 stream = stream
188+skip amount stream = createEventCombinator event stream where
189+ state :: State Int
190+ state = createState amount
191+
192+ event :: Sink a -> Time -> a -> Unit
193+ event (Sink sink) time value = do
194+ let amountLeft = runPure state.get
195+ if (amountLeft == 0)
196+ then sink.event time value
197+ else always unit (state.set \x -> x - 1)
198+
199+mapStream :: forall a b. (a -> b) -> Stream a -> Stream b
200+mapStream f stream = createEventCombinator event stream where
201+ event :: Sink b -> Time -> a -> Unit
202+ event (Sink sink) time value = sink.event time (f value)
203+
204+filter :: forall a. (a -> Boolean) -> Stream a -> Stream a
205+filter predicate stream = createEventCombinator event stream where
206+ event (Sink sink) time value = if predicate value
207+ then sink.event time value
208+ else unit
209+
210+skipRepeatsWith :: forall a. (a -> a -> Boolean) -> Stream a -> Stream a
211+skipRepeatsWith compare stream = createEventCombinator event stream where
212+ state :: State (Maybe a)
213+ state = createState Nothing
214+
215+ event (Sink sink) time value = do
216+ let currentState = (getState state)
217+ if (isNothing currentState)
218+ then sink.event time value
219+ else do
220+ let currentValue = unsafePartial (fromJust currentState)
221+ if (compare currentValue value)
222+ then unit
223+ else sink.event time value
224+
225+skipRepeats :: forall a. (Eq a) => Stream a -> Stream a
226+skipRepeats = skipRepeatsWith (eq)
227+
228+constant :: forall a b. b -> Stream a -> Stream b
229+constant b stream = createEventCombinator event stream where
230+ event :: Sink b -> Time -> a -> Unit
231+ event (Sink sink) time value = sink.event time b
232+
233+concat :: forall a. Stream a -> Stream a -> Stream a
234+concat s1 s2 = continueWith(\_ -> s2) s1
235+
236+startWith :: forall a. a -> Stream a -> Stream a
237+startWith seed stream = concat (just seed) stream
238+
239+scan :: forall a b. (b -> a -> b) -> b -> Stream a -> Stream b
240+scan f initial stream = startWith initial (createEventCombinator event stream) where
241+ seed :: State b
242+ seed = createState initial
243+
244+ event :: Sink b -> Time -> a -> Unit
245+ event (Sink sink) time value = sink.event time (seed.set \x -> f x value)
246+
247+loop :: forall a b c. (b -> a -> { seed :: b, value :: c }) -> b -> Stream a -> Stream c
248+loop f initial stream = createEventCombinator event stream where
249+ seed :: State b
250+ seed = createState initial
251+
252+ event :: Sink c -> Time -> a -> Unit
253+ event (Sink sink) time x = do
254+ let seedValue = f (getState seed) x
255+ sink.event time (always seedValue.value (seed.set \_ -> seedValue.seed))
256+
257+concatMap :: forall a b. (a -> Stream b) -> Stream a -> Stream b
258+concatMap f stream = mergeMapConcurrently f 1 stream
259+
260+ap :: forall a b. (Stream (a -> b)) -> Stream a -> Stream b
261+ap fs xs = combine2 (\f x -> f x) fs xs
262+
263+during :: forall a b. Stream (Stream b) -> Stream a -> Stream a
264+during timeWindow stream = until (join timeWindow) (since timeWindow stream)
265+
266+sample :: forall a b c. (a -> b -> c) -> Stream a -> Stream b -> Stream c
267+sample f (Stream sampler) (Stream stream) = Stream { run: runSample (createState Nothing) } where
268+ runSample :: State (Maybe b) -> Sink c -> Scheduler -> Disposable
269+ runSample state sink scheduler = disposeAll
270+ [ stream.run (createHoldSink state) scheduler
271+ , sampler.run (createSampleSink state sink f) scheduler
272+ ]
273+
274+createHoldSink :: forall a. State (Maybe a) -> Sink a
275+createHoldSink state = Sink { event, end } where
276+ event time value = always unit (state.set \_ -> Just value)
277+ end time = unit
278+
279+createSampleSink :: forall a b c. State (Maybe b) -> Sink c -> (a -> b -> c) -> Sink a
280+createSampleSink state (Sink sink) f = Sink { event, end } where
281+ end time = sink.end time
282+ event time value =
283+ if isNothing (runPure state.get)
284+ then unit
285+ else sink.event time (f value (unsafePartial (fromJust (runPure state.get))))
286+
287+sampleWith :: forall a b. Stream b -> Stream a -> Stream a
288+sampleWith signal stream = sample (\_ y -> y) signal stream
289+
290+-- find a better way to perform these side effects
291+always :: forall a b. a -> b -> a
292+always a b = a
293+
294+type State a = { get:: Pure a, set :: (a -> a) -> a }
295+
296+getState :: forall a. State a -> a
297+getState state = runPure state.get
298+
299+createState :: forall a. a -> State a
300+createState seed = { set, get }
301+ where
302+ ref :: Ref a
303+ ref = unsafePerformEff (unsafeCoerceEff (newRef seed))
304+
305+ set :: (a -> a) -> a
306+ set f = unsafePerformEff (unsafeCoerceEff (modifyRef' ref \x -> { state: (f x), value: (f x) }))
307+
308+ get :: Pure a
309+ get = unsafeCoerceEff (readRef ref)
310+
311+foreign import drain :: forall e a. Stream a -> EffStream e Unit
312+foreign import subscribe :: forall e a. (a -> Eff e Unit) -> (Unit -> Eff e Unit) -> Stream a -> EffStream e Unit
313+foreign import fromArray :: forall a b. Array a -> Stream b -> Stream a
314+foreign import chain :: forall a b. Stream a -> (a -> Stream b) -> Stream b
315+foreign import mergeConcurrently :: forall a. Int -> Stream (Stream a) -> Stream a
316+foreign import join :: forall a. Stream (Stream a) -> Stream a
317+foreign import mergeMapConcurrently :: forall a b. (a -> Stream b) -> Int -> Stream a -> Stream b
318+foreign import switch :: forall a. Stream (Stream a) -> Stream a
319+foreign import continueWith :: forall a. (Unit -> Stream a) -> Stream a -> Stream a
320+foreign import combine2 :: forall a b c. (a -> b -> c) -> Stream a -> Stream b -> Stream c
321+foreign import combine3 :: forall a b c d. (a -> b -> c -> d) -> Stream a -> Stream b -> Stream c -> Stream d
322+foreign import combine4 :: forall a b c d e. (a -> b -> c -> d -> e) -> Stream a -> Stream b -> Stream c -> Stream d -> Stream e
323+foreign import combine5 :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> Stream a -> Stream b -> Stream c -> Stream d -> Stream e -> Stream f
324+foreign import combineArray :: forall a. Array (Stream a) -> Stream (Array a)
325+foreign import merge :: forall a. Array (Stream a) -> Stream a
326+foreign import until :: forall a b. Stream b -> Stream a -> Stream a
327+foreign import since :: forall a b. Stream b -> Stream a -> Stream a
328+foreign import debounce :: forall a. Number -> Stream a -> Stream a
329+foreign import throttle :: forall a. Number -> Stream a -> Stream a
330+foreign import delay :: forall a. Number -> Stream a -> Stream a
331+foreign import multicast :: forall a. Stream a -> Stream a
332+foreign import hold :: forall a. Stream a -> Stream a
333+foreign import proxy :: forall a. a -> { attach :: (Stream a -> Stream a), stream :: Stream a }
334+
335+-- Sad subject types :/
336+foreign import toSubject :: forall a. Stream a -> Subject a
337+foreign import toHoldSubject :: forall a. Int -> Stream a -> Subject a
338+foreign import fromSubject :: forall a. Subject a -> Stream a
339+foreign import subjectEvent :: forall a. a -> Subject a -> Subject a
340+foreign import subjectEnd :: forall a. a -> Subject a -> Subject a
src/Control/Time.pursnew file+3
@@ -0,0 +1,3 @@
1+module Control.Stream.Time where
2+
3+newtype Time = Time Int
test/Main.pursnew file+9
@@ -0,0 +1,9 @@
1+module Test.Main where
2+
3+import Control.Monad.Eff (Eff)
4+import Control.Monad.Eff.Console (CONSOLE, logShow)
5+import Data.Unit (Unit)
6+
7+main :: Eff (console :: CONSOLE) Unit
8+main = do
9+ logShow "Write tests. You're a bad developer!"
yarn.lock+3301−111
@@ -14,6 +14,24 @@
1414 version "1.5.0"
1515 resolved "https://registry.yarnpkg.com/@most/prelude/-/prelude-1.5.0.tgz#0c8ce09f305039d4055d3deb59c9e44cd337854d"
1616
17+JSONStream@^0.10.0:
18+ version "0.10.0"
19+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0"
20+ dependencies:
21+ jsonparse "0.0.5"
22+ through ">=2.2.7 <3"
23+
24+JSONStream@^1.0.3, JSONStream@^1.0.4:
25+ version "1.3.1"
26+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a"
27+ dependencies:
28+ jsonparse "^1.2.0"
29+ through ">=2.2.7 <3"
30+
31+abbrev@1:
32+ version "1.1.0"
33+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
34+
1735acorn-jsx@^3.0.0, acorn-jsx@^3.0.1:
1836 version "3.0.1"
1937 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -26,7 +44,7 @@ acorn-object-spread@^1.0.0:
2644 dependencies:
2745 acorn "^3.1.0"
2846
29−acorn@4.0.4:
47+acorn@4.0.4, acorn@^4.0.3:
3048 version "4.0.4"
3149 resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
3250
@@ -34,11 +52,15 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0:
3452 version "3.3.0"
3553 resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
3654
55+add-stream@^1.0.0:
56+ version "1.0.0"
57+ resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
58+
3759ajv-keywords@^1.0.0:
3860 version "1.5.1"
3961 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
4062
41−ajv@^4.7.0:
63+ajv@^4.7.0, ajv@^4.9.1:
4264 version "4.11.4"
4365 resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.4.tgz#ebf3a55d4b132ea60ff5847ae85d2ef069960b45"
4466 dependencies:
@@ -53,6 +75,10 @@ align-text@^0.1.1, align-text@^0.1.3:
5375 longest "^1.0.1"
5476 repeat-string "^1.5.2"
5577
78+amdefine@>=0.0.4:
79+ version "1.0.1"
80+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
81+
5682ansi-escapes@^1.1.0:
5783 version "1.4.0"
5884 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
@@ -65,26 +91,150 @@ ansi-styles@^2.2.1:
6591 version "2.2.1"
6692 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
6793
94+anymatch@^1.3.0:
95+ version "1.3.0"
96+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
97+ dependencies:
98+ arrify "^1.0.0"
99+ micromatch "^2.1.5"
100+
101+aproba@^1.0.3:
102+ version "1.1.1"
103+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
104+
105+archive-type@^3.0.0, archive-type@^3.0.1:
106+ version "3.2.0"
107+ resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6"
108+ dependencies:
109+ file-type "^3.1.0"
110+
111+are-we-there-yet@~1.1.2:
112+ version "1.1.2"
113+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
114+ dependencies:
115+ delegates "^1.0.0"
116+ readable-stream "^2.0.0 || ^1.1.13"
117+
68118argparse@^1.0.7:
69119 version "1.0.9"
70120 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
71121 dependencies:
72122 sprintf-js "~1.0.2"
73123
124+arr-diff@^2.0.0:
125+ version "2.0.0"
126+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
127+ dependencies:
128+ arr-flatten "^1.0.1"
129+
130+arr-flatten@^1.0.1:
131+ version "1.0.1"
132+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
133+
134+array-differ@^1.0.0:
135+ version "1.0.0"
136+ resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
137+
138+array-filter@~0.0.0:
139+ version "0.0.1"
140+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
141+
142+array-find-index@^1.0.1:
143+ version "1.0.2"
144+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
145+
146+array-ify@^1.0.0:
147+ version "1.0.0"
148+ resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
149+
150+array-map@~0.0.0:
151+ version "0.0.0"
152+ resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
153+
154+array-reduce@~0.0.0:
155+ version "0.0.0"
156+ resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
157+
74158array-union@^1.0.1:
75159 version "1.0.2"
76160 resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
77161 dependencies:
78162 array-uniq "^1.0.1"
79163
80−array-uniq@^1.0.1:
164+array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2:
81165 version "1.0.3"
82166 resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
83167
168+array-unique@^0.2.1:
169+ version "0.2.1"
170+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
171+
84172arrify@^1.0.0:
85173 version "1.0.1"
86174 resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
87175
176+asn1.js@^4.0.0:
177+ version "4.9.1"
178+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
179+ dependencies:
180+ bn.js "^4.0.0"
181+ inherits "^2.0.1"
182+ minimalistic-assert "^1.0.0"
183+
184+asn1@~0.2.3:
185+ version "0.2.3"
186+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
187+
188+assert-plus@^0.2.0:
189+ version "0.2.0"
190+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
191+
192+assert-plus@^1.0.0:
193+ version "1.0.0"
194+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
195+
196+assert@^1.4.0:
197+ version "1.4.1"
198+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
199+ dependencies:
200+ util "0.10.3"
201+
202+astw@^2.0.0:
203+ version "2.2.0"
204+ resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917"
205+ dependencies:
206+ acorn "^4.0.3"
207+
208+async-each-series@^1.0.0, async-each-series@^1.1.0:
209+ version "1.1.0"
210+ resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138"
211+
212+async-each@^1.0.0:
213+ version "1.0.1"
214+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
215+
216+async@^1.4.0, async@^1.5.2:
217+ version "1.5.2"
218+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
219+
220+async@^2.1.2:
221+ version "2.1.5"
222+ resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
223+ dependencies:
224+ lodash "^4.14.0"
225+
226+asynckit@^0.4.0:
227+ version "0.4.0"
228+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
229+
230+aws-sign2@~0.6.0:
231+ version "0.6.0"
232+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
233+
234+aws4@^1.2.1:
235+ version "1.6.0"
236+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
237+
88238babel-code-frame@^6.16.0:
89239 version "6.22.0"
90240 resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
@@ -101,6 +251,94 @@ balanced-match@^0.4.1:
101251 version "0.4.2"
102252 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
103253
254+base64-js@^1.0.2:
255+ version "1.2.0"
256+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
257+
258+bcrypt-pbkdf@^1.0.0:
259+ version "1.0.1"
260+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
261+ dependencies:
262+ tweetnacl "^0.14.3"
263+
264+beeper@^1.0.0:
265+ version "1.1.1"
266+ resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
267+
268+bin-build@^2.2.0:
269+ version "2.2.0"
270+ resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc"
271+ dependencies:
272+ archive-type "^3.0.1"
273+ decompress "^3.0.0"
274+ download "^4.1.2"
275+ exec-series "^1.0.0"
276+ rimraf "^2.2.6"
277+ tempfile "^1.0.0"
278+ url-regex "^3.0.0"
279+
280+bin-check@^2.0.0:
281+ version "2.0.0"
282+ resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930"
283+ dependencies:
284+ executable "^1.0.0"
285+
286+bin-version-check@^2.1.0:
287+ version "2.1.0"
288+ resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0"
289+ dependencies:
290+ bin-version "^1.0.0"
291+ minimist "^1.1.0"
292+ semver "^4.0.3"
293+ semver-truncate "^1.0.0"
294+
295+bin-version@^1.0.0:
296+ version "1.0.4"
297+ resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e"
298+ dependencies:
299+ find-versions "^1.0.0"
300+
301+bin-wrapper@^3.0.2:
302+ version "3.0.2"
303+ resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb"
304+ dependencies:
305+ bin-check "^2.0.0"
306+ bin-version-check "^2.1.0"
307+ download "^4.0.0"
308+ each-async "^1.1.1"
309+ lazy-req "^1.0.0"
310+ os-filter-obj "^1.0.0"
311+
312+binary-extensions@^1.0.0:
313+ version "1.8.0"
314+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
315+
316+bl@^1.0.0:
317+ version "1.2.0"
318+ resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98"
319+ dependencies:
320+ readable-stream "^2.0.5"
321+
322+block-stream@*:
323+ version "0.0.9"
324+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
325+ dependencies:
326+ inherits "~2.0.0"
327+
328+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
329+ version "4.11.6"
330+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
331+
332+boom@2.x.x:
333+ version "2.10.1"
334+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
335+ dependencies:
336+ hoek "2.x.x"
337+
338+bower@^1.8.0:
339+ version "1.8.0"
340+ resolved "https://registry.yarnpkg.com/bower/-/bower-1.8.0.tgz#55dbebef0ad9155382d9e9d3e497c1372345b44a"
341+
104342brace-expansion@^1.0.0:
105343 version "1.1.6"
106344 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
@@ -108,12 +346,154 @@ brace-expansion@^1.0.0:
108346 balanced-match "^0.4.1"
109347 concat-map "0.0.1"
110348
111−browser-resolve@^1.11.0:
349+braces@^1.8.2:
350+ version "1.8.5"
351+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
352+ dependencies:
353+ expand-range "^1.8.1"
354+ preserve "^0.2.0"
355+ repeat-element "^1.1.2"
356+
357+brorand@^1.0.1:
358+ version "1.1.0"
359+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
360+
361+browser-pack@^6.0.1:
362+ version "6.0.2"
363+ resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531"
364+ dependencies:
365+ JSONStream "^1.0.3"
366+ combine-source-map "~0.7.1"
367+ defined "^1.0.0"
368+ through2 "^2.0.0"
369+ umd "^3.0.0"
370+
371+browser-resolve@^1.11.0, browser-resolve@^1.7.0:
112372 version "1.11.2"
113373 resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
114374 dependencies:
115375 resolve "1.1.7"
116376
377+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
378+ version "1.0.6"
379+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
380+ dependencies:
381+ buffer-xor "^1.0.2"
382+ cipher-base "^1.0.0"
383+ create-hash "^1.1.0"
384+ evp_bytestokey "^1.0.0"
385+ inherits "^2.0.1"
386+
387+browserify-cache-api@^3.0.0:
388+ version "3.0.1"
389+ resolved "https://registry.yarnpkg.com/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz#96247e853f068fd6e0d45cc73f0bb2cd9778ef02"
390+ dependencies:
391+ async "^1.5.2"
392+ through2 "^2.0.0"
393+ xtend "^4.0.0"
394+
395+browserify-cipher@^1.0.0:
396+ version "1.0.0"
397+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
398+ dependencies:
399+ browserify-aes "^1.0.4"
400+ browserify-des "^1.0.0"
401+ evp_bytestokey "^1.0.0"
402+
403+browserify-des@^1.0.0:
404+ version "1.0.0"
405+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
406+ dependencies:
407+ cipher-base "^1.0.1"
408+ des.js "^1.0.0"
409+ inherits "^2.0.1"
410+
411+browserify-incremental@^3.0.1:
412+ version "3.1.1"
413+ resolved "https://registry.yarnpkg.com/browserify-incremental/-/browserify-incremental-3.1.1.tgz#0713cb7587247a632a9f08cf1bd169b878b62a8a"
414+ dependencies:
415+ JSONStream "^0.10.0"
416+ browserify-cache-api "^3.0.0"
417+ through2 "^2.0.0"
418+ xtend "^4.0.0"
419+
420+browserify-rsa@^4.0.0:
421+ version "4.0.1"
422+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
423+ dependencies:
424+ bn.js "^4.1.0"
425+ randombytes "^2.0.1"
426+
427+browserify-sign@^4.0.0:
428+ version "4.0.0"
429+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
430+ dependencies:
431+ bn.js "^4.1.1"
432+ browserify-rsa "^4.0.0"
433+ create-hash "^1.1.0"
434+ create-hmac "^1.1.2"
435+ elliptic "^6.0.0"
436+ inherits "^2.0.1"
437+ parse-asn1 "^5.0.0"
438+
439+browserify-zlib@~0.1.2:
440+ version "0.1.4"
441+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
442+ dependencies:
443+ pako "~0.2.0"
444+
445+browserify@^13.1.0:
446+ version "13.3.0"
447+ resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.3.0.tgz#b5a9c9020243f0c70e4675bec8223bc627e415ce"
448+ dependencies:
449+ JSONStream "^1.0.3"
450+ assert "^1.4.0"
451+ browser-pack "^6.0.1"
452+ browser-resolve "^1.11.0"
453+ browserify-zlib "~0.1.2"
454+ buffer "^4.1.0"
455+ cached-path-relative "^1.0.0"
456+ concat-stream "~1.5.1"
457+ console-browserify "^1.1.0"
458+ constants-browserify "~1.0.0"
459+ crypto-browserify "^3.0.0"
460+ defined "^1.0.0"
461+ deps-sort "^2.0.0"
462+ domain-browser "~1.1.0"
463+ duplexer2 "~0.1.2"
464+ events "~1.1.0"
465+ glob "^7.1.0"
466+ has "^1.0.0"
467+ htmlescape "^1.1.0"
468+ https-browserify "~0.0.0"
469+ inherits "~2.0.1"
470+ insert-module-globals "^7.0.0"
471+ labeled-stream-splicer "^2.0.0"
472+ module-deps "^4.0.8"
473+ os-browserify "~0.1.1"
474+ parents "^1.0.1"
475+ path-browserify "~0.0.0"
476+ process "~0.11.0"
477+ punycode "^1.3.2"
478+ querystring-es3 "~0.2.0"
479+ read-only-stream "^2.0.0"
480+ readable-stream "^2.0.2"
481+ resolve "^1.1.4"
482+ shasum "^1.0.0"
483+ shell-quote "^1.6.1"
484+ stream-browserify "^2.0.0"
485+ stream-http "^2.0.0"
486+ string_decoder "~0.10.0"
487+ subarg "^1.0.0"
488+ syntax-error "^1.1.1"
489+ through2 "^2.0.0"
490+ timers-browserify "^1.0.1"
491+ tty-browserify "~0.0.0"
492+ url "~0.11.0"
493+ util "~0.10.1"
494+ vm-browserify "~0.0.1"
495+ xtend "^4.0.0"
496+
117497buble@^0.15.0:
118498 version "0.15.2"
119499 resolved "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz#547fc47483f8e5e8176d82aa5ebccb183b02d613"
@@ -126,14 +506,53 @@ buble@^0.15.0:
126506 minimist "^1.2.0"
127507 os-homedir "^1.0.1"
128508
509+buffer-crc32@~0.2.3:
510+ version "0.2.13"
511+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
512+
129513buffer-shims@^1.0.0:
130514 version "1.0.0"
131515 resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
132516
133−builtin-modules@^1.1.0:
517+buffer-to-vinyl@^1.0.0:
518+ version "1.1.0"
519+ resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262"
520+ dependencies:
521+ file-type "^3.1.0"
522+ readable-stream "^2.0.2"
523+ uuid "^2.0.1"
524+ vinyl "^1.0.0"
525+
526+buffer-xor@^1.0.2:
527+ version "1.0.3"
528+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
529+
530+buffer@^4.1.0:
531+ version "4.9.1"
532+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
533+ dependencies:
534+ base64-js "^1.0.2"
535+ ieee754 "^1.1.4"
536+ isarray "^1.0.0"
537+
538+builtin-modules@^1.0.0, builtin-modules@^1.1.0:
134539 version "1.1.1"
135540 resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
136541
542+builtin-status-codes@^3.0.0:
543+ version "3.0.0"
544+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
545+
546+cached-path-relative@^1.0.0:
547+ version "1.0.1"
548+ resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
549+
550+cachedir@^1.1.0:
551+ version "1.1.1"
552+ resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.1.1.tgz#e1363075ea206a12767d92bb711c8a2f76a10f62"
553+ dependencies:
554+ os-homedir "^1.0.1"
555+
137556caller-path@^0.1.0:
138557 version "0.1.0"
139558 resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
@@ -144,10 +563,38 @@ callsites@^0.2.0:
144563 version "0.2.0"
145564 resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
146565
566+camelcase-keys@^2.0.0:
567+ version "2.1.0"
568+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
569+ dependencies:
570+ camelcase "^2.0.0"
571+ map-obj "^1.0.0"
572+
147573camelcase@^1.0.2:
148574 version "1.2.1"
149575 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
150576
577+camelcase@^2.0.0:
578+ version "2.1.1"
579+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
580+
581+capture-stack-trace@^1.0.0:
582+ version "1.0.0"
583+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
584+
585+caseless@~0.12.0:
586+ version "0.12.0"
587+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
588+
589+caw@^1.0.1:
590+ version "1.2.0"
591+ resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034"
592+ dependencies:
593+ get-proxy "^1.0.1"
594+ is-obj "^1.0.0"
595+ object-assign "^3.0.0"
596+ tunnel-agent "^0.4.0"
597+
151598center-align@^0.1.1:
152599 version "0.1.3"
153600 resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -155,7 +602,7 @@ center-align@^0.1.1:
155602 align-text "^0.1.3"
156603 lazy-cache "^1.0.3"
157604
158−chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
605+chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
159606 version "1.1.3"
160607 resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
161608 dependencies:
@@ -165,6 +612,31 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
165612 strip-ansi "^3.0.0"
166613 supports-color "^2.0.0"
167614
615+chokidar@^1.4.3:
616+ version "1.6.1"
617+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
618+ dependencies:
619+ anymatch "^1.3.0"
620+ async-each "^1.0.0"
621+ glob-parent "^2.0.0"
622+ inherits "^2.0.1"
623+ is-binary-path "^1.0.0"
624+ is-glob "^2.0.0"
625+ path-is-absolute "^1.0.0"
626+ readdirp "^2.0.0"
627+ optionalDependencies:
628+ fsevents "^1.0.0"
629+
630+ci-info@^1.0.0:
631+ version "1.0.0"
632+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
633+
634+cipher-base@^1.0.0, cipher-base@^1.0.1:
635+ version "1.0.3"
636+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
637+ dependencies:
638+ inherits "^2.0.1"
639+
168640circular-json@^0.3.1:
169641 version "0.3.1"
170642 resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
@@ -187,6 +659,22 @@ cliui@^2.1.0:
187659 right-align "^0.1.1"
188660 wordwrap "0.0.2"
189661
662+clone-stats@^0.0.1:
663+ version "0.0.1"
664+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
665+
666+clone@^0.2.0:
667+ version "0.2.0"
668+ resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
669+
670+clone@^1.0.0:
671+ version "1.0.2"
672+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
673+
674+co@3.1.0:
675+ version "3.1.0"
676+ resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
677+
190678co@^4.6.0:
191679 version "4.6.0"
192680 resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -195,11 +683,71 @@ code-point-at@^1.0.0:
195683 version "1.1.0"
196684 resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
197685
686+colors@>=0.6.0:
687+ version "1.1.2"
688+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
689+
690+colors@~0.6.0-1:
691+ version "0.6.2"
692+ resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
693+
694+combine-source-map@~0.7.1:
695+ version "0.7.2"
696+ resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
697+ dependencies:
698+ convert-source-map "~1.1.0"
699+ inline-source-map "~0.6.0"
700+ lodash.memoize "~3.0.3"
701+ source-map "~0.5.3"
702+
703+combined-stream@^1.0.5, combined-stream@~1.0.5:
704+ version "1.0.5"
705+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
706+ dependencies:
707+ delayed-stream "~1.0.0"
708+
709+commander@~2.1.0:
710+ version "2.1.0"
711+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781"
712+
713+commander@~2.8.1:
714+ version "2.8.1"
715+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
716+ dependencies:
717+ graceful-readlink ">= 1.0.0"
718+
719+commitizen@^2.9.6:
720+ version "2.9.6"
721+ resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-2.9.6.tgz#c0d00535ef264da7f63737edfda4228983fa2291"
722+ dependencies:
723+ cachedir "^1.1.0"
724+ chalk "1.1.3"
725+ cz-conventional-changelog "1.2.0"
726+ dedent "0.6.0"
727+ detect-indent "4.0.0"
728+ find-node-modules "1.0.4"
729+ find-root "1.0.0"
730+ fs-extra "^1.0.0"
731+ glob "7.1.1"
732+ inquirer "1.2.3"
733+ lodash "4.17.2"
734+ minimist "1.2.0"
735+ path-exists "2.1.0"
736+ shelljs "0.7.6"
737+ strip-json-comments "2.0.1"
738+
739+compare-func@^1.3.1:
740+ version "1.3.2"
741+ resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648"
742+ dependencies:
743+ array-ify "^1.0.0"
744+ dot-prop "^3.0.0"
745+
198746concat-map@0.0.1:
199747 version "0.0.1"
200748 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
201749
202−concat-stream@^1.4.6:
750+concat-stream@^1.4.6, concat-stream@^1.4.7:
203751 version "1.6.0"
204752 resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
205753 dependencies:
@@ -207,81 +755,577 @@ concat-stream@^1.4.6:
207755 readable-stream "^2.2.2"
208756 typedarray "^0.0.6"
209757
210−core-util-is@~1.0.0:
211− version "1.0.2"
212− resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
213−
214−d@^0.1.1, d@~0.1.1:
215− version "0.1.1"
216− resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
758+concat-stream@~1.5.0, concat-stream@~1.5.1:
759+ version "1.5.2"
760+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
217761 dependencies:
218− es5-ext "~0.10.2"
762+ inherits "~2.0.1"
763+ readable-stream "~2.0.0"
764+ typedarray "~0.0.5"
219765
220−debug@^2.1.1:
221− version "2.6.1"
222− resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
766+console-browserify@^1.1.0:
767+ version "1.1.0"
768+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
223769 dependencies:
224− ms "0.7.2"
770+ date-now "^0.1.4"
225771
226−decamelize@^1.0.0:
227− version "1.2.0"
228− resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
772+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
773+ version "1.1.0"
774+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
229775
230−deep-is@~0.1.3:
231− version "0.1.3"
232− resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
776+console-stream@^0.1.1:
777+ version "0.1.1"
778+ resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
233779
234−del@^2.0.2:
235− version "2.2.2"
236− resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
780+constants-browserify@~1.0.0:
781+ version "1.0.0"
782+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
783+
784+conventional-changelog-angular@^1.3.3:
785+ version "1.3.3"
786+ resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.3.3.tgz#e7ce807a85dd4750e1b417f766045497511e0726"
237787 dependencies:
238− globby "^5.0.0"
239− is-path-cwd "^1.0.0"
240− is-path-in-cwd "^1.0.0"
241− object-assign "^4.0.1"
242− pify "^2.0.0"
243− pinkie-promise "^2.0.0"
244− rimraf "^2.2.8"
788+ compare-func "^1.3.1"
789+ github-url-from-git "^1.4.0"
790+ q "^1.4.1"
245791
246−doctrine@^1.2.2:
247− version "1.5.0"
248− resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
792+conventional-changelog-atom@^0.1.0:
793+ version "0.1.0"
794+ resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.1.0.tgz#67a47c66a42b2f8909ef1587c9989ae1de730b92"
249795 dependencies:
250− esutils "^2.0.2"
251− isarray "^1.0.0"
796+ q "^1.4.1"
252797
253−es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7:
254− version "0.10.12"
255− resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
798+conventional-changelog-cli@^1.3.1:
799+ version "1.3.1"
800+ resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.1.tgz#1cd5a9dbae25ffb5ffe67afef1e136eaceefd2d5"
256801 dependencies:
257− es6-iterator "2"
258− es6-symbol "~3.1"
802+ add-stream "^1.0.0"
803+ conventional-changelog "^1.1.3"
804+ lodash "^4.1.0"
805+ meow "^3.7.0"
806+ tempfile "^1.1.1"
259807
260−es6-iterator@2:
261− version "2.0.0"
262− resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac"
808+conventional-changelog-codemirror@^0.1.0:
809+ version "0.1.0"
810+ resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.1.0.tgz#7577a591dbf9b538e7a150a7ee62f65a2872b334"
263811 dependencies:
264− d "^0.1.1"
265− es5-ext "^0.10.7"
266− es6-symbol "3"
812+ q "^1.4.1"
267813
268−es6-map@^0.1.3:
269− version "0.1.4"
270− resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897"
814+conventional-changelog-core@^1.8.0:
815+ version "1.8.0"
816+ resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.8.0.tgz#977848b416caf15fb09f20b12a62d40ef145b957"
271817 dependencies:
272− d "~0.1.1"
273− es5-ext "~0.10.11"
274− es6-iterator "2"
275− es6-set "~0.1.3"
276− es6-symbol "~3.1.0"
277− event-emitter "~0.3.4"
818+ conventional-changelog-writer "^1.1.0"
819+ conventional-commits-parser "^1.0.0"
820+ dateformat "^1.0.12"
821+ get-pkg-repo "^1.0.0"
822+ git-raw-commits "^1.2.0"
823+ git-remote-origin-url "^2.0.0"
824+ git-semver-tags "^1.2.0"
825+ lodash "^4.0.0"
826+ normalize-package-data "^2.3.5"
827+ q "^1.4.1"
828+ read-pkg "^1.1.0"
829+ read-pkg-up "^1.0.1"
830+ through2 "^2.0.0"
831+
832+conventional-changelog-ember@^0.2.5:
833+ version "0.2.5"
834+ resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.5.tgz#ce21d5cf83cd5ebe05d23fdf232d8844f4b56a4f"
835+ dependencies:
836+ q "^1.4.1"
278837
279−es6-set@~0.1.3:
280− version "0.1.4"
281− resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8"
838+conventional-changelog-eslint@^0.1.0:
839+ version "0.1.0"
840+ resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-0.1.0.tgz#a52411e999e0501ce500b856b0a643d0330907e2"
282841 dependencies:
283− d "~0.1.1"
284− es5-ext "~0.10.11"
842+ q "^1.4.1"
843+
844+conventional-changelog-express@^0.1.0:
845+ version "0.1.0"
846+ resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.1.0.tgz#55c6c841c811962036c037bdbd964a54ae310fce"
847+ dependencies:
848+ q "^1.4.1"
849+
850+conventional-changelog-jquery@^0.1.0:
851+ version "0.1.0"
852+ resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510"
853+ dependencies:
854+ q "^1.4.1"
855+
856+conventional-changelog-jscs@^0.1.0:
857+ version "0.1.0"
858+ resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c"
859+ dependencies:
860+ q "^1.4.1"
861+
862+conventional-changelog-jshint@^0.1.0:
863+ version "0.1.0"
864+ resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.1.0.tgz#00cab8e9a3317487abd94c4d84671342918d2a07"
865+ dependencies:
866+ compare-func "^1.3.1"
867+ q "^1.4.1"
868+
869+conventional-changelog-writer@^1.1.0:
870+ version "1.4.1"
871+ resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-1.4.1.tgz#3f4cb4d003ebb56989d30d345893b52a43639c8e"
872+ dependencies:
873+ compare-func "^1.3.1"
874+ conventional-commits-filter "^1.0.0"
875+ dateformat "^1.0.11"
876+ handlebars "^4.0.2"
877+ json-stringify-safe "^5.0.1"
878+ lodash "^4.0.0"
879+ meow "^3.3.0"
880+ semver "^5.0.1"
881+ split "^1.0.0"
882+ through2 "^2.0.0"
883+
884+conventional-changelog@^1.1.3:
885+ version "1.1.3"
886+ resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.3.tgz#26283078ac38c094df2af1604b0a46bbc0165c4d"
887+ dependencies:
888+ conventional-changelog-angular "^1.3.3"
889+ conventional-changelog-atom "^0.1.0"
890+ conventional-changelog-codemirror "^0.1.0"
891+ conventional-changelog-core "^1.8.0"
892+ conventional-changelog-ember "^0.2.5"
893+ conventional-changelog-eslint "^0.1.0"
894+ conventional-changelog-express "^0.1.0"
895+ conventional-changelog-jquery "^0.1.0"
896+ conventional-changelog-jscs "^0.1.0"
897+ conventional-changelog-jshint "^0.1.0"
898+
899+conventional-commit-types@^2.0.0:
900+ version "2.1.0"
901+ resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.1.0.tgz#45d860386c9a2e6537ee91d8a1b61bd0411b3d04"
902+
903+conventional-commits-filter@^1.0.0:
904+ version "1.0.0"
905+ resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz#6fc2a659372bc3f2339cf9ffff7e1b0344b93039"
906+ dependencies:
907+ is-subset "^0.1.1"
908+ modify-values "^1.0.0"
909+
910+conventional-commits-parser@^1.0.0:
911+ version "1.3.0"
912+ resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-1.3.0.tgz#e327b53194e1a7ad5dc63479ee9099a52b024865"
913+ dependencies:
914+ JSONStream "^1.0.4"
915+ is-text-path "^1.0.0"
916+ lodash "^4.2.1"
917+ meow "^3.3.0"
918+ split2 "^2.0.0"
919+ through2 "^2.0.0"
920+ trim-off-newlines "^1.0.0"
921+
922+convert-source-map@^1.1.1, convert-source-map@~1.1.0:
923+ version "1.1.3"
924+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
925+
926+core-util-is@~1.0.0:
927+ version "1.0.2"
928+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
929+
930+create-ecdh@^4.0.0:
931+ version "4.0.0"
932+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
933+ dependencies:
934+ bn.js "^4.1.0"
935+ elliptic "^6.0.0"
936+
937+create-error-class@^3.0.1:
938+ version "3.0.2"
939+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
940+ dependencies:
941+ capture-stack-trace "^1.0.0"
942+
943+create-hash@^1.1.0, create-hash@^1.1.1:
944+ version "1.1.2"
945+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
946+ dependencies:
947+ cipher-base "^1.0.1"
948+ inherits "^2.0.1"
949+ ripemd160 "^1.0.0"
950+ sha.js "^2.3.6"
951+
952+create-hmac@^1.1.0, create-hmac@^1.1.2:
953+ version "1.1.4"
954+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
955+ dependencies:
956+ create-hash "^1.1.0"
957+ inherits "^2.0.1"
958+
959+cryptiles@2.x.x:
960+ version "2.0.5"
961+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
962+ dependencies:
963+ boom "2.x.x"
964+
965+crypto-browserify@^3.0.0:
966+ version "3.11.0"
967+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
968+ dependencies:
969+ browserify-cipher "^1.0.0"
970+ browserify-sign "^4.0.0"
971+ create-ecdh "^4.0.0"
972+ create-hash "^1.1.0"
973+ create-hmac "^1.1.0"
974+ diffie-hellman "^5.0.0"
975+ inherits "^2.0.1"
976+ pbkdf2 "^3.0.3"
977+ public-encrypt "^4.0.0"
978+ randombytes "^2.0.0"
979+
980+currently-unhandled@^0.4.1:
981+ version "0.4.1"
982+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
983+ dependencies:
984+ array-find-index "^1.0.1"
985+
986+cz-conventional-changelog@1.2.0:
987+ version "1.2.0"
988+ resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-1.2.0.tgz#2bca04964c8919b23f3fd6a89ef5e6008b31b3f8"
989+ dependencies:
990+ conventional-commit-types "^2.0.0"
991+ lodash.map "^4.5.1"
992+ longest "^1.0.1"
993+ pad-right "^0.2.2"
994+ right-pad "^1.0.1"
995+ word-wrap "^1.0.3"
996+
997+cz-conventional-changelog@^2.0.0:
998+ version "2.0.0"
999+ resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz#55a979afdfe95e7024879d2a0f5924630170b533"
1000+ dependencies:
1001+ conventional-commit-types "^2.0.0"
1002+ lodash.map "^4.5.1"
1003+ longest "^1.0.1"
1004+ pad-right "^0.2.2"
1005+ right-pad "^1.0.1"
1006+ word-wrap "^1.0.3"
1007+
1008+d@^0.1.1, d@~0.1.1:
1009+ version "0.1.1"
1010+ resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
1011+ dependencies:
1012+ es5-ext "~0.10.2"
1013+
1014+dargs@^4.0.1:
1015+ version "4.1.0"
1016+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
1017+ dependencies:
1018+ number-is-nan "^1.0.0"
1019+
1020+dashdash@^1.12.0:
1021+ version "1.14.1"
1022+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
1023+ dependencies:
1024+ assert-plus "^1.0.0"
1025+
1026+date-now@^0.1.4:
1027+ version "0.1.4"
1028+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
1029+
1030+dateformat@^1.0.11, dateformat@^1.0.12:
1031+ version "1.0.12"
1032+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
1033+ dependencies:
1034+ get-stdin "^4.0.1"
1035+ meow "^3.3.0"
1036+
1037+dateformat@^2.0.0:
1038+ version "2.0.0"
1039+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
1040+
1041+debug@^2.1.1:
1042+ version "2.6.1"
1043+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
1044+ dependencies:
1045+ ms "0.7.2"
1046+
1047+debug@~2.2.0:
1048+ version "2.2.0"
1049+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
1050+ dependencies:
1051+ ms "0.7.1"
1052+
1053+decamelize@^1.0.0, decamelize@^1.1.2:
1054+ version "1.2.0"
1055+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
1056+
1057+decompress-tar@^3.0.0:
1058+ version "3.1.0"
1059+ resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466"
1060+ dependencies:
1061+ is-tar "^1.0.0"
1062+ object-assign "^2.0.0"
1063+ strip-dirs "^1.0.0"
1064+ tar-stream "^1.1.1"
1065+ through2 "^0.6.1"
1066+ vinyl "^0.4.3"
1067+
1068+decompress-tarbz2@^3.0.0:
1069+ version "3.1.0"
1070+ resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d"
1071+ dependencies:
1072+ is-bzip2 "^1.0.0"
1073+ object-assign "^2.0.0"
1074+ seek-bzip "^1.0.3"
1075+ strip-dirs "^1.0.0"
1076+ tar-stream "^1.1.1"
1077+ through2 "^0.6.1"
1078+ vinyl "^0.4.3"
1079+
1080+decompress-targz@^3.0.0:
1081+ version "3.1.0"
1082+ resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0"
1083+ dependencies:
1084+ is-gzip "^1.0.0"
1085+ object-assign "^2.0.0"
1086+ strip-dirs "^1.0.0"
1087+ tar-stream "^1.1.1"
1088+ through2 "^0.6.1"
1089+ vinyl "^0.4.3"
1090+
1091+decompress-unzip@^3.0.0:
1092+ version "3.4.0"
1093+ resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb"
1094+ dependencies:
1095+ is-zip "^1.0.0"
1096+ read-all-stream "^3.0.0"
1097+ stat-mode "^0.2.0"
1098+ strip-dirs "^1.0.0"
1099+ through2 "^2.0.0"
1100+ vinyl "^1.0.0"
1101+ yauzl "^2.2.1"
1102+
1103+decompress@^3.0.0:
1104+ version "3.0.0"
1105+ resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed"
1106+ dependencies:
1107+ buffer-to-vinyl "^1.0.0"
1108+ concat-stream "^1.4.6"
1109+ decompress-tar "^3.0.0"
1110+ decompress-tarbz2 "^3.0.0"
1111+ decompress-targz "^3.0.0"
1112+ decompress-unzip "^3.0.0"
1113+ stream-combiner2 "^1.1.1"
1114+ vinyl-assign "^1.0.1"
1115+ vinyl-fs "^2.2.0"
1116+
1117+dedent@0.6.0:
1118+ version "0.6.0"
1119+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb"
1120+
1121+deep-extend@~0.4.0:
1122+ version "0.4.1"
1123+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
1124+
1125+deep-is@~0.1.3:
1126+ version "0.1.3"
1127+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
1128+
1129+defined@^1.0.0:
1130+ version "1.0.0"
1131+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
1132+
1133+del@^2.0.2:
1134+ version "2.2.2"
1135+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
1136+ dependencies:
1137+ globby "^5.0.0"
1138+ is-path-cwd "^1.0.0"
1139+ is-path-in-cwd "^1.0.0"
1140+ object-assign "^4.0.1"
1141+ pify "^2.0.0"
1142+ pinkie-promise "^2.0.0"
1143+ rimraf "^2.2.8"
1144+
1145+delayed-stream@~1.0.0:
1146+ version "1.0.0"
1147+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
1148+
1149+delegates@^1.0.0:
1150+ version "1.0.0"
1151+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
1152+
1153+deps-sort@^2.0.0:
1154+ version "2.0.0"
1155+ resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
1156+ dependencies:
1157+ JSONStream "^1.0.3"
1158+ shasum "^1.0.0"
1159+ subarg "^1.0.0"
1160+ through2 "^2.0.0"
1161+
1162+des.js@^1.0.0:
1163+ version "1.0.0"
1164+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
1165+ dependencies:
1166+ inherits "^2.0.1"
1167+ minimalistic-assert "^1.0.0"
1168+
1169+detect-file@^0.1.0:
1170+ version "0.1.0"
1171+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
1172+ dependencies:
1173+ fs-exists-sync "^0.1.0"
1174+
1175+detect-indent@4.0.0:
1176+ version "4.0.0"
1177+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
1178+ dependencies:
1179+ repeating "^2.0.0"
1180+
1181+detective@^4.0.0:
1182+ version "4.5.0"
1183+ resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1"
1184+ dependencies:
1185+ acorn "^4.0.3"
1186+ defined "^1.0.0"
1187+
1188+diffie-hellman@^5.0.0:
1189+ version "5.0.2"
1190+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
1191+ dependencies:
1192+ bn.js "^4.1.0"
1193+ miller-rabin "^4.0.0"
1194+ randombytes "^2.0.0"
1195+
1196+doctrine@^1.2.2:
1197+ version "1.5.0"
1198+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
1199+ dependencies:
1200+ esutils "^2.0.2"
1201+ isarray "^1.0.0"
1202+
1203+domain-browser@~1.1.0:
1204+ version "1.1.7"
1205+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
1206+
1207+dot-prop@^3.0.0:
1208+ version "3.0.0"
1209+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177"
1210+ dependencies:
1211+ is-obj "^1.0.0"
1212+
1213+download@^4.0.0, download@^4.1.2:
1214+ version "4.4.3"
1215+ resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac"
1216+ dependencies:
1217+ caw "^1.0.1"
1218+ concat-stream "^1.4.7"
1219+ each-async "^1.0.0"
1220+ filenamify "^1.0.1"
1221+ got "^5.0.0"
1222+ gulp-decompress "^1.2.0"
1223+ gulp-rename "^1.2.0"
1224+ is-url "^1.2.0"
1225+ object-assign "^4.0.1"
1226+ read-all-stream "^3.0.0"
1227+ readable-stream "^2.0.2"
1228+ stream-combiner2 "^1.1.1"
1229+ vinyl "^1.0.0"
1230+ vinyl-fs "^2.2.0"
1231+ ware "^1.2.0"
1232+
1233+duplexer2@0.0.2:
1234+ version "0.0.2"
1235+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
1236+ dependencies:
1237+ readable-stream "~1.1.9"
1238+
1239+duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2:
1240+ version "0.1.4"
1241+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
1242+ dependencies:
1243+ readable-stream "^2.0.2"
1244+
1245+duplexify@^3.2.0:
1246+ version "3.5.0"
1247+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
1248+ dependencies:
1249+ end-of-stream "1.0.0"
1250+ inherits "^2.0.1"
1251+ readable-stream "^2.0.0"
1252+ stream-shift "^1.0.0"
1253+
1254+each-async@^1.0.0, each-async@^1.1.1:
1255+ version "1.1.1"
1256+ resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473"
1257+ dependencies:
1258+ onetime "^1.0.0"
1259+ set-immediate-shim "^1.0.0"
1260+
1261+ecc-jsbn@~0.1.1:
1262+ version "0.1.1"
1263+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
1264+ dependencies:
1265+ jsbn "~0.1.0"
1266+
1267+elliptic@^6.0.0:
1268+ version "6.4.0"
1269+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
1270+ dependencies:
1271+ bn.js "^4.4.0"
1272+ brorand "^1.0.1"
1273+ hash.js "^1.0.0"
1274+ hmac-drbg "^1.0.0"
1275+ inherits "^2.0.1"
1276+ minimalistic-assert "^1.0.0"
1277+ minimalistic-crypto-utils "^1.0.0"
1278+
1279+end-of-stream@1.0.0:
1280+ version "1.0.0"
1281+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
1282+ dependencies:
1283+ once "~1.3.0"
1284+
1285+end-of-stream@^1.0.0:
1286+ version "1.2.0"
1287+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.2.0.tgz#bce82685eab6262e2a780ae740e6334027c01622"
1288+ dependencies:
1289+ once "~1.3.0"
1290+
1291+error-ex@^1.2.0:
1292+ version "1.3.1"
1293+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
1294+ dependencies:
1295+ is-arrayish "^0.2.1"
1296+
1297+es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7:
1298+ version "0.10.12"
1299+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
1300+ dependencies:
1301+ es6-iterator "2"
1302+ es6-symbol "~3.1"
1303+
1304+es6-iterator@2:
1305+ version "2.0.0"
1306+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac"
1307+ dependencies:
1308+ d "^0.1.1"
1309+ es5-ext "^0.10.7"
1310+ es6-symbol "3"
1311+
1312+es6-map@^0.1.3:
1313+ version "0.1.4"
1314+ resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897"
1315+ dependencies:
1316+ d "~0.1.1"
1317+ es5-ext "~0.10.11"
1318+ es6-iterator "2"
1319+ es6-set "~0.1.3"
1320+ es6-symbol "~3.1.0"
1321+ event-emitter "~0.3.4"
1322+
1323+es6-set@~0.1.3:
1324+ version "0.1.4"
1325+ resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8"
1326+ dependencies:
1327+ d "~0.1.1"
1328+ es5-ext "~0.10.11"
2851329 es6-iterator "2"
2861330 es6-symbol "3"
2871331 event-emitter "~0.3.4"
@@ -415,14 +1459,96 @@ event-emitter@~0.3.4:
4151459 d "~0.1.1"
4161460 es5-ext "~0.10.7"
4171461
1462+events@~1.1.0:
1463+ version "1.1.1"
1464+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
1465+
1466+evp_bytestokey@^1.0.0:
1467+ version "1.0.0"
1468+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
1469+ dependencies:
1470+ create-hash "^1.1.1"
1471+
1472+exec-series@^1.0.0:
1473+ version "1.0.3"
1474+ resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a"
1475+ dependencies:
1476+ async-each-series "^1.1.0"
1477+ object-assign "^4.1.0"
1478+
1479+executable@^1.0.0:
1480+ version "1.1.0"
1481+ resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9"
1482+ dependencies:
1483+ meow "^3.1.0"
1484+
4181485exit-hook@^1.0.0:
4191486 version "1.1.1"
4201487 resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
4211488
1489+expand-brackets@^0.1.4:
1490+ version "0.1.5"
1491+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
1492+ dependencies:
1493+ is-posix-bracket "^0.1.0"
1494+
1495+expand-range@^1.8.1:
1496+ version "1.8.2"
1497+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
1498+ dependencies:
1499+ fill-range "^2.1.0"
1500+
1501+expand-tilde@^1.2.2:
1502+ version "1.2.2"
1503+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
1504+ dependencies:
1505+ os-homedir "^1.0.1"
1506+
1507+extend-shallow@^2.0.1:
1508+ version "2.0.1"
1509+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1510+ dependencies:
1511+ is-extendable "^0.1.0"
1512+
1513+extend@^3.0.0, extend@~3.0.0:
1514+ version "3.0.0"
1515+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
1516+
1517+external-editor@^1.1.0:
1518+ version "1.1.1"
1519+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b"
1520+ dependencies:
1521+ extend "^3.0.0"
1522+ spawn-sync "^1.0.15"
1523+ tmp "^0.0.29"
1524+
1525+extglob@^0.3.1:
1526+ version "0.3.2"
1527+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
1528+ dependencies:
1529+ is-extglob "^1.0.0"
1530+
1531+extsprintf@1.0.2:
1532+ version "1.0.2"
1533+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
1534+
1535+fancy-log@^1.1.0:
1536+ version "1.3.0"
1537+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
1538+ dependencies:
1539+ chalk "^1.1.1"
1540+ time-stamp "^1.0.0"
1541+
4221542fast-levenshtein@~2.0.4:
4231543 version "2.0.6"
4241544 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
4251545
1546+fd-slicer@~1.0.1:
1547+ version "1.0.1"
1548+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
1549+ dependencies:
1550+ pend "~1.2.0"
1551+
4261552figures@^1.3.5:
4271553 version "1.7.0"
4281554 resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@@ -437,26 +1563,182 @@ file-entry-cache@^2.0.0:
4371563 flat-cache "^1.2.1"
4381564 object-assign "^4.0.1"
4391565
440−flat-cache@^1.2.1:
441− version "1.2.2"
442− resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
443− dependencies:
444− circular-json "^0.3.1"
445− del "^2.0.2"
446− graceful-fs "^4.1.2"
447− write "^0.2.1"
1566+file-type@^3.1.0:
1567+ version "3.9.0"
1568+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
4481569
449−flow-remove-types@^1.1.0:
450− version "1.2.0"
451− resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.0.tgz#c285516eabba72177a1b10bfb58f6ffb675a8877"
452− dependencies:
453− babylon "^6.15.0"
454− vlq "^0.2.1"
1570+filename-regex@^2.0.0:
1571+ version "2.0.0"
1572+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
1573+
1574+filename-reserved-regex@^1.0.0:
1575+ version "1.0.0"
1576+ resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4"
1577+
1578+filenamify@^1.0.1:
1579+ version "1.2.1"
1580+ resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5"
1581+ dependencies:
1582+ filename-reserved-regex "^1.0.0"
1583+ strip-outer "^1.0.0"
1584+ trim-repeated "^1.0.0"
1585+
1586+fill-range@^2.1.0:
1587+ version "2.2.3"
1588+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
1589+ dependencies:
1590+ is-number "^2.1.0"
1591+ isobject "^2.0.0"
1592+ randomatic "^1.1.3"
1593+ repeat-element "^1.1.2"
1594+ repeat-string "^1.5.2"
1595+
1596+find-node-modules@1.0.4:
1597+ version "1.0.4"
1598+ resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-1.0.4.tgz#b6deb3cccb699c87037677bcede2c5f5862b2550"
1599+ dependencies:
1600+ findup-sync "0.4.2"
1601+ merge "^1.2.0"
1602+
1603+find-parent-dir@^0.3.0:
1604+ version "0.3.0"
1605+ resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
1606+
1607+find-root@1.0.0:
1608+ version "1.0.0"
1609+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a"
1610+
1611+find-up@^1.0.0:
1612+ version "1.1.2"
1613+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
1614+ dependencies:
1615+ path-exists "^2.0.0"
1616+ pinkie-promise "^2.0.0"
1617+
1618+find-versions@^1.0.0:
1619+ version "1.2.1"
1620+ resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62"
1621+ dependencies:
1622+ array-uniq "^1.0.0"
1623+ get-stdin "^4.0.1"
1624+ meow "^3.5.0"
1625+ semver-regex "^1.0.0"
1626+
1627+findup-sync@0.4.2:
1628+ version "0.4.2"
1629+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.2.tgz#a8117d0f73124f5a4546839579fe52d7129fb5e5"
1630+ dependencies:
1631+ detect-file "^0.1.0"
1632+ is-glob "^2.0.1"
1633+ micromatch "^2.3.7"
1634+ resolve-dir "^0.1.0"
1635+
1636+findup@0.1.5:
1637+ version "0.1.5"
1638+ resolved "https://registry.yarnpkg.com/findup/-/findup-0.1.5.tgz#8ad929a3393bac627957a7e5de4623b06b0e2ceb"
1639+ dependencies:
1640+ colors "~0.6.0-1"
1641+ commander "~2.1.0"
1642+
1643+first-chunk-stream@^1.0.0:
1644+ version "1.0.0"
1645+ resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
1646+
1647+flat-cache@^1.2.1:
1648+ version "1.2.2"
1649+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
1650+ dependencies:
1651+ circular-json "^0.3.1"
1652+ del "^2.0.2"
1653+ graceful-fs "^4.1.2"
1654+ write "^0.2.1"
1655+
1656+flow-remove-types@^1.1.0:
1657+ version "1.2.0"
1658+ resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.0.tgz#c285516eabba72177a1b10bfb58f6ffb675a8877"
1659+ dependencies:
1660+ babylon "^6.15.0"
1661+ vlq "^0.2.1"
1662+
1663+for-in@^1.0.1:
1664+ version "1.0.2"
1665+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
1666+
1667+for-own@^0.1.4:
1668+ version "0.1.5"
1669+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
1670+ dependencies:
1671+ for-in "^1.0.1"
1672+
1673+forever-agent@~0.6.1:
1674+ version "0.6.1"
1675+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1676+
1677+form-data@~2.1.1:
1678+ version "2.1.2"
1679+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
1680+ dependencies:
1681+ asynckit "^0.4.0"
1682+ combined-stream "^1.0.5"
1683+ mime-types "^2.1.12"
1684+
1685+fs-exists-sync@^0.1.0:
1686+ version "0.1.0"
1687+ resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
1688+
1689+fs-extra@^1.0.0:
1690+ version "1.0.0"
1691+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
1692+ dependencies:
1693+ graceful-fs "^4.1.2"
1694+ jsonfile "^2.1.0"
1695+ klaw "^1.0.0"
4551696
4561697fs.realpath@^1.0.0:
4571698 version "1.0.0"
4581699 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
4591700
1701+fsevents@^1.0.0:
1702+ version "1.1.1"
1703+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
1704+ dependencies:
1705+ nan "^2.3.0"
1706+ node-pre-gyp "^0.6.29"
1707+
1708+fstream-ignore@~1.0.5:
1709+ version "1.0.5"
1710+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
1711+ dependencies:
1712+ fstream "^1.0.0"
1713+ inherits "2"
1714+ minimatch "^3.0.0"
1715+
1716+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
1717+ version "1.0.11"
1718+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
1719+ dependencies:
1720+ graceful-fs "^4.1.2"
1721+ inherits "~2.0.0"
1722+ mkdirp ">=0.5 0"
1723+ rimraf "2"
1724+
1725+function-bind@^1.0.2:
1726+ version "1.1.0"
1727+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
1728+
1729+gauge@~2.7.1:
1730+ version "2.7.3"
1731+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09"
1732+ dependencies:
1733+ aproba "^1.0.3"
1734+ console-control-strings "^1.0.0"
1735+ has-unicode "^2.0.0"
1736+ object-assign "^4.1.0"
1737+ signal-exit "^3.0.0"
1738+ string-width "^1.0.1"
1739+ strip-ansi "^3.0.1"
1740+ wide-align "^1.1.0"
1741+
4601742generate-function@^2.0.0:
4611743 version "2.0.0"
4621744 resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
@@ -467,7 +1749,100 @@ generate-object-property@^1.1.0:
4671749 dependencies:
4681750 is-property "^1.0.0"
4691751
470−glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
1752+get-pkg-repo@^1.0.0:
1753+ version "1.3.0"
1754+ resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.3.0.tgz#43c6b4c048b75dd604fc5388edecde557f6335df"
1755+ dependencies:
1756+ hosted-git-info "^2.1.4"
1757+ meow "^3.3.0"
1758+ normalize-package-data "^2.3.0"
1759+ parse-github-repo-url "^1.3.0"
1760+ through2 "^2.0.0"
1761+
1762+get-proxy@^1.0.1:
1763+ version "1.1.0"
1764+ resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb"
1765+ dependencies:
1766+ rc "^1.1.2"
1767+
1768+get-stdin@^4.0.1:
1769+ version "4.0.1"
1770+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
1771+
1772+getpass@^0.1.1:
1773+ version "0.1.6"
1774+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
1775+ dependencies:
1776+ assert-plus "^1.0.0"
1777+
1778+git-raw-commits@^1.2.0:
1779+ version "1.2.0"
1780+ resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.2.0.tgz#0f3a8bfd99ae0f2d8b9224d58892975e9a52d03c"
1781+ dependencies:
1782+ dargs "^4.0.1"
1783+ lodash.template "^4.0.2"
1784+ meow "^3.3.0"
1785+ split2 "^2.0.0"
1786+ through2 "^2.0.0"
1787+
1788+git-remote-origin-url@^2.0.0:
1789+ version "2.0.0"
1790+ resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f"
1791+ dependencies:
1792+ gitconfiglocal "^1.0.0"
1793+ pify "^2.3.0"
1794+
1795+git-semver-tags@^1.2.0:
1796+ version "1.2.0"
1797+ resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.0.tgz#b31fd02c8ab578bd6c9b5cacca5e1c64c1177ac1"
1798+ dependencies:
1799+ meow "^3.3.0"
1800+ semver "^5.0.1"
1801+
1802+gitconfiglocal@^1.0.0:
1803+ version "1.0.0"
1804+ resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b"
1805+ dependencies:
1806+ ini "^1.3.2"
1807+
1808+github-url-from-git@^1.4.0:
1809+ version "1.5.0"
1810+ resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0"
1811+
1812+glob-base@^0.3.0:
1813+ version "0.3.0"
1814+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
1815+ dependencies:
1816+ glob-parent "^2.0.0"
1817+ is-glob "^2.0.0"
1818+
1819+glob-parent@^2.0.0:
1820+ version "2.0.0"
1821+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
1822+ dependencies:
1823+ is-glob "^2.0.0"
1824+
1825+glob-parent@^3.0.0:
1826+ version "3.1.0"
1827+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
1828+ dependencies:
1829+ is-glob "^3.1.0"
1830+ path-dirname "^1.0.0"
1831+
1832+glob-stream@^5.3.2:
1833+ version "5.3.5"
1834+ resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22"
1835+ dependencies:
1836+ extend "^3.0.0"
1837+ glob "^5.0.3"
1838+ glob-parent "^3.0.0"
1839+ micromatch "^2.3.7"
1840+ ordered-read-streams "^0.3.0"
1841+ through2 "^0.6.0"
1842+ to-absolute-glob "^0.1.1"
1843+ unique-stream "^2.0.2"
1844+
1845+glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1:
4711846 version "7.1.1"
4721847 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
4731848 dependencies:
@@ -478,6 +1853,32 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
4781853 once "^1.3.0"
4791854 path-is-absolute "^1.0.0"
4801855
1856+glob@^5.0.3:
1857+ version "5.0.15"
1858+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
1859+ dependencies:
1860+ inflight "^1.0.4"
1861+ inherits "2"
1862+ minimatch "2 || 3"
1863+ once "^1.3.0"
1864+ path-is-absolute "^1.0.0"
1865+
1866+global-modules@^0.2.3:
1867+ version "0.2.3"
1868+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
1869+ dependencies:
1870+ global-prefix "^0.1.4"
1871+ is-windows "^0.2.0"
1872+
1873+global-prefix@^0.1.4:
1874+ version "0.1.5"
1875+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
1876+ dependencies:
1877+ homedir-polyfill "^1.0.0"
1878+ ini "^1.3.4"
1879+ is-windows "^0.2.0"
1880+ which "^1.2.12"
1881+
4811882globals@^9.14.0:
4821883 version "9.16.0"
4831884 resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80"
@@ -493,16 +1894,201 @@ globby@^5.0.0:
4931894 pify "^2.0.0"
4941895 pinkie-promise "^2.0.0"
4951896
496−graceful-fs@^4.1.2:
1897+glogg@^1.0.0:
1898+ version "1.0.0"
1899+ resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
1900+ dependencies:
1901+ sparkles "^1.0.0"
1902+
1903+got@^5.0.0:
1904+ version "5.7.1"
1905+ resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
1906+ dependencies:
1907+ create-error-class "^3.0.1"
1908+ duplexer2 "^0.1.4"
1909+ is-redirect "^1.0.0"
1910+ is-retry-allowed "^1.0.0"
1911+ is-stream "^1.0.0"
1912+ lowercase-keys "^1.0.0"
1913+ node-status-codes "^1.0.0"
1914+ object-assign "^4.0.1"
1915+ parse-json "^2.1.0"
1916+ pinkie-promise "^2.0.0"
1917+ read-all-stream "^3.0.0"
1918+ readable-stream "^2.0.5"
1919+ timed-out "^3.0.0"
1920+ unzip-response "^1.0.2"
1921+ url-parse-lax "^1.0.0"
1922+
1923+graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
4971924 version "4.1.11"
4981925 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
4991926
1927+"graceful-readlink@>= 1.0.0":
1928+ version "1.0.1"
1929+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1930+
1931+gulp-decompress@^1.2.0:
1932+ version "1.2.0"
1933+ resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7"
1934+ dependencies:
1935+ archive-type "^3.0.0"
1936+ decompress "^3.0.0"
1937+ gulp-util "^3.0.1"
1938+ readable-stream "^2.0.2"
1939+
1940+gulp-rename@^1.2.0:
1941+ version "1.2.2"
1942+ resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817"
1943+
1944+gulp-sourcemaps@1.6.0:
1945+ version "1.6.0"
1946+ resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c"
1947+ dependencies:
1948+ convert-source-map "^1.1.1"
1949+ graceful-fs "^4.1.2"
1950+ strip-bom "^2.0.0"
1951+ through2 "^2.0.0"
1952+ vinyl "^1.0.0"
1953+
1954+gulp-util@^3.0.1:
1955+ version "3.0.8"
1956+ resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
1957+ dependencies:
1958+ array-differ "^1.0.0"
1959+ array-uniq "^1.0.2"
1960+ beeper "^1.0.0"
1961+ chalk "^1.0.0"
1962+ dateformat "^2.0.0"
1963+ fancy-log "^1.1.0"
1964+ gulplog "^1.0.0"
1965+ has-gulplog "^0.1.0"
1966+ lodash._reescape "^3.0.0"
1967+ lodash._reevaluate "^3.0.0"
1968+ lodash._reinterpolate "^3.0.0"
1969+ lodash.template "^3.0.0"
1970+ minimist "^1.1.0"
1971+ multipipe "^0.1.2"
1972+ object-assign "^3.0.0"
1973+ replace-ext "0.0.1"
1974+ through2 "^2.0.0"
1975+ vinyl "^0.5.0"
1976+
1977+gulplog@^1.0.0:
1978+ version "1.0.0"
1979+ resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
1980+ dependencies:
1981+ glogg "^1.0.0"
1982+
1983+handlebars@^4.0.2:
1984+ version "4.0.6"
1985+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
1986+ dependencies:
1987+ async "^1.4.0"
1988+ optimist "^0.6.1"
1989+ source-map "^0.4.4"
1990+ optionalDependencies:
1991+ uglify-js "^2.6"
1992+
1993+har-schema@^1.0.5:
1994+ version "1.0.5"
1995+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
1996+
1997+har-validator@~4.2.1:
1998+ version "4.2.1"
1999+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
2000+ dependencies:
2001+ ajv "^4.9.1"
2002+ har-schema "^1.0.5"
2003+
5002004has-ansi@^2.0.0:
5012005 version "2.0.0"
5022006 resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
5032007 dependencies:
5042008 ansi-regex "^2.0.0"
5052009
2010+has-gulplog@^0.1.0:
2011+ version "0.1.0"
2012+ resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
2013+ dependencies:
2014+ sparkles "^1.0.0"
2015+
2016+has-unicode@^2.0.0:
2017+ version "2.0.1"
2018+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
2019+
2020+has@^1.0.0:
2021+ version "1.0.1"
2022+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
2023+ dependencies:
2024+ function-bind "^1.0.2"
2025+
2026+hash.js@^1.0.0, hash.js@^1.0.3:
2027+ version "1.0.3"
2028+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
2029+ dependencies:
2030+ inherits "^2.0.1"
2031+
2032+hawk@~3.1.3:
2033+ version "3.1.3"
2034+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
2035+ dependencies:
2036+ boom "2.x.x"
2037+ cryptiles "2.x.x"
2038+ hoek "2.x.x"
2039+ sntp "1.x.x"
2040+
2041+hmac-drbg@^1.0.0:
2042+ version "1.0.0"
2043+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5"
2044+ dependencies:
2045+ hash.js "^1.0.3"
2046+ minimalistic-assert "^1.0.0"
2047+ minimalistic-crypto-utils "^1.0.1"
2048+
2049+hoek@2.x.x:
2050+ version "2.16.3"
2051+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
2052+
2053+homedir-polyfill@^1.0.0:
2054+ version "1.0.1"
2055+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
2056+ dependencies:
2057+ parse-passwd "^1.0.0"
2058+
2059+hosted-git-info@^2.1.4:
2060+ version "2.2.0"
2061+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5"
2062+
2063+htmlescape@^1.1.0:
2064+ version "1.1.1"
2065+ resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
2066+
2067+http-signature@~1.1.0:
2068+ version "1.1.1"
2069+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
2070+ dependencies:
2071+ assert-plus "^0.2.0"
2072+ jsprim "^1.2.2"
2073+ sshpk "^1.7.0"
2074+
2075+https-browserify@~0.0.0:
2076+ version "0.0.1"
2077+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
2078+
2079+husky@^0.13.2:
2080+ version "0.13.2"
2081+ resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.2.tgz#9dcf212f88e61dba36f17be1a202ed61ff6c0661"
2082+ dependencies:
2083+ chalk "^1.1.3"
2084+ find-parent-dir "^0.3.0"
2085+ is-ci "^1.0.9"
2086+ normalize-path "^1.0.0"
2087+
2088+ieee754@^1.1.4:
2089+ version "1.1.8"
2090+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
2091+
5062092ignore@^3.2.0:
5072093 version "3.2.4"
5082094 resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.4.tgz#4055e03596729a8fabe45a43c100ad5ed815c4e8"
@@ -511,6 +2097,16 @@ imurmurhash@^0.1.4:
5112097 version "0.1.4"
5122098 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
5132099
2100+indent-string@^2.1.0:
2101+ version "2.1.0"
2102+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
2103+ dependencies:
2104+ repeating "^2.0.0"
2105+
2106+indexof@0.0.1:
2107+ version "0.0.1"
2108+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
2109+
5142110inflight@^1.0.4:
5152111 version "1.0.6"
5162112 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -518,10 +2114,43 @@ inflight@^1.0.4:
5182114 once "^1.3.0"
5192115 wrappy "1"
5202116
521−inherits@2, inherits@^2.0.3, inherits@~2.0.1:
2117+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
5222118 version "2.0.3"
5232119 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
5242120
2121+inherits@2.0.1:
2122+ version "2.0.1"
2123+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
2124+
2125+ini@^1.3.2, ini@^1.3.4, ini@~1.3.0:
2126+ version "1.3.4"
2127+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
2128+
2129+inline-source-map@~0.6.0:
2130+ version "0.6.2"
2131+ resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
2132+ dependencies:
2133+ source-map "~0.5.3"
2134+
2135+inquirer@1.2.3:
2136+ version "1.2.3"
2137+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918"
2138+ dependencies:
2139+ ansi-escapes "^1.1.0"
2140+ chalk "^1.0.0"
2141+ cli-cursor "^1.0.1"
2142+ cli-width "^2.0.0"
2143+ external-editor "^1.1.0"
2144+ figures "^1.3.5"
2145+ lodash "^4.3.0"
2146+ mute-stream "0.0.6"
2147+ pinkie-promise "^2.0.0"
2148+ run-async "^2.2.0"
2149+ rx "^4.1.0"
2150+ string-width "^1.0.1"
2151+ strip-ansi "^3.0.0"
2152+ through "^2.3.6"
2153+
5252154inquirer@^0.12.0:
5262155 version "0.12.0"
5272156 resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
@@ -540,14 +2169,91 @@ inquirer@^0.12.0:
5402169 strip-ansi "^3.0.0"
5412170 through "^2.3.6"
5422171
2172+insert-module-globals@^7.0.0:
2173+ version "7.0.1"
2174+ resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
2175+ dependencies:
2176+ JSONStream "^1.0.3"
2177+ combine-source-map "~0.7.1"
2178+ concat-stream "~1.5.1"
2179+ is-buffer "^1.1.0"
2180+ lexical-scope "^1.2.0"
2181+ process "~0.11.0"
2182+ through2 "^2.0.0"
2183+ xtend "^4.0.0"
2184+
5432185interpret@^1.0.0:
5442186 version "1.0.1"
5452187 resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
5462188
547−is-buffer@^1.0.2:
2189+ip-regex@^1.0.1:
2190+ version "1.0.3"
2191+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
2192+
2193+is-absolute@^0.1.5:
2194+ version "0.1.7"
2195+ resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f"
2196+ dependencies:
2197+ is-relative "^0.1.0"
2198+
2199+is-arrayish@^0.2.1:
2200+ version "0.2.1"
2201+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
2202+
2203+is-binary-path@^1.0.0:
2204+ version "1.0.1"
2205+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
2206+ dependencies:
2207+ binary-extensions "^1.0.0"
2208+
2209+is-buffer@^1.0.2, is-buffer@^1.1.0:
5482210 version "1.1.4"
5492211 resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
5502212
2213+is-builtin-module@^1.0.0:
2214+ version "1.0.0"
2215+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
2216+ dependencies:
2217+ builtin-modules "^1.0.0"
2218+
2219+is-bzip2@^1.0.0:
2220+ version "1.0.0"
2221+ resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc"
2222+
2223+is-ci@^1.0.9:
2224+ version "1.0.10"
2225+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
2226+ dependencies:
2227+ ci-info "^1.0.0"
2228+
2229+is-dotfile@^1.0.0:
2230+ version "1.0.2"
2231+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
2232+
2233+is-equal-shallow@^0.1.3:
2234+ version "0.1.3"
2235+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
2236+ dependencies:
2237+ is-primitive "^2.0.0"
2238+
2239+is-extendable@^0.1.0, is-extendable@^0.1.1:
2240+ version "0.1.1"
2241+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
2242+
2243+is-extglob@^1.0.0:
2244+ version "1.0.0"
2245+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
2246+
2247+is-extglob@^2.1.0:
2248+ version "2.1.1"
2249+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
2250+
2251+is-finite@^1.0.0:
2252+ version "1.0.2"
2253+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
2254+ dependencies:
2255+ number-is-nan "^1.0.0"
2256+
5512257is-fullwidth-code-point@^1.0.0:
5522258 version "1.0.0"
5532259 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
@@ -558,6 +2264,22 @@ is-fullwidth-code-point@^2.0.0:
5582264 version "2.0.0"
5592265 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
5602266
2267+is-glob@^2.0.0, is-glob@^2.0.1:
2268+ version "2.0.1"
2269+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
2270+ dependencies:
2271+ is-extglob "^1.0.0"
2272+
2273+is-glob@^3.1.0:
2274+ version "3.1.0"
2275+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
2276+ dependencies:
2277+ is-extglob "^2.1.0"
2278+
2279+is-gzip@^1.0.0:
2280+ version "1.0.0"
2281+ resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
2282+
5612283is-my-json-valid@^2.10.0:
5622284 version "2.16.0"
5632285 resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
@@ -567,6 +2289,20 @@ is-my-json-valid@^2.10.0:
5672289 jsonpointer "^4.0.0"
5682290 xtend "^4.0.0"
5692291
2292+is-natural-number@^2.0.0:
2293+ version "2.1.1"
2294+ resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7"
2295+
2296+is-number@^2.0.2, is-number@^2.1.0:
2297+ version "2.1.0"
2298+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
2299+ dependencies:
2300+ kind-of "^3.0.2"
2301+
2302+is-obj@^1.0.0:
2303+ version "1.0.1"
2304+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
2305+
5702306is-path-cwd@^1.0.0:
5712307 version "1.0.0"
5722308 resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -583,20 +2319,110 @@ is-path-inside@^1.0.0:
5832319 dependencies:
5842320 path-is-inside "^1.0.1"
5852321
2322+is-posix-bracket@^0.1.0:
2323+ version "0.1.1"
2324+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
2325+
2326+is-primitive@^2.0.0:
2327+ version "2.0.0"
2328+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
2329+
2330+is-promise@^2.1.0:
2331+ version "2.1.0"
2332+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
2333+
5862334is-property@^1.0.0:
5872335 version "1.0.2"
5882336 resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
5892337
2338+is-redirect@^1.0.0:
2339+ version "1.0.0"
2340+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
2341+
2342+is-relative@^0.1.0:
2343+ version "0.1.3"
2344+ resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82"
2345+
5902346is-resolvable@^1.0.0:
5912347 version "1.0.0"
5922348 resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
5932349 dependencies:
5942350 tryit "^1.0.1"
5952351
596−isarray@^1.0.0, isarray@~1.0.0:
2352+is-retry-allowed@^1.0.0:
2353+ version "1.1.0"
2354+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
2355+
2356+is-stream@^1.0.0, is-stream@^1.0.1:
2357+ version "1.1.0"
2358+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
2359+
2360+is-subset@^0.1.1:
2361+ version "0.1.1"
2362+ resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
2363+
2364+is-tar@^1.0.0:
2365+ version "1.0.0"
2366+ resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d"
2367+
2368+is-text-path@^1.0.0:
2369+ version "1.0.1"
2370+ resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
2371+ dependencies:
2372+ text-extensions "^1.0.0"
2373+
2374+is-typedarray@~1.0.0:
2375+ version "1.0.0"
2376+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
2377+
2378+is-url@^1.2.0:
2379+ version "1.2.2"
2380+ resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
2381+
2382+is-utf8@^0.2.0:
2383+ version "0.2.1"
2384+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
2385+
2386+is-valid-glob@^0.3.0:
2387+ version "0.3.0"
2388+ resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe"
2389+
2390+is-windows@^0.2.0:
2391+ version "0.2.0"
2392+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
2393+
2394+is-zip@^1.0.0:
2395+ version "1.0.0"
2396+ resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325"
2397+
2398+isarray@0.0.1, isarray@~0.0.1:
2399+ version "0.0.1"
2400+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
2401+
2402+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
5972403 version "1.0.0"
5982404 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
5992405
2406+isexe@^1.1.1:
2407+ version "1.1.2"
2408+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
2409+
2410+isobject@^2.0.0:
2411+ version "2.1.0"
2412+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
2413+ dependencies:
2414+ isarray "1.0.0"
2415+
2416+isstream@~0.1.2:
2417+ version "0.1.2"
2418+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
2419+
2420+jodid25519@^1.0.0:
2421+ version "1.0.2"
2422+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
2423+ dependencies:
2424+ jsbn "~0.1.0"
2425+
6002426js-tokens@^3.0.0:
6012427 version "3.0.1"
6022428 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
@@ -608,30 +2434,94 @@ js-yaml@^3.5.1:
6082434 argparse "^1.0.7"
6092435 esprima "^3.1.1"
6102436
2437+jsbn@~0.1.0:
2438+ version "0.1.1"
2439+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
2440+
2441+json-schema@0.2.3:
2442+ version "0.2.3"
2443+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
2444+
6112445json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
6122446 version "1.0.1"
6132447 resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
6142448 dependencies:
6152449 jsonify "~0.0.0"
6162450
2451+json-stable-stringify@~0.0.0:
2452+ version "0.0.1"
2453+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
2454+ dependencies:
2455+ jsonify "~0.0.0"
2456+
2457+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
2458+ version "5.0.1"
2459+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
2460+
2461+jsonfile@^2.1.0:
2462+ version "2.4.0"
2463+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
2464+ optionalDependencies:
2465+ graceful-fs "^4.1.6"
2466+
6172467jsonify@~0.0.0:
6182468 version "0.0.0"
6192469 resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
6202470
2471+jsonparse@0.0.5:
2472+ version "0.0.5"
2473+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64"
2474+
2475+jsonparse@^1.2.0:
2476+ version "1.3.0"
2477+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.0.tgz#85fc245b1d9259acc6941960b905adf64e7de0e8"
2478+
6212479jsonpointer@^4.0.0:
6222480 version "4.0.1"
6232481 resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
6242482
2483+jsprim@^1.2.2:
2484+ version "1.3.1"
2485+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
2486+ dependencies:
2487+ extsprintf "1.0.2"
2488+ json-schema "0.2.3"
2489+ verror "1.3.6"
2490+
6252491kind-of@^3.0.2:
6262492 version "3.1.0"
6272493 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
6282494 dependencies:
6292495 is-buffer "^1.0.2"
6302496
2497+klaw@^1.0.0:
2498+ version "1.3.1"
2499+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
2500+ optionalDependencies:
2501+ graceful-fs "^4.1.9"
2502+
2503+labeled-stream-splicer@^2.0.0:
2504+ version "2.0.0"
2505+ resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
2506+ dependencies:
2507+ inherits "^2.0.1"
2508+ isarray "~0.0.1"
2509+ stream-splicer "^2.0.0"
2510+
6312511lazy-cache@^1.0.3:
6322512 version "1.0.4"
6332513 resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
6342514
2515+lazy-req@^1.0.0:
2516+ version "1.1.0"
2517+ resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
2518+
2519+lazystream@^1.0.0:
2520+ version "1.0.0"
2521+ resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
2522+ dependencies:
2523+ readable-stream "^2.0.5"
2524+
6352525levn@^0.3.0, levn@~0.3.0:
6362526 version "0.3.0"
6372527 resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -639,70 +2529,437 @@ levn@^0.3.0, levn@~0.3.0:
6392529 prelude-ls "~1.1.2"
6402530 type-check "~0.3.2"
6412531
642−lodash@^4.0.0, lodash@^4.3.0:
2532+lexical-scope@^1.2.0:
2533+ version "1.2.0"
2534+ resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
2535+ dependencies:
2536+ astw "^2.0.0"
2537+
2538+load-json-file@^1.0.0:
2539+ version "1.1.0"
2540+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
2541+ dependencies:
2542+ graceful-fs "^4.1.2"
2543+ parse-json "^2.2.0"
2544+ pify "^2.0.0"
2545+ pinkie-promise "^2.0.0"
2546+ strip-bom "^2.0.0"
2547+
2548+lodash._basecopy@^3.0.0:
2549+ version "3.0.1"
2550+ resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
2551+
2552+lodash._basetostring@^3.0.0:
2553+ version "3.0.1"
2554+ resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
2555+
2556+lodash._basevalues@^3.0.0:
2557+ version "3.0.0"
2558+ resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
2559+
2560+lodash._getnative@^3.0.0:
2561+ version "3.9.1"
2562+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
2563+
2564+lodash._isiterateecall@^3.0.0:
2565+ version "3.0.9"
2566+ resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
2567+
2568+lodash._reescape@^3.0.0:
2569+ version "3.0.0"
2570+ resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
2571+
2572+lodash._reevaluate@^3.0.0:
2573+ version "3.0.0"
2574+ resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
2575+
2576+lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0:
2577+ version "3.0.0"
2578+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
2579+
2580+lodash._root@^3.0.0:
2581+ version "3.0.1"
2582+ resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
2583+
2584+lodash.escape@^3.0.0:
2585+ version "3.2.0"
2586+ resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
2587+ dependencies:
2588+ lodash._root "^3.0.0"
2589+
2590+lodash.isarguments@^3.0.0:
2591+ version "3.1.0"
2592+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
2593+
2594+lodash.isarray@^3.0.0:
2595+ version "3.0.4"
2596+ resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
2597+
2598+lodash.isequal@^4.0.0:
2599+ version "4.5.0"
2600+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
2601+
2602+lodash.keys@^3.0.0:
2603+ version "3.1.2"
2604+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
2605+ dependencies:
2606+ lodash._getnative "^3.0.0"
2607+ lodash.isarguments "^3.0.0"
2608+ lodash.isarray "^3.0.0"
2609+
2610+lodash.map@^4.5.1:
2611+ version "4.6.0"
2612+ resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
2613+
2614+lodash.memoize@~3.0.3:
2615+ version "3.0.4"
2616+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
2617+
2618+lodash.restparam@^3.0.0:
2619+ version "3.6.1"
2620+ resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
2621+
2622+lodash.template@^3.0.0:
2623+ version "3.6.2"
2624+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
2625+ dependencies:
2626+ lodash._basecopy "^3.0.0"
2627+ lodash._basetostring "^3.0.0"
2628+ lodash._basevalues "^3.0.0"
2629+ lodash._isiterateecall "^3.0.0"
2630+ lodash._reinterpolate "^3.0.0"
2631+ lodash.escape "^3.0.0"
2632+ lodash.keys "^3.0.0"
2633+ lodash.restparam "^3.0.0"
2634+ lodash.templatesettings "^3.0.0"
2635+
2636+lodash.template@^4.0.2:
2637+ version "4.4.0"
2638+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
2639+ dependencies:
2640+ lodash._reinterpolate "~3.0.0"
2641+ lodash.templatesettings "^4.0.0"
2642+
2643+lodash.templatesettings@^3.0.0:
2644+ version "3.1.1"
2645+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
2646+ dependencies:
2647+ lodash._reinterpolate "^3.0.0"
2648+ lodash.escape "^3.0.0"
2649+
2650+lodash.templatesettings@^4.0.0:
2651+ version "4.1.0"
2652+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
2653+ dependencies:
2654+ lodash._reinterpolate "~3.0.0"
2655+
2656+lodash@4.17.2:
2657+ version "4.17.2"
2658+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42"
2659+
2660+lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.2.1, lodash@^4.3.0:
6432661 version "4.17.4"
6442662 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
6452663
646−longest@^1.0.1:
2664+logalot@^2.1.0:
2665+ version "2.1.0"
2666+ resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552"
2667+ dependencies:
2668+ figures "^1.3.5"
2669+ squeak "^1.0.0"
2670+
2671+longest@^1.0.0, longest@^1.0.1:
6472672 version "1.0.1"
6482673 resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
6492674
2675+loud-rejection@^1.0.0:
2676+ version "1.6.0"
2677+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
2678+ dependencies:
2679+ currently-unhandled "^0.4.1"
2680+ signal-exit "^3.0.0"
2681+
2682+lowercase-keys@^1.0.0:
2683+ version "1.0.0"
2684+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
2685+
2686+lpad-align@^1.0.1:
2687+ version "1.1.0"
2688+ resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.0.tgz#27fa786bcb695fc434ea1500723eb8d0bdc82bf4"
2689+ dependencies:
2690+ get-stdin "^4.0.1"
2691+ longest "^1.0.0"
2692+ lpad "^2.0.1"
2693+ meow "^3.3.0"
2694+
2695+lpad@^2.0.1:
2696+ version "2.0.1"
2697+ resolved "https://registry.yarnpkg.com/lpad/-/lpad-2.0.1.tgz#28316b4e7b2015f511f6591459afc0e5944008ad"
2698+
6502699magic-string@^0.14.0:
6512700 version "0.14.0"
6522701 resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462"
6532702 dependencies:
6542703 vlq "^0.2.1"
6552704
656−minimatch@^3.0.2:
2705+map-obj@^1.0.0, map-obj@^1.0.1:
2706+ version "1.0.1"
2707+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
2708+
2709+meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0:
2710+ version "3.7.0"
2711+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
2712+ dependencies:
2713+ camelcase-keys "^2.0.0"
2714+ decamelize "^1.1.2"
2715+ loud-rejection "^1.0.0"
2716+ map-obj "^1.0.1"
2717+ minimist "^1.1.3"
2718+ normalize-package-data "^2.3.4"
2719+ object-assign "^4.0.1"
2720+ read-pkg-up "^1.0.1"
2721+ redent "^1.0.0"
2722+ trim-newlines "^1.0.0"
2723+
2724+merge-stream@^1.0.0:
2725+ version "1.0.1"
2726+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
2727+ dependencies:
2728+ readable-stream "^2.0.1"
2729+
2730+merge@^1.2.0:
2731+ version "1.2.0"
2732+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
2733+
2734+micromatch@^2.1.5, micromatch@^2.3.7:
2735+ version "2.3.11"
2736+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
2737+ dependencies:
2738+ arr-diff "^2.0.0"
2739+ array-unique "^0.2.1"
2740+ braces "^1.8.2"
2741+ expand-brackets "^0.1.4"
2742+ extglob "^0.3.1"
2743+ filename-regex "^2.0.0"
2744+ is-extglob "^1.0.0"
2745+ is-glob "^2.0.1"
2746+ kind-of "^3.0.2"
2747+ normalize-path "^2.0.1"
2748+ object.omit "^2.0.0"
2749+ parse-glob "^3.0.4"
2750+ regex-cache "^0.4.2"
2751+
2752+miller-rabin@^4.0.0:
2753+ version "4.0.0"
2754+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
2755+ dependencies:
2756+ bn.js "^4.0.0"
2757+ brorand "^1.0.1"
2758+
2759+mime-db@~1.26.0:
2760+ version "1.26.0"
2761+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
2762+
2763+mime-types@^2.1.12, mime-types@~2.1.7:
2764+ version "2.1.14"
2765+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
2766+ dependencies:
2767+ mime-db "~1.26.0"
2768+
2769+mime@>=1.2.9:
2770+ version "1.3.4"
2771+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
2772+
2773+minimalistic-assert@^1.0.0:
2774+ version "1.0.0"
2775+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
2776+
2777+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
2778+ version "1.0.1"
2779+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
2780+
2781+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3:
6572782 version "3.0.3"
6582783 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
6592784 dependencies:
6602785 brace-expansion "^1.0.0"
6612786
662−minimist@0.0.8:
2787+minimist@0.0.8, minimist@~0.0.1:
6632788 version "0.0.8"
6642789 resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
6652790
666−minimist@^1.2.0:
2791+minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
6672792 version "1.2.0"
6682793 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
6692794
670−mkdirp@^0.5.0, mkdirp@^0.5.1:
2795+"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
6712796 version "0.5.1"
6722797 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
6732798 dependencies:
6742799 minimist "0.0.8"
6752800
2801+modify-values@^1.0.0:
2802+ version "1.0.0"
2803+ resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2"
2804+
2805+module-deps@^4.0.8:
2806+ version "4.1.1"
2807+ resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd"
2808+ dependencies:
2809+ JSONStream "^1.0.3"
2810+ browser-resolve "^1.7.0"
2811+ cached-path-relative "^1.0.0"
2812+ concat-stream "~1.5.0"
2813+ defined "^1.0.0"
2814+ detective "^4.0.0"
2815+ duplexer2 "^0.1.2"
2816+ inherits "^2.0.1"
2817+ parents "^1.0.0"
2818+ readable-stream "^2.0.2"
2819+ resolve "^1.1.3"
2820+ stream-combiner2 "^1.1.1"
2821+ subarg "^1.0.0"
2822+ through2 "^2.0.0"
2823+ xtend "^4.0.0"
2824+
2825+ms@0.7.1:
2826+ version "0.7.1"
2827+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
2828+
6762829ms@0.7.2:
6772830 version "0.7.2"
6782831 resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
6792832
680−mute-stream@0.0.5:
2833+multipipe@^0.1.2:
2834+ version "0.1.2"
2835+ resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
2836+ dependencies:
2837+ duplexer2 "0.0.2"
2838+
2839+mute-stream@0.0.5, mute-stream@~0.0.4:
6812840 version "0.0.5"
6822841 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
6832842
2843+mute-stream@0.0.6:
2844+ version "0.0.6"
2845+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
2846+
2847+nan@^2.3.0:
2848+ version "2.5.1"
2849+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
2850+
6842851natural-compare@^1.4.0:
6852852 version "1.4.0"
6862853 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
6872854
2855+node-pre-gyp@^0.6.29:
2856+ version "0.6.33"
2857+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9"
2858+ dependencies:
2859+ mkdirp "~0.5.1"
2860+ nopt "~3.0.6"
2861+ npmlog "^4.0.1"
2862+ rc "~1.1.6"
2863+ request "^2.79.0"
2864+ rimraf "~2.5.4"
2865+ semver "~5.3.0"
2866+ tar "~2.2.1"
2867+ tar-pack "~3.3.0"
2868+
2869+node-static@^0.7.9:
2870+ version "0.7.9"
2871+ resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.9.tgz#9bb69fce2281f7ae3cd1fb983e9ea0ec0cd9fecb"
2872+ dependencies:
2873+ colors ">=0.6.0"
2874+ mime ">=1.2.9"
2875+ optimist ">=0.3.4"
2876+
2877+node-status-codes@^1.0.0:
2878+ version "1.0.0"
2879+ resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
2880+
2881+nopt@~3.0.6:
2882+ version "3.0.6"
2883+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
2884+ dependencies:
2885+ abbrev "1"
2886+
2887+normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5:
2888+ version "2.3.6"
2889+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff"
2890+ dependencies:
2891+ hosted-git-info "^2.1.4"
2892+ is-builtin-module "^1.0.0"
2893+ semver "2 || 3 || 4 || 5"
2894+ validate-npm-package-license "^3.0.1"
2895+
2896+normalize-path@^1.0.0:
2897+ version "1.0.0"
2898+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
2899+
2900+normalize-path@^2.0.1:
2901+ version "2.0.1"
2902+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
2903+
2904+npmlog@^4.0.1:
2905+ version "4.0.2"
2906+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
2907+ dependencies:
2908+ are-we-there-yet "~1.1.2"
2909+ console-control-strings "~1.1.0"
2910+ gauge "~2.7.1"
2911+ set-blocking "~2.0.0"
2912+
6882913number-is-nan@^1.0.0:
6892914 version "1.0.1"
6902915 resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
6912916
692−object-assign@^4.0.1, object-assign@^4.1.0:
2917+oauth-sign@~0.8.1:
2918+ version "0.8.2"
2919+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
2920+
2921+object-assign@^2.0.0:
2922+ version "2.1.1"
2923+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
2924+
2925+object-assign@^3.0.0:
2926+ version "3.0.0"
2927+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
2928+
2929+object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0:
6932930 version "4.1.1"
6942931 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
6952932
2933+object.omit@^2.0.0:
2934+ version "2.0.1"
2935+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
2936+ dependencies:
2937+ for-own "^0.1.4"
2938+ is-extendable "^0.1.1"
2939+
6962940once@^1.3.0:
6972941 version "1.4.0"
6982942 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
6992943 dependencies:
7002944 wrappy "1"
7012945
2946+once@~1.3.0, once@~1.3.3:
2947+ version "1.3.3"
2948+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
2949+ dependencies:
2950+ wrappy "1"
2951+
7022952onetime@^1.0.0:
7032953 version "1.1.0"
7042954 resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
7052955
2956+optimist@>=0.3.4, optimist@^0.6.1:
2957+ version "0.6.1"
2958+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
2959+ dependencies:
2960+ minimist "~0.0.1"
2961+ wordwrap "~0.0.2"
2962+
7062963optionator@^0.8.2:
7072964 version "0.8.2"
7082965 resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
@@ -714,10 +2971,96 @@ optionator@^0.8.2:
7142971 type-check "~0.3.2"
7152972 wordwrap "~1.0.0"
7162973
2974+ordered-read-streams@^0.3.0:
2975+ version "0.3.0"
2976+ resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b"
2977+ dependencies:
2978+ is-stream "^1.0.1"
2979+ readable-stream "^2.0.1"
2980+
2981+os-browserify@~0.1.1:
2982+ version "0.1.2"
2983+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
2984+
2985+os-filter-obj@^1.0.0:
2986+ version "1.0.3"
2987+ resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad"
2988+
7172989os-homedir@^1.0.0, os-homedir@^1.0.1:
7182990 version "1.0.2"
7192991 resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
7202992
2993+os-shim@^0.1.2:
2994+ version "0.1.3"
2995+ resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
2996+
2997+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:
2998+ version "1.0.2"
2999+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
3000+
3001+pad-right@^0.2.2:
3002+ version "0.2.2"
3003+ resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774"
3004+ dependencies:
3005+ repeat-string "^1.5.2"
3006+
3007+pako@~0.2.0:
3008+ version "0.2.9"
3009+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
3010+
3011+parents@^1.0.0, parents@^1.0.1:
3012+ version "1.0.1"
3013+ resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
3014+ dependencies:
3015+ path-platform "~0.11.15"
3016+
3017+parse-asn1@^5.0.0:
3018+ version "5.0.0"
3019+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
3020+ dependencies:
3021+ asn1.js "^4.0.0"
3022+ browserify-aes "^1.0.0"
3023+ create-hash "^1.1.0"
3024+ evp_bytestokey "^1.0.0"
3025+ pbkdf2 "^3.0.3"
3026+
3027+parse-github-repo-url@^1.3.0:
3028+ version "1.4.0"
3029+ resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz#286c53e2c9962e0641649ee3ac9508fca4dd959c"
3030+
3031+parse-glob@^3.0.4:
3032+ version "3.0.4"
3033+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
3034+ dependencies:
3035+ glob-base "^0.3.0"
3036+ is-dotfile "^1.0.0"
3037+ is-extglob "^1.0.0"
3038+ is-glob "^2.0.0"
3039+
3040+parse-json@^2.1.0, parse-json@^2.2.0:
3041+ version "2.2.0"
3042+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
3043+ dependencies:
3044+ error-ex "^1.2.0"
3045+
3046+parse-passwd@^1.0.0:
3047+ version "1.0.0"
3048+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
3049+
3050+path-browserify@~0.0.0:
3051+ version "0.0.0"
3052+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
3053+
3054+path-dirname@^1.0.0:
3055+ version "1.0.2"
3056+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
3057+
3058+path-exists@2.1.0, path-exists@^2.0.0:
3059+ version "2.1.0"
3060+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
3061+ dependencies:
3062+ pinkie-promise "^2.0.0"
3063+
7213064path-is-absolute@^1.0.0:
7223065 version "1.0.1"
7233066 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -730,7 +3073,33 @@ path-parse@^1.0.5:
7303073 version "1.0.5"
7313074 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
7323075
733−pify@^2.0.0:
3076+path-platform@~0.11.15:
3077+ version "0.11.15"
3078+ resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
3079+
3080+path-type@^1.0.0:
3081+ version "1.1.0"
3082+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
3083+ dependencies:
3084+ graceful-fs "^4.1.2"
3085+ pify "^2.0.0"
3086+ pinkie-promise "^2.0.0"
3087+
3088+pbkdf2@^3.0.3:
3089+ version "3.0.9"
3090+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
3091+ dependencies:
3092+ create-hmac "^1.1.2"
3093+
3094+pend@~1.2.0:
3095+ version "1.2.0"
3096+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
3097+
3098+performance-now@^0.2.0:
3099+ version "0.2.0"
3100+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
3101+
3102+pify@^2.0.0, pify@^2.3.0:
7343103 version "2.3.0"
7353104 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
7363105
@@ -752,17 +3121,187 @@ prelude-ls@~1.1.2:
7523121 version "1.1.2"
7533122 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
7543123
3124+prepend-http@^1.0.1:
3125+ version "1.0.4"
3126+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
3127+
3128+preserve@^0.2.0:
3129+ version "0.2.0"
3130+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
3131+
7553132process-nextick-args@~1.0.6:
7563133 version "1.0.7"
7573134 resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
7583135
3136+process@~0.11.0:
3137+ version "0.11.9"
3138+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
3139+
7593140progress@^1.1.8:
7603141 version "1.1.8"
7613142 resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
7623143
763−readable-stream@^2.2.2:
764− version "2.2.3"
765− resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729"
3144+public-encrypt@^4.0.0:
3145+ version "4.0.0"
3146+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
3147+ dependencies:
3148+ bn.js "^4.1.0"
3149+ browserify-rsa "^4.0.0"
3150+ create-hash "^1.1.0"
3151+ parse-asn1 "^5.0.0"
3152+ randombytes "^2.0.1"
3153+
3154+pulp@^10.0.4:
3155+ version "10.0.4"
3156+ resolved "https://registry.yarnpkg.com/pulp/-/pulp-10.0.4.tgz#4ae64fcf1c8f93102278ba8db3cbd4b893099636"
3157+ dependencies:
3158+ browserify "^13.1.0"
3159+ browserify-incremental "^3.0.1"
3160+ concat-stream "^1.4.6"
3161+ glob "^7.1.1"
3162+ minimatch "^3.0.3"
3163+ node-static "^0.7.9"
3164+ read "^1.0.7"
3165+ string-stream "0.0.7"
3166+ temp "^0.8.1"
3167+ through "^2.3.8"
3168+ tree-kill "^1.0.0"
3169+ watchpack "^1.0.1"
3170+ which "^1.2.1"
3171+ wordwrap "1.0.0"
3172+
3173+punycode@1.3.2:
3174+ version "1.3.2"
3175+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
3176+
3177+punycode@^1.3.2, punycode@^1.4.1:
3178+ version "1.4.1"
3179+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
3180+
3181+purescript@^0.10.7:
3182+ version "0.10.7"
3183+ resolved "https://registry.yarnpkg.com/purescript/-/purescript-0.10.7.tgz#88cb57821a9e91b4e5f42186bd3fdecc1113a1ab"
3184+ dependencies:
3185+ async-each-series "^1.0.0"
3186+ bin-build "^2.2.0"
3187+ bin-wrapper "^3.0.2"
3188+ logalot "^2.1.0"
3189+ to-executable-name "^1.0.0"
3190+
3191+q@^1.4.1:
3192+ version "1.4.1"
3193+ resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
3194+
3195+qs@~6.4.0:
3196+ version "6.4.0"
3197+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
3198+
3199+querystring-es3@~0.2.0:
3200+ version "0.2.1"
3201+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
3202+
3203+querystring@0.2.0:
3204+ version "0.2.0"
3205+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
3206+
3207+randomatic@^1.1.3:
3208+ version "1.1.6"
3209+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
3210+ dependencies:
3211+ is-number "^2.0.2"
3212+ kind-of "^3.0.2"
3213+
3214+randombytes@^2.0.0, randombytes@^2.0.1:
3215+ version "2.0.3"
3216+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
3217+
3218+rc@^1.1.2, rc@~1.1.6:
3219+ version "1.1.7"
3220+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea"
3221+ dependencies:
3222+ deep-extend "~0.4.0"
3223+ ini "~1.3.0"
3224+ minimist "^1.2.0"
3225+ strip-json-comments "~2.0.1"
3226+
3227+read-all-stream@^3.0.0:
3228+ version "3.1.0"
3229+ resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
3230+ dependencies:
3231+ pinkie-promise "^2.0.0"
3232+ readable-stream "^2.0.0"
3233+
3234+read-only-stream@^2.0.0:
3235+ version "2.0.0"
3236+ resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
3237+ dependencies:
3238+ readable-stream "^2.0.2"
3239+
3240+read-pkg-up@^1.0.1:
3241+ version "1.0.1"
3242+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
3243+ dependencies:
3244+ find-up "^1.0.0"
3245+ read-pkg "^1.0.0"
3246+
3247+read-pkg@^1.0.0, read-pkg@^1.1.0:
3248+ version "1.1.0"
3249+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
3250+ dependencies:
3251+ load-json-file "^1.0.0"
3252+ normalize-package-data "^2.3.2"
3253+ path-type "^1.0.0"
3254+
3255+read@^1.0.7:
3256+ version "1.0.7"
3257+ resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
3258+ dependencies:
3259+ mute-stream "~0.0.4"
3260+
3261+"readable-stream@>=1.0.33-1 <1.1.0-0":
3262+ version "1.0.34"
3263+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
3264+ dependencies:
3265+ core-util-is "~1.0.0"
3266+ inherits "~2.0.1"
3267+ isarray "0.0.1"
3268+ string_decoder "~0.10.x"
3269+
3270+readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2:
3271+ version "2.2.3"
3272+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729"
3273+ dependencies:
3274+ buffer-shims "^1.0.0"
3275+ core-util-is "~1.0.0"
3276+ inherits "~2.0.1"
3277+ isarray "~1.0.0"
3278+ process-nextick-args "~1.0.6"
3279+ string_decoder "~0.10.x"
3280+ util-deprecate "~1.0.1"
3281+
3282+readable-stream@~1.1.9:
3283+ version "1.1.14"
3284+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
3285+ dependencies:
3286+ core-util-is "~1.0.0"
3287+ inherits "~2.0.1"
3288+ isarray "0.0.1"
3289+ string_decoder "~0.10.x"
3290+
3291+readable-stream@~2.0.0:
3292+ version "2.0.6"
3293+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
3294+ dependencies:
3295+ core-util-is "~1.0.0"
3296+ inherits "~2.0.1"
3297+ isarray "~1.0.0"
3298+ process-nextick-args "~1.0.6"
3299+ string_decoder "~0.10.x"
3300+ util-deprecate "~1.0.1"
3301+
3302+readable-stream@~2.1.4:
3303+ version "2.1.5"
3304+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
7663305 dependencies:
7673306 buffer-shims "^1.0.0"
7683307 core-util-is "~1.0.0"
@@ -772,6 +3311,15 @@ readable-stream@^2.2.2:
7723311 string_decoder "~0.10.x"
7733312 util-deprecate "~1.0.1"
7743313
3314+readdirp@^2.0.0:
3315+ version "2.1.0"
3316+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
3317+ dependencies:
3318+ graceful-fs "^4.1.2"
3319+ minimatch "^3.0.2"
3320+ readable-stream "^2.0.2"
3321+ set-immediate-shim "^1.0.1"
3322+
7753323readline2@^1.0.1:
7763324 version "1.0.1"
7773325 resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
@@ -786,10 +3334,65 @@ rechoir@^0.6.2:
7863334 dependencies:
7873335 resolve "^1.1.6"
7883336
3337+redent@^1.0.0:
3338+ version "1.0.0"
3339+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
3340+ dependencies:
3341+ indent-string "^2.1.0"
3342+ strip-indent "^1.0.1"
3343+
3344+regex-cache@^0.4.2:
3345+ version "0.4.3"
3346+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
3347+ dependencies:
3348+ is-equal-shallow "^0.1.3"
3349+ is-primitive "^2.0.0"
3350+
3351+repeat-element@^1.1.2:
3352+ version "1.1.2"
3353+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
3354+
7893355repeat-string@^1.5.2:
7903356 version "1.6.1"
7913357 resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
7923358
3359+repeating@^2.0.0:
3360+ version "2.0.1"
3361+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
3362+ dependencies:
3363+ is-finite "^1.0.0"
3364+
3365+replace-ext@0.0.1:
3366+ version "0.0.1"
3367+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
3368+
3369+request@^2.79.0:
3370+ version "2.81.0"
3371+ resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
3372+ dependencies:
3373+ aws-sign2 "~0.6.0"
3374+ aws4 "^1.2.1"
3375+ caseless "~0.12.0"
3376+ combined-stream "~1.0.5"
3377+ extend "~3.0.0"
3378+ forever-agent "~0.6.1"
3379+ form-data "~2.1.1"
3380+ har-validator "~4.2.1"
3381+ hawk "~3.1.3"
3382+ http-signature "~1.1.0"
3383+ is-typedarray "~1.0.0"
3384+ isstream "~0.1.2"
3385+ json-stringify-safe "~5.0.1"
3386+ mime-types "~2.1.7"
3387+ oauth-sign "~0.8.1"
3388+ performance-now "^0.2.0"
3389+ qs "~6.4.0"
3390+ safe-buffer "^5.0.1"
3391+ stringstream "~0.0.4"
3392+ tough-cookie "~2.3.0"
3393+ tunnel-agent "^0.6.0"
3394+ uuid "^3.0.0"
3395+
7933396require-uncached@^1.0.2:
7943397 version "1.0.3"
7953398 resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
@@ -797,6 +3400,13 @@ require-uncached@^1.0.2:
7973400 caller-path "^0.1.0"
7983401 resolve-from "^1.0.0"
7993402
3403+resolve-dir@^0.1.0:
3404+ version "0.1.1"
3405+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
3406+ dependencies:
3407+ expand-tilde "^1.2.2"
3408+ global-modules "^0.2.3"
3409+
8003410resolve-from@^1.0.0:
8013411 version "1.0.1"
8023412 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
@@ -805,7 +3415,7 @@ resolve@1.1.7:
8053415 version "1.1.7"
8063416 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
8073417
808−resolve@^1.1.6:
3418+resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6:
8093419 version "1.3.2"
8103420 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235"
8113421 dependencies:
@@ -824,12 +3434,24 @@ right-align@^0.1.1:
8243434 dependencies:
8253435 align-text "^0.1.1"
8263436
827−rimraf@^2.2.8:
828− version "2.6.1"
829− resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
3437+right-pad@^1.0.1:
3438+ version "1.0.1"
3439+ resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0"
3440+
3441+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
3442+ version "2.5.4"
3443+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
8303444 dependencies:
8313445 glob "^7.0.5"
8323446
3447+rimraf@^2.2.6, rimraf@^2.2.8, rimraf@~2.2.6:
3448+ version "2.2.8"
3449+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
3450+
3451+ripemd160@^1.0.0:
3452+ version "1.0.1"
3453+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
3454+
8333455rollup-plugin-buble@^0.15.0:
8343456 version "0.15.0"
8353457 resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.15.0.tgz#83c3e89c7fd2266c7918f41ba3980313519c7fd0"
@@ -871,11 +3493,79 @@ run-async@^0.1.0:
8713493 dependencies:
8723494 once "^1.3.0"
8733495
3496+run-async@^2.2.0:
3497+ version "2.3.0"
3498+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
3499+ dependencies:
3500+ is-promise "^2.1.0"
3501+
8743502rx-lite@^3.1.2:
8753503 version "3.1.2"
8763504 resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
8773505
878−shelljs@^0.7.5:
3506+rx@^4.1.0:
3507+ version "4.1.0"
3508+ resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
3509+
3510+safe-buffer@^5.0.1:
3511+ version "5.0.1"
3512+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
3513+
3514+seek-bzip@^1.0.3:
3515+ version "1.0.5"
3516+ resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
3517+ dependencies:
3518+ commander "~2.8.1"
3519+
3520+semver-regex@1.0.0, semver-regex@^1.0.0:
3521+ version "1.0.0"
3522+ resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9"
3523+
3524+semver-truncate@^1.0.0:
3525+ version "1.1.2"
3526+ resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8"
3527+ dependencies:
3528+ semver "^5.3.0"
3529+
3530+"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@~5.3.0:
3531+ version "5.3.0"
3532+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
3533+
3534+semver@^4.0.3:
3535+ version "4.3.6"
3536+ resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
3537+
3538+set-blocking@~2.0.0:
3539+ version "2.0.0"
3540+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
3541+
3542+set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1:
3543+ version "1.0.1"
3544+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
3545+
3546+sha.js@^2.3.6, sha.js@~2.4.4:
3547+ version "2.4.8"
3548+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
3549+ dependencies:
3550+ inherits "^2.0.1"
3551+
3552+shasum@^1.0.0:
3553+ version "1.0.2"
3554+ resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
3555+ dependencies:
3556+ json-stable-stringify "~0.0.0"
3557+ sha.js "~2.4.4"
3558+
3559+shell-quote@^1.6.1:
3560+ version "1.6.1"
3561+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
3562+ dependencies:
3563+ array-filter "~0.0.0"
3564+ array-map "~0.0.0"
3565+ array-reduce "~0.0.0"
3566+ jsonify "~0.0.0"
3567+
3568+shelljs@0.7.6, shelljs@^0.7.5:
8793569 version "0.7.6"
8803570 resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad"
8813571 dependencies:
@@ -883,24 +3573,143 @@ shelljs@^0.7.5:
8833573 interpret "^1.0.0"
8843574 rechoir "^0.6.2"
8853575
3576+signal-exit@^3.0.0:
3577+ version "3.0.2"
3578+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
3579+
8863580slice-ansi@0.0.4:
8873581 version "0.0.4"
8883582 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
8893583
3584+sntp@1.x.x:
3585+ version "1.0.9"
3586+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
3587+ dependencies:
3588+ hoek "2.x.x"
3589+
8903590source-map-support@^0.4.0:
8913591 version "0.4.11"
8923592 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
8933593 dependencies:
8943594 source-map "^0.5.3"
8953595
896−source-map@^0.5.3, source-map@~0.5.1:
3596+source-map@^0.4.4:
3597+ version "0.4.4"
3598+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
3599+ dependencies:
3600+ amdefine ">=0.0.4"
3601+
3602+source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3:
8973603 version "0.5.6"
8983604 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
8993605
3606+sparkles@^1.0.0:
3607+ version "1.0.0"
3608+ resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
3609+
3610+spawn-sync@^1.0.15:
3611+ version "1.0.15"
3612+ resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"
3613+ dependencies:
3614+ concat-stream "^1.4.7"
3615+ os-shim "^0.1.2"
3616+
3617+spdx-correct@~1.0.0:
3618+ version "1.0.2"
3619+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
3620+ dependencies:
3621+ spdx-license-ids "^1.0.2"
3622+
3623+spdx-expression-parse@~1.0.0:
3624+ version "1.0.4"
3625+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
3626+
3627+spdx-license-ids@^1.0.2:
3628+ version "1.2.2"
3629+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
3630+
3631+split2@^2.0.0:
3632+ version "2.1.1"
3633+ resolved "https://registry.yarnpkg.com/split2/-/split2-2.1.1.tgz#7a1f551e176a90ecd3345f7246a0cfe175ef4fd0"
3634+ dependencies:
3635+ through2 "^2.0.2"
3636+
3637+split@^1.0.0:
3638+ version "1.0.0"
3639+ resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae"
3640+ dependencies:
3641+ through "2"
3642+
9003643sprintf-js@~1.0.2:
9013644 version "1.0.3"
9023645 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
9033646
3647+squeak@^1.0.0:
3648+ version "1.3.0"
3649+ resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3"
3650+ dependencies:
3651+ chalk "^1.0.0"
3652+ console-stream "^0.1.1"
3653+ lpad-align "^1.0.1"
3654+
3655+sshpk@^1.7.0:
3656+ version "1.11.0"
3657+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77"
3658+ dependencies:
3659+ asn1 "~0.2.3"
3660+ assert-plus "^1.0.0"
3661+ dashdash "^1.12.0"
3662+ getpass "^0.1.1"
3663+ optionalDependencies:
3664+ bcrypt-pbkdf "^1.0.0"
3665+ ecc-jsbn "~0.1.1"
3666+ jodid25519 "^1.0.0"
3667+ jsbn "~0.1.0"
3668+ tweetnacl "~0.14.0"
3669+
3670+stat-mode@^0.2.0:
3671+ version "0.2.2"
3672+ resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502"
3673+
3674+stream-browserify@^2.0.0:
3675+ version "2.0.1"
3676+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
3677+ dependencies:
3678+ inherits "~2.0.1"
3679+ readable-stream "^2.0.2"
3680+
3681+stream-combiner2@^1.1.1:
3682+ version "1.1.1"
3683+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
3684+ dependencies:
3685+ duplexer2 "~0.1.0"
3686+ readable-stream "^2.0.2"
3687+
3688+stream-http@^2.0.0:
3689+ version "2.6.3"
3690+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3"
3691+ dependencies:
3692+ builtin-status-codes "^3.0.0"
3693+ inherits "^2.0.1"
3694+ readable-stream "^2.1.0"
3695+ to-arraybuffer "^1.0.0"
3696+ xtend "^4.0.0"
3697+
3698+stream-shift@^1.0.0:
3699+ version "1.0.0"
3700+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
3701+
3702+stream-splicer@^2.0.0:
3703+ version "2.0.0"
3704+ resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
3705+ dependencies:
3706+ inherits "^2.0.1"
3707+ readable-stream "^2.0.2"
3708+
3709+string-stream@0.0.7:
3710+ version "0.0.7"
3711+ resolved "https://registry.yarnpkg.com/string-stream/-/string-stream-0.0.7.tgz#cfcde82799fa62f303429aaa79336ee8834332fe"
3712+
9043713string-width@^1.0.1:
9053714 version "1.0.2"
9063715 resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -916,28 +3725,86 @@ string-width@^2.0.0:
9163725 is-fullwidth-code-point "^2.0.0"
9173726 strip-ansi "^3.0.0"
9183727
919−string_decoder@~0.10.x:
3728+string_decoder@~0.10.0, string_decoder@~0.10.x:
9203729 version "0.10.31"
9213730 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
9223731
923−strip-ansi@^3.0.0:
3732+stringstream@~0.0.4:
3733+ version "0.0.5"
3734+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
3735+
3736+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
9243737 version "3.0.1"
9253738 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
9263739 dependencies:
9273740 ansi-regex "^2.0.0"
9283741
3742+strip-bom-stream@^1.0.0:
3743+ version "1.0.0"
3744+ resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee"
3745+ dependencies:
3746+ first-chunk-stream "^1.0.0"
3747+ strip-bom "^2.0.0"
3748+
3749+strip-bom@^2.0.0:
3750+ version "2.0.0"
3751+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
3752+ dependencies:
3753+ is-utf8 "^0.2.0"
3754+
9293755strip-bom@^3.0.0:
9303756 version "3.0.0"
9313757 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
9323758
933−strip-json-comments@~2.0.1:
3759+strip-dirs@^1.0.0:
3760+ version "1.1.1"
3761+ resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0"
3762+ dependencies:
3763+ chalk "^1.0.0"
3764+ get-stdin "^4.0.1"
3765+ is-absolute "^0.1.5"
3766+ is-natural-number "^2.0.0"
3767+ minimist "^1.1.0"
3768+ sum-up "^1.0.1"
3769+
3770+strip-indent@^1.0.1:
3771+ version "1.0.1"
3772+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
3773+ dependencies:
3774+ get-stdin "^4.0.1"
3775+
3776+strip-json-comments@2.0.1, strip-json-comments@~2.0.1:
9343777 version "2.0.1"
9353778 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
9363779
3780+strip-outer@^1.0.0:
3781+ version "1.0.0"
3782+ resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8"
3783+ dependencies:
3784+ escape-string-regexp "^1.0.2"
3785+
3786+subarg@^1.0.0:
3787+ version "1.0.0"
3788+ resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
3789+ dependencies:
3790+ minimist "^1.1.0"
3791+
3792+sum-up@^1.0.1:
3793+ version "1.0.3"
3794+ resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e"
3795+ dependencies:
3796+ chalk "^1.0.0"
3797+
9373798supports-color@^2.0.0:
9383799 version "2.0.0"
9393800 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
9403801
3802+syntax-error@^1.1.1:
3803+ version "1.3.0"
3804+ resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1"
3805+ dependencies:
3806+ acorn "^4.0.3"
3807+
9413808table@^3.7.8:
9423809 version "3.8.3"
9433810 resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -949,29 +3816,174 @@ table@^3.7.8:
9493816 slice-ansi "0.0.4"
9503817 string-width "^2.0.0"
9513818
3819+tar-pack@~3.3.0:
3820+ version "3.3.0"
3821+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
3822+ dependencies:
3823+ debug "~2.2.0"
3824+ fstream "~1.0.10"
3825+ fstream-ignore "~1.0.5"
3826+ once "~1.3.3"
3827+ readable-stream "~2.1.4"
3828+ rimraf "~2.5.1"
3829+ tar "~2.2.1"
3830+ uid-number "~0.0.6"
3831+
3832+tar-stream@^1.1.1:
3833+ version "1.5.2"
3834+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf"
3835+ dependencies:
3836+ bl "^1.0.0"
3837+ end-of-stream "^1.0.0"
3838+ readable-stream "^2.0.0"
3839+ xtend "^4.0.0"
3840+
3841+tar@~2.2.1:
3842+ version "2.2.1"
3843+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
3844+ dependencies:
3845+ block-stream "*"
3846+ fstream "^1.0.2"
3847+ inherits "2"
3848+
3849+temp@^0.8.1:
3850+ version "0.8.3"
3851+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
3852+ dependencies:
3853+ os-tmpdir "^1.0.0"
3854+ rimraf "~2.2.6"
3855+
3856+tempfile@^1.0.0, tempfile@^1.1.1:
3857+ version "1.1.1"
3858+ resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2"
3859+ dependencies:
3860+ os-tmpdir "^1.0.0"
3861+ uuid "^2.0.1"
3862+
3863+text-extensions@^1.0.0:
3864+ version "1.4.0"
3865+ resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.4.0.tgz#c385d2e80879fe6ef97893e1709d88d9453726e9"
3866+
9523867text-table@~0.2.0:
9533868 version "0.2.0"
9543869 resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
9553870
956−through@^2.3.6:
3871+through2-filter@^2.0.0:
3872+ version "2.0.0"
3873+ resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec"
3874+ dependencies:
3875+ through2 "~2.0.0"
3876+ xtend "~4.0.0"
3877+
3878+through2@^0.6.0, through2@^0.6.1:
3879+ version "0.6.5"
3880+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
3881+ dependencies:
3882+ readable-stream ">=1.0.33-1 <1.1.0-0"
3883+ xtend ">=4.0.0 <4.1.0-0"
3884+
3885+through2@^2.0.0, through2@^2.0.2, through2@~2.0.0:
3886+ version "2.0.3"
3887+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
3888+ dependencies:
3889+ readable-stream "^2.1.5"
3890+ xtend "~4.0.1"
3891+
3892+through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8:
9573893 version "2.3.8"
9583894 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
9593895
3896+time-stamp@^1.0.0:
3897+ version "1.0.1"
3898+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151"
3899+
3900+timed-out@^3.0.0:
3901+ version "3.1.3"
3902+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
3903+
3904+timers-browserify@^1.0.1:
3905+ version "1.4.2"
3906+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
3907+ dependencies:
3908+ process "~0.11.0"
3909+
3910+tmp@^0.0.29:
3911+ version "0.0.29"
3912+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0"
3913+ dependencies:
3914+ os-tmpdir "~1.0.1"
3915+
3916+to-absolute-glob@^0.1.1:
3917+ version "0.1.1"
3918+ resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f"
3919+ dependencies:
3920+ extend-shallow "^2.0.1"
3921+
3922+to-arraybuffer@^1.0.0:
3923+ version "1.0.1"
3924+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
3925+
3926+to-executable-name@^1.0.0:
3927+ version "1.1.0"
3928+ resolved "https://registry.yarnpkg.com/to-executable-name/-/to-executable-name-1.1.0.tgz#3efbf9a370e5d7fb7820530df76f085959b27778"
3929+
3930+tough-cookie@~2.3.0:
3931+ version "2.3.2"
3932+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
3933+ dependencies:
3934+ punycode "^1.4.1"
3935+
3936+tree-kill@^1.0.0:
3937+ version "1.1.0"
3938+ resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.1.0.tgz#c963dcf03722892ec59cba569e940b71954d1729"
3939+
3940+trim-newlines@^1.0.0:
3941+ version "1.0.0"
3942+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
3943+
3944+trim-off-newlines@^1.0.0:
3945+ version "1.0.1"
3946+ resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
3947+
3948+trim-repeated@^1.0.0:
3949+ version "1.0.0"
3950+ resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
3951+ dependencies:
3952+ escape-string-regexp "^1.0.2"
3953+
9603954tryit@^1.0.1:
9613955 version "1.0.3"
9623956 resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
9633957
3958+tty-browserify@~0.0.0:
3959+ version "0.0.0"
3960+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
3961+
3962+tunnel-agent@^0.4.0:
3963+ version "0.4.3"
3964+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
3965+
3966+tunnel-agent@^0.6.0:
3967+ version "0.6.0"
3968+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
3969+ dependencies:
3970+ safe-buffer "^5.0.1"
3971+
3972+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
3973+ version "0.14.5"
3974+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
3975+
9643976type-check@~0.3.2:
9653977 version "0.3.2"
9663978 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
9673979 dependencies:
9683980 prelude-ls "~1.1.2"
9693981
970−typedarray@^0.0.6:
3982+typedarray@^0.0.6, typedarray@~0.0.5:
9713983 version "0.0.6"
9723984 resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
9733985
974−uglify-js@^2.8.11:
3986+uglify-js@^2.6, uglify-js@^2.8.11:
9753987 version "2.8.11"
9763988 resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.11.tgz#11a51c43d810b47bc00aee4d512cb3947ddd1ac4"
9773989 dependencies:
@@ -983,6 +3995,44 @@ uglify-to-browserify@~1.0.0:
9833995 version "1.0.2"
9843996 resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
9853997
3998+uid-number@~0.0.6:
3999+ version "0.0.6"
4000+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
4001+
4002+umd@^3.0.0:
4003+ version "3.0.1"
4004+ resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e"
4005+
4006+unique-stream@^2.0.2:
4007+ version "2.2.1"
4008+ resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369"
4009+ dependencies:
4010+ json-stable-stringify "^1.0.0"
4011+ through2-filter "^2.0.0"
4012+
4013+unzip-response@^1.0.2:
4014+ version "1.0.2"
4015+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
4016+
4017+url-parse-lax@^1.0.0:
4018+ version "1.0.0"
4019+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
4020+ dependencies:
4021+ prepend-http "^1.0.1"
4022+
4023+url-regex@^3.0.0:
4024+ version "3.2.0"
4025+ resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"
4026+ dependencies:
4027+ ip-regex "^1.0.1"
4028+
4029+url@~0.11.0:
4030+ version "0.11.0"
4031+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
4032+ dependencies:
4033+ punycode "1.3.2"
4034+ querystring "0.2.0"
4035+
9864036user-home@^2.0.0:
9874037 version "2.0.0"
9884038 resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
@@ -993,22 +4043,155 @@ util-deprecate@~1.0.1:
9934043 version "1.0.2"
9944044 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
9954045
4046+util@0.10.3, util@~0.10.1:
4047+ version "0.10.3"
4048+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
4049+ dependencies:
4050+ inherits "2.0.1"
4051+
4052+uuid@^2.0.1:
4053+ version "2.0.3"
4054+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
4055+
4056+uuid@^3.0.0:
4057+ version "3.0.1"
4058+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
4059+
4060+vali-date@^1.0.0:
4061+ version "1.0.0"
4062+ resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6"
4063+
4064+validate-commit-msg@^2.11.2:
4065+ version "2.11.2"
4066+ resolved "https://registry.yarnpkg.com/validate-commit-msg/-/validate-commit-msg-2.11.2.tgz#63bd15c2cd8fb782b230a9f51d0f4e9d31f7ee24"
4067+ dependencies:
4068+ conventional-commit-types "^2.0.0"
4069+ findup "0.1.5"
4070+ semver-regex "1.0.0"
4071+
4072+validate-npm-package-license@^3.0.1:
4073+ version "3.0.1"
4074+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
4075+ dependencies:
4076+ spdx-correct "~1.0.0"
4077+ spdx-expression-parse "~1.0.0"
4078+
4079+verror@1.3.6:
4080+ version "1.3.6"
4081+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
4082+ dependencies:
4083+ extsprintf "1.0.2"
4084+
4085+vinyl-assign@^1.0.1:
4086+ version "1.2.1"
4087+ resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45"
4088+ dependencies:
4089+ object-assign "^4.0.1"
4090+ readable-stream "^2.0.0"
4091+
4092+vinyl-fs@^2.2.0:
4093+ version "2.4.4"
4094+ resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239"
4095+ dependencies:
4096+ duplexify "^3.2.0"
4097+ glob-stream "^5.3.2"
4098+ graceful-fs "^4.0.0"
4099+ gulp-sourcemaps "1.6.0"
4100+ is-valid-glob "^0.3.0"
4101+ lazystream "^1.0.0"
4102+ lodash.isequal "^4.0.0"
4103+ merge-stream "^1.0.0"
4104+ mkdirp "^0.5.0"
4105+ object-assign "^4.0.0"
4106+ readable-stream "^2.0.4"
4107+ strip-bom "^2.0.0"
4108+ strip-bom-stream "^1.0.0"
4109+ through2 "^2.0.0"
4110+ through2-filter "^2.0.0"
4111+ vali-date "^1.0.0"
4112+ vinyl "^1.0.0"
4113+
4114+vinyl@^0.4.3:
4115+ version "0.4.6"
4116+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847"
4117+ dependencies:
4118+ clone "^0.2.0"
4119+ clone-stats "^0.0.1"
4120+
4121+vinyl@^0.5.0:
4122+ version "0.5.3"
4123+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
4124+ dependencies:
4125+ clone "^1.0.0"
4126+ clone-stats "^0.0.1"
4127+ replace-ext "0.0.1"
4128+
4129+vinyl@^1.0.0:
4130+ version "1.2.0"
4131+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884"
4132+ dependencies:
4133+ clone "^1.0.0"
4134+ clone-stats "^0.0.1"
4135+ replace-ext "0.0.1"
4136+
9964137vlq@^0.2.1:
9974138 version "0.2.1"
9984139 resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c"
9994140
4141+vm-browserify@~0.0.1:
4142+ version "0.0.4"
4143+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
4144+ dependencies:
4145+ indexof "0.0.1"
4146+
4147+ware@^1.2.0:
4148+ version "1.3.0"
4149+ resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4"
4150+ dependencies:
4151+ wrap-fn "^0.1.0"
4152+
4153+watchpack@^1.0.1:
4154+ version "1.3.1"
4155+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
4156+ dependencies:
4157+ async "^2.1.2"
4158+ chokidar "^1.4.3"
4159+ graceful-fs "^4.1.2"
4160+
4161+which@^1.2.1, which@^1.2.12:
4162+ version "1.2.12"
4163+ resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
4164+ dependencies:
4165+ isexe "^1.1.1"
4166+
4167+wide-align@^1.1.0:
4168+ version "1.1.0"
4169+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
4170+ dependencies:
4171+ string-width "^1.0.1"
4172+
10004173window-size@0.1.0:
10014174 version "0.1.0"
10024175 resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
10034176
1004−wordwrap@0.0.2:
4177+word-wrap@^1.0.3:
4178+ version "1.2.1"
4179+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.1.tgz#248f459b465d179a17bc407c854d3151d07e45d8"
4180+
4181+wordwrap@0.0.2, wordwrap@~0.0.2:
10054182 version "0.0.2"
10064183 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
10074184
1008−wordwrap@~1.0.0:
4185+wordwrap@1.0.0, wordwrap@~1.0.0:
10094186 version "1.0.0"
10104187 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
10114188
4189+wrap-fn@^0.1.0:
4190+ version "0.1.5"
4191+ resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845"
4192+ dependencies:
4193+ co "3.1.0"
4194+
10124195wrappy@1:
10134196 version "1.0.2"
10144197 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -1019,7 +4202,7 @@ write@^0.2.1:
10194202 dependencies:
10204203 mkdirp "^0.5.1"
10214204
1022−xtend@^4.0.0:
4205+"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1:
10234206 version "4.0.1"
10244207 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
10254208
@@ -1031,3 +4214,10 @@ yargs@~3.10.0:
10314214 cliui "^2.1.0"
10324215 decamelize "^1.0.0"
10334216 window-size "0.1.0"
4217+
4218+yauzl@^2.2.1:
4219+ version "2.7.0"
4220+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.7.0.tgz#e21d847868b496fc29eaec23ee87fdd33e9b2bce"
4221+ dependencies:
4222+ buffer-crc32 "~0.2.3"
4223+ fd-slicer "~1.0.1"