pax_global_header 0000666 0000000 0000000 00000000064 13564546167 0014533 g ustar 00root root 0000000 0000000 52 comment=5e7e1246d20f5c7ee3665b9c5403cb8b3fa0a18d
d3-transition-1.3.2/ 0000775 0000000 0000000 00000000000 13564546167 0014234 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/.eslintrc.json 0000664 0000000 0000000 00000000342 13564546167 0017027 0 ustar 00root root 0000000 0000000 {
"extends": "eslint:recommended",
"parserOptions": {
"sourceType": "module",
"ecmaVersion": 8
},
"env": {
"es6": true,
"node": true,
"browser": true
},
"rules": {
"no-cond-assign": 0
}
}
d3-transition-1.3.2/.gitignore 0000664 0000000 0000000 00000000077 13564546167 0016230 0 ustar 00root root 0000000 0000000 *.sublime-workspace
.DS_Store
dist/
node_modules
npm-debug.log
d3-transition-1.3.2/LICENSE 0000664 0000000 0000000 00000005632 13564546167 0015247 0 ustar 00root root 0000000 0000000 Copyright (c) 2010-2015, Michael Bostock
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name Michael Bostock may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
TERMS OF USE - EASING EQUATIONS
Open source under the BSD License.
Copyright 2001 Robert Penner
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of the author nor the names of contributors may be used to
endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
d3-transition-1.3.2/README.md 0000664 0000000 0000000 00000112643 13564546167 0015522 0 ustar 00root root 0000000 0000000 # d3-transition
A transition is a [selection](https://github.com/d3/d3-selection)-like interface for animating changes to the DOM. Instead of applying changes instantaneously, transitions smoothly interpolate the DOM from its current state to the desired target state over a given duration.
To apply a transition, select elements, call [*selection*.transition](#selection_transition), and then make the desired changes. For example:
```js
d3.select("body")
.transition()
.style("background-color", "red");
```
Transitions support most selection methods (such as [*transition*.attr](#transition_attr) and [*transition*.style](#transition_style) in place of [*selection*.attr](https://github.com/d3/d3-selection#selection_attr) and [*selection*.style](https://github.com/d3/d3-selection#selection_style)), but not all methods are supported; for example, you must [append](https://github.com/d3/d3-selection#selection_append) elements or [bind data](https://github.com/d3/d3-selection#joining-data) before a transition starts. A [*transition*.remove](#transition_remove) operator is provided for convenient removal of elements when the transition ends.
To compute intermediate state, transitions leverage a variety of [built-in interpolators](https://github.com/d3/d3-interpolate). [Colors](https://github.com/d3/d3-interpolate#interpolateRgb), [numbers](https://github.com/d3/d3-interpolate#interpolateNumber), and [transforms](https://github.com/d3/d3-interpolate#interpolateTransform) are automatically detected. [Strings](https://github.com/d3/d3-interpolate#interpolateString) with embedded numbers are also detected, as is common with many styles (such as padding or font sizes) and paths. To specify a custom interpolator, use [*transition*.attrTween](#transition_attrTween), [*transition*.styleTween](#transition_styleTween) or [*transition*.tween](#transition_tween).
## Installing
If you use NPM, `npm install d3-transition`. Otherwise, download the [latest release](https://github.com/d3/d3-transition/releases/latest). You can also load directly from [d3js.org](https://d3js.org), either as a [standalone library](https://d3js.org/d3-transition.v1.min.js) or as part of [D3](https://github.com/d3/d3). AMD, CommonJS, and vanilla environments are supported. In vanilla, a `d3` global is exported:
```html
```
[Try d3-transition in your browser.](https://tonicdev.com/npm/d3-transition)
## API Reference
* [Selecting Elements](#selecting-elements)
* [Modifying Elements](#modifying-elements)
* [Timing](#timing)
* [Control Flow](#control-flow)
* [The Life of a Transition](#the-life-of-a-transition)
### Selecting Elements
Transitions are derived from [selections](https://github.com/d3/d3-selection) via [*selection*.transition](#selection_transition). You can also create a transition on the document root element using [d3.transition](#transition).
# selection.transition([name]) [<>](https://github.com/d3/d3-transition/blob/master/src/selection/transition.js "Source")
Returns a new transition on the given *selection* with the specified *name*. If a *name* is not specified, null is used. The new transition is only exclusive with other transitions of the same name.
If the *name* is a [transition](#transition) instance, the returned transition has the same id and name as the specified transition. If a transition with the same id already exists on a selected element, the existing transition is returned for that element. Otherwise, the timing of the returned transition is inherited from the existing transition of the same id on the nearest ancestor of each selected element. Thus, this method can be used to synchronize a transition across multiple selections, or to re-select a transition for specific elements and modify its configuration. For example:
```js
var t = d3.transition()
.duration(750)
.ease(d3.easeLinear);
d3.selectAll(".apple").transition(t)
.style("fill", "red");
d3.selectAll(".orange").transition(t)
.style("fill", "orange");
```
If the specified *transition* is not found on a selected node or its ancestors (such as if the transition [already ended](#the-life-of-a-transition)), the default timing parameters are used; however, in a future release, this will likely be changed to throw an error. See [#59](https://github.com/d3/d3-transition/issues/59).
# selection.interrupt([name]) [<>](https://github.com/d3/d3-transition/blob/master/src/selection/interrupt.js "Source")
Interrupts the active transition of the specified *name* on the selected elements, and cancels any pending transitions with the specified *name*, if any. If a name is not specified, null is used.
Interrupting a transition on an element has no effect on any transitions on any descendant elements. For example, an [axis transition](https://github.com/d3/d3-axis) consists of multiple independent, synchronized transitions on the descendants of the axis [G element](https://www.w3.org/TR/SVG/struct.html#Groups) (the tick lines, the tick labels, the domain path, *etc.*). To interrupt the axis transition, you must therefore interrupt the descendants:
```js
selection.selectAll("*").interrupt();
```
The [universal selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors), `*`, selects all descendant elements. If you also want to interrupt the G element itself:
```js
selection.interrupt().selectAll("*").interrupt();
```
# d3.interrupt(node[, name]) [<>](https://github.com/d3/d3-transition/blob/master/src/interrupt.js "Source")
Interrupts the active transition of the specified *name* on the specified *node*, and cancels any pending transitions with the specified *name*, if any. If a name is not specified, null is used. See also [*selection*.interrupt](#selection_interrupt).
# d3.transition([name]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/index.js#L29 "Source")
Returns a new transition on the root element, `document.documentElement`, with the specified *name*. If a *name* is not specified, null is used. The new transition is only exclusive with other transitions of the same name. The *name* may also be a [transition](#transition) instance; see [*selection*.transition](#selection_transition). This method is equivalent to:
```js
d3.selection()
.transition(name)
```
This function can also be used to test for transitions (`instanceof d3.transition`) or to extend the transition prototype.
# transition.select(selector) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/select.js "Source")
For each selected element, selects the first descendant element that matches the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element.
This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.select](https://github.com/d3/d3-selection#selection_select), and then creating a new transition via [*selection*.transition](#selection_transition):
```js
transition
.selection()
.select(selector)
.transition(transition)
```
# transition.selectAll(selector) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/selectAll.js "Source")
For each selected element, selects all descendant elements that match the specified *selector* string, if any, and returns a transition on the resulting selection. The *selector* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element.
This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.selectAll](https://github.com/d3/d3-selection#selection_selectAll), and then creating a new transition via [*selection*.transition](#selection_transition):
```js
transition
.selection()
.selectAll(selector)
.transition(transition)
```
# transition.filter(filter) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/filter.js "Source")
For each selected element, selects only the elements that match the specified *filter*, and returns a transition on the resulting selection. The *filter* may be specified either as a selector string or a function. If a function, it is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The new transition has the same id, name and timing as this transition; however, if a transition with the same id already exists on a selected element, the existing transition is returned for that element.
This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), creating a subselection via [*selection*.filter](https://github.com/d3/d3-selection#selection_filter), and then creating a new transition via [*selection*.transition](#selection_transition):
```js
transition
.selection()
.filter(filter)
.transition(transition)
```
# transition.merge(other) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/merge.js "Source")
Returns a new transition merging this transition with the specified *other* transition, which must have the same id as this transition. The returned transition has the same number of groups, the same parents, the same name and the same id as this transition. Any missing (null) elements in this transition are filled with the corresponding element, if present (not null), from the *other* transition.
This method is equivalent to deriving the selection for this transition via [*transition*.selection](#transition_selection), merging with the selection likewise derived from the *other* transition via [*selection*.merge](https://github.com/d3/d3-selection#selection_merge), and then creating a new transition via [*selection*.transition](#selection_transition):
```js
transition
.selection()
.merge(other.selection())
.transition(transition)
```
# transition.transition() [<>](https://github.com/d3/d3-transition/blob/master/src/transition/transition.js "Source")
Returns a new transition on the same selected elements as this transition, scheduled to start when this transition ends. The new transition inherits a reference time equal to this transition’s time plus its [delay](#transition_delay) and [duration](#transition_duration). The new transition also inherits this transition’s name, duration, and [easing](#transition_ease). This method can be used to schedule a sequence of chained transitions. For example:
```js
d3.selectAll(".apple")
.transition() // First fade to green.
.style("fill", "green")
.transition() // Then red.
.style("fill", "red")
.transition() // Wait one second. Then brown, and remove.
.delay(1000)
.style("fill", "brown")
.remove();
```
The delay for each transition is relative to its previous transition. Thus, in the above example, apples will stay red for one second before the last transition to brown starts.
# transition.selection() [<>](https://github.com/d3/d3-transition/blob/master/src/transition/selection.js "Source")
Returns the [selection](https://github.com/d3/d3-selection#selection) corresponding to this transition.
# d3.active(node[, name]) [<>](https://github.com/d3/d3-transition/blob/master/src/active.js "Source")
Returns the active transition on the specified *node* with the specified *name*, if any. If no *name* is specified, null is used. Returns null if there is no such active transition on the specified node. This method is useful for creating chained transitions. For example, to initiate disco mode:
```js
d3.selectAll("circle").transition()
.delay(function(d, i) { return i * 50; })
.on("start", function repeat() {
d3.active(this)
.style("fill", "red")
.transition()
.style("fill", "green")
.transition()
.style("fill", "blue")
.transition()
.on("start", repeat);
});
```
See [chained transitions](http://bl.ocks.org/mbostock/70d5541b547cc222aa02) for an example.
### Modifying Elements
After selecting elements and creating a transition with [*selection*.transition](#selection_transition), use the transition’s transformation methods to affect document content.
# transition.attr(name, value) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/attr.js "Source")
For each selected element, assigns the [attribute tween](#transition_attrTween) for the attribute with the specified *name* to the specified target *value*. The starting value of the tween is the attribute’s value when the transition starts. The target *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element.
If the target value is null, the attribute is removed when the transition starts. Otherwise, an interpolator is chosen based on the type of the target value, using the following algorithm:
1. If *value* is a number, use [interpolateNumber](https://github.com/d3/d3-interpolate#interpolateNumber).
2. If *value* is a [color](https://github.com/d3/d3-color#color) or a string coercible to a color, use [interpolateRgb](https://github.com/d3/d3-interpolate#interpolateRgb).
3. Use [interpolateString](https://github.com/d3/d3-interpolate#interpolateString).
To apply a different interpolator, use [*transition*.attrTween](#transition_attrTween).
# transition.attrTween(name[, factory]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/attrTween.js "Source")
If *factory* is specified and not null, assigns the attribute [tween](#transition_tween) for the attribute with the specified *name* to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](https://github.com/d3/d3-interpolate); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the attribute value. The interpolator must return a string. (To remove an attribute at the start of a transition, use [*transition*.attr](#transition_attr); to remove an attribute at the end of a transition, use [*transition*.on](#transition_on) to listen for the *end* event.)
If the specified *factory* is null, removes the previously-assigned attribute tween of the specified *name*, if any. If *factory* is not specified, returns the current interpolator factory for attribute with the specified *name*, or undefined if no such tween exists.
For example, to interpolate the fill attribute from red to blue:
```js
transition.attrTween("fill", function() {
return d3.interpolateRgb("red", "blue");
});
```
Or to interpolate from the current fill to blue, like [*transition*.attr](#transition_attr):
```js
transition.attrTween("fill", function() {
return d3.interpolateRgb(this.getAttribute("fill"), "blue");
});
```
Or to apply a custom rainbow interpolator:
```js
transition.attrTween("fill", function() {
return function(t) {
return "hsl(" + t * 360 + ",100%,50%)";
};
});
```
This method is useful to specify a custom interpolator, such as one that understands [SVG paths](http://bl.ocks.org/mbostock/3916621). A useful technique is *data interpolation*, where [d3.interpolateObject](https://github.com/d3/d3-interpolate#interpolateObject) is used to interpolate two data values, and the resulting value is then used (say, with a [shape](https://github.com/d3/d3-shape)) to compute the new attribute value.
# transition.style(name, value[, priority]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/style.js "Source")
For each selected element, assigns the [style tween](#transition_styleTween) for the style with the specified *name* to the specified target *value* with the specified *priority*. The starting value of the tween is the style’s inline value if present, and otherwise its computed value, when the transition starts. The target *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element.
If the target value is null, the style is removed when the transition starts. Otherwise, an interpolator is chosen based on the type of the target value, using the following algorithm:
1. If *value* is a number, use [interpolateNumber](https://github.com/d3/d3-interpolate#interpolateNumber).
2. If *value* is a [color](https://github.com/d3/d3-color#color) or a string coercible to a color, use [interpolateRgb](https://github.com/d3/d3-interpolate#interpolateRgb).
3. Use [interpolateString](https://github.com/d3/d3-interpolate#interpolateString).
To apply a different interpolator, use [*transition*.styleTween](#transition_styleTween).
# transition.styleTween(name[, factory[, priority]])) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/styleTween.js "Source")
If *factory* is specified and not null, assigns the style [tween](#transition_tween) for the style with the specified *name* to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](https://github.com/d3/d3-interpolate); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the style value with the specified *priority*. The interpolator must return a string. (To remove an style at the start of a transition, use [*transition*.style](#transition_style); to remove an style at the end of a transition, use [*transition*.on](#transition_on) to listen for the *end* event.)
If the specified *factory* is null, removes the previously-assigned style tween of the specified *name*, if any. If *factory* is not specified, returns the current interpolator factory for style with the specified *name*, or undefined if no such tween exists.
For example, to interpolate the fill style from red to blue:
```js
transition.styleTween("fill", function() {
return d3.interpolateRgb("red", "blue");
});
```
Or to interpolate from the current fill to blue, like [*transition*.style](#transition_style):
```js
transition.styleTween("fill", function() {
return d3.interpolateRgb(this.style.fill, "blue");
});
```
Or to apply a custom rainbow interpolator:
```js
transition.styleTween("fill", function() {
return function(t) {
return "hsl(" + t * 360 + ",100%,50%)";
};
});
```
This method is useful to specify a custom interpolator, such as with *data interpolation*, where [d3.interpolateObject](https://github.com/d3/d3-interpolate#interpolateObject) is used to interpolate two data values, and the resulting value is then used to compute the new style value.
# transition.text(value) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/text.js "Source")
For each selected element, sets the [text content](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent) to the specified target *value* when the transition starts. The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The function’s return value is then used to set each element’s text content. A null value will clear the content.
To interpolate text rather than to set it on start, use [*transition*.textTween](#transition_textTween) ([for example](http://bl.ocks.org/mbostock/7004f92cac972edef365)) or append a replacement element and cross-fade opacity ([for example](http://bl.ocks.org/mbostock/f7dcecb19c4af317e464)). Text is not interpolated by default because it is usually undesirable.
# transition.textTween(factory) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/textTween.js "Source")
If *factory* is specified and not null, assigns the text [tween](#transition_tween) to the specified interpolator *factory*. An interpolator factory is a function that returns an [interpolator](https://github.com/d3/d3-interpolate); when the transition starts, the *factory* is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned interpolator will then be invoked for each frame of the transition, in order, being passed the [eased](#transition_ease) time *t*, typically in the range [0, 1]. Lastly, the return value of the interpolator will be used to set the text. The interpolator must return a string.
For example, to interpolate the text with integers from 0 to 100:
```js
transition.textTween(function() {
return d3.interpolateRound(0, 100);
});
```
If the specified *factory* is null, removes the previously-assigned text tween, if any. If *factory* is not specified, returns the current interpolator factory for text, or undefined if no such tween exists.
# transition.remove() [<>](https://github.com/d3/d3-transition/blob/master/src/transition/remove.js "Source")
For each selected element, [removes](https://github.com/d3/d3-selection#selection_remove) the element when the transition ends, as long as the element has no other active or pending transitions. If the element has other active or pending transitions, does nothing.
# transition.tween(name[, value]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/tween.js "Source")
For each selected element, assigns the tween with the specified *name* with the specified *value* function. The *value* must be specified as a function that returns a function. When the transition starts, the *value* function is evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The returned function is then invoked for each frame of the transition, in order, being passed the [eased](#transition_ease) time *t*, typically in the range [0, 1]. If the specified *value* is null, removes the previously-assigned tween of the specified *name*, if any.
For example, to interpolate the fill attribute to blue, like [*transition*.attr](#transition_attr):
```js
transition.tween("attr.fill", function() {
var i = d3.interpolateRgb(this.getAttribute("fill"), "blue");
return function(t) {
this.setAttribute("fill", i(t));
};
});
```
This method is useful to specify a custom interpolator, or to perform side-effects, say to animate the [scroll offset](http://bl.ocks.org/mbostock/1649463).
### Timing
The [easing](#transition_ease), [delay](#transition_delay) and [duration](#transition_duration) of a transition is configurable. For example, a per-element delay can be used to [stagger the reordering](http://bl.ocks.org/mbostock/3885705) of elements, improving perception. See [Animated Transitions in Statistical Data Graphics](http://vis.berkeley.edu/papers/animated_transitions/) for recommendations.
# transition.delay([value]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/delay.js "Source")
For each selected element, sets the transition delay to the specified *value* in milliseconds. The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The function’s return value is then used to set each element’s transition delay. If a delay is not specified, it defaults to zero.
If a *value* is not specified, returns the current value of the delay for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element.
Setting the delay to a multiple of the index `i` is a convenient way to stagger transitions across a set of elements. For example:
```js
transition.delay(function(d, i) { return i * 10; });
```
Of course, you can also compute the delay as a function of the data, or [sort the selection](https://github.com/d3/d3-selection#selection_sort) before computed an index-based delay.
# transition.duration([value]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/duration.js "Source")
For each selected element, sets the transition duration to the specified *value* in milliseconds. The *value* may be specified either as a constant or a function. If a function, it is immediately evaluated for each selected element, in order, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. The function’s return value is then used to set each element’s transition duration. If a duration is not specified, it defaults to 250ms.
If a *value* is not specified, returns the current value of the duration for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element.
# transition.ease([value]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/ease.js "Source")
Specifies the transition [easing function](https://github.com/d3/d3-ease) for all selected elements. The *value* must be specified as a function. The easing function is invoked for each frame of the animation, being passed the normalized time *t* in the range [0, 1]; it must then return the eased time *tʹ* which is typically also in the range [0, 1]. A good easing function should return 0 if *t* = 0 and 1 if *t* = 1. If an easing function is not specified, it defaults to [d3.easeCubic](https://github.com/d3/d3-ease#easeCubic).
If a *value* is not specified, returns the current easing function for the first (non-null) element in the transition. This is generally useful only if you know that the transition contains exactly one element.
### Control Flow
For advanced usage, transitions provide methods for custom control flow.
# transition.end() [<>](https://github.com/d3/d3-transition/blob/master/src/transition/end.js "Source")
Returns a promise that resolves when every selected element finishes transitioning. If any element’s transition is cancelled or interrupted, the promise rejects.
# transition.on(typenames[, listener]) [<>](https://github.com/d3/d3-transition/blob/master/src/transition/on.js "Source")
Adds or removes a *listener* to each selected element for the specified event *typenames*. The *typenames* is one of the following string event types:
* `start` - when the transition starts.
* `end` - when the transition ends.
* `interrupt` - when the transition is interrupted.
* `cancel` - when the transition is cancelled.
See [The Life of a Transition](#the-life-of-a-transition) for more. Note that these are *not* native DOM events as implemented by [*selection*.on](https://github.com/d3/d3-selection#selection_on) and [*selection*.dispatch](https://github.com/d3/d3-selection#selection_dispatch), but transition events!
The type may be optionally followed by a period (`.`) and a name; the optional name allows multiple callbacks to be registered to receive events of the same type, such as `start.foo` and `start.bar`. To specify multiple typenames, separate typenames with spaces, such as `interrupt end` or `start.foo start.bar`.
When a specified transition event is dispatched on a selected node, the specified *listener* will be invoked for the transitioning element, being passed the current datum `d` and index `i`, with the `this` context as the current DOM element. Listeners always see the latest datum for their element, but the index is a property of the selection and is fixed when the listener is assigned; to update the index, re-assign the listener.
If an event listener was previously registered for the same *typename* on a selected element, the old listener is removed before the new listener is added. To remove a listener, pass null as the *listener*. To remove all listeners for a given name, pass null as the *listener* and `.foo` as the *typename*, where `foo` is the name; to remove all listeners with no name, specify `.` as the *typename*.
If a *listener* is not specified, returns the currently-assigned listener for the specified event *typename* on the first (non-null) selected element, if any. If multiple typenames are specified, the first matching listener is returned.
# transition.each(function) [<>](https://github.com/d3/d3-selection/blob/master/src/selection/each.js "Source")
Invokes the specified *function* for each selected element, passing in the current datum `d` and index `i`, with the `this` context of the current DOM element. This method can be used to invoke arbitrary code for each selected element, and is useful for creating a context to access parent and child data simultaneously. Equivalent to [*selection*.each](https://github.com/d3/d3-selection#selection_each).
# transition.call(function[, arguments…]) [<>](https://github.com/d3/d3-selection/blob/master/src/selection/call.js "Source")
Invokes the specified *function* exactly once, passing in this transition along with any optional *arguments*. Returns this transition. This is equivalent to invoking the function by hand but facilitates method chaining. For example, to set several attributes in a reusable function:
```js
function color(transition, fill, stroke) {
transition
.style("fill", fill)
.style("stroke", stroke);
}
```
Now say:
```js
d3.selectAll("div").transition().call(color, "red", "blue");
```
This is equivalent to:
```js
color(d3.selectAll("div").transition(), "red", "blue");
```
Equivalent to [*selection*.call](https://github.com/d3/d3-selection#selection_call).
# transition.empty() [<>](https://github.com/d3/d3-selection/blob/master/src/selection/empty.js "Source")
Returns true if this transition contains no (non-null) elements. Equivalent to [*selection*.empty](https://github.com/d3/d3-selection#selection_empty).
# transition.nodes() [<>](https://github.com/d3/d3-selection/blob/master/src/selection/nodes.js "Source")
Returns an array of all (non-null) elements in this transition. Equivalent to [*selection*.nodes](https://github.com/d3/d3-selection#selection_nodes).
# transition.node() [<>](https://github.com/d3/d3-selection/blob/master/src/selection/node.js "Source")
Returns the first (non-null) element in this transition. If the transition is empty, returns null. Equivalent to [*selection*.node](https://github.com/d3/d3-selection#selection_node).
# transition.size() [<>](https://github.com/d3/d3-selection/blob/master/src/selection/size.js "Source")
Returns the total number of elements in this transition. Equivalent to [*selection*.size](https://github.com/d3/d3-selection#selection_size).
### The Life of a Transition
Immediately after creating a transition, such as by [*selection*.transition](#selection_transition) or [*transition*.transition](#transition_transition), you may configure the transition using methods such as [*transition*.delay](#transition_delay), [*transition*.duration](#transition_duration), [*transition*.attr](#transition_attr) and [*transition*.style](#transition_style). Methods that specify target values (such as *transition*.attr) are evaluated synchronously; however, methods that require the starting value for interpolation, such as [*transition*.attrTween](#transition_attrTween) and [*transition*.styleTween](#transition_styleTween), must be deferred until the transition starts.
Shortly after creation, either at the end of the current frame or during the next frame, the transition is scheduled. At this point, the delay and `start` event listeners may no longer be changed; attempting to do so throws an error with the message “too late: already scheduled” (or if the transition has ended, “transition not found”).
When the transition subsequently starts, it interrupts the active transition of the same name on the same element, if any, dispatching an `interrupt` event to registered listeners. (Note that interrupts happen on start, not creation, and thus even a zero-delay transition will not immediately interrupt the active transition: the old transition is given a final frame. Use [*selection*.interrupt](#selection_interrupt) to interrupt immediately.) The starting transition also cancels any pending transitions of the same name on the same element that were created before the starting transition. The transition then dispatches a `start` event to registered listeners. This is the last moment at which the transition may be modified: the transition’s timing, tweens, and listeners may not be changed when it is running; attempting to do so throws an error with the message “too late: already running” (or if the transition has ended, “transition not found”). The transition initializes its tweens immediately after starting.
During the frame the transition starts, but *after* all transitions starting this frame have been started, the transition invokes its tweens for the first time. Batching tween initialization, which typically involves reading from the DOM, improves performance by avoiding interleaved DOM reads and writes.
For each frame that a transition is active, it invokes its tweens with an [eased](#transition_ease) *t*-value ranging from 0 to 1. Within each frame, the transition invokes its tweens in the order they were registered.
When a transition ends, it invokes its tweens a final time with a (non-eased) *t*-value of 1. It then dispatches an `end` event to registered listeners. This is the last moment at which the transition may be inspected: after ending, the transition is deleted from the element, and its configuration is destroyed. (A transition’s configuration is also destroyed on interrupt or cancel.) Attempting to inspect a transition after it is destroyed throws an error with the message “transition not found”.
d3-transition-1.3.2/d3-transition.sublime-project 0000664 0000000 0000000 00000000524 13564546167 0021761 0 ustar 00root root 0000000 0000000 {
"folders": [
{
"path": ".",
"file_exclude_patterns": ["*.sublime-workspace"],
"folder_exclude_patterns": ["dist"]
}
],
"build_systems": [
{
"name": "yarn test",
"cmd": ["yarn", "test"],
"file_regex": "\\((...*?):([0-9]*):([0-9]*)\\)",
"working_dir": "$project_path"
}
]
}
d3-transition-1.3.2/package.json 0000664 0000000 0000000 00000003354 13564546167 0016527 0 ustar 00root root 0000000 0000000 {
"name": "d3-transition",
"version": "1.3.2",
"description": "Animated transitions for D3 selections.",
"keywords": [
"d3",
"d3-module",
"dom",
"transition",
"animation"
],
"homepage": "https://d3js.org/d3-transition/",
"license": "BSD-3-Clause",
"author": {
"name": "Mike Bostock",
"url": "https://bost.ocks.org/mike"
},
"main": "dist/d3-transition.js",
"unpkg": "dist/d3-transition.min.js",
"jsdelivr": "dist/d3-transition.min.js",
"module": "src/index.js",
"repository": {
"type": "git",
"url": "https://github.com/d3/d3-transition.git"
},
"files": [
"dist/**/*.js",
"src/**/*.js"
],
"scripts": {
"pretest": "rollup -c",
"test": "tape 'test/**/*-test.js' && eslint src",
"prepublishOnly": "rm -rf dist && yarn test",
"postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../${npm_package_name}/dist/${npm_package_name}.js ${npm_package_name}.v${npm_package_version%%.*}.js && cp ../${npm_package_name}/dist/${npm_package_name}.min.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git add ${npm_package_name}.v${npm_package_version%%.*}.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git commit -m \"${npm_package_name} ${npm_package_version}\" && git push && cd - && zip -j dist/${npm_package_name}.zip -- LICENSE README.md dist/${npm_package_name}.js dist/${npm_package_name}.min.js"
},
"sideEffects": true,
"dependencies": {
"d3-color": "1",
"d3-dispatch": "1",
"d3-ease": "1",
"d3-interpolate": "1",
"d3-selection": "^1.1.0",
"d3-timer": "1"
},
"devDependencies": {
"eslint": "6",
"jsdom": "15",
"rollup": "1",
"rollup-plugin-terser": "5",
"tape": "4"
}
}
d3-transition-1.3.2/rollup.config.js 0000664 0000000 0000000 00000001717 13564546167 0017361 0 ustar 00root root 0000000 0000000 import {terser} from "rollup-plugin-terser";
import * as meta from "./package.json";
const config = {
input: "src/index.js",
external: Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)),
output: {
file: `dist/${meta.name}.js`,
name: "d3",
format: "umd",
indent: false,
extend: true,
banner: `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`,
globals: Object.assign({}, ...Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"})))
},
plugins: [],
onwarn(message, warn) {
if (message.code === "CIRCULAR_DEPENDENCY") return;
warn(message);
}
};
export default [
config,
{
...config,
output: {
...config.output,
file: `dist/${meta.name}.min.js`
},
plugins: [
...config.plugins,
terser({
output: {
preamble: config.output.banner
}
})
]
}
];
d3-transition-1.3.2/src/ 0000775 0000000 0000000 00000000000 13564546167 0015023 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/src/active.js 0000664 0000000 0000000 00000000752 13564546167 0016640 0 ustar 00root root 0000000 0000000 import {Transition} from "./transition/index.js";
import {SCHEDULED} from "./transition/schedule.js";
var root = [null];
export default function(node, name) {
var schedules = node.__transition,
schedule,
i;
if (schedules) {
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {
return new Transition([[node]], root, name, +i);
}
}
}
return null;
}
d3-transition-1.3.2/src/index.js 0000664 0000000 0000000 00000000300 13564546167 0016461 0 ustar 00root root 0000000 0000000 import "./selection/index.js";
export {default as transition} from "./transition/index.js";
export {default as active} from "./active.js";
export {default as interrupt} from "./interrupt.js";
d3-transition-1.3.2/src/interrupt.js 0000664 0000000 0000000 00000001244 13564546167 0017416 0 ustar 00root root 0000000 0000000 import {STARTING, ENDING, ENDED} from "./transition/schedule.js";
export default function(node, name) {
var schedules = node.__transition,
schedule,
active,
empty = true,
i;
if (!schedules) return;
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
active = schedule.state > STARTING && schedule.state < ENDING;
schedule.state = ENDED;
schedule.timer.stop();
schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group);
delete schedules[i];
}
if (empty) delete node.__transition;
}
d3-transition-1.3.2/src/selection/ 0000775 0000000 0000000 00000000000 13564546167 0017010 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/src/selection/index.js 0000664 0000000 0000000 00000000373 13564546167 0020460 0 ustar 00root root 0000000 0000000 import {selection} from "d3-selection";
import selection_interrupt from "./interrupt.js";
import selection_transition from "./transition.js";
selection.prototype.interrupt = selection_interrupt;
selection.prototype.transition = selection_transition;
d3-transition-1.3.2/src/selection/interrupt.js 0000664 0000000 0000000 00000000215 13564546167 0021400 0 ustar 00root root 0000000 0000000 import interrupt from "../interrupt.js";
export default function(name) {
return this.each(function() {
interrupt(this, name);
});
}
d3-transition-1.3.2/src/selection/transition.js 0000664 0000000 0000000 00000002110 13564546167 0021532 0 ustar 00root root 0000000 0000000 import {Transition, newId} from "../transition/index.js";
import schedule from "../transition/schedule.js";
import {easeCubicInOut} from "d3-ease";
import {now} from "d3-timer";
var defaultTiming = {
time: null, // Set on use.
delay: 0,
duration: 250,
ease: easeCubicInOut
};
function inherit(node, id) {
var timing;
while (!(timing = node.__transition) || !(timing = timing[id])) {
if (!(node = node.parentNode)) {
return defaultTiming.time = now(), defaultTiming;
}
}
return timing;
}
export default function(name) {
var id,
timing;
if (name instanceof Transition) {
id = name._id, name = name._name;
} else {
id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + "";
}
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
schedule(node, name, id, i, group, timing || inherit(node, id));
}
}
}
return new Transition(groups, this._parents, name, id);
}
d3-transition-1.3.2/src/transition/ 0000775 0000000 0000000 00000000000 13564546167 0017215 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/src/transition/attr.js 0000664 0000000 0000000 00000005161 13564546167 0020530 0 ustar 00root root 0000000 0000000 import {interpolateTransformSvg as interpolateTransform} from "d3-interpolate";
import {namespace} from "d3-selection";
import {tweenValue} from "./tween.js";
import interpolate from "./interpolate.js";
function attrRemove(name) {
return function() {
this.removeAttribute(name);
};
}
function attrRemoveNS(fullname) {
return function() {
this.removeAttributeNS(fullname.space, fullname.local);
};
}
function attrConstant(name, interpolate, value1) {
var string00,
string1 = value1 + "",
interpolate0;
return function() {
var string0 = this.getAttribute(name);
return string0 === string1 ? null
: string0 === string00 ? interpolate0
: interpolate0 = interpolate(string00 = string0, value1);
};
}
function attrConstantNS(fullname, interpolate, value1) {
var string00,
string1 = value1 + "",
interpolate0;
return function() {
var string0 = this.getAttributeNS(fullname.space, fullname.local);
return string0 === string1 ? null
: string0 === string00 ? interpolate0
: interpolate0 = interpolate(string00 = string0, value1);
};
}
function attrFunction(name, interpolate, value) {
var string00,
string10,
interpolate0;
return function() {
var string0, value1 = value(this), string1;
if (value1 == null) return void this.removeAttribute(name);
string0 = this.getAttribute(name);
string1 = value1 + "";
return string0 === string1 ? null
: string0 === string00 && string1 === string10 ? interpolate0
: (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
};
}
function attrFunctionNS(fullname, interpolate, value) {
var string00,
string10,
interpolate0;
return function() {
var string0, value1 = value(this), string1;
if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
string0 = this.getAttributeNS(fullname.space, fullname.local);
string1 = value1 + "";
return string0 === string1 ? null
: string0 === string00 && string1 === string10 ? interpolate0
: (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
};
}
export default function(name, value) {
var fullname = namespace(name), i = fullname === "transform" ? interpolateTransform : interpolate;
return this.attrTween(name, typeof value === "function"
? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value))
: value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
: (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));
}
d3-transition-1.3.2/src/transition/attrTween.js 0000664 0000000 0000000 00000002174 13564546167 0021534 0 ustar 00root root 0000000 0000000 import {namespace} from "d3-selection";
function attrInterpolate(name, i) {
return function(t) {
this.setAttribute(name, i.call(this, t));
};
}
function attrInterpolateNS(fullname, i) {
return function(t) {
this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));
};
}
function attrTweenNS(fullname, value) {
var t0, i0;
function tween() {
var i = value.apply(this, arguments);
if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);
return t0;
}
tween._value = value;
return tween;
}
function attrTween(name, value) {
var t0, i0;
function tween() {
var i = value.apply(this, arguments);
if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);
return t0;
}
tween._value = value;
return tween;
}
export default function(name, value) {
var key = "attr." + name;
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
var fullname = namespace(name);
return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
}
d3-transition-1.3.2/src/transition/delay.js 0000664 0000000 0000000 00000001001 13564546167 0020641 0 ustar 00root root 0000000 0000000 import {get, init} from "./schedule.js";
function delayFunction(id, value) {
return function() {
init(this, id).delay = +value.apply(this, arguments);
};
}
function delayConstant(id, value) {
return value = +value, function() {
init(this, id).delay = value;
};
}
export default function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? delayFunction
: delayConstant)(id, value))
: get(this.node(), id).delay;
}
d3-transition-1.3.2/src/transition/duration.js 0000664 0000000 0000000 00000001023 13564546167 0021374 0 ustar 00root root 0000000 0000000 import {get, set} from "./schedule.js";
function durationFunction(id, value) {
return function() {
set(this, id).duration = +value.apply(this, arguments);
};
}
function durationConstant(id, value) {
return value = +value, function() {
set(this, id).duration = value;
};
}
export default function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? durationFunction
: durationConstant)(id, value))
: get(this.node(), id).duration;
}
d3-transition-1.3.2/src/transition/ease.js 0000664 0000000 0000000 00000000537 13564546167 0020475 0 ustar 00root root 0000000 0000000 import {get, set} from "./schedule.js";
function easeConstant(id, value) {
if (typeof value !== "function") throw new Error;
return function() {
set(this, id).ease = value;
};
}
export default function(value) {
var id = this._id;
return arguments.length
? this.each(easeConstant(id, value))
: get(this.node(), id).ease;
}
d3-transition-1.3.2/src/transition/end.js 0000664 0000000 0000000 00000001353 13564546167 0020323 0 ustar 00root root 0000000 0000000 import {set} from "./schedule.js";
export default function() {
var on0, on1, that = this, id = that._id, size = that.size();
return new Promise(function(resolve, reject) {
var cancel = {value: reject},
end = {value: function() { if (--size === 0) resolve(); }};
that.each(function() {
var schedule = set(this, id),
on = schedule.on;
// If this node shared a dispatch with the previous node,
// just assign the updated shared dispatch and we’re done!
// Otherwise, copy-on-write.
if (on !== on0) {
on1 = (on0 = on).copy();
on1._.cancel.push(cancel);
on1._.interrupt.push(cancel);
on1._.end.push(end);
}
schedule.on = on1;
});
});
}
d3-transition-1.3.2/src/transition/filter.js 0000664 0000000 0000000 00000001101 13564546167 0021031 0 ustar 00root root 0000000 0000000 import {matcher} from "d3-selection";
import {Transition} from "./index.js";
export default function(match) {
if (typeof match !== "function") match = matcher(match);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
subgroup.push(node);
}
}
}
return new Transition(subgroups, this._parents, this._name, this._id);
}
d3-transition-1.3.2/src/transition/index.js 0000664 0000000 0000000 00000004053 13564546167 0020664 0 ustar 00root root 0000000 0000000 import {selection} from "d3-selection";
import transition_attr from "./attr.js";
import transition_attrTween from "./attrTween.js";
import transition_delay from "./delay.js";
import transition_duration from "./duration.js";
import transition_ease from "./ease.js";
import transition_filter from "./filter.js";
import transition_merge from "./merge.js";
import transition_on from "./on.js";
import transition_remove from "./remove.js";
import transition_select from "./select.js";
import transition_selectAll from "./selectAll.js";
import transition_selection from "./selection.js";
import transition_style from "./style.js";
import transition_styleTween from "./styleTween.js";
import transition_text from "./text.js";
import transition_textTween from "./textTween.js";
import transition_transition from "./transition.js";
import transition_tween from "./tween.js";
import transition_end from "./end.js";
var id = 0;
export function Transition(groups, parents, name, id) {
this._groups = groups;
this._parents = parents;
this._name = name;
this._id = id;
}
export default function transition(name) {
return selection().transition(name);
}
export function newId() {
return ++id;
}
var selection_prototype = selection.prototype;
Transition.prototype = transition.prototype = {
constructor: Transition,
select: transition_select,
selectAll: transition_selectAll,
filter: transition_filter,
merge: transition_merge,
selection: transition_selection,
transition: transition_transition,
call: selection_prototype.call,
nodes: selection_prototype.nodes,
node: selection_prototype.node,
size: selection_prototype.size,
empty: selection_prototype.empty,
each: selection_prototype.each,
on: transition_on,
attr: transition_attr,
attrTween: transition_attrTween,
style: transition_style,
styleTween: transition_styleTween,
text: transition_text,
textTween: transition_textTween,
remove: transition_remove,
tween: transition_tween,
delay: transition_delay,
duration: transition_duration,
ease: transition_ease,
end: transition_end
};
d3-transition-1.3.2/src/transition/interpolate.js 0000664 0000000 0000000 00000000524 13564546167 0022102 0 ustar 00root root 0000000 0000000 import {color} from "d3-color";
import {interpolateNumber, interpolateRgb, interpolateString} from "d3-interpolate";
export default function(a, b) {
var c;
return (typeof b === "number" ? interpolateNumber
: b instanceof color ? interpolateRgb
: (c = color(b)) ? (b = c, interpolateRgb)
: interpolateString)(a, b);
}
d3-transition-1.3.2/src/transition/merge.js 0000664 0000000 0000000 00000001220 13564546167 0020645 0 ustar 00root root 0000000 0000000 import {Transition} from "./index.js";
export default function(transition) {
if (transition._id !== this._id) throw new Error;
for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group0[i] || group1[i]) {
merge[i] = node;
}
}
}
for (; j < m0; ++j) {
merges[j] = groups0[j];
}
return new Transition(merges, this._parents, this._name, this._id);
}
d3-transition-1.3.2/src/transition/on.js 0000664 0000000 0000000 00000001530 13564546167 0020166 0 ustar 00root root 0000000 0000000 import {get, set, init} from "./schedule.js";
function start(name) {
return (name + "").trim().split(/^|\s+/).every(function(t) {
var i = t.indexOf(".");
if (i >= 0) t = t.slice(0, i);
return !t || t === "start";
});
}
function onFunction(id, name, listener) {
var on0, on1, sit = start(name) ? init : set;
return function() {
var schedule = sit(this, id),
on = schedule.on;
// If this node shared a dispatch with the previous node,
// just assign the updated shared dispatch and we’re done!
// Otherwise, copy-on-write.
if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
schedule.on = on1;
};
}
export default function(name, listener) {
var id = this._id;
return arguments.length < 2
? get(this.node(), id).on.on(name)
: this.each(onFunction(id, name, listener));
}
d3-transition-1.3.2/src/transition/remove.js 0000664 0000000 0000000 00000000434 13564546167 0021051 0 ustar 00root root 0000000 0000000 function removeFunction(id) {
return function() {
var parent = this.parentNode;
for (var i in this.__transition) if (+i !== id) return;
if (parent) parent.removeChild(this);
};
}
export default function() {
return this.on("end.remove", removeFunction(this._id));
}
d3-transition-1.3.2/src/transition/schedule.js 0000664 0000000 0000000 00000011011 13564546167 0021341 0 ustar 00root root 0000000 0000000 import {dispatch} from "d3-dispatch";
import {timer, timeout} from "d3-timer";
var emptyOn = dispatch("start", "end", "cancel", "interrupt");
var emptyTween = [];
export var CREATED = 0;
export var SCHEDULED = 1;
export var STARTING = 2;
export var STARTED = 3;
export var RUNNING = 4;
export var ENDING = 5;
export var ENDED = 6;
export default function(node, name, id, index, group, timing) {
var schedules = node.__transition;
if (!schedules) node.__transition = {};
else if (id in schedules) return;
create(node, id, {
name: name,
index: index, // For context during callback.
group: group, // For context during callback.
on: emptyOn,
tween: emptyTween,
time: timing.time,
delay: timing.delay,
duration: timing.duration,
ease: timing.ease,
timer: null,
state: CREATED
});
}
export function init(node, id) {
var schedule = get(node, id);
if (schedule.state > CREATED) throw new Error("too late; already scheduled");
return schedule;
}
export function set(node, id) {
var schedule = get(node, id);
if (schedule.state > STARTED) throw new Error("too late; already running");
return schedule;
}
export function get(node, id) {
var schedule = node.__transition;
if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found");
return schedule;
}
function create(node, id, self) {
var schedules = node.__transition,
tween;
// Initialize the self timer when the transition is created.
// Note the actual delay is not known until the first callback!
schedules[id] = self;
self.timer = timer(schedule, 0, self.time);
function schedule(elapsed) {
self.state = SCHEDULED;
self.timer.restart(start, self.delay, self.time);
// If the elapsed delay is less than our first sleep, start immediately.
if (self.delay <= elapsed) start(elapsed - self.delay);
}
function start(elapsed) {
var i, j, n, o;
// If the state is not SCHEDULED, then we previously errored on start.
if (self.state !== SCHEDULED) return stop();
for (i in schedules) {
o = schedules[i];
if (o.name !== self.name) continue;
// While this element already has a starting transition during this frame,
// defer starting an interrupting transition until that transition has a
// chance to tick (and possibly end); see d3/d3-transition#54!
if (o.state === STARTED) return timeout(start);
// Interrupt the active transition, if any.
if (o.state === RUNNING) {
o.state = ENDED;
o.timer.stop();
o.on.call("interrupt", node, node.__data__, o.index, o.group);
delete schedules[i];
}
// Cancel any pre-empted transitions.
else if (+i < id) {
o.state = ENDED;
o.timer.stop();
o.on.call("cancel", node, node.__data__, o.index, o.group);
delete schedules[i];
}
}
// Defer the first tick to end of the current frame; see d3/d3#1576.
// Note the transition may be canceled after start and before the first tick!
// Note this must be scheduled before the start event; see d3/d3-transition#16!
// Assuming this is successful, subsequent callbacks go straight to tick.
timeout(function() {
if (self.state === STARTED) {
self.state = RUNNING;
self.timer.restart(tick, self.delay, self.time);
tick(elapsed);
}
});
// Dispatch the start event.
// Note this must be done before the tween are initialized.
self.state = STARTING;
self.on.call("start", node, node.__data__, self.index, self.group);
if (self.state !== STARTING) return; // interrupted
self.state = STARTED;
// Initialize the tween, deleting null tween.
tween = new Array(n = self.tween.length);
for (i = 0, j = -1; i < n; ++i) {
if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
tween[++j] = o;
}
}
tween.length = j + 1;
}
function tick(elapsed) {
var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
i = -1,
n = tween.length;
while (++i < n) {
tween[i].call(node, t);
}
// Dispatch the end event.
if (self.state === ENDING) {
self.on.call("end", node, node.__data__, self.index, self.group);
stop();
}
}
function stop() {
self.state = ENDED;
self.timer.stop();
delete schedules[id];
for (var i in schedules) return; // eslint-disable-line no-unused-vars
delete node.__transition;
}
}
d3-transition-1.3.2/src/transition/select.js 0000664 0000000 0000000 00000001500 13564546167 0021026 0 ustar 00root root 0000000 0000000 import {selector} from "d3-selection";
import {Transition} from "./index.js";
import schedule, {get} from "./schedule.js";
export default function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = selector(select);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
subgroup[i] = subnode;
schedule(subgroup[i], name, id, i, subgroup, get(node, id));
}
}
}
return new Transition(subgroups, this._parents, name, id);
}
d3-transition-1.3.2/src/transition/selectAll.js 0000664 0000000 0000000 00000001571 13564546167 0021467 0 ustar 00root root 0000000 0000000 import {selectorAll} from "d3-selection";
import {Transition} from "./index.js";
import schedule, {get} from "./schedule.js";
export default function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = selectorAll(select);
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {
if (child = children[k]) {
schedule(child, name, id, k, children, inherit);
}
}
subgroups.push(children);
parents.push(node);
}
}
}
return new Transition(subgroups, parents, name, id);
}
d3-transition-1.3.2/src/transition/selection.js 0000664 0000000 0000000 00000000256 13564546167 0021543 0 ustar 00root root 0000000 0000000 import {selection} from "d3-selection";
var Selection = selection.prototype.constructor;
export default function() {
return new Selection(this._groups, this._parents);
}
d3-transition-1.3.2/src/transition/style.js 0000664 0000000 0000000 00000005274 13564546167 0020723 0 ustar 00root root 0000000 0000000 import {interpolateTransformCss as interpolateTransform} from "d3-interpolate";
import {style} from "d3-selection";
import {set} from "./schedule.js";
import {tweenValue} from "./tween.js";
import interpolate from "./interpolate.js";
function styleNull(name, interpolate) {
var string00,
string10,
interpolate0;
return function() {
var string0 = style(this, name),
string1 = (this.style.removeProperty(name), style(this, name));
return string0 === string1 ? null
: string0 === string00 && string1 === string10 ? interpolate0
: interpolate0 = interpolate(string00 = string0, string10 = string1);
};
}
function styleRemove(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, interpolate, value1) {
var string00,
string1 = value1 + "",
interpolate0;
return function() {
var string0 = style(this, name);
return string0 === string1 ? null
: string0 === string00 ? interpolate0
: interpolate0 = interpolate(string00 = string0, value1);
};
}
function styleFunction(name, interpolate, value) {
var string00,
string10,
interpolate0;
return function() {
var string0 = style(this, name),
value1 = value(this),
string1 = value1 + "";
if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));
return string0 === string1 ? null
: string0 === string00 && string1 === string10 ? interpolate0
: (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
};
}
function styleMaybeRemove(id, name) {
var on0, on1, listener0, key = "style." + name, event = "end." + key, remove;
return function() {
var schedule = set(this, id),
on = schedule.on,
listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;
// If this node shared a dispatch with the previous node,
// just assign the updated shared dispatch and we’re done!
// Otherwise, copy-on-write.
if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);
schedule.on = on1;
};
}
export default function(name, value, priority) {
var i = (name += "") === "transform" ? interpolateTransform : interpolate;
return value == null ? this
.styleTween(name, styleNull(name, i))
.on("end.style." + name, styleRemove(name))
: typeof value === "function" ? this
.styleTween(name, styleFunction(name, i, tweenValue(this, "style." + name, value)))
.each(styleMaybeRemove(this._id, name))
: this
.styleTween(name, styleConstant(name, i, value), priority)
.on("end.style." + name, null);
}
d3-transition-1.3.2/src/transition/styleTween.js 0000664 0000000 0000000 00000001346 13564546167 0021722 0 ustar 00root root 0000000 0000000 function styleInterpolate(name, i, priority) {
return function(t) {
this.style.setProperty(name, i.call(this, t), priority);
};
}
function styleTween(name, value, priority) {
var t, i0;
function tween() {
var i = value.apply(this, arguments);
if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);
return t;
}
tween._value = value;
return tween;
}
export default function(name, value, priority) {
var key = "style." + (name += "");
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
return this.tween(key, styleTween(name, value, priority == null ? "" : priority));
}
d3-transition-1.3.2/src/transition/text.js 0000664 0000000 0000000 00000000734 13564546167 0020543 0 ustar 00root root 0000000 0000000 import {tweenValue} from "./tween.js";
function textConstant(value) {
return function() {
this.textContent = value;
};
}
function textFunction(value) {
return function() {
var value1 = value(this);
this.textContent = value1 == null ? "" : value1;
};
}
export default function(value) {
return this.tween("text", typeof value === "function"
? textFunction(tweenValue(this, "text", value))
: textConstant(value == null ? "" : value + ""));
}
d3-transition-1.3.2/src/transition/textTween.js 0000664 0000000 0000000 00000001127 13564546167 0021543 0 ustar 00root root 0000000 0000000 function textInterpolate(i) {
return function(t) {
this.textContent = i.call(this, t);
};
}
function textTween(value) {
var t0, i0;
function tween() {
var i = value.apply(this, arguments);
if (i !== i0) t0 = (i0 = i) && textInterpolate(i);
return t0;
}
tween._value = value;
return tween;
}
export default function(value) {
var key = "text";
if (arguments.length < 1) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
return this.tween(key, textTween(value));
}
d3-transition-1.3.2/src/transition/transition.js 0000664 0000000 0000000 00000001271 13564546167 0021746 0 ustar 00root root 0000000 0000000 import {Transition, newId} from "./index.js";
import schedule, {get} from "./schedule.js";
export default function() {
var name = this._name,
id0 = this._id,
id1 = newId();
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
var inherit = get(node, id0);
schedule(node, name, id1, i, group, {
time: inherit.time + inherit.delay + inherit.duration,
delay: 0,
duration: inherit.duration,
ease: inherit.ease
});
}
}
}
return new Transition(groups, this._parents, name, id1);
}
d3-transition-1.3.2/src/transition/tween.js 0000664 0000000 0000000 00000003755 13564546167 0020707 0 ustar 00root root 0000000 0000000 import {get, set} from "./schedule.js";
function tweenRemove(id, name) {
var tween0, tween1;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = tween0 = tween;
for (var i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1 = tween1.slice();
tween1.splice(i, 1);
break;
}
}
}
schedule.tween = tween1;
};
}
function tweenFunction(id, name, value) {
var tween0, tween1;
if (typeof value !== "function") throw new Error;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = (tween0 = tween).slice();
for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1[i] = t;
break;
}
}
if (i === n) tween1.push(t);
}
schedule.tween = tween1;
};
}
export default function(name, value) {
var id = this._id;
name += "";
if (arguments.length < 2) {
var tween = get(this.node(), id).tween;
for (var i = 0, n = tween.length, t; i < n; ++i) {
if ((t = tween[i]).name === name) {
return t.value;
}
}
return null;
}
return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));
}
export function tweenValue(transition, name, value) {
var id = transition._id;
transition.each(function() {
var schedule = set(this, id);
(schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
});
return function(node) {
return get(node, id).value[name];
};
}
d3-transition-1.3.2/test/ 0000775 0000000 0000000 00000000000 13564546167 0015213 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/test/.eslintrc 0000664 0000000 0000000 00000000304 13564546167 0017034 0 ustar 00root root 0000000 0000000 ecmaFeatures:
modules: true
env:
es6: true
browser: true
node: true
extends:
"eslint:recommended"
rules:
no-cond-assign: 0
no-sparse-arrays: 0
no-unused-vars: 0
d3-transition-1.3.2/test/active-test.js 0000664 0000000 0000000 00000011612 13564546167 0020002 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("./jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection"),
d3_transition = require("../");
tape("d3.active(node) returns null if the specified node has no active transition with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root);
// No transitions pending.
test.strictEqual(d3_transition.active(root), null);
// Two transitions created.
selection.transition().delay(50).duration(50);
selection.transition("foo").duration(50);
test.strictEqual(d3_transition.active(root), null);
// One transition scheduled; one active with a different name.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root), null);
});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root), null);
test.end();
}, 100);
});
tape("d3.active(node, null) returns null if the specified node has no active transition with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root);
// No transitions pending.
test.strictEqual(d3_transition.active(root, null), null);
// Two transitions created.
selection.transition().delay(50).duration(50);
selection.transition("foo").duration(50);
test.strictEqual(d3_transition.active(root, null), null);
// One transition scheduled; one active with a different name.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, null), null);
});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, null), null);
test.end();
}, 100);
});
tape("d3.active(node, undefined) returns null if the specified node has no active transition with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root);
// No transitions pending.
test.strictEqual(d3_transition.active(root, undefined), null);
// Two transitions created.
selection.transition().delay(50).duration(50);
selection.transition("foo").duration(50);
test.strictEqual(d3_transition.active(root, undefined), null);
// One transition scheduled; one active with a different name.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, undefined), null);
});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, undefined), null);
test.end();
}, 100);
});
tape("d3.active(node, name) returns null if the specified node has no active transition with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root);
// No transitions pending.
test.strictEqual(d3_transition.active(root, "foo"), null);
// Two transitions created.
selection.transition("foo").delay(50).duration(50);
selection.transition().duration(50);
test.strictEqual(d3_transition.active(root, null), null);
// One transition scheduled; one active with a different name.
test.strictEqual(d3_transition.active(root, "foo"), null);
// One transition scheduled.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, "foo"), null);
});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(d3_transition.active(root, "foo"), null);
test.end();
}, 100);
});
tape("d3.active(node) returns the active transition on the specified node with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().on("start", check).tween("tween", tweened).on("end", ended);
function check() {
var t = d3_transition.active(root);
test.deepEqual(t._groups, [[root]]);
test.deepEqual(t._parents, [null]);
test.strictEqual(t._name, null);
test.strictEqual(t._id, transition._id);
}
function tweened() {
check();
return function(t) {
if (t >= 1) check();
};
}
function ended() {
check();
test.end();
}
});
tape("d3.active(node, name) returns the active transition on the specified node with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition("foo").on("start", check).tween("tween", tweened).on("end", ended);
function check() {
var t = d3_transition.active(root, "foo");
test.deepEqual(t._groups, [[root]]);
test.deepEqual(t._parents, [null]);
test.strictEqual(t._name, "foo");
test.strictEqual(t._id, transition._id);
}
function tweened() {
check();
return function(t) {
if (t >= 1) check();
};
}
function ended() {
check();
test.end();
}
});
d3-transition-1.3.2/test/error-test.js 0000664 0000000 0000000 00000006146 13564546167 0017666 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("./jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection"),
d3_transition = require("../");
tape("transition.on(\"start\", error) terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().on("start", function() { throw new Error; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
});
});
tape("transition.on(\"start\", error) with delay terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().delay(50).on("start", function() { throw new Error; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
}, 50);
});
tape("transition.tween(\"foo\", error) terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().tween("foo", function() { throw new Error; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
});
});
tape("transition.tween(\"foo\", error) with delay terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().delay(50).tween("foo", function() { throw new Error; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
}, 50);
});
tape("transition.tween(\"foo\", deferredError) terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().duration(50).tween("foo", function() { return function(t) { if (t === 1) throw new Error; }; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
}, 50);
});
tape("transition.on(\"end\", error) terminates the transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().delay(50).duration(50).on("end", function() { throw new Error; });
process.once("uncaughtException", function() {});
// No transitions remaining after the transition ends.
d3_timer.timeout(function() {
test.strictEqual(root.__transition, undefined);
test.end();
}, 100);
});
d3-transition-1.3.2/test/interrupt-test.js 0000664 0000000 0000000 00000002257 13564546167 0020570 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("./jsdom"),
d3_selection = require("d3-selection"),
d3_transition = require("../");
tape("d3.interrupt(node) cancels any pending transitions on the specified node", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition(),
transition2 = transition1.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
d3_transition.interrupt(root);
test.equal(root.__transition, undefined);
test.end();
});
tape("selection.interrupt(name) only cancels pending transitions with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
d3_transition.interrupt(root, "foo");
test.equal(transition1._id in root.__transition, false);
test.equal(transition2._id in root.__transition, true);
test.end();
});
d3-transition-1.3.2/test/jsdom.js 0000664 0000000 0000000 00000000166 13564546167 0016670 0 ustar 00root root 0000000 0000000 var jsdom = require("jsdom");
module.exports = function(html) {
return (new jsdom.JSDOM(html)).window.document;
};
d3-transition-1.3.2/test/selection/ 0000775 0000000 0000000 00000000000 13564546167 0017200 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/test/selection/interrupt-test.js 0000664 0000000 0000000 00000026421 13564546167 0022554 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection"),
d3_timer = require("d3-timer"),
state = require("../transition/state");
require("../../");
tape("selection.interrupt() returns the selection", function(test) {
var document = jsdom(),
selection = d3_selection.select(document);
test.equal(selection.interrupt(), selection);
test.end();
});
tape("selection.interrupt() cancels any pending transitions on the selected elements", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition(),
transition2 = transition1.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt(), selection);
test.equal(root.__transition, undefined);
test.end();
});
tape("selection.interrupt() only cancels pending transitions with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt(), selection);
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, false);
test.end();
});
tape("selection.interrupt(null) only cancels pending transitions with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt(null), selection);
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, false);
test.end();
});
tape("selection.interrupt(undefined) only cancels pending transitions with the null name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt(undefined), selection);
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, false);
test.end();
});
tape("selection.interrupt(name) only cancels pending transitions with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt("foo"), selection);
test.equal(transition1._id in root.__transition, false);
test.equal(transition2._id in root.__transition, true);
test.end();
});
tape("selection.interrupt(name) coerces the name to a string", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition("foo"),
transition2 = selection.transition();
test.equal(transition1._id in root.__transition, true);
test.equal(transition2._id in root.__transition, true);
test.equal(selection.interrupt({toString: function() { return "foo"; }}), selection);
test.equal(transition1._id in root.__transition, false);
test.equal(transition2._id in root.__transition, true);
test.end();
});
tape("selection.interrupt() does nothing if there is no transition on the selected elements", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root);
test.equal(root.__transition, undefined);
test.equal(selection.interrupt(), selection);
test.equal(root.__transition, undefined);
test.end();
});
tape("selection.interrupt() dispatches an interrupt event to the started transition on the selected elements", function(test) {
var root = jsdom().documentElement,
interrupts = 0,
selection = d3_selection.select(root),
transition = selection.transition().on("interrupt", function() { ++interrupts; });
d3_timer.timeout(function() {
var schedule = root.__transition[transition._id];
test.equal(schedule.state, state.STARTED);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
test.equal(interrupts, 1);
test.end();
});
});
tape("selection.interrupt() destroys the schedule after dispatching the interrupt event", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().on("interrupt", interrupted);
d3_timer.timeout(function() {
selection.interrupt();
});
function interrupted() {
test.equal(transition.delay(), 0);
test.equal(transition.duration(), 250);
test.equal(transition.on("interrupt"), interrupted);
test.end();
}
});
tape("selection.interrupt() does not dispatch an interrupt event to a starting transition", function(test) {
var root = jsdom().documentElement,
interrupts = 0,
selection = d3_selection.select(root),
transition = selection.transition().on("interrupt", function() { ++interrupts; }).on("start", started);
function started() {
var schedule = root.__transition[transition._id];
test.equal(schedule.state, state.STARTING);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
test.equal(interrupts, 0);
test.end();
}
});
tape("selection.interrupt() prevents a created transition from starting", function(test) {
var root = jsdom().documentElement,
starts = 0,
selection = d3_selection.select(root),
transition = selection.transition().on("start", function() { ++starts; }),
schedule = root.__transition[transition._id];
test.equal(schedule.state, state.CREATED);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
d3_timer.timeout(function() {
test.equal(starts, 0);
test.end();
}, 10);
});
tape("selection.interrupt() prevents a scheduled transition from starting", function(test) {
var root = jsdom().documentElement,
starts = 0,
selection = d3_selection.select(root),
transition = selection.transition().delay(50).on("start", function() { ++starts; }),
schedule = root.__transition[transition._id];
d3_timer.timeout(function() {
test.equal(schedule.state, state.SCHEDULED);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
});
d3_timer.timeout(function() {
test.equal(starts, 0);
test.end();
}, 60);
});
tape("selection.interrupt() prevents a starting transition from initializing tweens", function(test) {
var root = jsdom().documentElement,
tweens = 0,
selection = d3_selection.select(root),
transition = selection.transition().tween("tween", function() { ++tweens; }).on("start", started),
schedule = root.__transition[transition._id];
function started() {
test.equal(schedule.state, state.STARTING);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
}
d3_timer.timeout(function() {
test.equal(tweens, 0);
test.end();
}, 10);
});
tape("selection.interrupt() during tween initialization prevents an active transition from continuing", function(test) {
var root = jsdom().documentElement,
tweens = 0,
selection = d3_selection.select(root),
transition = selection.transition().tween("tween", function() { selection.interrupt(); return function() { ++tweens; }; }),
schedule = root.__transition[transition._id];
d3_timer.timeout(function() {
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
test.equal(tweens, 0);
test.end();
}, 10);
});
tape("selection.interrupt() prevents an active transition from continuing", function(test) {
var root = jsdom().documentElement,
interrupted = false,
tweens = 0,
selection = d3_selection.select(root),
transition = selection.transition().tween("tween", function() { return function() { if (interrupted) ++tweens; }; }),
schedule = root.__transition[transition._id];
d3_timer.timeout(function() {
interrupted = true;
test.equal(schedule.state, state.STARTED);
selection.interrupt();
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
}, 10);
d3_timer.timeout(function() {
test.equal(tweens, 0);
test.end();
}, 50);
});
tape("selection.interrupt() during the final tween invocation prevents the end event from being dispatched", function(test) {
var root = jsdom().documentElement,
ends = 0,
selection = d3_selection.select(root),
transition = selection.transition().duration(50).tween("tween", tween).on("end", function() { ++ends; }),
schedule = root.__transition[transition._id];
function tween() {
return function(t) {
if (t >= 1) {
test.equal(schedule.state, state.ENDING);
selection.interrupt();
}
};
}
d3_timer.timeout(function() {
test.equal(schedule.timer._call, null);
test.equal(schedule.state, state.ENDED);
test.equal(root.__transition, undefined);
test.equal(ends, 0);
test.end();
}, 60);
});
tape("selection.interrupt() has no effect on an ended transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().duration(50).on("end", ended),
schedule = root.__transition[transition._id];
function ended() {
d3_timer.timeout(function() {
test.equal(schedule.state, state.ENDED);
test.equal(schedule.timer._call, null);
selection.interrupt();
test.equal(schedule.state, state.ENDED);
test.equal(schedule.timer._call, null);
test.equal(root.__transition, undefined);
test.end();
});
}
});
tape("selection.interrupt() has no effect on an interrupting transition", function(test) {
var root = jsdom().documentElement,
interrupts = 0,
selection = d3_selection.select(root),
transition = selection.transition().duration(50).on("interrupt", interrupted),
schedule = root.__transition[transition._id];
d3_timer.timeout(function() {
test.equal(schedule.state, state.STARTED);
selection.interrupt();
test.equal(schedule.state, state.ENDED);
test.equal(schedule.timer._call, null);
test.equal(interrupts, 1);
test.end();
});
function interrupted() {
++interrupts;
selection.interrupt();
}
});
d3-transition-1.3.2/test/selection/transition-test.js 0000664 0000000 0000000 00000012240 13564546167 0022704 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_timer = require("d3-timer"),
d3_ease = require("d3-ease"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("selection.transition() returns an instanceof d3.transition", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition();
test.equal(transition instanceof d3_transition.transition, true);
test.end();
});
tape("selection.transition() uses the default timing parameters", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition(),
schedule = root.__transition[transition._id];
test.equal(schedule.time, d3_timer.now());
test.equal(schedule.delay, 0);
test.equal(schedule.duration, 250);
test.equal(schedule.ease, d3_ease.easeCubic);
test.end();
});
tape("selection.transition() assigns a monotonically-increasing id", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition1 = selection.transition(),
transition2 = selection.transition(),
transition3 = selection.transition();
test.ok(transition2._id > transition1._id);
test.ok(transition3._id > transition2._id);
test.end();
});
tape("selection.transition() uses a default name of null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition(),
schedule = root.__transition[transition._id];
test.strictEqual(schedule.name, null);
test.end();
});
tape("selection.transition(null) uses a name of null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition(null),
schedule = root.__transition[transition._id];
test.strictEqual(schedule.name, null);
test.end();
});
tape("selection.transition(undefined) uses a name of null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition(undefined),
schedule = root.__transition[transition._id];
test.strictEqual(schedule.name, null);
test.end();
});
tape("selection.transition(name) uses the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition("foo"),
schedule = root.__transition[transition._id];
test.strictEqual(schedule.name, "foo");
test.end();
});
tape("selection.transition(name) coerces the name to a string", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition({toString: function() { return "foo"; }}),
schedule = root.__transition[transition._id];
test.strictEqual(schedule.name, "foo");
test.end();
});
tape("selection.transition(transition) inherits the id, name and timing from the corresponding parent in the specified transition", function(test) {
var document = jsdom("
"),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
selection = d3_selection.selectAll([one, two]),
transition = selection.transition().delay(function(d, i) { return i * 50; }).duration(100).ease(d3_ease.easeBounce),
schedule1 = one.__transition[transition._id],
schedule2 = two.__transition[transition._id],
transition1b = d3_selection.select(one.firstChild).transition(transition),
schedule1b = one.firstChild.__transition[transition._id];
test.equal(transition1b._id, transition._id);
test.equal(schedule1b.name, schedule1.name);
test.equal(schedule1b.delay, schedule1.delay);
test.equal(schedule1b.duration, schedule1.duration);
test.equal(schedule1b.ease, schedule1.ease);
test.equal(schedule1b.time, schedule1.time);
d3_timer.timeout(function() {
var transition2b = d3_selection.select(two.firstChild).transition(transition),
schedule2b = two.firstChild.__transition[transition._id];
test.equal(transition2b._id, transition._id);
test.equal(schedule2b.name, schedule2.name);
test.equal(schedule2b.delay, schedule2.delay);
test.equal(schedule2b.duration, schedule2.duration);
test.equal(schedule2b.ease, schedule2.ease);
test.equal(schedule2b.time, schedule2.time);
test.end();
}, 10);
});
tape("selection.transition(transition) reselects the existing transition with the specified transition’s id, if any", function(test) {
var root = jsdom().documentElement,
foo = function foo() {},
bar = function bar() {},
selection = d3_selection.select(root),
transition1 = selection.transition().tween("tween", foo),
schedule1 = root.__transition[transition1._id],
transition2 = selection.transition(transition1).tween("tween", bar),
schedule2 = root.__transition[transition2._id];
test.equal(transition1._id, transition2._id);
test.equal(schedule1, schedule2);
test.equal(transition1.tween("tween"), bar);
test.equal(transition2.tween("tween"), bar);
test.end();
});
d3-transition-1.3.2/test/transition/ 0000775 0000000 0000000 00000000000 13564546167 0017405 5 ustar 00root root 0000000 0000000 d3-transition-1.3.2/test/transition/attr-test.js 0000664 0000000 0000000 00000027225 13564546167 0021702 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.attr(name, value) creates an tween to the specified value", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", "blue");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("fill"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) creates a namespaced tween to the specified value", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).attr("svg:fill", "red"),
transition = selection.transition().attr("svg:fill", "blue");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "fill"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) creates an tween to the value returned by the specified function", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", function() { return "blue"; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("fill"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) creates a namespaced tween to the value returned by the specified function", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).attr("svg:fill", "red"),
transition = selection.transition().attr("svg:fill", function() { return "blue"; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "fill"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, constant) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("foo", 1),
transition = selection.transition().attr("foo", 1);
d3_timer.timeout(function(elapsed) {
root.setAttribute("foo", 2);
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), "2");
test.end();
}, 250);
});
tape("transition.attr(ns:name, constant) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("svg:foo", 1),
transition = selection.transition().attr("svg:foo", 1);
d3_timer.timeout(function(elapsed) {
root.setAttributeNS("http://www.w3.org/2000/svg", "foo", 2);
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "foo"), "2");
test.end();
}, 250);
});
tape("transition.attr(name, function) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("foo", 1),
transition = selection.transition().attr("foo", function() { return 1; });
d3_timer.timeout(function(elapsed) {
root.setAttribute("foo", 2);
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), "2");
test.end();
}, 250);
});
tape("transition.attr(ns:name, function) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("svg:foo", 1),
transition = selection.transition().attr("svg:foo", function() { return 1; });
d3_timer.timeout(function(elapsed) {
root.setAttributeNS("http://www.w3.org/2000/svg", "foo", 2);
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "foo"), "2");
test.end();
}, 250);
});
tape("transition.attr(name, constant) uses interpolateNumber if value is a number", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("foo", "15px"),
transition = selection.transition().attr("foo", 10);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), "NaN");
test.end();
}, 125);
});
tape("transition.attr(name, function) uses interpolateNumber if value is a number", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("foo", "15px"),
transition = selection.transition().attr("foo", () => 10);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), "NaN");
test.end();
}, 125);
});
tape("transition.attr(name, value) immediately evaluates the specified function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
ease = d3_ease.easeCubic,
duration = 250,
interpolate1 = d3_interpolate.interpolateRgb("cyan", "red"),
interpolate2 = d3_interpolate.interpolateRgb("magenta", "green"),
selection = d3_selection.selectAll([one, two]).data(["red", "green"]),
result = [],
transition = selection.transition().attr("fill", function(d, i, nodes) { result.push([d, i, nodes, this]); return d; });
test.deepEqual(result, [
["red", 0, [one, two], one],
["green", 1, [one, two], two]
]);
d3_timer.timeout(function(elapsed) {
test.strictEqual(one.getAttribute("fill"), interpolate1(ease(elapsed / duration)));
test.strictEqual(two.getAttribute("fill"), interpolate2(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) constructs an interpolator using the current value on start", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root),
transition = selection.transition().on("start", function() { selection.attr("fill", "red"); }).attr("fill", function() { return "blue"; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("fill"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, null) creates an tween which removes the specified attribute post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", null).on("start", started);
function started() {
test.equal(root.getAttribute("fill"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.hasAttribute("fill"), false);
test.end();
});
});
tape("transition.attr(name, null) creates an tween which removes the specified namespaced attribute post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("svg:fill", "red"),
transition = selection.transition().attr("svg:fill", null).on("start", started);
function started() {
test.equal(root.getAttributeNS("http://www.w3.org/2000/svg", "fill"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.hasAttributeNS("http://www.w3.org/2000/svg", "fill"), false);
test.end();
});
});
tape("transition.attr(name, value) creates an tween which removes the specified attribute post-start if the specified function returns null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", function() {}).on("start", started);
function started() {
test.equal(root.getAttribute("fill"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.hasAttribute("fill"), false);
test.end();
});
});
tape("transition.attr(name, value) creates an tween which removes the specified namespaced attribute post-start if the specified function returns null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("svg:fill", "red"),
transition = selection.transition().attr("svg:fill", function() {}).on("start", started);
function started() {
test.equal(root.getAttributeNS("http://www.w3.org/2000/svg", "fill"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.hasAttributeNS("http://www.w3.org/2000/svg", "fill"), false);
test.end();
});
});
tape("transition.attr(name, value) interpolates numbers", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateNumber(1, 2),
selection = d3_selection.select(root).attr("foo", 1),
transition = selection.transition().attr("foo", 2);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), interpolate(ease(elapsed / duration)) + "");
test.end();
}, 125);
});
tape("transition.attr(name, value) interpolates strings", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateString("1px", "2px"),
selection = d3_selection.select(root).attr("foo", "1px"),
transition = selection.transition().attr("foo", "2px");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) interpolates colors", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("#f00", "#00f"),
selection = d3_selection.select(root).attr("foo", "#f00"),
transition = selection.transition().attr("foo", "#00f");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.attr(name, value) creates an attrTween with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", "blue");
test.equal(transition.attrTween("fill").call(root).call(root, 0.5), "rgb(128, 0, 128)");
test.end();
});
tape("transition.attr(name, value) creates a tween with the name \"attr.name\"", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("fill", "red"),
transition = selection.transition().attr("fill", "blue");
transition.tween("attr.fill").call(root).call(root, 0.5);
test.equal(root.getAttribute("fill"), "rgb(128, 0, 128)");
test.end();
});
d3-transition-1.3.2/test/transition/attrTween-test.js 0000664 0000000 0000000 00000012671 13564546167 0022704 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.attrTween(name, value) defines an attribute tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
transition = d3_selection.select(root).transition().attrTween("foo", function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), interpolate(d3_ease.easeCubic(elapsed / 250)));
test.end();
}, 125);
});
tape("transition.attrTween(name, value) invokes the value function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
result = [],
transition = d3_selection.selectAll([one, two]).data(["one", "two"]).transition().attrTween("foo", function(d, i, nodes) { result.push([d, i, nodes, this]); });
d3_timer.timeout(function(elapsed) {
test.deepEqual(result, [
["one", 0, [one, two], one],
["two", 1, [one, two], two]
]);
test.end();
});
});
tape("transition.attrTween(name, value) passes the eased time to the interpolator", function(test) {
var root = jsdom().documentElement,
then = d3_timer.now(),
duration = 250,
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().attrTween("foo", function() { return interpolate; }).on("end", function() { test.end(); }),
schedule = root.__transition[transition._id];
function interpolate(t) {
"use strict";
test.equal(this, root);
test.equal(t, schedule.state === state.ENDING ? 1 : ease((d3_timer.now() - then) / duration));
}
});
tape("transition.attrTween(name, value) allows the specified function to return null for a noop", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).attr("foo", "42").attr("svg:bar", "43"),
transition = selection.transition().attrTween("foo", function() {}).attrTween("svg:bar", function() {});
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), "42");
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "bar"), "43");
test.end();
}, 125);
});
tape("transition.attrTween(name, value) defines a namespaced attribute tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
transition = d3_selection.select(root).transition().attrTween("svg:foo", function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttributeNS("http://www.w3.org/2000/svg", "foo"), interpolate(d3_ease.easeCubic(elapsed / 250)));
test.end();
}, 125);
});
tape("transition.attrTween(name, value) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
transition = d3_selection.select(root).transition().attrTween({toString: function() { return "foo"; }}, function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.getAttribute("foo"), interpolate(d3_ease.easeCubic(elapsed / 250)));
test.end();
}, 125);
});
tape("transition.attrTween(name, value) throws an error if value is not null and not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.attrTween("foo", 42); });
test.end();
});
tape("transition.attrTween(name, null) removes the specified attribute tween", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
transition = d3_selection.select(root).transition().attrTween("foo", function() { return interpolate; }).attrTween("foo", null);
test.equal(transition.attrTween("foo"), null);
test.equal(transition.tween("attr.foo"), null);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.hasAttribute("foo"), false);
test.end();
}, 125);
});
tape("transition.attrTween(name) returns the attribute tween with the specified name", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
tween = function() { return interpolate; },
transition = d3_selection.select(root).transition().attrTween("foo", tween).on("start", started).on("end", ended);
test.equal(transition.attrTween("foo"), tween);
test.equal(transition.attrTween("bar"), null);
function started() {
test.equal(transition.attrTween("foo"), tween);
}
function ended() {
test.equal(transition.attrTween("foo"), tween);
test.end();
}
});
tape("transition.attrTween(name) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
tween = function() {},
transition = d3_selection.select(root).transition().attrTween("color", tween);
test.equal(transition.attrTween({toString: function() { return "color"; }}), tween);
test.end();
});
d3-transition-1.3.2/test/transition/call-test.js 0000664 0000000 0000000 00000000447 13564546167 0021640 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.call is the same as selection.call", function(test) {
test.equal(d3_transition.transition.prototype.call, d3_selection.selection.prototype.call);
test.end();
});
d3-transition-1.3.2/test/transition/delay-test.js 0000664 0000000 0000000 00000007502 13564546167 0022022 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.delay() returns the delay for the first non-null node", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.select(one).transition(),
transition2 = d3_selection.select(two).transition().delay(50);
test.strictEqual(one.__transition[transition1._id].delay, 0);
test.strictEqual(two.__transition[transition2._id].delay, 50);
test.strictEqual(transition1.delay(), 0);
test.strictEqual(transition2.delay(), 50);
test.strictEqual(d3_selection.select(one).transition(transition1).delay(), 0);
test.strictEqual(d3_selection.select(two).transition(transition2).delay(), 50);
test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).delay(), 0);
test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).delay(), 50);
test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).delay(), 0);
test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).delay(), 50);
test.end();
});
tape("transition.delay(number) sets the delay for each selected element to the specified number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().delay(50);
test.strictEqual(one.__transition[transition._id].delay, 50);
test.strictEqual(two.__transition[transition._id].delay, 50);
test.end();
});
tape("transition.delay(value) coerces the specified value to a number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().delay("50");
test.strictEqual(one.__transition[transition._id].delay, 50);
test.strictEqual(two.__transition[transition._id].delay, 50);
test.end();
});
tape("transition.delay(function) passes the expected arguments and context to the function", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
result = [],
selection = d3_selection.selectAll([one, two]).data(["one", "two"]),
transition = selection.transition().delay(function(d, i, nodes) { result.push([d, i, nodes, this]); });
test.deepEqual(result, [
["one", 0, transition._groups[0], one],
["two", 1, transition._groups[0], two]
]);
test.end();
});
tape("transition.delay(function) sets the delay for each selected element to the number returned by the specified function", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().delay(function(d, i) { return i * 20; });
test.strictEqual(one.__transition[transition._id].delay, 0);
test.strictEqual(two.__transition[transition._id].delay, 20);
test.end();
});
tape("transition.delay(function) coerces the value returned by the specified function to a number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().delay(function(d, i) { return i * 20 + ""; });
test.strictEqual(one.__transition[transition._id].delay, 0);
test.strictEqual(two.__transition[transition._id].delay, 20);
test.end();
});
d3-transition-1.3.2/test/transition/duration-test.js 0000664 0000000 0000000 00000007657 13564546167 0022564 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.duration() returns the duration for the first non-null node", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.select(one).transition(),
transition2 = d3_selection.select(two).transition().duration(50);
test.strictEqual(one.__transition[transition1._id].duration, 250);
test.strictEqual(two.__transition[transition2._id].duration, 50);
test.strictEqual(transition1.duration(), 250);
test.strictEqual(transition2.duration(), 50);
test.strictEqual(d3_selection.select(one).transition(transition1).duration(), 250);
test.strictEqual(d3_selection.select(two).transition(transition2).duration(), 50);
test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).duration(), 250);
test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).duration(), 50);
test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).duration(), 250);
test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).duration(), 50);
test.end();
});
tape("transition.duration(number) sets the duration for each selected element to the specified number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().duration(50);
test.strictEqual(one.__transition[transition._id].duration, 50);
test.strictEqual(two.__transition[transition._id].duration, 50);
test.end();
});
tape("transition.duration(value) coerces the specified value to a number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().duration("50");
test.strictEqual(one.__transition[transition._id].duration, 50);
test.strictEqual(two.__transition[transition._id].duration, 50);
test.end();
});
tape("transition.duration(function) passes the expected arguments and context to the function", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
result = [],
selection = d3_selection.selectAll([one, two]).data(["one", "two"]),
transition = selection.transition().duration(function(d, i, nodes) { result.push([d, i, nodes, this]); });
test.deepEqual(result, [
["one", 0, transition._groups[0], one],
["two", 1, transition._groups[0], two]
]);
test.end();
});
tape("transition.duration(function) sets the duration for each selected element to the number returned by the specified function", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().duration(function(d, i) { return i * 20; });
test.strictEqual(one.__transition[transition._id].duration, 0);
test.strictEqual(two.__transition[transition._id].duration, 20);
test.end();
});
tape("transition.duration(function) coerces the value returned by the specified function to a number", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().duration(function(d, i) { return i * 20 + ""; });
test.strictEqual(one.__transition[transition._id].duration, 0);
test.strictEqual(two.__transition[transition._id].duration, 20);
test.end();
});
d3-transition-1.3.2/test/transition/each-test.js 0000664 0000000 0000000 00000000447 13564546167 0021625 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.each is the same as selection.each", function(test) {
test.equal(d3_transition.transition.prototype.each, d3_selection.selection.prototype.each);
test.end();
});
d3-transition-1.3.2/test/transition/ease-test.js 0000664 0000000 0000000 00000007141 13564546167 0021640 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.ease() returns the easing function for the first non-null node", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.select(one).transition(),
transition2 = d3_selection.select(two).transition().ease(d3_ease.easeBounce);
test.strictEqual(one.__transition[transition1._id].ease, d3_ease.easeCubic);
test.strictEqual(two.__transition[transition2._id].ease, d3_ease.easeBounce);
test.strictEqual(transition1.ease(), d3_ease.easeCubic);
test.strictEqual(transition2.ease(), d3_ease.easeBounce);
test.strictEqual(d3_selection.select(one).transition(transition1).ease(), d3_ease.easeCubic);
test.strictEqual(d3_selection.select(two).transition(transition2).ease(), d3_ease.easeBounce);
test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).ease(), d3_ease.easeCubic);
test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).ease(), d3_ease.easeBounce);
test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).ease(), d3_ease.easeCubic);
test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).ease(), d3_ease.easeBounce);
test.end();
});
tape("transition.ease(ease) throws an error if ease is not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.ease(42); });
test.throws(function() { transition.ease(null); });
test.end();
});
tape("transition.ease(ease) sets the easing function for each selected element to the specified function", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().ease(d3_ease.easeBounce);
test.strictEqual(one.__transition[transition._id].ease, d3_ease.easeBounce);
test.strictEqual(two.__transition[transition._id].ease, d3_ease.easeBounce);
test.end();
});
tape("transition.ease(ease) passes the easing function the normalized time in [0, 1]", function(test) {
var root = jsdom().documentElement,
actual,
ease = function(t) { actual = t; return t; };
d3_selection.select(root).transition().ease(ease);
d3_timer.timeout(function(now) {
test.equal(actual, now / 250);
test.end();
}, 100);
});
tape("transition.ease(ease) does not invoke the easing function on the last frame", function(test) {
var root = jsdom().documentElement,
ease = function(t) { test.equal(schedule.state, state.RUNNING); return t; },
transition = d3_selection.select(root).transition().ease(ease).on("end", function() { test.end(); }),
schedule = root.__transition[transition._id];
});
tape("transition.ease(ease) observes the eased time returned by the easing function", function(test) {
var root = jsdom().documentElement,
expected,
ease = function() { return expected = Math.random() * 2 - 0.5; },
tween = function() { return function(t) { test.equal(t, schedule.state === state.ENDING ? 1 : expected); }; },
transition = d3_selection.select(root).transition().ease(ease).tween("tween", tween).on("end", function() { test.end(); }),
schedule = root.__transition[transition._id];
});
d3-transition-1.3.2/test/transition/empty-test.js 0000664 0000000 0000000 00000000453 13564546167 0022060 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.empty is the same as selection.empty", function(test) {
test.equal(d3_transition.transition.prototype.empty, d3_selection.selection.prototype.empty);
test.end();
});
d3-transition-1.3.2/test/transition/filter-test.js 0000664 0000000 0000000 00000003133 13564546167 0022205 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.filter(selector) retains the elements matching the specified selector", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.filter("#two");
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[two]]);
test.equal(transition2._parents, transition1._parents);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.end();
});
tape("transition.filter(function) retains the elements for which the specified function returns true", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.filter(function() { return this === two; });
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[two]]);
test.equal(transition2._parents, transition1._parents);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.end();
});
d3-transition-1.3.2/test/transition/index-test.js 0000664 0000000 0000000 00000005040 13564546167 0022026 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_transition = require("../../");
tape("d3.transition() returns a transition on the document element with the null name", function(test) {
var document = global.document = jsdom(),
root = document.documentElement;
try {
var transition = d3_transition.transition(),
schedule = root.__transition[transition._id];
test.equal(transition.node(), root);
test.strictEqual(schedule.name, null);
test.end();
} finally {
delete global.document;
}
});
tape("d3.transition(null) returns a transition on the document element with the null name", function(test) {
var document = global.document = jsdom(),
root = document.documentElement;
try {
var transition = d3_transition.transition(null),
schedule = root.__transition[transition._id];
test.equal(transition.node(), root);
test.strictEqual(schedule.name, null);
test.end();
} finally {
delete global.document;
}
});
tape("d3.transition(undefined) returns a transition on the document element with the null name", function(test) {
var document = global.document = jsdom(),
root = document.documentElement;
try {
var transition = d3_transition.transition(undefined),
schedule = root.__transition[transition._id];
test.equal(transition.node(), root);
test.strictEqual(schedule.name, null);
test.end();
} finally {
delete global.document;
}
});
tape("d3.transition(name) returns a transition on the document element with the specified name", function(test) {
var document = global.document = jsdom(),
root = document.documentElement;
try {
var transition = d3_transition.transition("foo"),
schedule = root.__transition[transition._id];
test.equal(transition.node(), root);
test.strictEqual(schedule.name, "foo");
test.end();
} finally {
delete global.document;
}
});
tape("d3.transition.prototype can be extended", function(test) {
global.document = jsdom();
try {
var pass = 0;
d3_transition.transition.prototype.test = function() { return ++pass; };
test.equal(d3_transition.transition().test(), 1);
test.equal(pass, 1);
test.end();
} finally {
delete d3_transition.transition.prototype.test;
delete global.document;
}
});
tape("transitions are instanceof d3.transition", function(test) {
global.document = jsdom();
try {
test.equal(d3_transition.transition() instanceof d3_transition.transition, true);
test.end();
} finally {
delete global.document;
}
});
d3-transition-1.3.2/test/transition/merge-test.js 0000664 0000000 0000000 00000002612 13564546167 0022020 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.merge(other) merges elements from the specified other transition for null elements in this transition", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([null, two]).transition(),
transition2 = d3_selection.selectAll([one, null]).transition(transition1),
transition3 = transition1.merge(transition2);
test.equal(transition3 instanceof d3_transition.transition, true);
test.deepEqual(transition3._groups, [[one, two]]);
test.equal(transition3._parents, transition1._parents);
test.equal(transition3._name, transition1._name);
test.equal(transition3._id, transition1._id);
test.end();
});
tape("transition.merge(other) throws an error if the other transition has a different id", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([null, two]).transition(),
transition2 = d3_selection.selectAll([one, null]).transition();
test.throws(function() { transition1.merge(transition2); });
test.end();
});
d3-transition-1.3.2/test/transition/node-test.js 0000664 0000000 0000000 00000000447 13564546167 0021652 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.node is the same as selection.node", function(test) {
test.equal(d3_transition.transition.prototype.node, d3_selection.selection.prototype.node);
test.end();
});
d3-transition-1.3.2/test/transition/nodes-test.js 0000664 0000000 0000000 00000000453 13564546167 0022032 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.nodes is the same as selection.nodes", function(test) {
test.equal(d3_transition.transition.prototype.nodes, d3_selection.selection.prototype.nodes);
test.end();
});
d3-transition-1.3.2/test/transition/on-test.js 0000664 0000000 0000000 00000011644 13564546167 0021342 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.on(type, listener) throws an error if listener is not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.on("start", 42); });
test.end();
});
tape("transition.on(typename) returns the listener with the specified typename, if any", function(test) {
var root = jsdom().documentElement,
foo = function() {},
bar = function() {},
transition = d3_selection.select(root).transition().on("start", foo).on("start.bar", bar);
test.equal(transition.on("start"), foo);
test.equal(transition.on("start.foo"), undefined);
test.equal(transition.on("start.bar"), bar);
test.equal(transition.on("end"), undefined);
test.end();
});
tape("transition.on(typename) throws an error if the specified type is not supported", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.on("foo"); });
test.end();
});
tape("transition.on(typename, listener) throws an error if the specified type is not supported", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.on("foo", function() {}); });
test.end();
});
tape("transition.on(typename, listener) throws an error if the specified listener is not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.on("foo", 42); });
test.end();
});
tape("transition.on(typename, null) removes the listener with the specified typename, if any", function(test) {
var root = jsdom().documentElement,
starts = 0,
transition = d3_selection.select(root).transition().on("start.foo", function() { ++starts; }),
schedule = root.__transition[transition._id];
test.equal(transition.on("start.foo", null), transition);
test.equal(transition.on("start.foo"), undefined);
test.equal(schedule.on.on("start.foo"), undefined);
d3_timer.timeout(function() {
test.equal(starts, 0);
test.end();
});
});
tape("transition.on(\"start\", listener) registers a listener for the start event", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition().on("start", started),
schedule = root.__transition[transition._id];
function started() {
test.equal(schedule.state, state.STARTING);
test.end();
}
});
tape("transition.on(\"interrupt\", listener) registers a listener for the interrupt event (during start)", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().on("interrupt", interrupted),
schedule = root.__transition[transition._id];
function interrupted() {
test.equal(schedule.state, state.ENDED);
test.end();
}
d3_timer.timeout(function() {
selection.interrupt();
});
});
tape("transition.on(\"interrupt\", listener) registers a listener for the interrupt event (during run)", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().on("interrupt", interrupted),
schedule = root.__transition[transition._id];
function interrupted() {
test.equal(schedule.state, state.ENDED);
test.end();
}
d3_timer.timeout(function() {
selection.interrupt();
}, 50);
});
tape("transition.on(\"end\", listener) registers a listener for the end event", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition().duration(50).on("end", ended),
schedule = root.__transition[transition._id];
function ended() {
test.equal(schedule.state, state.ENDING);
test.end();
}
});
tape("transition.on(typename, listener) uses copy-on-write to apply changes", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
foo = function() {},
bar = function() {},
transition = d3_selection.selectAll([one, two]).transition(),
schedule1 = one.__transition[transition._id],
schedule2 = two.__transition[transition._id];
transition.on("start", foo);
test.equal(schedule1.on.on("start"), foo);
test.equal(schedule2.on, schedule1.on);
transition.on("start", bar);
test.equal(schedule1.on.on("start"), bar);
test.equal(schedule2.on, schedule1.on);
d3_selection.select(two).transition(transition).on("start", foo);
test.equal(schedule1.on.on("start"), bar);
test.equal(schedule2.on.on("start"), foo);
test.end();
});
d3-transition-1.3.2/test/transition/remove-test.js 0000664 0000000 0000000 00000002460 13564546167 0022217 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.remove() creates an end listener to remove the element", function(test) {
var document = jsdom(),
root = document.documentElement,
body = document.body,
selection = d3_selection.select(body),
transition = selection.transition().remove().on("start", started).on("end", ended);
function started() {
test.equal(body.parentNode, root);
}
function ended() {
test.equal(body.parentNode, null);
test.end();
}
d3_timer.timeout(function(elapsed) {
test.equal(body.parentNode, root);
});
});
tape("transition.remove() creates an end listener named end.remove", function(test) {
var document = jsdom(),
root = document.documentElement,
body = document.body,
selection = d3_selection.select(body),
transition = selection.transition().remove().on("start", started).on("end", ended);
transition.on("end.remove").call(body);
test.equal(body.parentNode, null);
transition.on("end.remove", null);
root.appendChild(body);
function started() {
test.equal(body.parentNode, root);
}
function ended() {
test.equal(body.parentNode, root);
test.end();
}
});
d3-transition-1.3.2/test/transition/select-test.js 0000664 0000000 0000000 00000004246 13564546167 0022205 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.select(selector) selects the descendants matching the specified selector, then derives a transition", function(test) {
var document = jsdom("
"),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.select("child");
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[one.firstChild, two.firstChild]]);
test.equal(transition2._parents, transition1._parents);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.equal(one.firstChild.__data__, 1);
test.equal(two.firstChild.__data__, 2);
test.equal(one.firstChild.__transition[transition1._id].delay, 10);
test.equal(two.firstChild.__transition[transition1._id].delay, 20);
test.end();
});
tape("transition.select(function) selects the descendants returned by the specified function, then derives a transition", function(test) {
var document = jsdom("
"),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.select(function() { return this.firstChild; });
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[one.firstChild, two.firstChild]]);
test.equal(transition2._parents, transition1._parents);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.equal(one.firstChild.__data__, 1);
test.equal(two.firstChild.__data__, 2);
test.equal(one.firstChild.__transition[transition1._id].delay, 10);
test.equal(two.firstChild.__transition[transition1._id].delay, 20);
test.end();
});
d3-transition-1.3.2/test/transition/selectAll-test.js 0000664 0000000 0000000 00000004320 13564546167 0022627 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.selectAll(selector) selects the descendants matching the specified selector, then derives a transition", function(test) {
var document = jsdom("
"),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.selectAll("child");
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[one.firstChild], [two.firstChild]]);
test.deepEqual(transition2._parents, [one, two]);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.equal("__data__" in one.firstChild, false);
test.equal("__data__" in two.firstChild, false);
test.equal(one.firstChild.__transition[transition1._id].delay, 10);
test.equal(two.firstChild.__transition[transition1._id].delay, 20);
test.end();
});
tape("transition.selectAll(function) selects the descendants returned by the specified function, then derives a transition", function(test) {
var document = jsdom("
"),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition1 = d3_selection.selectAll([one, two]).data([1, 2]).transition().delay(function(d) { return d * 10; }),
transition2 = transition1.selectAll(function() { return [this.firstChild]; });
test.equal(transition2 instanceof d3_transition.transition, true);
test.deepEqual(transition2._groups, [[one.firstChild], [two.firstChild]]);
test.deepEqual(transition2._parents, [one, two]);
test.equal(transition2._name, transition1._name);
test.equal(transition2._id, transition1._id);
test.equal("__data__" in one.firstChild, false);
test.equal("__data__" in two.firstChild, false);
test.equal(one.firstChild.__transition[transition1._id].delay, 10);
test.equal(two.firstChild.__transition[transition1._id].delay, 20);
test.end();
});
d3-transition-1.3.2/test/transition/selection-test.js 0000664 0000000 0000000 00000001160 13564546167 0022703 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.selection() returns the transition’s selection", function(test) {
var document = jsdom("one
two
"),
selection0 = d3_selection.select(document.body).selectAll("h1"),
transition = selection0.transition(),
selection1 = transition.selection();
test.ok(selection1 instanceof d3_selection.selection);
test.equal(selection1._groups, selection0._groups);
test.equal(selection1._parents, selection0._parents);
test.end();
});
d3-transition-1.3.2/test/transition/size-test.js 0000664 0000000 0000000 00000000447 13564546167 0021677 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
d3_selection = require("d3-selection"),
d3_transition = require("../../");
tape("transition.size is the same as selection.size", function(test) {
test.equal(d3_transition.transition.prototype.size, d3_selection.selection.prototype.size);
test.end();
});
d3-transition-1.3.2/test/transition/state.js 0000664 0000000 0000000 00000000223 13564546167 0021060 0 ustar 00root root 0000000 0000000 exports.CREATED = 0;
exports.SCHEDULED = 1;
exports.STARTING = 2;
exports.STARTED = 3;
exports.RUNNING = 4;
exports.ENDING = 5;
exports.ENDED = 6;
d3-transition-1.3.2/test/transition/style-test.js 0000664 0000000 0000000 00000022630 13564546167 0022063 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.style(name, value) creates an tween to the specified value", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", "blue");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, value) creates an tween to the value returned by the specified function", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", function() { return "blue"; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, value) immediately evaluates the specified function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
ease = d3_ease.easeCubic,
duration = 250,
interpolate1 = d3_interpolate.interpolateRgb("cyan", "red"),
interpolate2 = d3_interpolate.interpolateRgb("magenta", "green"),
selection = d3_selection.selectAll([one, two]).data(["red", "green"]),
result = [],
transition = selection.transition().style("color", function(d, i, nodes) { result.push([d, i, nodes, this]); return d; });
test.deepEqual(result, [
["red", 0, [one, two], one],
["green", 1, [one, two], two]
]);
d3_timer.timeout(function(elapsed) {
test.strictEqual(one.style.getPropertyValue("color"), interpolate1(ease(elapsed / duration)));
test.strictEqual(two.style.getPropertyValue("color"), interpolate2(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, value) recycles tweens ", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
transition = d3_selection.selectAll([one, two]).transition().style("color", "red");
test.strictEqual(one.__transition[transition._id].tween, two.__transition[transition._id].tween);
test.end();
});
tape("transition.style(name, value) constructs an interpolator using the current value on start", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("red", "blue"),
selection = d3_selection.select(root),
transition = selection.transition().on("start", function() { selection.style("color", "red"); }).style("color", function() { return "blue"; });
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, null) creates an tween which removes the specified style post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", null).on("start", started);
function started() {
test.equal(root.style.getPropertyValue("color"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.style.getPropertyValue("color"), "");
test.end();
});
});
tape("transition.style(name, null) creates an tween which removes the specified style post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", () => null).on("start", started);
function started() {
test.equal(root.style.getPropertyValue("color"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.style.getPropertyValue("color"), "");
test.end();
});
});
tape("transition.style(name, value) creates an tween which removes the specified style post-start if the specified function returns null", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", function() {}).on("start", started);
function started() {
test.equal(root.style.getPropertyValue("color"), "red");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.style.getPropertyValue("color"), "");
test.end();
});
});
tape("transition.style(name, constant) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("opacity", 1),
transition = selection.transition().style("opacity", 1);
d3_timer.timeout(function(elapsed) {
root.style.opacity = 0.5;
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("opacity"), "0.5");
test.end();
}, 250);
});
tape("transition.style(name, function) is a noop if the string-coerced value matches the current value on tween initialization", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("opacity", 1),
transition = selection.transition().style("opacity", function() { return 1; });
d3_timer.timeout(function(elapsed) {
root.style.opacity = 0.5;
}, 125);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("opacity"), "0.5");
test.end();
}, 250);
});
tape("transition.style(name, value) interpolates numbers", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateNumber(0, 1),
selection = d3_selection.select(root).style("opacity", 0),
transition = selection.transition().style("opacity", 1);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("opacity"), interpolate(ease(elapsed / duration)) + "");
test.end();
}, 125);
});
tape("transition.style(name, constant) uses interpolateNumber if value is a number", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("font-size", "15px"),
transition = selection.transition().style("font-size", 10);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("font-size"), "NaN");
test.end();
}, 125);
});
tape("transition.style(name, function) uses interpolateNumber if value is a number", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("font-size", "15px"),
transition = selection.transition().style("font-size", () => 10);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("font-size"), "NaN");
test.end();
}, 125);
});
tape("transition.style(name, value) interpolates strings", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateString("1px", "2px"),
selection = d3_selection.select(root).style("font-size", "1px"),
transition = selection.transition().style("font-size", "2px");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("font-size"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, value) interpolates colors", function(test) {
var root = jsdom().documentElement,
ease = d3_ease.easeCubic,
duration = 250,
interpolate = d3_interpolate.interpolateRgb("#f00", "#00f"),
selection = d3_selection.select(root).style("color", "#f00"),
transition = selection.transition().style("color", "#00f");
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / duration)));
test.end();
}, 125);
});
tape("transition.style(name, value) creates an styleTween with the specified name", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", "blue");
test.equal(transition.styleTween("color").call(root).call(root, 0.5), "rgb(128, 0, 128)");
test.end();
});
tape("transition.style(name, value) creates a tween with the name \"style.name\"", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().style("color", "blue");
transition.tween("style.color").call(root).call(root, 0.5);
test.equal(root.style.getPropertyValue("color"), "rgb(128, 0, 128)");
test.end();
});
d3-transition-1.3.2/test/transition/styleTween-test.js 0000664 0000000 0000000 00000013064 13564546167 0023067 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.styleTween(name, value) defines a style tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().styleTween("color", function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.deepEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / 250)));
test.deepEqual(root.style.getPropertyPriority("color"), "");
test.end();
}, 125);
});
tape("transition.styleTween(name, value, priority) defines a style tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().styleTween("color", function() { return interpolate; }, "important");
d3_timer.timeout(function(elapsed) {
test.deepEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / 250)));
test.deepEqual(root.style.getPropertyPriority("color"), "important");
test.end();
}, 125);
});
tape("transition.styleTween(name, value) invokes the value function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
result = [],
transition = d3_selection.selectAll([one, two]).data(["one", "two"]).transition().styleTween("color", function(d, i, nodes) { result.push([d, i, nodes, this]); });
d3_timer.timeout(function(elapsed) {
test.deepEqual(result, [
["one", 0, [one, two], one],
["two", 1, [one, two], two]
]);
test.end();
});
});
tape("transition.styleTween(name, value) passes the eased time to the interpolator", function(test) {
var root = jsdom().documentElement,
then = d3_timer.now(),
duration = 250,
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().styleTween("color", function() { return interpolate; }).on("end", function() { test.end(); }),
schedule = root.__transition[transition._id];
function interpolate(t) {
"use strict";
test.equal(this, root);
test.equal(t, schedule.state === state.ENDING ? 1 : ease((d3_timer.now() - then) / duration));
}
});
tape("transition.styleTween(name, value) allows the specified function to return null for a noop", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root).style("color", "red"),
transition = selection.transition().styleTween("color", function() {});
d3_timer.timeout(function(elapsed) {
test.deepEqual(root.style.getPropertyValue("color"), "red");
test.end();
}, 125);
});
tape("transition.styleTween(name, value) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().styleTween({toString: function() { return "color"; }}, function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.deepEqual(root.style.getPropertyValue("color"), interpolate(ease(elapsed / 250)));
test.end();
}, 125);
});
tape("transition.styleTween(name, value) throws an error if value is not null and not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.styleTween("color", 42); });
test.end();
});
tape("transition.styleTween(name, null) removes the specified style tween", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
transition = d3_selection.select(root).transition().styleTween("color", function() { return interpolate; }).styleTween("color", null);
test.equal(transition.styleTween("color"), null);
test.equal(transition.tween("style.color"), null);
d3_timer.timeout(function(elapsed) {
test.strictEqual(root.style.getPropertyValue("color"), "");
test.end();
}, 125);
});
tape("transition.styleTween(name) returns the style tween with the specified name", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
tween = function() { return interpolate; },
transition = d3_selection.select(root).transition().styleTween("color", tween).on("start", started).on("end", ended);
test.equal(transition.styleTween("color"), tween);
test.equal(transition.styleTween("bar"), null);
function started() {
test.equal(transition.styleTween("color"), tween);
}
function ended() {
test.equal(transition.styleTween("color"), tween);
test.end();
}
});
tape("transition.styleTween(name) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
tween = function() {},
transition = d3_selection.select(root).transition().styleTween("color", tween);
test.equal(transition.styleTween({toString: function() { return "color"; }}), tween);
test.end();
});
d3-transition-1.3.2/test/transition/text-test.js 0000664 0000000 0000000 00000004276 13564546167 0021715 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.text(value) creates a tween to set the text content to the specified value post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().text("hello").on("start", started);
function started() {
test.equal(root.textContent, "");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.textContent, "hello");
test.end();
});
});
tape("transition.text(value) creates a tween to set the text content to the value returned by the specified function post-start", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().text(function() { return "hello"; }).on("start", started);
function started() {
test.equal(root.textContent, "");
}
d3_timer.timeout(function(elapsed) {
test.equal(root.textContent, "hello");
test.end();
});
});
tape("transition.text(value) immediately evaluates the specified function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
selection = d3_selection.selectAll([one, two]).data(["red", "green"]),
result = [],
transition = selection.transition().text(function(d, i, nodes) { result.push([d, i, nodes, this]); return d; });
test.deepEqual(result, [
["red", 0, [one, two], one],
["green", 1, [one, two], two]
]);
d3_timer.timeout(function(elapsed) {
test.strictEqual(one.textContent, "red");
test.strictEqual(two.textContent, "green");
test.end();
});
});
tape("transition.text(value) creates a tween with the name \"text\"", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().text("hello");
test.equal(transition.tween("text").call(root), undefined);
test.equal(root.textContent, "hello");
test.end();
});
d3-transition-1.3.2/test/transition/textTween-test.js 0000664 0000000 0000000 00000002621 13564546167 0022710 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.textTween(value) defines a text tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
interpolate = d3_interpolate.interpolateHcl("red", "blue"),
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().textTween(function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.deepEqual(root.textContent, interpolate(ease(elapsed / 250)));
test.end();
}, 125);
});
tape("transition.textTween() returns the existing text tween", function(test) {
var root = jsdom().documentElement,
factory = function() {},
transition = d3_selection.select(root).transition().textTween(factory);
test.strictEqual(transition.textTween(), factory);
test.end();
});
tape("transition.textTween(null) removes an existing text tween", function(test) {
var root = jsdom().documentElement,
factory = function() {},
transition = d3_selection.select(root).transition().textTween(factory);
transition.textTween(undefined);
test.strictEqual(transition.textTween(), null);
test.end();
});
d3-transition-1.3.2/test/transition/transition-test.js 0000664 0000000 0000000 00000001535 13564546167 0023116 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_timer = require("d3-timer"),
d3_selection = require("d3-selection");
require("../../");
tape("transition.transition() allows preceeding transitions with zero duration to end naturally", function(test) {
var end0 = false,
end1 = false,
end2 = false,
root = jsdom().documentElement,
selection = d3_selection.select(root),
transition0 = selection.transition().duration(0).on("end", function() { end0 = true; }),
transition1 = selection.transition().duration(0).on("end", function() { end1 = true; }),
transition2 = transition0.transition().duration(0).on("end", function() { end2 = true; });
d3_timer.timeout(function(elapsed) {
test.equal(end0, true);
test.equal(end1, true);
test.equal(end2, true);
test.end();
}, 50);
});
d3-transition-1.3.2/test/transition/tween-test.js 0000664 0000000 0000000 00000014131 13564546167 0022042 0 ustar 00root root 0000000 0000000 var tape = require("tape"),
jsdom = require("../jsdom"),
d3_ease = require("d3-ease"),
d3_timer = require("d3-timer"),
d3_interpolate = require("d3-interpolate"),
d3_selection = require("d3-selection"),
state = require("./state");
require("../../");
tape("transition.tween(name, value) defines an tween using the interpolator returned by the specified function", function(test) {
var root = jsdom().documentElement,
value,
interpolate = function(t) { value = t; },
transition = d3_selection.select(root).transition().tween("foo", function() { return interpolate; });
d3_timer.timeout(function(elapsed) {
test.equal(value, d3_ease.easeCubic(elapsed / 250));
test.end();
}, 125);
});
tape("transition.tween(name, value) invokes the value function with the expected context and arguments", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
result = [],
transition = d3_selection.selectAll([one, two]).data(["one", "two"]).transition().tween("foo", function(d, i, nodes) { result.push([d, i, nodes, this]); });
d3_timer.timeout(function(elapsed) {
test.deepEqual(result, [
["one", 0, [one, two], one],
["two", 1, [one, two], two]
]);
test.end();
});
});
tape("transition.tween(name, value) passes the eased time to the interpolator", function(test) {
var root = jsdom().documentElement,
then = d3_timer.now(),
duration = 250,
ease = d3_ease.easeCubic,
transition = d3_selection.select(root).transition().tween("foo", function() { return interpolate; }).on("end", function() { test.end(); }),
schedule = root.__transition[transition._id];
function interpolate(t) {
"use strict";
test.equal(this, root);
test.equal(t, schedule.state === state.ENDING ? 1 : ease((d3_timer.now() - then) / duration));
}
});
tape("transition.tween(name, value) allows the specified function to return null for a noop", function(test) {
var root = jsdom().documentElement,
selection = d3_selection.select(root),
transition = selection.transition().tween("foo", function() {});
test.end();
});
tape("transition.tween(name, value) uses copy-on-write to apply changes", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
foo = function() {},
bar = function() {},
transition = d3_selection.selectAll([one, two]).transition(),
schedule1 = one.__transition[transition._id],
schedule2 = two.__transition[transition._id];
transition.tween("foo", foo);
test.deepEqual(schedule1.tween, [{name: "foo", value: foo}]);
test.equal(schedule2.tween, schedule1.tween);
transition.tween("foo", bar);
test.deepEqual(schedule1.tween, [{name: "foo", value: bar}]);
test.equal(schedule2.tween, schedule1.tween);
d3_selection.select(two).transition(transition).tween("foo", foo);
test.deepEqual(schedule1.tween, [{name: "foo", value: bar}]);
test.deepEqual(schedule2.tween, [{name: "foo", value: foo}]);
test.end();
});
tape("transition.tween(name, value) uses copy-on-write to apply removals", function(test) {
var document = jsdom(""),
one = document.querySelector("#one"),
two = document.querySelector("#two"),
foo = function() {},
transition = d3_selection.selectAll([one, two]).transition(),
schedule1 = one.__transition[transition._id],
schedule2 = two.__transition[transition._id];
transition.tween("foo", foo);
test.deepEqual(schedule1.tween, [{name: "foo", value: foo}]);
test.equal(schedule2.tween, schedule1.tween);
transition.tween("bar", null);
test.deepEqual(schedule1.tween, [{name: "foo", value: foo}]);
test.equal(schedule2.tween, schedule1.tween);
transition.tween("foo", null);
test.deepEqual(schedule1.tween, []);
test.equal(schedule2.tween, schedule1.tween);
d3_selection.select(two).transition(transition).tween("foo", foo);
test.deepEqual(schedule1.tween, []);
test.deepEqual(schedule2.tween, [{name: "foo", value: foo}]);
test.end();
});
tape("transition.tween(name, value) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
tween = function() {},
transition = d3_selection.select(root).transition().tween({toString: function() { return "foo"; }}, tween);
test.equal(transition.tween("foo"), tween);
test.end();
});
tape("transition.tween(name) coerces the specified name to a string", function(test) {
var root = jsdom().documentElement,
tween = function() {},
transition = d3_selection.select(root).transition().tween("foo", tween);
test.equal(transition.tween({toString: function() { return "foo"; }}), tween);
test.end();
});
tape("transition.tween(name, value) throws an error if value is not null and not a function", function(test) {
var root = jsdom().documentElement,
transition = d3_selection.select(root).transition();
test.throws(function() { transition.tween("foo", 42); });
test.end();
});
tape("transition.tween(name, null) removes the specified tween", function(test) {
var root = jsdom().documentElement,
frames = 0,
interpolate = function() { ++frames; },
transition = d3_selection.select(root).transition().tween("foo", function() { return interpolate; }).tween("foo", null);
test.equal(transition.tween("foo"), null);
d3_timer.timeout(function(elapsed) {
test.strictEqual(frames, 0);
test.end();
}, 125);
});
tape("transition.tween(name) returns the tween with the specified name", function(test) {
var root = jsdom().documentElement,
tween = function() {},
transition = d3_selection.select(root).transition().tween("foo", tween).on("start", started).on("end", ended);
test.equal(transition.tween("foo"), tween);
test.equal(transition.tween("bar"), null);
function started() {
test.equal(transition.tween("foo"), tween);
}
function ended() {
test.equal(transition.tween("foo"), tween);
test.end();
}
});
d3-transition-1.3.2/yarn.lock 0000664 0000000 0000000 00000207113 13564546167 0016063 0 ustar 00root root 0000000 0000000 # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/code-frame@^7.0.0":
version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
dependencies:
"@babel/highlight" "^7.0.0"
"@babel/highlight@^7.0.0":
version "7.5.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
js-tokens "^4.0.0"
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/node@^12.6.2":
version "12.6.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.8.tgz#e469b4bf9d1c9832aee4907ba8a051494357c12c"
integrity sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==
abab@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==
acorn-globals@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006"
integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==
dependencies:
acorn "^6.0.1"
acorn-walk "^6.0.1"
acorn-jsx@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
acorn-walk@^6.0.1:
version "6.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.2.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51"
integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==
ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
version "6.10.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ansi-escapes@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
ansi-regex@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
dependencies:
safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
async-limiter@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
dependencies:
tweetnacl "^0.14.3"
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
browser-process-hrtime@^0.1.2:
version "0.1.3"
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
dependencies:
restore-cursor "^2.0.0"
cli-width@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
commander@^2.20.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
cssom@0.3.x, cssom@^0.3.6:
version "0.3.8"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
cssstyle@^1.2.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
dependencies:
cssom "0.3.x"
d3-color@1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf"
integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==
d3-dispatch@1:
version "1.0.6"
resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58"
integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==
d3-ease@1:
version "1.0.6"
resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0"
integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==
d3-interpolate@1:
version "1.3.3"
resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.3.tgz#cef4ba06dfccebcc45e4ae9d4d836a931a945076"
integrity sha512-wTsi4AqnC2raZ3Q9eqFxiZGUf5r6YiEdi23vXjjKSWXFYLCQNUtBVMk6uk2tg4cOY6YrjRdmSmI/Mf0ze1zPzQ==
dependencies:
d3-color "1"
d3-selection@^1.1.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98"
integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==
d3-timer@1:
version "1.0.10"
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5"
integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
dependencies:
assert-plus "^1.0.0"
data-urls@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
dependencies:
abab "^2.0.0"
whatwg-mimetype "^2.2.0"
whatwg-url "^7.0.0"
debug@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
dependencies:
ms "^2.1.1"
deep-equal@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
define-properties@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
object-keys "^1.0.12"
defined@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
domexception@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
dependencies:
webidl-conversions "^4.0.2"
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
dependencies:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
emoji-regex@^7.0.1:
version "7.0.3"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
es-abstract@^1.5.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
dependencies:
es-to-primitive "^1.2.0"
function-bind "^1.1.1"
has "^1.0.3"
is-callable "^1.1.4"
is-regex "^1.0.4"
object-keys "^1.0.12"
es-to-primitive@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escodegen@^1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
source-map "~0.6.1"
eslint-scope@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-utils@^1.3.1:
version "1.4.3"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
eslint@6:
version "6.1.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646"
integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.10.0"
chalk "^2.1.0"
cross-spawn "^6.0.5"
debug "^4.0.1"
doctrine "^3.0.0"
eslint-scope "^5.0.0"
eslint-utils "^1.3.1"
eslint-visitor-keys "^1.0.0"
espree "^6.0.0"
esquery "^1.0.1"
esutils "^2.0.2"
file-entry-cache "^5.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^5.0.0"
globals "^11.7.0"
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
inquirer "^6.4.1"
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
lodash "^4.17.14"
minimatch "^3.0.4"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
progress "^2.0.0"
regexpp "^2.0.1"
semver "^6.1.2"
strip-ansi "^5.2.0"
strip-json-comments "^3.0.1"
table "^5.2.3"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6"
integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==
dependencies:
acorn "^6.0.7"
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
esprima@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
dependencies:
estraverse "^4.0.0"
esrecurse@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
dependencies:
estraverse "^4.1.0"
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
estree-walker@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
external-editor@^3.0.3:
version "3.1.0"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
dependencies:
chardet "^0.7.0"
iconv-lite "^0.4.24"
tmp "^0.0.33"
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
fast-levenshtein@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
dependencies:
escape-string-regexp "^1.0.5"
file-entry-cache@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
dependencies:
flat-cache "^2.0.1"
flat-cache@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
dependencies:
flatted "^2.0.0"
rimraf "2.6.3"
write "1.0.3"
flatted@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
for-each@~0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
dependencies:
is-callable "^1.1.3"
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
dependencies:
assert-plus "^1.0.0"
glob-parent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
dependencies:
is-glob "^4.0.1"
glob@^7.1.3, glob@~7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^11.7.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
har-validator@~5.1.0:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
dependencies:
ajv "^6.5.5"
har-schema "^2.0.0"
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
has@^1.0.1, has@^1.0.3, has@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
html-encoding-sniffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
dependencies:
whatwg-encoding "^1.0.1"
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
dependencies:
assert-plus "^1.0.0"
jsprim "^1.2.2"
sshpk "^1.7.0"
iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
import-fresh@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@~2.0.3, inherits@~2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
inquirer@^6.4.1:
version "6.5.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42"
integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==
dependencies:
ansi-escapes "^3.2.0"
chalk "^2.4.2"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
external-editor "^3.0.3"
figures "^2.0.0"
lodash "^4.17.12"
mute-stream "0.0.7"
run-async "^2.2.0"
rxjs "^6.4.0"
string-width "^2.1.0"
strip-ansi "^5.1.0"
through "^2.3.6"
ip-regex@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
is-callable@^1.1.3, is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
is-glob@^4.0.0, is-glob@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
dependencies:
is-extglob "^2.1.1"
is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
dependencies:
has "^1.0.1"
is-symbol@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
dependencies:
has-symbols "^1.0.0"
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
jest-worker@^24.6.0:
version "24.6.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3"
integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==
dependencies:
merge-stream "^1.0.1"
supports-color "^6.1.0"
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
jsdom@15:
version "15.1.1"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.1.1.tgz#21ed01f81d95ef4327f3e564662aef5e65881252"
integrity sha512-cQZRBB33arrDAeCrAEWn1U3SvrvC8XysBua9Oqg1yWrsY/gYcusloJC3RZJXuY5eehSCmws8f2YeliCqGSkrtQ==
dependencies:
abab "^2.0.0"
acorn "^6.1.1"
acorn-globals "^4.3.2"
array-equal "^1.0.0"
cssom "^0.3.6"
cssstyle "^1.2.2"
data-urls "^1.1.0"
domexception "^1.0.1"
escodegen "^1.11.1"
html-encoding-sniffer "^1.0.2"
nwsapi "^2.1.4"
parse5 "5.1.0"
pn "^1.1.0"
request "^2.88.0"
request-promise-native "^1.0.7"
saxes "^3.1.9"
symbol-tree "^3.2.2"
tough-cookie "^3.0.1"
w3c-hr-time "^1.0.1"
w3c-xmlserializer "^1.1.2"
webidl-conversions "^4.0.2"
whatwg-encoding "^1.0.5"
whatwg-mimetype "^2.3.0"
whatwg-url "^7.0.0"
ws "^7.0.0"
xml-name-validator "^3.0.0"
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
dependencies:
assert-plus "1.0.0"
extsprintf "1.3.0"
json-schema "0.2.3"
verror "1.10.0"
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
dependencies:
prelude-ls "~1.1.2"
type-check "~0.3.2"
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
merge-stream@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=
dependencies:
readable-stream "^2.0.1"
mime-db@1.40.0:
version "1.40.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.24"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
dependencies:
mime-db "1.40.0"
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
dependencies:
minimist "0.0.8"
ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
nwsapi@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
object-inspect@~1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==
object-keys@^1.0.12:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
dependencies:
mimic-fn "^1.0.0"
optionator@^0.8.1, optionator@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
dependencies:
deep-is "~0.1.3"
fast-levenshtein "~2.0.4"
levn "~0.3.0"
prelude-ls "~1.1.2"
type-check "~0.3.2"
wordwrap "~1.0.0"
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
parse5@5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
pn@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
psl@^1.1.24, psl@^1.1.28:
version "1.2.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6"
integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==
punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
readable-stream@^2.0.1:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
request-promise-core@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
dependencies:
lodash "^4.17.11"
request-promise-native@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
dependencies:
request-promise-core "1.1.2"
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
caseless "~0.12.0"
combined-stream "~1.0.6"
extend "~3.0.2"
forever-agent "~0.6.1"
form-data "~2.3.2"
har-validator "~5.1.0"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
oauth-sign "~0.9.0"
performance-now "^2.1.0"
qs "~6.5.2"
safe-buffer "^5.1.2"
tough-cookie "~2.4.3"
tunnel-agent "^0.6.0"
uuid "^3.3.2"
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve@~1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
dependencies:
path-parse "^1.0.6"
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
dependencies:
onetime "^2.0.0"
signal-exit "^3.0.2"
resumer@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=
dependencies:
through "~2.3.4"
rimraf@2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
dependencies:
glob "^7.1.3"
rollup-plugin-terser@5:
version "5.1.1"
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.1.tgz#e9d2545ec8d467f96ba99b9216d2285aad8d5b66"
integrity sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ==
dependencies:
"@babel/code-frame" "^7.0.0"
jest-worker "^24.6.0"
rollup-pluginutils "^2.8.1"
serialize-javascript "^1.7.0"
terser "^4.1.0"
rollup-pluginutils@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97"
integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==
dependencies:
estree-walker "^0.6.1"
rollup@1:
version "1.17.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.17.0.tgz#47ee8b04514544fc93b39bae06271244c8db7dfa"
integrity sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw==
dependencies:
"@types/estree" "0.0.39"
"@types/node" "^12.6.2"
acorn "^6.2.0"
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
dependencies:
is-promise "^2.1.0"
rxjs@^6.4.0:
version "6.5.2"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
dependencies:
tslib "^1.9.0"
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
saxes@^3.1.9:
version "3.1.11"
resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b"
integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
dependencies:
xmlchars "^2.1.1"
semver@^5.5.0:
version "5.7.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
semver@^6.1.2:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
serialize-javascript@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
slice-ansi@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
dependencies:
ansi-styles "^3.2.0"
astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0"
source-map-support@~0.5.12:
version "0.5.12"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
sshpk@^1.7.0:
version "1.16.1"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
bcrypt-pbkdf "^1.0.0"
dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
getpass "^0.1.1"
jsbn "~0.1.0"
safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
stealthy-require@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
string-width@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
dependencies:
emoji-regex "^7.0.1"
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
string.prototype.trim@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea"
integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=
dependencies:
define-properties "^1.1.2"
es-abstract "^1.5.0"
function-bind "^1.0.2"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
dependencies:
ansi-regex "^3.0.0"
strip-ansi@^5.1.0, strip-ansi@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
ansi-regex "^4.1.0"
strip-json-comments@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
supports-color@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
dependencies:
has-flag "^3.0.0"
symbol-tree@^3.2.2:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@^5.2.3:
version "5.4.4"
resolved "https://registry.yarnpkg.com/table/-/table-5.4.4.tgz#6e0f88fdae3692793d1077fd172a4667afe986a6"
integrity sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==
dependencies:
ajv "^6.10.2"
lodash "^4.17.14"
slice-ansi "^2.1.0"
string-width "^3.0.0"
tape@4:
version "4.11.0"
resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1"
integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==
dependencies:
deep-equal "~1.0.1"
defined "~1.0.0"
for-each "~0.3.3"
function-bind "~1.1.1"
glob "~7.1.4"
has "~1.0.3"
inherits "~2.0.4"
minimist "~1.2.0"
object-inspect "~1.6.0"
resolve "~1.11.1"
resumer "~0.0.0"
string.prototype.trim "~1.1.2"
through "~2.3.8"
terser@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391"
integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
through@^2.3.6, through@~2.3.4, through@~2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
dependencies:
os-tmpdir "~1.0.2"
tough-cookie@^2.3.3:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
dependencies:
psl "^1.1.28"
punycode "^2.1.1"
tough-cookie@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
dependencies:
ip-regex "^2.1.0"
psl "^1.1.28"
punycode "^2.1.1"
tough-cookie@~2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
dependencies:
psl "^1.1.24"
punycode "^1.4.1"
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
dependencies:
punycode "^2.1.0"
tslib@^1.9.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
dependencies:
safe-buffer "^5.0.1"
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
dependencies:
prelude-ls "~1.1.2"
uri-js@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
dependencies:
punycode "^2.1.0"
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
uuid@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
v8-compile-cache@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
dependencies:
assert-plus "^1.0.0"
core-util-is "1.0.2"
extsprintf "^1.2.0"
w3c-hr-time@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=
dependencies:
browser-process-hrtime "^0.1.2"
w3c-xmlserializer@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794"
integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
dependencies:
domexception "^1.0.1"
webidl-conversions "^4.0.2"
xml-name-validator "^3.0.0"
webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
dependencies:
iconv-lite "0.4.24"
whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
whatwg-url@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==
dependencies:
lodash.sortby "^4.7.0"
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
write@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
dependencies:
mkdirp "^0.5.1"
ws@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.1.tgz#f9942dc868b6dffb72c14fd8f2ba05f77a4d5983"
integrity sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==
dependencies:
async-limiter "^1.0.0"
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
xmlchars@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.1.1.tgz#ef1a81c05bff629c2280007f12daca21bd6f6c93"
integrity sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==