├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── examples
├── boarding.html
├── css
│ ├── boarding.css
│ ├── invision.css
│ └── netflix.css
├── cssdevconf.html
├── curve.html
├── expand.html
├── invision.html
├── scale.html
├── scss
│ ├── boarding.scss
│ ├── invision.scss
│ └── netflix.scss
├── simple-css.html
├── stones.html
└── todo.html
├── index.html
├── package-lock.json
├── package.json
├── rollup.config.js
├── src
└── index.ts
├── test
└── flipping.test.ts
├── tsconfig.json
├── tslint.json
├── typings.json
├── typings
├── globals
│ └── mocha
│ │ ├── index.d.ts
│ │ └── typings.json
├── index.d.ts
└── modules
│ └── chai
│ ├── index.d.ts
│ └── typings.json
├── webpack.config.js
├── webpack.config.prod.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .vscode/
3 | dist/
4 | .awcache/
5 | lib/
6 |
7 | index.html
8 | _src/
9 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | node_modules
3 | examples
4 | test
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 David Khourshid
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flipping
2 |
3 | A library (and collection of adapters) for [implementing FLIP transitions](https://css-tricks.com/animating-layouts-with-the-flip-technique/).
4 |
5 | For more information about the FLIP technique, view the flipping slides:
6 | - [CSS Dev Conf 2017](https://slides.com/davidkhourshid/flipping)
7 | - [CSSConf AU 2018](https://slides.com/davidkhourshid/illusions)
8 |
9 | ## Examples
10 | - https://codepen.io/davidkpiano/pen/xLKBpM
11 | - https://codepen.io/davidkpiano/pen/vmXErw
12 | - https://codepen.io/davidkpiano/pen/xPVJwm
13 | - https://codepen.io/davidkpiano/pen/RjaBpW
14 | - https://codepen.io/davidkpiano/pen/zWrRye
15 |
16 | ## Installation
17 | ```
18 | npm install flipping@latest --save
19 | ```
20 |
21 | Or grab the files directly:
22 | - https://unpkg.com/flipping@latest/dist/flipping.js (core)
23 | - https://unpkg.com/flipping@latest/dist/flipping.web.js (WAAPI adapter)
24 | - 🔜 https://unpkg.com/flipping@latest/dist/flipping.css.js (CSS adapter - WIP!)
25 |
26 | ## Quick Start
27 |
28 | In your HTML, add the `data-flip-key="..."` attribute to shared elements (see HTML example below).
29 |
30 | ```js
31 | import Flipping from 'flipping';
32 |
33 | const flipping = new Flipping();
34 |
35 | // Before a layout change happens
36 | flipping.read();
37 |
38 | // Any effect that changes the layout
39 | doSomething();
40 |
41 | // After a layout change happens
42 | // With an adapter, this will start the FLIP animation
43 | flipping.flip();
44 | ```
45 |
46 | ```html
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | Lorem ipsum dolor sit amet...
67 |
68 |
69 | ```
70 |
71 | ## API
72 |
73 | ### `new Flipping(options?)`
74 |
75 | Creates a new `Flipping` instance. This is the thing that keeps track of all the changes made, and determines if any elements changed positions or size.
76 |
77 | **Parameters for `options`**
78 |
79 | For greater control and custom animations, you can pass in the following parameters (all optional):
80 |
81 | - `selector?: (parent: Element) => Element[];` - Selects all "flippable" elements. Defaults to all elements that have a `[data-flip-key]` attribute.
82 | - `activeSelector: (element) => Element[];` - Selects the currently active "flippable" elements. Defaults to selecting the visible flippable elements.
83 | - `onFlip?: (state: IFlipStateMap) => void;` - Event listener. Called with the entire state map of tracked flippable elements whenever `.flip()` is called.
84 | - `onRead?: (state: IFlipStateMap) => void;` - Event listener. Called with the entire state map of tracked flippable elements whenever `.read()` is called.
85 | - `onEnter?: (state: IFlipStateMap) => void;` - Event listener. Called with the state map of elements that enter (that is, not previously tracked).
86 | - `onLeave?: (state: IFlipStateMap) => void;` - Event listener. Called with the state map of elements that leave (that is, previously tracked but no longer active).
87 | - `parent?: Element;` - The root element to query all flippable elements. Defaults to the `
`.
88 | - `plugins?: FlipPlugin[];` - An array of plugins that transform the state map before being emitted.
89 | - `duration?: number` - Animation duration in ms. Defaults to 300.
90 | - `easing?: string` - Easing function name e.g. `ease-in-out`. Defaults to `cubic-bezier(.5, 0, .5, 1)`.
91 |
92 | ### `flipping.read(): void`
93 |
94 | Queries all the flippable selectors and reads their bounds (position and size). This must be called before layout changes are made.
95 |
96 | Will call any `onRead()` event listeners with the entire state map.
97 |
98 | ### `flipping.flip(): void`
99 |
100 | Queries all the flippable selectors and reads their bounds (position and size), and then determines the deltas (changes in position and/or size)
101 |
102 | Will call any `onFlip()` event listeners with the entire state map.
103 |
104 | ### `flipping.wrap(fn): void`
105 |
106 | 1. Calls `flipping.read()`
107 | 2. Calls the wrapped `fn()`
108 | 3. Returns the result of the wrapped `fn()`
109 | 4. Calls `flipping.flip()`
110 |
111 | It's a nice shorthand. Use it.
112 |
113 | ### `data-flip-key="..."`
114 |
115 | HTML data-attribute that tracks the same/shared elements and identifies them as the "same" element.
116 |
117 | ### `data-flip-no-scale`
118 |
119 | HTML data-attribute that prevents the Flipping adapters from trying to apply `scale()` to a transformed element.
120 |
121 | - https://codepen.io/davidkpiano/pen/RjaBpW
122 | - https://codepen.io/davidkpiano/pen/xLKBpM
123 |
--------------------------------------------------------------------------------
/examples/boarding.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Boarding
8 |
9 |
10 |
11 |
12 |
24 |
25 |
68 |
69 |
--------------------------------------------------------------------------------
/examples/css/boarding.css:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | position: relative; }
6 |
7 | html,
8 | body {
9 | height: 100%;
10 | width: 100%; }
11 |
12 | body {
13 | display: flex;
14 | justify-content: center;
15 | align-items: center; }
16 |
17 | #app {
18 | height: 90vh;
19 | width: 45vh;
20 | outline: 1px solid black;
21 | padding: 1rem; }
22 |
23 | .layer {
24 | position: absolute;
25 | top: 0;
26 | left: 0;
27 | width: 100%;
28 | height: 100%; }
29 | .layer:not([data-active]) {
30 | display: none; }
31 |
32 | .-bg:before {
33 | content: '';
34 | display: block;
35 | position: absolute;
36 | top: 0;
37 | left: 0;
38 | height: 100%;
39 | width: 100%;
40 | background-color: var(--bg); }
41 |
42 | .ticket {
43 | --bg: blue;
44 | padding: 1rem;
45 | border-radius: 1rem;
46 | color: white;
47 | display: grid;
48 | grid-template-columns: 1fr 5rem; }
49 | .ticket > .qrcode {
50 | grid-column: 2 / 3; }
51 |
52 | .full-ticket {
53 | --bg: blue;
54 | height: 100%;
55 | width: 100%;
56 | display: grid;
57 | grid-template-rows: 50% 50%; }
58 | .full-ticket > .qrcode {
59 | grid-row: 2 /3;
60 | height: 8rem;
61 | width: 8rem; }
62 |
63 | .qrcode {
64 | border: 2px solid black;
65 | background-color: white;
66 | height: 3rem;
67 | width: 3rem;
68 | align-self: center;
69 | justify-self: center;
70 | transition: transform 1s;
71 | transform-origin: 0 0; }
72 | .qrcode[data-flip-state='pre-move'] {
73 | transition: none;
74 | transform: var(--flip-curve); }
75 | .qrcode[data-flip-state='move'] {
76 | transform: var(--flip-fcurve); }
77 |
--------------------------------------------------------------------------------
/examples/css/invision.css:
--------------------------------------------------------------------------------
1 | #app {
2 | outline: 1px solid;
3 | width: 280px;
4 | height: 500px;
5 | display: flex;
6 | flex-direction: column;
7 | justify-content: space-between;
8 | overflow: hidden; }
9 |
10 | .ui-card {
11 | width: 225px;
12 | display: grid;
13 | grid-template-columns: 100%;
14 | grid-template-rows: 220px 1fr;
15 | border-radius: .25rem; }
16 | .ui-card + .ui-card {
17 | margin-left: 1rem; }
18 | .ui-card .ui-feature {
19 | grid-row: 1 / 2; }
20 | .ui-card .ui-content {
21 | grid-row: 2 / 3;
22 | display: flex;
23 | flex-direction: column;
24 | justify-content: center;
25 | align-items: flex-start;
26 | padding: 1rem;
27 | z-index: 1; }
28 | .ui-card > .ui-bg {
29 | position: absolute;
30 | top: 0;
31 | left: 0;
32 | width: 100%;
33 | height: 100%;
34 | display: grid;
35 | grid-template-columns: inherit;
36 | grid-template-rows: inherit;
37 | z-index: 0; }
38 | .ui-card > .ui-bg .ui-bg-color {
39 | position: absolute;
40 | top: 0;
41 | left: 0;
42 | right: 0;
43 | bottom: 0;
44 | background-color: white;
45 | box-shadow: 0 0 1rem rgba(0, 0, 0, 0.2);
46 | border-radius: .25rem;
47 | border-top-left-radius: 0;
48 | border-top-right-radius: 0; }
49 | .ui-card > .ui-bg > .ui-bg-img {
50 | grid-row: 1 / 2;
51 | background-color: black;
52 | border-radius: .25rem;
53 | border-bottom-left-radius: 0;
54 | border-bottom-right-radius: 0; }
55 |
56 | .ui-title, .ui-subtitle {
57 | font-size: .75rem;
58 | display: inline-block; }
59 |
60 | [data-state="a"] #app .ui-items {
61 | position: absolute;
62 | top: 100%;
63 | animation: fade-out .2s both; }
64 |
65 | @keyframes fade-out {
66 | from {
67 | opacity: 1; }
68 | to {
69 | opacity: 0; } }
70 |
71 | [data-state="a"] #app .ui-content {
72 | height: 90px; }
73 |
74 | .ui-cards {
75 | font-family: Proxima Nova, sans-serif;
76 | display: flex;
77 | flex-direction: row;
78 | overflow-x: auto;
79 | overflow-y: hidden;
80 | padding: 1rem; }
81 | .ui-cards[data-flip-state="active"] {
82 | overflow: visible; }
83 | .ui-cards > .ui-card {
84 | flex-shrink: 0; }
85 |
86 | [data-state="b"] #app .ui-cards, [data-state="b"] #app .ui-card.active {
87 | position: absolute;
88 | top: 0;
89 | left: 0;
90 | width: 100%;
91 | height: 100%;
92 | margin: 0; }
93 |
94 | [data-state="b"] #app .ui-card.active .ui-content {
95 | justify-content: flex-start; }
96 |
97 | [data-state="b"] #app .ui-card:not(.active) {
98 | display: none; }
99 |
100 | [data-state="b"] #app .ui-items {
101 | display: block;
102 | animation: fade-in .2s .2s both; }
103 |
104 | @keyframes fade-in {
105 | from {
106 | opacity: 0; }
107 | to {
108 | opacity: 1; } }
109 |
110 | .ui-layer {
111 | position: absolute;
112 | top: 0;
113 | left: 0;
114 | width: 100%;
115 | height: 100%; }
116 |
117 | body {
118 | display: flex;
119 | justify-content: center;
120 | align-items: center; }
121 |
122 | html, body {
123 | width: 100%;
124 | height: 100%;
125 | margin: 0;
126 | padding: 0; }
127 |
128 | *, *:before, *:after {
129 | box-sizing: border-box;
130 | position: relative; }
131 |
--------------------------------------------------------------------------------
/examples/css/netflix.css:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | position: relative; }
6 |
7 | body,
8 | html {
9 | height: 100%;
10 | width: 100%;
11 | margin: 0;
12 | padding: 0; }
13 |
14 | body {
15 | background-color: #f6f6f2;
16 | color: #26241f; }
17 |
18 | .scene {
19 | display: none;
20 | position: absolute;
21 | top: 0;
22 | left: 0;
23 | width: 100%;
24 | height: 100%;
25 | justify-content: center;
26 | align-items: center; }
27 | .scene:nth-child(2) h1 {
28 | display: grid;
29 | grid-template-columns: 1fr;
30 | grid-template-rows: 1fr; }
31 | .scene:nth-child(2) h1 > div {
32 | grid-area: 1 / 1; }
33 |
34 | [data-word] {
35 | transition: all 0.3s ease; }
36 |
37 | [data-state='1'] .scene:nth-child(1) {
38 | display: flex; }
39 |
40 | [data-state='2'] .scene:nth-child(2),
41 | [data-state='3'] .scene:nth-child(2),
42 | [data-state='4'] .scene:nth-child(2) {
43 | display: flex; }
44 |
45 | [data-state='2'] .scene:nth-child(2) .first [data-word] {
46 | opacity: 0;
47 | transition-delay: calc(var(--word-index) * 200ms); }
48 |
49 | span {
50 | display: inline-block; }
51 |
52 | .whitespace {
53 | width: 0.5ch; }
54 |
--------------------------------------------------------------------------------
/examples/cssdevconf.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
114 |
115 |
116 |
117 | C S
118 | S
119 |
120 |
121 | Dev
122 | Conference
123 |
124 |
150 |
151 |
152 |
--------------------------------------------------------------------------------
/examples/curve.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
59 |
60 |
61 |
62 |
65 |
68 |
69 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/examples/expand.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
201 |
202 |
203 |
--------------------------------------------------------------------------------
/examples/invision.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
22 |
23 |
24 | InVision iOS
25 |
26 |
31 | 24 Documents
32 |
33 |
34 | Something 1
35 | Something 2
36 | Something 3
37 | Something 4
38 | Something 5
39 |
40 |
41 |
45 |
46 |
47 |
48 |
53 |
54 |
55 | InVision iOS
56 |
57 |
62 | 24 Documents
63 |
64 |
65 | Something 1
66 | Something 2
67 | Something 3
68 | Something 4
69 | Something 5
70 |
71 |
72 |
76 |
77 |
78 |
79 |
80 |
81 |
124 |
125 |
126 |
--------------------------------------------------------------------------------
/examples/scale.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Document
9 |
10 |
52 |
53 |
54 |
55 |
56 | Hello!
57 |
58 |
146 |
147 |
148 |
149 |
--------------------------------------------------------------------------------
/examples/scss/boarding.scss:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | position: relative;
6 | }
7 |
8 | html,
9 | body {
10 | height: 100%;
11 | width: 100%;
12 | }
13 |
14 | body {
15 | display: flex;
16 | justify-content: center;
17 | align-items: center;
18 | }
19 |
20 | #app {
21 | height: 90vh;
22 | width: 45vh;
23 | outline: 1px solid black;
24 | padding: 1rem;
25 | }
26 |
27 | .layer {
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | width: 100%;
32 | height: 100%;
33 |
34 | &:not([data-active]) {
35 | display: none;
36 | }
37 | }
38 |
39 | .-bg:before {
40 | content: '';
41 | display: block;
42 | position: absolute;
43 | top: 0;
44 | left: 0;
45 | height: 100%;
46 | width: 100%;
47 | background-color: var(--bg);
48 | }
49 |
50 | .ticket {
51 | --bg: blue;
52 | padding: 1rem;
53 | border-radius: 1rem;
54 | color: white;
55 | display: grid;
56 | grid-template-columns: 1fr 5rem;
57 |
58 | > .qrcode {
59 | grid-column: 2 / 3;
60 | }
61 | }
62 |
63 | .full-ticket {
64 | --bg: blue;
65 | height: 100%;
66 | width: 100%;
67 | display: grid;
68 | grid-template-rows: 50% 50%;
69 |
70 | > .qrcode {
71 | grid-row: 2 /3;
72 | height: 8rem;
73 | width: 8rem;
74 | }
75 | }
76 |
77 | .qrcode {
78 | border: 2px solid black;
79 | background-color: white;
80 | height: 3rem;
81 | width: 3rem;
82 | align-self: center;
83 | justify-self: center;
84 | transition: transform 1s;
85 | transform-origin: 0 0;
86 |
87 | &[data-flip-state='pre-move'] {
88 | transition: none;
89 | transform: var(--flip-curve);
90 | }
91 | &[data-flip-state='move'] {
92 | transform: var(--flip-fcurve);
93 | // transition-delay: 1s;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/examples/scss/invision.scss:
--------------------------------------------------------------------------------
1 | #app {
2 | outline: 1px solid;
3 | width: 280px;
4 | height: 500px;
5 | display: flex;
6 | flex-direction: column;
7 | justify-content: space-between;
8 | overflow: hidden;
9 | }
10 |
11 | .ui-card {
12 | width: 225px;
13 | // height: 310px;
14 | display: grid;
15 | grid-template-columns: 100%;
16 | grid-template-rows: 220px 1fr;
17 | border-radius: .25rem;
18 |
19 | + .ui-card {
20 | margin-left: 1rem;
21 | }
22 |
23 | .ui-feature {
24 | grid-row: 1 / 2;
25 | }
26 |
27 | .ui-content {
28 | grid-row: 2 / 3;
29 | display: flex;
30 | flex-direction: column;
31 | justify-content: center;
32 | align-items: flex-start;
33 | padding: 1rem;
34 | z-index: 1;
35 | }
36 |
37 | > .ui-bg {
38 | position: absolute;
39 | top: 0;
40 | left: 0;
41 | width: 100%;
42 | height: 100%;
43 | display: grid;
44 | grid-template-columns: inherit;
45 | grid-template-rows: inherit;
46 | z-index: 0;
47 |
48 | .ui-bg-color {
49 | position: absolute;
50 | top: 0;
51 | left: 0;
52 | right: 0;
53 | bottom: 0;
54 | background-color: white;
55 | box-shadow: 0 0 1rem rgba(black, .2);
56 | border-radius: .25rem;
57 | border-top-left-radius: 0;
58 | border-top-right-radius: 0;
59 | }
60 |
61 | > .ui-bg-img {
62 | grid-row: 1 / 2;
63 | background-color: black;
64 | border-radius: .25rem;
65 | border-bottom-left-radius: 0;
66 | border-bottom-right-radius: 0;
67 | }
68 | }
69 | }
70 |
71 | .ui-title, .ui-subtitle {
72 | font-size: .75rem;
73 | display: inline-block;
74 | }
75 |
76 | [data-state="a"] #app {
77 | .ui-items {
78 | position: absolute;
79 | top: 100%;
80 | animation: fade-out .2s both;
81 | @keyframes fade-out {
82 | from {
83 | opacity: 1;
84 | }
85 | to {
86 | opacity: 0;
87 | }
88 | }
89 | }
90 |
91 | .ui-content {
92 | height: 90px;
93 | }
94 | }
95 |
96 | .ui-cards {
97 | font-family: Proxima Nova, sans-serif;
98 | display: flex;
99 | flex-direction: row;
100 | overflow-x: auto;
101 | overflow-y: hidden;
102 | padding: 1rem;
103 |
104 | &[data-flip-state="active"] {
105 | overflow: visible;
106 | }
107 |
108 | > .ui-card {
109 | flex-shrink: 0;
110 | }
111 | }
112 |
113 | [data-state="b"] #app {
114 | .ui-cards, .ui-card.active {
115 | position: absolute;
116 | top: 0;
117 | left: 0;
118 | width: 100%;
119 | height: 100%;
120 | margin: 0;
121 | }
122 |
123 | .ui-card.active .ui-content {
124 | justify-content: flex-start;
125 | }
126 |
127 | .ui-card:not(.active) {
128 | display: none;
129 | }
130 |
131 | .ui-items {
132 | display: block;
133 | animation: fade-in .2s .2s both;
134 | @keyframes fade-in {
135 | from { opacity: 0; }
136 | to { opacity: 1; }
137 | }
138 | }
139 | }
140 |
141 | .ui-layer {
142 | position: absolute;
143 | top: 0;
144 | left: 0;
145 | width: 100%;
146 | height: 100%;
147 | }
148 |
149 | body {
150 | display: flex;
151 | justify-content: center;
152 | align-items: center;
153 | }
154 |
155 | html, body {
156 | width: 100%;
157 | height: 100%;
158 | margin: 0;
159 | padding: 0;
160 | }
161 |
162 | *, *:before, *:after {
163 | box-sizing: border-box;
164 | position: relative;
165 | }
166 |
--------------------------------------------------------------------------------
/examples/scss/netflix.scss:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | position: relative;
6 | }
7 |
8 | body,
9 | html {
10 | height: 100%;
11 | width: 100%;
12 | margin: 0;
13 | padding: 0;
14 | }
15 |
16 | body {
17 | background-color: #f6f6f2;
18 | color: #26241f;
19 | }
20 |
21 | .scene {
22 | display: none;
23 | position: absolute;
24 | top: 0;
25 | left: 0;
26 | width: 100%;
27 | height: 100%;
28 | justify-content: center;
29 | align-items: center;
30 |
31 | &:nth-child(2) {
32 | h1 {
33 | display: grid;
34 | grid-template-columns: 1fr;
35 | grid-template-rows: 1fr;
36 |
37 | > div {
38 | grid-area: 1 / 1;
39 | }
40 | }
41 | }
42 | }
43 |
44 | [data-word] {
45 | transition: all 0.3s ease;
46 | }
47 |
48 | [data-state='1'] .scene:nth-child(1) {
49 | display: flex;
50 | }
51 |
52 | [data-state='2'] .scene:nth-child(2),
53 | [data-state='3'] .scene:nth-child(2),
54 | [data-state='4'] .scene:nth-child(2) {
55 | display: flex;
56 | }
57 |
58 | [data-state='2'] .scene:nth-child(2) {
59 | .first [data-word] {
60 | opacity: 0;
61 | transition-delay: calc(var(--word-index) * 200ms);
62 | }
63 | }
64 |
65 | span {
66 | display: inline-block;
67 | }
68 |
69 | // Splitting
70 | .whitespace {
71 | width: 0.5ch;
72 | }
73 |
--------------------------------------------------------------------------------
/examples/simple-css.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
42 |
43 |
44 | Click this page as fast as you can!
45 |
46 | C
47 | S
48 | S
49 |
50 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/examples/stones.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
185 |
186 |
187 |
188 |
189 |
196 |
310 |
311 |
312 |
--------------------------------------------------------------------------------
/examples/todo.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
12 | Document
13 |
14 |
390 |
391 |
392 |
393 |
394 |
412 |
413 |
414 |
415 |
Hello, Jane.
416 |
417 | You have 3 tasks to do today.
418 |
419 |
Sunday March 11, 2018
420 |
421 |
422 |
423 |
424 |
425 |
426 |
9 Tasks
427 |
Personal
428 |
432 |
433 |
434 |
435 |
9 Tasks
436 |
Personal
437 |
441 |
442 |
443 |
444 |
9 Tasks
445 |
Personal
446 |
450 |
451 |
452 |
453 |
9 Tasks
454 |
Personal
455 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
9 Tasks
467 |
Personal
468 |
472 |
473 |
Today
474 |
500 |
Tomorrow
501 |
533 |
534 |
535 |
536 |
537 |
What task are you planning to do?
538 |
539 |
549 |
550 |
551 |
552 |
553 | +
554 |
555 |
556 |
557 |
558 |
608 |
609 |
610 |
611 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Document
6 |
92 |
93 |
94 |
95 |
96 |
A
97 |
C
98 |
D
99 |
B
100 |
101 |
102 |
103 |
104 |
C
105 |
A
106 |
B
107 |
D
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
159 |
160 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flipping",
3 | "version": "2.0.0-3",
4 | "description": "Flipping awesome animations.",
5 | "main": "lib/index.js",
6 | "types": "lib/index.d.ts",
7 | "scripts": {
8 | "start": "npm run build:watch",
9 | "test": "NODE_ENV=test && mocha -r ts-node/register test/**.test.ts",
10 | "build": "tsc && npm run build:prod",
11 | "build:prod": "rollup -c",
12 | "build:watch": "rollup -cw",
13 | "examples": "node-sass -w examples/scss -o examples/css",
14 | "prepublish": "npm run build:prod"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/davidkpiano/flipping.git"
19 | },
20 | "keywords": [
21 | "flip",
22 | "animation",
23 | "transition"
24 | ],
25 | "author": "David ",
26 | "license": "MIT",
27 | "bugs": {
28 | "url": "https://github.com/davidkpiano/flipping/issues"
29 | },
30 | "homepage": "https://github.com/davidkpiano/flipping#readme",
31 | "devDependencies": {
32 | "@types/mocha": "^7.0.2",
33 | "@types/node": "^14.0.14",
34 | "rollup": "^2.18.1",
35 | "rollup-plugin-cleanup": "^3.1.1",
36 | "rollup-plugin-filesize": "^9.0.1",
37 | "rollup-plugin-replace": "^2.2.0",
38 | "rollup-plugin-terser": "^6.1.0",
39 | "rollup-plugin-typescript2": "^0.27.1",
40 | "typescript": "^3.9.5"
41 | },
42 | "dependencies": {}
43 | }
44 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import typescript from 'rollup-plugin-typescript2';
2 | import { terser } from 'rollup-plugin-terser';
3 | import rollupReplace from 'rollup-plugin-replace';
4 | import fileSize from 'rollup-plugin-filesize';
5 | import cleanup from 'rollup-plugin-cleanup';
6 |
7 | const createConfig = ({ input, output }) => ({
8 | input,
9 | output,
10 | plugins: [
11 | rollupReplace({
12 | 'process.env.NODE_ENV': JSON.stringify('production'),
13 | }),
14 | typescript({
15 | clean: true,
16 | tsconfigOverride: {
17 | compilerOptions: {
18 | declaration: false,
19 | },
20 | },
21 | }),
22 | terser(),
23 |
24 | fileSize(),
25 | ],
26 | });
27 |
28 | export default {
29 | input: 'src/index.ts',
30 | output: {
31 | file: 'dist/flipping.js',
32 | format: 'umd',
33 | name: 'Flipping',
34 | },
35 | plugins: [
36 | typescript({
37 | clean: true,
38 | tsconfigOverride: {
39 | compilerOptions: {
40 | declaration: false,
41 | },
42 | external: ['tslib'],
43 | },
44 | }),
45 | terser(),
46 | cleanup({
47 | comments: 'none',
48 | }),
49 | fileSize(),
50 | ],
51 | };
52 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | interface StyleMap {
2 | readonly [key: string]: string | number;
3 | }
4 | interface Rect extends ClientRect {
5 | readonly top: number;
6 | readonly bottom: number;
7 | readonly left: number;
8 | readonly right: number;
9 | readonly width: number;
10 | readonly height: number;
11 | readonly transform?: string;
12 | }
13 |
14 | export function getRect(element: HTMLElement, ancestor?: HTMLElement): Rect {
15 | const {
16 | top,
17 | bottom,
18 | left,
19 | right,
20 | width,
21 | height
22 | } = element.getBoundingClientRect();
23 |
24 | const parentRect = ancestor ? ancestor.getBoundingClientRect() : undefined;
25 |
26 | return {
27 | top: top - (parentRect ? parentRect.top : 0),
28 | bottom,
29 | left: left - (parentRect ? parentRect.left : 0),
30 | right,
31 | width,
32 | height,
33 | get transform() {
34 | return getComputedStyle(element).transform || undefined;
35 | }
36 | };
37 | }
38 |
39 | export function getStyles(element: HTMLElement): StyleMap {
40 | const computedStyle = getComputedStyle(element);
41 |
42 | return {
43 | radius: computedStyle.borderRadius || 0
44 | };
45 | }
46 |
47 | interface Delta extends Rect {
48 | x: number;
49 | y: number;
50 | widthRatio: number;
51 | heightRatio: number;
52 | }
53 |
54 | const NO_DELTA: Delta = {
55 | x: 0,
56 | y: 0,
57 | top: 0,
58 | bottom: 0,
59 | left: 0,
60 | right: 0,
61 | width: 0,
62 | height: 0,
63 | widthRatio: 1,
64 | heightRatio: 1
65 | };
66 |
67 | export function getDelta(firstRect: Rect, lastRect: Rect): Delta {
68 | const dx = lastRect.left - firstRect.left;
69 | const dy = lastRect.top - firstRect.top;
70 | const dw = lastRect.width - firstRect.width;
71 | const dh = lastRect.height - firstRect.height;
72 |
73 | return {
74 | x: dx,
75 | y: dy,
76 | top: dy,
77 | bottom: lastRect.bottom - firstRect.bottom,
78 | left: dx,
79 | right: lastRect.right - firstRect.right,
80 | width: dw,
81 | height: dh,
82 | widthRatio: lastRect.width / firstRect.width,
83 | heightRatio: lastRect.height / firstRect.height
84 | };
85 | }
86 |
87 | export function getInverse(delta: Delta): Delta {
88 | return {
89 | x: -1 * delta.x,
90 | y: -1 * delta.y,
91 | top: -1 * delta.top,
92 | bottom: -1 * delta.bottom,
93 | left: -1 * delta.left,
94 | right: -1 * delta.right,
95 | width: -1 * delta.width,
96 | height: -1 * delta.height,
97 | widthRatio: 1 / delta.widthRatio,
98 | heightRatio: 1 / delta.heightRatio
99 | };
100 | }
101 | type FlipData = {
102 | state:
103 | | 'read'
104 | | 'pre-enter'
105 | | 'enter'
106 | | 'pre-move'
107 | | 'move'
108 | | 'pre-exit'
109 | | 'exit';
110 | key: string;
111 | element: HTMLElement | undefined;
112 | rect: Rect | undefined;
113 | styles: StyleMap | undefined;
114 | delta: Delta;
115 | inverse: Delta;
116 | previous: FlipData | undefined;
117 | };
118 |
119 | type FlipElementMap = Record;
120 |
121 | type FlipListener = (data: FlipData) => void;
122 |
123 | export function isVisible(element?: HTMLElement) {
124 | if (!element) {
125 | return false;
126 | }
127 |
128 | const { width, height } = getRect(element);
129 |
130 | return !(width === 0 && height === 0);
131 | }
132 |
133 | interface FlippingConfig {
134 | getKey: ((element: HTMLElement) => string | null | undefined) | string;
135 | }
136 | export class Flipping {
137 | public data: Record = {};
138 | public listeners: Map = new Map();
139 | public globalListeners: Set = new Set();
140 | public config: FlippingConfig;
141 | public static prefix = 'flip';
142 | public static keyAttr = 'data-flip-key';
143 |
144 | public static defaultConfig = {
145 | getKey(element: Element): string {
146 | const key = element.getAttribute(Flipping.keyAttr);
147 |
148 | if (!key) {
149 | // tslint:disable-next-line:no-console
150 | console.error(`No flip key found for element:`, element);
151 | throw new Error(`Missing flip key for element`);
152 | }
153 |
154 | return key;
155 | }
156 | };
157 |
158 | public static create(config: FlippingConfig = Flipping.defaultConfig) {
159 | return new Flipping(config);
160 | }
161 |
162 | constructor(config: FlippingConfig = Flipping.defaultConfig) {
163 | this.config = {
164 | ...Flipping.defaultConfig,
165 | ...config
166 | };
167 | }
168 |
169 | public onFlip(globalListener: FlipListener): void {
170 | this.globalListeners.add(globalListener);
171 | }
172 |
173 | private findAncestor(element: HTMLElement): HTMLElement | undefined {
174 | let currentParent = element.parentElement;
175 |
176 | while (currentParent && !currentParent.hasAttribute(Flipping.keyAttr)) {
177 | currentParent = currentParent.parentElement;
178 | }
179 |
180 | return currentParent || undefined;
181 | }
182 |
183 | private set(key: string, data: FlipData): void {
184 | this.data[key] = data;
185 |
186 | this.globalListeners.forEach(listener => {
187 | listener(data);
188 | });
189 |
190 | if (data.element) {
191 | data.element.dataset.flipState = data.state;
192 | } else if (data.previous && data.previous.element) {
193 | data.previous.element.dataset.flipState = data.state;
194 | }
195 | if (!data.rect || !data.styles) {
196 | return;
197 | }
198 |
199 | const distX = Math.abs(data.delta.left);
200 | const distY = Math.abs(data.delta.top);
201 |
202 | // const h = Math.hypot(distX, distY);
203 | // const arm = h / 2 / Math.cos(Math.atan(distX / distY));
204 | // const arm2 = (distX + distY) / 2;
205 | // const armRatio = arm / distY;
206 | // const theta = Math.asin(h / 2 / arm) * 2;
207 |
208 | const inverseXY = `translate(${data.inverse.left}px, ${
209 | data.inverse.top
210 | }px)`;
211 | const inverseScale = `scale(${data.inverse.widthRatio}, ${
212 | data.inverse.heightRatio
213 | })`;
214 |
215 | // const s = `translateY(${data.inverse.top *
216 | // armRatio}px) rotate(${-theta}rad) translateY(${data.delta.top *
217 | // armRatio}px) rotate(${theta}rad)`;
218 |
219 | // const ss = `translateY(${data.inverse.top *
220 | // armRatio}px) rotate(0deg) translateY(${data.delta.top *
221 | // armRatio}px) rotate(0deg)`;
222 |
223 | const a = `translate(${data.inverse.left + data.inverse.top}px, ${
224 | data.inverse.top
225 | }px) rotate(-90deg) translateY(${
226 | data.delta.top
227 | }px) rotate(90deg) ${inverseScale}`;
228 | const aa = `translate(${data.inverse.left + data.inverse.top}px, ${
229 | data.inverse.top
230 | }px) rotate(0deg) translate(${data.delta.left + data.delta.top}px, ${
231 | data.delta.top
232 | }px) rotate(0deg) scale(1)`;
233 |
234 | Flipping.style(
235 | data,
236 | {
237 | // position
238 | x: data.rect.left,
239 | y: data.rect.top,
240 | // delta
241 | dx: data.delta.left,
242 | dy: data.delta.top,
243 | // inverse delta
244 | ix: data.inverse.left,
245 | iy: data.inverse.top,
246 | 'inverse-xy': inverseXY,
247 | // scale
248 | iw: data.inverse.width,
249 | ih: data.inverse.height,
250 | 'iw-ratio': data.inverse.widthRatio,
251 | 'ih-ratio': data.inverse.heightRatio,
252 | 'inverse-scale': inverseScale,
253 | // distance
254 | 'distance-x': distX,
255 | 'distance-y': distY,
256 | distance: Math.hypot(distX, distY),
257 | // radius
258 | 'inverse-radius-x': `calc((${data.styles.radius} * ${
259 | data.delta.widthRatio
260 | }))`,
261 | 'inverse-radius-y': `calc((${data.styles.radius} * ${
262 | data.delta.heightRatio
263 | }))`,
264 | 'inverse-radius': `var(--flip-inverse-radius-x) / var(--flip-inverse-radius-y)`,
265 | // curve
266 | curve: a,
267 | fcurve: aa
268 | },
269 | { px: true }
270 | );
271 | }
272 |
273 | public static style(
274 | data: FlipData,
275 | styles: Record,
276 | options?: Partial<{ px: boolean }> // TODO
277 | ): void {
278 | const { element } = data;
279 |
280 | if (!element) {
281 | return;
282 | }
283 |
284 | const resolvedOptions = { px: true, ...options };
285 |
286 | Object.keys(styles).forEach(property => {
287 | const fullProperty = `--${Flipping.prefix + '-' + property}`;
288 | const value = `${styles[property]}`;
289 | element.style.setProperty(fullProperty, value);
290 |
291 | if (resolvedOptions.px && !isNaN(+fullProperty)) {
292 | element.style.setProperty(`${fullProperty}-px`, `${value}px`);
293 | }
294 | });
295 | }
296 |
297 | private toElementMap(
298 | elements: HTMLElement[] | FlipElementMap | undefined
299 | ): FlipElementMap {
300 | if (!elements) {
301 | elements = (Array.from(
302 | document.querySelectorAll(`[${Flipping.keyAttr}]`)
303 | ) as HTMLElement[]).filter(el => isVisible(el));
304 | }
305 | const map: FlipElementMap = {};
306 |
307 | if (Array.isArray(elements)) {
308 | elements.forEach(element => {
309 | const key =
310 | typeof this.config.getKey === 'string'
311 | ? element.getAttribute(this.config.getKey)
312 | : this.config.getKey(element);
313 |
314 | if (!key) {
315 | return;
316 | }
317 |
318 | map[key] = element;
319 | });
320 |
321 | return map;
322 | }
323 |
324 | return elements;
325 | }
326 |
327 | public read(elements?: HTMLElement[] | FlipElementMap): void {
328 | const elementMap = this.toElementMap(elements);
329 | Object.keys(elementMap).forEach(key => {
330 | const element = elementMap[key];
331 | const previous = this.data[key];
332 |
333 | if (!element) {
334 | return;
335 | }
336 |
337 | this.set(key, {
338 | key,
339 | element,
340 | state: 'read',
341 | rect: getRect(element, this.findAncestor(element)),
342 | styles: getStyles(element),
343 | delta: NO_DELTA,
344 | inverse: NO_DELTA,
345 | previous
346 | });
347 | });
348 | }
349 |
350 | public flip(elements?: HTMLElement[]) {
351 | const elementMap = this.toElementMap(elements);
352 | const allKeys = new Set(
353 | Object.keys(this.data).concat(Object.keys(elementMap))
354 | );
355 |
356 | allKeys.forEach(key => {
357 | const element = elementMap[key];
358 | let data: FlipData;
359 | const existingData = this.data[key];
360 |
361 | const visible = isVisible(element);
362 |
363 | if (!element || !visible) {
364 | data = {
365 | key,
366 | element,
367 | state: 'exit',
368 | rect: undefined,
369 | styles: undefined,
370 | delta: NO_DELTA,
371 | inverse: NO_DELTA,
372 | previous: existingData
373 | };
374 | } else if (!existingData && element && visible) {
375 | data = {
376 | key,
377 | element,
378 | state: 'enter',
379 | rect: getRect(element, this.findAncestor(element)),
380 | styles: getStyles(element),
381 | delta: NO_DELTA,
382 | inverse: NO_DELTA,
383 | previous: undefined
384 | };
385 | } else if (existingData && element && visible) {
386 | const delta = existingData.rect
387 | ? getDelta(
388 | existingData.rect,
389 | getRect(element, this.findAncestor(element))
390 | )
391 | : NO_DELTA;
392 | // console.log(existingData, getRect(element), delta);
393 | data = {
394 | key,
395 | element,
396 | state:
397 | existingData.state === 'exit'
398 | ? visible
399 | ? 'enter'
400 | : 'exit'
401 | : visible
402 | ? 'move'
403 | : 'exit',
404 | rect: getRect(element, this.findAncestor(element)),
405 | styles: getStyles(element),
406 | delta,
407 | inverse: getInverse(delta),
408 | previous: existingData
409 | };
410 | }
411 |
412 | requestAnimationFrame(() => {
413 | this.set(key, {
414 | ...data,
415 | state: `pre-${data.state}` as 'pre-enter' | 'pre-move' | 'pre-exit'
416 | });
417 |
418 | requestAnimationFrame(() => {
419 | this.set(key, data);
420 | });
421 | });
422 | });
423 | }
424 | public wrap(
425 | fn: (...args: any[]) => T,
426 | elements?: HTMLElement[]
427 | ): (...args: any[]) => T {
428 | return (...args) => {
429 | this.read(elements);
430 | const result = fn.apply(null, args) as T;
431 | this.flip(elements);
432 | return result;
433 | };
434 | }
435 | public applyDefaultStyles() {
436 | const styles = `
437 | [data-flip-state] {
438 | will-change: transform;
439 | }
440 | [data-flip-state="read"] {
441 | transition: none;
442 | }
443 | [data-flip-state="pre-move"] {
444 | transition: none;
445 | transform: var(--flip-inverse-xy);
446 | --clip-path: polygon(0% 0%, calc(var(--flip-iw-ratio) * 100%) 0, calc(var(--flip-iw-ratio) * 100%) calc(var(--flip-ih-ratio) * 100%), 0 calc(var(--flip-ih-ratio) * 100%));
447 | }
448 | [data-flip-state="move"] {
449 | transition: all .6s ease;
450 | transform: none;
451 | --clip-path: polygon(0% 0%, 100% 0, 100% 100%, 0 100%);
452 | }
453 | `;
454 |
455 | const elStyle = document.createElement('style');
456 | elStyle.innerHTML = styles;
457 | document.head.appendChild(elStyle);
458 | }
459 | }
460 |
461 | export const create = Flipping.create;
462 |
--------------------------------------------------------------------------------
/test/flipping.test.ts:
--------------------------------------------------------------------------------
1 | import Flipping from '../src/flipping';
2 | import { assert } from 'chai';
3 |
4 | (global as any).getComputedStyle = () => ({});
5 |
6 | declare type Element = {
7 | getAttribute: (attr: string) => string;
8 | hasAttribute: (attr: string) => boolean;
9 | getBoundingClientRect: () => IRect;
10 | _setRect: (rect: IRect) => void;
11 | };
12 |
13 | function mockGetBounds(element: Element) {
14 | return {
15 | ...element.getBoundingClientRect()
16 | };
17 | }
18 |
19 | interface IRect {
20 | top: number;
21 | left: number;
22 | width: number;
23 | height: number;
24 | }
25 |
26 | function createMockElement(key: string, rect: IRect): Element {
27 | let currentRect = rect;
28 |
29 | return {
30 | getAttribute() {
31 | return key;
32 | },
33 | hasAttribute() {
34 | return false;
35 | },
36 | getBoundingClientRect() {
37 | return currentRect;
38 | },
39 | _setRect(newRect: IRect) {
40 | currentRect = newRect;
41 | }
42 | };
43 | }
44 |
45 | function createMockFlip(element: Element, options) {
46 | return new Flipping({
47 | selector: () => [element as Element],
48 | getBounds: mockGetBounds,
49 | parent: createMockElement('parent', {
50 | top: 0,
51 | left: 0,
52 | width: 1000,
53 | height: 1000
54 | }),
55 | ...options
56 | });
57 | }
58 |
59 | describe('Flipping', () => {
60 | it('should exist', () => {
61 | assert.isFunction(Flipping);
62 | });
63 |
64 | describe('reading', () => {
65 | it('should provide the current bounds of the element', done => {
66 | const mockElement = createMockElement('test', {
67 | top: 0,
68 | left: 0,
69 | width: 10,
70 | height: 10
71 | });
72 | const MockFlip = createMockFlip(mockElement, {
73 | onRead: states => {
74 | assert.deepEqual(
75 | states.test.bounds,
76 | mockElement.getBoundingClientRect()
77 | );
78 | done();
79 | }
80 | });
81 |
82 | MockFlip.read();
83 | });
84 | });
85 |
86 | describe('flipping', () => {
87 | it('should provide the correct first, last and delta of the element', done => {
88 | const mockElement = createMockElement('test', {
89 | top: 0,
90 | left: 0,
91 | width: 100,
92 | height: 100
93 | });
94 | const MockFlip = createMockFlip(mockElement, {
95 | onFlip: states => {
96 | assert.deepEqual(
97 | states.test.previous.bounds,
98 | {
99 | top: 0,
100 | left: 0,
101 | height: 100,
102 | width: 100
103 | },
104 | 'previous bounds should be correct'
105 | );
106 | assert.deepEqual(
107 | states.test.bounds,
108 | {
109 | top: 20,
110 | left: 30,
111 | height: 200,
112 | width: 400
113 | },
114 | 'bounds should be correct'
115 | );
116 | assert.deepEqual(
117 | states.test.delta,
118 | {
119 | top: -20,
120 | left: -30,
121 | height: 0.5,
122 | width: 0.25
123 | },
124 | 'delta should be correct'
125 | );
126 | done();
127 | }
128 | });
129 |
130 | MockFlip.read();
131 |
132 | mockElement._setRect({
133 | top: 20,
134 | left: 30,
135 | height: 200,
136 | width: 400
137 | });
138 |
139 | MockFlip.flip();
140 | });
141 | });
142 |
143 | describe('progress', () => {
144 | it('should calculate fractional delta', () => {
145 | const delta = {
146 | top: 10,
147 | left: 20,
148 | width: 2,
149 | height: 3
150 | };
151 | const halfProgress = Flipping.progress(delta, 0.5);
152 | assert.deepEqual(halfProgress, {
153 | top: 5,
154 | left: 10,
155 | width: 1,
156 | height: 1.5
157 | });
158 | });
159 |
160 | it('should return zero delta if not moved', () => {
161 | const halfProgress = Flipping.progress(undefined, 0.5);
162 | assert.deepEqual(halfProgress, {
163 | top: 0,
164 | left: 0,
165 | width: 1,
166 | height: 1
167 | });
168 | });
169 | });
170 | });
171 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "ES2015",
4 | "declaration": true,
5 | "lib": ["es2015", "dom", "dom.iterable"],
6 | "types": ["mocha", "node"],
7 | "target": "es5",
8 | "noUnusedLocals": true,
9 | "noUnusedParameters": true,
10 | "strictNullChecks": true,
11 | "outDir": "./lib",
12 | "esModuleInterop": true
13 | },
14 | "include": ["src/**/*"]
15 | }
16 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "no-unused-expression": true,
4 | "no-duplicate-variable": true,
5 | "no-unused-variable": true,
6 | "curly": true,
7 | "class-name": true,
8 | "semicolon": ["always"],
9 | "triple-equals": true,
10 | "no-console": [
11 | true
12 | ]
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/typings.json:
--------------------------------------------------------------------------------
1 | {
2 | "globalDependencies": {
3 | "mocha": "registry:dt/mocha#2.2.5+20170311011848"
4 | },
5 | "dependencies": {
6 | "chai": "registry:npm/chai#3.5.0+20160723033700"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/typings/globals/mocha/index.d.ts:
--------------------------------------------------------------------------------
1 | // Generated by typings
2 | // Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/82878f6116d4b7a56f070c59cbc022ce17fe4fdd/mocha/index.d.ts
3 | interface MochaSetupOptions {
4 | //milliseconds to wait before considering a test slow
5 | slow?: number;
6 |
7 | // timeout in milliseconds
8 | timeout?: number;
9 |
10 | // ui name "bdd", "tdd", "exports" etc
11 | ui?: string;
12 |
13 | //array of accepted globals
14 | globals?: any[];
15 |
16 | // reporter instance (function or string), defaults to `mocha.reporters.Spec`
17 | reporter?: any;
18 |
19 | // bail on the first test failure
20 | bail?: boolean;
21 |
22 | // ignore global leaks
23 | ignoreLeaks?: boolean;
24 |
25 | // grep string or regexp to filter tests with
26 | grep?: any;
27 | }
28 |
29 | declare var mocha: Mocha;
30 | declare var describe: Mocha.IContextDefinition;
31 | declare var xdescribe: Mocha.IContextDefinition;
32 | // alias for `describe`
33 | declare var context: Mocha.IContextDefinition;
34 | // alias for `describe`
35 | declare var suite: Mocha.IContextDefinition;
36 | declare var it: Mocha.ITestDefinition;
37 | declare var xit: Mocha.ITestDefinition;
38 | // alias for `it`
39 | declare var test: Mocha.ITestDefinition;
40 | declare var specify: Mocha.ITestDefinition;
41 |
42 | // Used with the --delay flag; see https://mochajs.org/#hooks
43 | declare function run(): void;
44 |
45 | interface MochaDone {
46 | (error?: any): any;
47 | }
48 |
49 | declare function setup(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
50 | declare function teardown(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
51 | declare function suiteSetup(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
52 | declare function suiteTeardown(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
53 | declare function before(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
54 | declare function before(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
55 | declare function after(callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
56 | declare function after(description: string, callback: (this: Mocha.IHookCallbackContext, done: MochaDone) => any): void;
57 | declare function beforeEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
58 | declare function beforeEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
59 | declare function afterEach(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
60 | declare function afterEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void;
61 |
62 | declare class Mocha {
63 | currentTest: Mocha.ITestDefinition;
64 | constructor(options?: {
65 | grep?: RegExp;
66 | ui?: string;
67 | reporter?: string;
68 | timeout?: number;
69 | reporterOptions?: any;
70 | slow?: number;
71 | bail?: boolean;
72 | });
73 |
74 | /** Setup mocha with the given options. */
75 | setup(options: MochaSetupOptions): Mocha;
76 | bail(value?: boolean): Mocha;
77 | addFile(file: string): Mocha;
78 | /** Sets reporter by name, defaults to "spec". */
79 | reporter(name: string): Mocha;
80 | /** Sets reporter constructor, defaults to mocha.reporters.Spec. */
81 | reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha;
82 | ui(value: string): Mocha;
83 | grep(value: string): Mocha;
84 | grep(value: RegExp): Mocha;
85 | invert(): Mocha;
86 | ignoreLeaks(value: boolean): Mocha;
87 | checkLeaks(): Mocha;
88 | /**
89 | * Function to allow assertion libraries to throw errors directly into mocha.
90 | * This is useful when running tests in a browser because window.onerror will
91 | * only receive the 'message' attribute of the Error.
92 | */
93 | throwError(error: Error): void;
94 | /** Enables growl support. */
95 | growl(): Mocha;
96 | globals(value: string): Mocha;
97 | globals(values: string[]): Mocha;
98 | useColors(value: boolean): Mocha;
99 | useInlineDiffs(value: boolean): Mocha;
100 | timeout(value: number): Mocha;
101 | slow(value: number): Mocha;
102 | enableTimeouts(value: boolean): Mocha;
103 | asyncOnly(value: boolean): Mocha;
104 | noHighlighting(value: boolean): Mocha;
105 | /** Runs tests and invokes `onComplete()` when finished. */
106 | run(onComplete?: (failures: number) => void): Mocha.IRunner;
107 | }
108 |
109 | // merge the Mocha class declaration with a module
110 | declare namespace Mocha {
111 | interface ISuiteCallbackContext {
112 | timeout(ms: number): this;
113 | retries(n: number): this;
114 | slow(ms: number): this;
115 | }
116 |
117 | interface IHookCallbackContext {
118 | skip(): this;
119 | timeout(ms: number): this;
120 | [index: string]: any;
121 | }
122 |
123 |
124 | interface ITestCallbackContext {
125 | skip(): this;
126 | timeout(ms: number): this;
127 | retries(n: number): this;
128 | slow(ms: number): this;
129 | [index: string]: any;
130 | }
131 |
132 | /** Partial interface for Mocha's `Runnable` class. */
133 | interface IRunnable {
134 | title: string;
135 | fn: Function;
136 | async: boolean;
137 | sync: boolean;
138 | timedOut: boolean;
139 | }
140 |
141 | /** Partial interface for Mocha's `Suite` class. */
142 | interface ISuite {
143 | parent: ISuite;
144 | title: string;
145 |
146 | fullTitle(): string;
147 | }
148 |
149 | /** Partial interface for Mocha's `Test` class. */
150 | interface ITest extends IRunnable {
151 | parent: ISuite;
152 | pending: boolean;
153 | state: 'failed'|'passed'|undefined;
154 |
155 | fullTitle(): string;
156 | }
157 |
158 | interface IBeforeAndAfterContext extends IHookCallbackContext {
159 | currentTest: ITest;
160 | }
161 |
162 |
163 | /** Partial interface for Mocha's `Runner` class. */
164 | interface IRunner { }
165 |
166 | interface IContextDefinition {
167 | (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;
168 | only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite;
169 | skip(description: string, callback: (this: ISuiteCallbackContext) => void): void;
170 | timeout(ms: number): void;
171 | }
172 |
173 | interface ITestDefinition {
174 | (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;
175 | only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest;
176 | skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void;
177 | timeout(ms: number): void;
178 | state: "failed" | "passed";
179 | }
180 |
181 | export module reporters {
182 | export class Base {
183 | stats: {
184 | suites: number;
185 | tests: number;
186 | passes: number;
187 | pending: number;
188 | failures: number;
189 | };
190 |
191 | constructor(runner: IRunner);
192 | }
193 |
194 | export class Doc extends Base { }
195 | export class Dot extends Base { }
196 | export class HTML extends Base { }
197 | export class HTMLCov extends Base { }
198 | export class JSON extends Base { }
199 | export class JSONCov extends Base { }
200 | export class JSONStream extends Base { }
201 | export class Landing extends Base { }
202 | export class List extends Base { }
203 | export class Markdown extends Base { }
204 | export class Min extends Base { }
205 | export class Nyan extends Base { }
206 | export class Progress extends Base {
207 | /**
208 | * @param options.open String used to indicate the start of the progress bar.
209 | * @param options.complete String used to indicate a complete test on the progress bar.
210 | * @param options.incomplete String used to indicate an incomplete test on the progress bar.
211 | * @param options.close String used to indicate the end of the progress bar.
212 | */
213 | constructor(runner: IRunner, options?: {
214 | open?: string;
215 | complete?: string;
216 | incomplete?: string;
217 | close?: string;
218 | });
219 | }
220 | export class Spec extends Base { }
221 | export class TAP extends Base { }
222 | export class XUnit extends Base {
223 | constructor(runner: IRunner, options?: any);
224 | }
225 | }
226 | }
227 |
228 | declare module "mocha" {
229 | export = Mocha;
230 | }
231 |
--------------------------------------------------------------------------------
/typings/globals/mocha/typings.json:
--------------------------------------------------------------------------------
1 | {
2 | "resolution": "main",
3 | "tree": {
4 | "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/82878f6116d4b7a56f070c59cbc022ce17fe4fdd/mocha/index.d.ts",
5 | "raw": "registry:dt/mocha#2.2.5+20170311011848",
6 | "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/82878f6116d4b7a56f070c59cbc022ce17fe4fdd/mocha/index.d.ts"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/typings/index.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/typings/modules/chai/index.d.ts:
--------------------------------------------------------------------------------
1 | // Generated by typings
2 | // Source: https://raw.githubusercontent.com/typed-typings/npm-assertion-error/105841317bd2bdd5d110bfb763e49e482a77230d/main.d.ts
3 | declare module '~chai~assertion-error/main' {
4 | // Type definitions for assertion-error 1.0.0
5 | // Project: https://github.com/chaijs/assertion-error
6 | // Definitions by: Bart van der Schoor
7 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
8 |
9 | export class AssertionError implements Error {
10 | constructor(message: string, props?: any, ssf?: Function);
11 | public name: string;
12 | public message: string;
13 | public showDiff: boolean;
14 | public stack: string;
15 |
16 | /**
17 | * Allow errors to be converted to JSON for static transfer.
18 | *
19 | * @param {Boolean} include stack (default: `true`)
20 | * @return {Object} object that can be `JSON.stringify`
21 | */
22 | public toJSON(stack: boolean): Object;
23 | }
24 | }
25 |
26 | // Generated by typings
27 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Assert.d.ts
28 | declare module '~chai/lib/Assert' {
29 | export interface AssertStatic extends Assert {
30 | }
31 |
32 | export interface Assert {
33 | /**
34 | * @param expression Expression to test for truthiness.
35 | * @param message Message to display on error.
36 | */
37 | (expression: any, message?: string): void;
38 | (expression: any, messageCallback: () => string): void;
39 |
40 | fail(actual?: any, expected?: any, msg?: string, operator?: string): void;
41 |
42 | ok(val: any, msg?: string): void;
43 | isOk(val: any, msg?: string): void;
44 | notOk(val: any, msg?: string): void;
45 | isNotOk(val: any, msg?: string): void;
46 |
47 | equal(act: any, exp: any, msg?: string): void;
48 | notEqual(act: any, exp: any, msg?: string): void;
49 |
50 | strictEqual(act: any, exp: any, msg?: string): void;
51 | notStrictEqual(act: any, exp: any, msg?: string): void;
52 |
53 | deepEqual(act: any, exp: any, msg?: string): void;
54 | notDeepEqual(act: any, exp: any, msg?: string): void;
55 |
56 | isTrue(val: any, msg?: string): void;
57 | isFalse(val: any, msg?: string): void;
58 |
59 | isNotTrue(val: any, msg?: string): void;
60 | isNotFalse(val: any, msg?: string): void;
61 |
62 | isNull(val: any, msg?: string): void;
63 | isNotNull(val: any, msg?: string): void;
64 |
65 | isUndefined(val: any, msg?: string): void;
66 | isDefined(val: any, msg?: string): void;
67 |
68 | isNaN(val: any, msg?: string): void;
69 | isNotNaN(val: any, msg?: string): void;
70 |
71 | isAbove(val: number, abv: number, msg?: string): void;
72 | isBelow(val: number, blw: number, msg?: string): void;
73 |
74 | isAtLeast(val: number, atlst: number, msg?: string): void;
75 | isAtMost(val: number, atmst: number, msg?: string): void;
76 |
77 | isFunction(val: any, msg?: string): void;
78 | isNotFunction(val: any, msg?: string): void;
79 |
80 | isObject(val: any, msg?: string): void;
81 | isNotObject(val: any, msg?: string): void;
82 |
83 | isArray(val: any, msg?: string): void;
84 | isNotArray(val: any, msg?: string): void;
85 |
86 | isString(val: any, msg?: string): void;
87 | isNotString(val: any, msg?: string): void;
88 |
89 | isNumber(val: any, msg?: string): void;
90 | isNotNumber(val: any, msg?: string): void;
91 |
92 | isBoolean(val: any, msg?: string): void;
93 | isNotBoolean(val: any, msg?: string): void;
94 |
95 | typeOf(val: any, type: string, msg?: string): void;
96 | notTypeOf(val: any, type: string, msg?: string): void;
97 |
98 | instanceOf(val: any, type: Function, msg?: string): void;
99 | notInstanceOf(val: any, type: Function, msg?: string): void;
100 |
101 | include(exp: string, inc: any, msg?: string): void;
102 | include(exp: any[], inc: any, msg?: string): void;
103 | include(exp: Object, inc: Object, msg?: string): void;
104 |
105 | notInclude(exp: string, inc: any, msg?: string): void;
106 | notInclude(exp: any[], inc: any, msg?: string): void;
107 |
108 | match(exp: any, re: RegExp, msg?: string): void;
109 | notMatch(exp: any, re: RegExp, msg?: string): void;
110 |
111 | property(obj: Object, prop: string, msg?: string): void;
112 | notProperty(obj: Object, prop: string, msg?: string): void;
113 | deepProperty(obj: Object, prop: string, msg?: string): void;
114 | notDeepProperty(obj: Object, prop: string, msg?: string): void;
115 |
116 | propertyVal(obj: Object, prop: string, val: any, msg?: string): void;
117 | propertyNotVal(obj: Object, prop: string, val: any, msg?: string): void;
118 |
119 | deepPropertyVal(obj: Object, prop: string, val: any, msg?: string): void;
120 | deepPropertyNotVal(obj: Object, prop: string, val: any, msg?: string): void;
121 |
122 | lengthOf(exp: any, len: number, msg?: string): void;
123 |
124 | throw(fn: Function, msg?: string): void;
125 | throw(fn: Function, regExp: RegExp): void;
126 | throw(fn: Function, errType: Function, msg?: string): void;
127 | throw(fn: Function, errType: Function, regExp: RegExp): void;
128 |
129 | throws(fn: Function, msg?: string): void;
130 | throws(fn: Function, regExp: RegExp): void;
131 | throws(fn: Function, errType: Function, msg?: string): void;
132 | throws(fn: Function, errType: Function, regExp: RegExp): void;
133 |
134 | Throw(fn: Function, msg?: string): void;
135 | Throw(fn: Function, regExp: RegExp): void;
136 | Throw(fn: Function, errType: Function, msg?: string): void;
137 | Throw(fn: Function, errType: Function, regExp: RegExp): void;
138 |
139 | doesNotThrow(fn: Function, msg?: string): void;
140 | doesNotThrow(fn: Function, regExp: RegExp): void;
141 | doesNotThrow(fn: Function, errType: Function, msg?: string): void;
142 | doesNotThrow(fn: Function, errType: Function, regExp: RegExp): void;
143 |
144 | operator(val: any, operator: string, val2: any, msg?: string): void;
145 | closeTo(act: number, exp: number, delta: number, msg?: string): void;
146 | approximately(act: number, exp: number, delta: number, msg?: string): void;
147 |
148 | sameMembers(set1: any[], set2: any[], msg?: string): void;
149 | sameDeepMembers(set1: any[], set2: any[], msg?: string): void;
150 | includeMembers(superset: any[], subset: any[], msg?: string): void;
151 | includeDeepMembers(superset: any[], subset: any[], msg?: string): void;
152 |
153 | ifError(val: any, msg?: string): void;
154 |
155 | isExtensible(obj: {}, msg?: string): void;
156 | extensible(obj: {}, msg?: string): void;
157 | isNotExtensible(obj: {}, msg?: string): void;
158 | notExtensible(obj: {}, msg?: string): void;
159 |
160 | isSealed(obj: {}, msg?: string): void;
161 | sealed(obj: {}, msg?: string): void;
162 | isNotSealed(obj: {}, msg?: string): void;
163 | notSealed(obj: {}, msg?: string): void;
164 |
165 | isFrozen(obj: Object, msg?: string): void;
166 | frozen(obj: Object, msg?: string): void;
167 | isNotFrozen(obj: Object, msg?: string): void;
168 | notFrozen(obj: Object, msg?: string): void;
169 |
170 | oneOf(inList: any, list: any[], msg?: string): void;
171 |
172 | changes(fn: Function, obj: {}, property: string): void;
173 | doesNotChange(fn: Function, obj: {}, property: string): void;
174 | increases(fn: Function, obj: {}, property: string): void;
175 | doesNotIncrease(fn: Function, obj: {}, property: string): void;
176 |
177 | decreases(fn: Function, obj: {}, property: string): void;
178 | doesNotDecrease(fn: Function, obj: {}, property: string): void;
179 | }
180 | }
181 | declare module 'chai/lib/Assert' {
182 | export * from '~chai/lib/Assert';
183 | }
184 |
185 | // Generated by typings
186 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Assertion.d.ts
187 | declare module '~chai/lib/Assertion' {
188 | export interface AssertionStatic {
189 | (target?: any, message?: string, stack?: Function): Assertion;
190 | new (target?: any, message?: string, stack?: Function): Assertion;
191 | }
192 |
193 | export interface Assertion extends LanguageChains, NumericComparison, TypeComparison {
194 | not: Assertion;
195 | deep: Deep;
196 | any: KeyFilter;
197 | all: KeyFilter;
198 | a: TypeComparison;
199 | an: TypeComparison;
200 | include: Include;
201 | includes: Include;
202 | contain: Include;
203 | contains: Include;
204 | ok: Assertion;
205 | true: Assertion;
206 | false: Assertion;
207 | null: Assertion;
208 | undefined: Assertion;
209 | NaN: Assertion;
210 | exist: Assertion;
211 | empty: Assertion;
212 | arguments: Assertion;
213 | Arguments: Assertion;
214 | equal: Equal;
215 | equals: Equal;
216 | eq: Equal;
217 | eql: Equal;
218 | eqls: Equal;
219 | property: Property;
220 | ownProperty: OwnProperty;
221 | haveOwnProperty: OwnProperty;
222 | ownPropertyDescriptor: OwnPropertyDescriptor;
223 | haveOwnPropertyDescriptor: OwnPropertyDescriptor;
224 | length: Length;
225 | lengthOf: Length;
226 | match: Match;
227 | matches: Match;
228 | string(str: string, message?: string): Assertion;
229 | keys: Keys;
230 | key(str: string): Assertion;
231 | throw: Throw;
232 | throws: Throw;
233 | Throw: Throw;
234 | respondTo: RespondTo;
235 | respondsTo: RespondTo;
236 | itself: Assertion;
237 | satisfy: Satisfy;
238 | satisfies: Satisfy;
239 | closeTo: CloseTo;
240 | approximately: CloseTo;
241 | members: Members;
242 | increase: PropertyChange;
243 | increases: PropertyChange;
244 | decrease: PropertyChange;
245 | decreases: PropertyChange;
246 | change: PropertyChange;
247 | changes: PropertyChange;
248 | extensible: Assertion;
249 | sealed: Assertion;
250 | frozen: Assertion;
251 | oneOf(list: any[], message?: string): Assertion;
252 | }
253 |
254 | export interface LanguageChains {
255 | to: Assertion;
256 | be: Assertion;
257 | been: Assertion;
258 | is: Assertion;
259 | that: Assertion;
260 | which: Assertion;
261 | and: Assertion;
262 | has: Assertion;
263 | have: Assertion;
264 | with: Assertion;
265 | at: Assertion;
266 | of: Assertion;
267 | same: Assertion;
268 | }
269 |
270 | export interface NumericComparison {
271 | above: NumberComparer;
272 | gt: NumberComparer;
273 | greaterThan: NumberComparer;
274 | least: NumberComparer;
275 | gte: NumberComparer;
276 | below: NumberComparer;
277 | lt: NumberComparer;
278 | lessThan: NumberComparer;
279 | most: NumberComparer;
280 | lte: NumberComparer;
281 | within(start: number, finish: number, message?: string): Assertion;
282 | }
283 |
284 | export interface NumberComparer {
285 | (value: number, message?: string): Assertion;
286 | }
287 |
288 | export interface TypeComparison {
289 | (type: string, message?: string): Assertion;
290 | instanceof: InstanceOf;
291 | instanceOf: InstanceOf;
292 | }
293 |
294 | export interface InstanceOf {
295 | (constructor: Object, message?: string): Assertion;
296 | }
297 |
298 | export interface CloseTo {
299 | (expected: number, delta: number, message?: string): Assertion;
300 | }
301 |
302 | export interface Deep {
303 | equal: Equal;
304 | equals: Equal;
305 | eq: Equal;
306 | include: Include;
307 | property: Property;
308 | members: Members;
309 | }
310 |
311 | export interface KeyFilter {
312 | keys: Keys;
313 | }
314 |
315 | export interface Equal {
316 | (value: any, message?: string): Assertion;
317 | }
318 |
319 | export interface Property {
320 | (name: string, value?: any, message?: string): Assertion;
321 | }
322 |
323 | export interface OwnProperty {
324 | (name: string, message?: string): Assertion;
325 | }
326 |
327 | export interface OwnPropertyDescriptor {
328 | (name: string, descriptor: PropertyDescriptor, message?: string): Assertion;
329 | (name: string, message?: string): Assertion;
330 | }
331 |
332 | export interface Length extends LanguageChains, NumericComparison {
333 | (length: number, message?: string): Assertion;
334 | }
335 |
336 | export interface Include {
337 | (value: Object, message?: string): Assertion;
338 | (value: string, message?: string): Assertion;
339 | (value: number, message?: string): Assertion;
340 | string(value: string, message?: string): Assertion;
341 | keys: Keys;
342 | members: Members;
343 | any: KeyFilter;
344 | all: KeyFilter;
345 | }
346 |
347 | export interface Match {
348 | (regexp: RegExp | string, message?: string): Assertion;
349 | }
350 |
351 | export interface Keys {
352 | (...keys: any[]): Assertion;
353 | (keys: any[]): Assertion;
354 | (keys: Object): Assertion;
355 | }
356 |
357 | export interface Throw {
358 | (): Assertion;
359 | (expected: string, message?: string): Assertion;
360 | (expected: RegExp, message?: string): Assertion;
361 | (constructor: Error, expected?: string, message?: string): Assertion;
362 | (constructor: Error, expected?: RegExp, message?: string): Assertion;
363 | (constructor: Function, expected?: string, message?: string): Assertion;
364 | (constructor: Function, expected?: RegExp, message?: string): Assertion;
365 | }
366 |
367 | export interface RespondTo {
368 | (method: string, message?: string): Assertion;
369 | }
370 |
371 | export interface Satisfy {
372 | (matcher: Function, message?: string): Assertion;
373 | }
374 |
375 | export interface Members {
376 | (set: any[], message?: string): Assertion;
377 | }
378 |
379 | export interface PropertyChange {
380 | (object: Object, prop: string, msg?: string): Assertion;
381 | }
382 | }
383 | declare module 'chai/lib/Assertion' {
384 | export * from '~chai/lib/Assertion';
385 | }
386 |
387 | // Generated by typings
388 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Expect.d.ts
389 | declare module '~chai/lib/Expect' {
390 | import {AssertionStatic} from '~chai/lib/Assertion';
391 |
392 | export interface ExpectStatic extends AssertionStatic {
393 | fail(actual?: any, expected?: any, message?: string, operator?: string): void;
394 | }
395 | }
396 | declare module 'chai/lib/Expect' {
397 | export * from '~chai/lib/Expect';
398 | }
399 |
400 | // Generated by typings
401 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Should.d.ts
402 | declare module '~chai/lib/Should' {
403 | export interface Should extends ShouldAssertion {
404 | not: ShouldAssertion;
405 | fail(actual: any, expected: any, message?: string, operator?: string): void;
406 | }
407 |
408 | export interface ShouldAssertion {
409 | Throw: ShouldThrow;
410 | throw: ShouldThrow;
411 | equal(value1: any, value2: any, message?: string): void;
412 | exist(value: any, message?: string): void;
413 | }
414 |
415 | export interface ShouldThrow {
416 | (actual: Function): void;
417 | (actual: Function, expected: string | RegExp, message?: string): void;
418 | (actual: Function, constructor: Error | Function, expected?: string | RegExp, message?: string): void;
419 | }
420 | }
421 | declare module 'chai/lib/Should' {
422 | export * from '~chai/lib/Should';
423 | }
424 |
425 | // Generated by typings
426 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Config.d.ts
427 | declare module '~chai/lib/Config' {
428 | export interface Config {
429 | includeStack: boolean;
430 | showDiff: boolean;
431 | truncateThreshold: number;
432 | }
433 | }
434 | declare module 'chai/lib/Config' {
435 | export * from '~chai/lib/Config';
436 | }
437 |
438 | // Generated by typings
439 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Utils.d.ts
440 | declare module '~chai/lib/Utils' {
441 | import {Assertion} from '~chai/lib/Assertion';
442 |
443 | export interface PathInfo {
444 | parent: any;
445 | name: number|string;
446 | value: any;
447 | exists: boolean;
448 | }
449 |
450 | export interface Utils {
451 | addChainableMethod(ctx: any, name: string, chainingBehavior: (value: any) => void): void;
452 | addMethod(ctx: any, name: string, method: (value: any) => void): void;
453 | addProperty(ctx: any, name: string, getter: () => void): void;
454 | expectTypes(obj: Object, types: string[]): void;
455 | flag(obj: Object, key: string, value?: any): any;
456 | getActual(obj: Object, actual?: any): any;
457 | getEnumerableProperties(obj: Object): string[];
458 | getMessage(obj: Object, params: any[]): string;
459 | getMessage(obj: Object, message: string, negateMessage: string): string;
460 | getName(func: Function): string;
461 | getPathInfo(path: string, obj: Object): PathInfo;
462 | getPathValue(path: string, obj: Object): any;
463 | getProperties(obj: Object): string[];
464 | hasProperty(obj: Object, name: string): boolean;
465 | transferFlags(assertion: Assertion | any, obj: Object, includeAll?: boolean): void;
466 | inspect(obj: any): any;
467 | }
468 | }
469 | declare module 'chai/lib/Utils' {
470 | export * from '~chai/lib/Utils';
471 | }
472 |
473 | // Generated by typings
474 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/lib/Chai.d.ts
475 | declare module '~chai/lib/Chai' {
476 | import * as AE from '~chai~assertion-error/main';
477 |
478 | import * as Assert from '~chai/lib/Assert';
479 | import * as A from '~chai/lib/Assertion';
480 | import * as Expect from '~chai/lib/Expect';
481 | import * as Should from '~chai/lib/Should';
482 | import * as Config from '~chai/lib/Config';
483 | import * as Utils from '~chai/lib/Utils';
484 |
485 | namespace chai {
486 | export interface AssertionStatic extends A.AssertionStatic {}
487 | export class AssertionError extends AE.AssertionError {}
488 | export var Assertion: A.AssertionStatic;
489 | export var expect: Expect.ExpectStatic;
490 | export var assert: Assert.AssertStatic;
491 | export var config: Config.Config;
492 | export var util: Utils.Utils;
493 | export function should(): Should.Should;
494 | export function Should(): Should.Should;
495 | /**
496 | * Provides a way to extend the internals of Chai
497 | */
498 | export function use(fn: (chai: any, utils: Utils.Utils) => void): typeof chai;
499 | }
500 |
501 | export = chai;
502 |
503 | /* tslint:disable:no-internal-module */
504 | global {
505 | interface Object {
506 | should: A.Assertion;
507 | }
508 | }
509 | }
510 | declare module 'chai/lib/Chai' {
511 | import main = require('~chai/lib/Chai');
512 | export = main;
513 | }
514 |
515 | // Generated by typings
516 | // Source: https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/index.d.ts
517 | declare module 'chai' {
518 | // Type definitions for chai 3.4.0
519 | // Project: http://chaijs.com/
520 | // Original Definitions by: Jed Mao ,
521 | // Bart van der Schoor ,
522 | // Andrew Brown ,
523 | // Olivier Chevet ,
524 | // Matt Wistrand
525 |
526 | import chai = require('~chai/lib/Chai');
527 |
528 | export = chai;
529 | }
530 |
--------------------------------------------------------------------------------
/typings/modules/chai/typings.json:
--------------------------------------------------------------------------------
1 | {
2 | "resolution": "main",
3 | "tree": {
4 | "src": "https://raw.githubusercontent.com/types/npm-chai/793bee097a6a644e078a033603d88ac89eb7b560/typings.json",
5 | "raw": "registry:npm/chai#3.5.0+20160723033700",
6 | "main": "index.d.ts",
7 | "dependencies": {
8 | "assertion-error": {
9 | "src": "https://raw.githubusercontent.com/typed-typings/npm-assertion-error/105841317bd2bdd5d110bfb763e49e482a77230d/typings.json",
10 | "raw": "github:typed-typings/npm-assertion-error#105841317bd2bdd5d110bfb763e49e482a77230d",
11 | "main": "main.d.ts",
12 | "name": "assertion-error"
13 | }
14 | },
15 | "name": "chai"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | /* eslint strict:0 */
2 | var path = require('path');
3 |
4 | ('use strict');
5 |
6 | module.exports = {
7 | entry: {
8 | flipping: './src/index'
9 | },
10 | output: {
11 | library: 'Flipping',
12 | libraryTarget: 'umd',
13 | filename: '[name].js',
14 | path: path.join(__dirname, 'dist/')
15 | },
16 | resolve: {
17 | extensions: ['.ts', '.js'],
18 | modules: ['node_modules'],
19 | alias: {
20 | mitt: path.resolve(__dirname, './node_modules/mitt/dist/mitt.umd.js')
21 | }
22 | },
23 | module: {
24 | loaders: [{ test: /\.ts$/, loader: 'ts-loader' }]
25 | },
26 | devtool: 'inline-source-map'
27 | };
28 |
--------------------------------------------------------------------------------
/webpack.config.prod.js:
--------------------------------------------------------------------------------
1 | /* eslint strict:0 */
2 | 'use strict';
3 |
4 | var path = require('path');
5 |
6 | const webpack = require('webpack');
7 | const baseConfig = require('./webpack.config');
8 |
9 | const config = Object.create(baseConfig);
10 |
11 | config.plugins = (config.plugins || []).concat([
12 | new webpack.DefinePlugin({
13 | 'process.env.NODE_ENV': JSON.stringify('production'),
14 | }),
15 | new webpack.optimize.UglifyJsPlugin({
16 | compressor: {
17 | screw_ie8: true,
18 | warnings: false,
19 | },
20 | output: {
21 | comments: false
22 | }
23 | }),
24 | ]);
25 |
26 | module.exports = config;
27 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.8.3":
6 | version "7.10.3"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a"
8 | integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==
9 | dependencies:
10 | "@babel/highlight" "^7.10.3"
11 |
12 | "@babel/helper-validator-identifier@^7.10.3":
13 | version "7.10.3"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15"
15 | integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==
16 |
17 | "@babel/highlight@^7.10.3":
18 | version "7.10.3"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d"
20 | integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.10.3"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@babel/runtime@^7.9.6":
27 | version "7.10.3"
28 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364"
29 | integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==
30 | dependencies:
31 | regenerator-runtime "^0.13.4"
32 |
33 | "@npmcli/ci-detect@^1.0.0":
34 | version "1.2.0"
35 | resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz#0df142a1ac3bba6cbf2e9da1a6994cd898e32c95"
36 | integrity sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA==
37 |
38 | "@npmcli/git@^2.0.1":
39 | version "2.0.2"
40 | resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.2.tgz#41d75caf59e4799c62b354a3e4eed3b0e64310c0"
41 | integrity sha512-uv9+EuP5YWluNPgkEOL+iyB/+MVt4U5PMBCfl+I8korKluFdiSp7RxjXYzpWM/wU4wXaROAUFiOiCMmBftonjw==
42 | dependencies:
43 | "@npmcli/promise-spawn" "^1.1.0"
44 | lru-cache "^5.1.1"
45 | mkdirp "^1.0.3"
46 | npm-pick-manifest "^6.0.0"
47 | promise-inflight "^1.0.1"
48 | promise-retry "^1.1.1"
49 | semver "^7.3.2"
50 | unique-filename "^1.1.1"
51 | which "^2.0.2"
52 |
53 | "@npmcli/installed-package-contents@^1.0.5":
54 | version "1.0.5"
55 | resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz#cc78565e55d9f14d46acf46a96f70934e516fa3d"
56 | integrity sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A==
57 | dependencies:
58 | npm-bundled "^1.1.1"
59 | npm-normalize-package-bin "^1.0.1"
60 | read-package-json-fast "^1.1.1"
61 | readdir-scoped-modules "^1.1.0"
62 |
63 | "@npmcli/move-file@^1.0.1":
64 | version "1.0.1"
65 | resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464"
66 | integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==
67 | dependencies:
68 | mkdirp "^1.0.4"
69 |
70 | "@npmcli/promise-spawn@^1.1.0", "@npmcli/promise-spawn@^1.2.0":
71 | version "1.2.0"
72 | resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.2.0.tgz#167d70b926f771c8bd8b9183bfc8b5aec29d7e45"
73 | integrity sha512-nFtqjVETliApiRdjbYwKwhlSHx2ZMagyj5b9YbNt0BWeeOVxJd47ZVE2u16vxDHyTOZvk+YLV7INwfAE9a2uow==
74 | dependencies:
75 | infer-owner "^1.0.4"
76 |
77 | "@npmcli/run-script@^1.3.0":
78 | version "1.3.1"
79 | resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.3.1.tgz#dc8934646634338b99898614ce083dabcd14edf3"
80 | integrity sha512-9Ea57XJjNLtBFRAaiKqqdoqRrL2QkM0vvCbMjPecljhog5IHupStPtZULbl0CoGN00N3lhLWJ4PaIEC0MGjqJw==
81 | dependencies:
82 | "@npmcli/promise-spawn" "^1.2.0"
83 | infer-owner "^1.0.4"
84 | node-gyp "^6.1.0"
85 | read-package-json-fast "^1.1.3"
86 |
87 | "@rollup/pluginutils@^3.0.8":
88 | version "3.1.0"
89 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
90 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
91 | dependencies:
92 | "@types/estree" "0.0.39"
93 | estree-walker "^1.0.1"
94 | picomatch "^2.2.2"
95 |
96 | "@tootallnate/once@1":
97 | version "1.1.2"
98 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
99 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
100 |
101 | "@types/color-name@^1.1.1":
102 | version "1.1.1"
103 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
104 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
105 |
106 | "@types/estree@0.0.39":
107 | version "0.0.39"
108 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
109 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
110 |
111 | "@types/mocha@^7.0.2":
112 | version "7.0.2"
113 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce"
114 | integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==
115 |
116 | "@types/node@^14.0.14":
117 | version "14.0.14"
118 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
119 | integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
120 |
121 | abbrev@1:
122 | version "1.1.1"
123 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
124 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
125 |
126 | agent-base@6:
127 | version "6.0.0"
128 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a"
129 | integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==
130 | dependencies:
131 | debug "4"
132 |
133 | agentkeepalive@^4.1.0:
134 | version "4.1.3"
135 | resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.3.tgz#360a09d743a1f4fde749f9ba07caa6575d08259a"
136 | integrity sha512-wn8fw19xKZwdGPO47jivonaHRTd+nGOMP1z11sgGeQzDy2xd5FG0R67dIMcKHDE2cJ5y+YXV30XVGUBPRSY7Hg==
137 | dependencies:
138 | debug "^4.1.0"
139 | depd "^1.1.2"
140 | humanize-ms "^1.2.1"
141 |
142 | aggregate-error@^3.0.0:
143 | version "3.0.1"
144 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
145 | integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==
146 | dependencies:
147 | clean-stack "^2.0.0"
148 | indent-string "^4.0.0"
149 |
150 | ajv@^6.5.5:
151 | version "6.12.2"
152 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
153 | integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
154 | dependencies:
155 | fast-deep-equal "^3.1.1"
156 | fast-json-stable-stringify "^2.0.0"
157 | json-schema-traverse "^0.4.1"
158 | uri-js "^4.2.2"
159 |
160 | ansi-align@^3.0.0:
161 | version "3.0.0"
162 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
163 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
164 | dependencies:
165 | string-width "^3.0.0"
166 |
167 | ansi-regex@^2.0.0:
168 | version "2.1.1"
169 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
170 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
171 |
172 | ansi-regex@^3.0.0:
173 | version "3.0.0"
174 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
175 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
176 |
177 | ansi-regex@^4.1.0:
178 | version "4.1.0"
179 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
180 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
181 |
182 | ansi-regex@^5.0.0:
183 | version "5.0.0"
184 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
185 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
186 |
187 | ansi-styles@^3.2.1:
188 | version "3.2.1"
189 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
190 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
191 | dependencies:
192 | color-convert "^1.9.0"
193 |
194 | ansi-styles@^4.1.0:
195 | version "4.2.1"
196 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
197 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
198 | dependencies:
199 | "@types/color-name" "^1.1.1"
200 | color-convert "^2.0.1"
201 |
202 | aproba@^1.0.3:
203 | version "1.2.0"
204 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
205 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
206 |
207 | are-we-there-yet@~1.1.2:
208 | version "1.1.5"
209 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
210 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
211 | dependencies:
212 | delegates "^1.0.0"
213 | readable-stream "^2.0.6"
214 |
215 | asap@^2.0.0:
216 | version "2.0.6"
217 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
218 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
219 |
220 | asn1@~0.2.3:
221 | version "0.2.4"
222 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
223 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
224 | dependencies:
225 | safer-buffer "~2.1.0"
226 |
227 | assert-plus@1.0.0, assert-plus@^1.0.0:
228 | version "1.0.0"
229 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
230 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
231 |
232 | asynckit@^0.4.0:
233 | version "0.4.0"
234 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
235 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
236 |
237 | aws-sign2@~0.7.0:
238 | version "0.7.0"
239 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
240 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
241 |
242 | aws4@^1.8.0:
243 | version "1.10.0"
244 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
245 | integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
246 |
247 | balanced-match@^1.0.0:
248 | version "1.0.0"
249 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
250 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
251 |
252 | bcrypt-pbkdf@^1.0.0:
253 | version "1.0.2"
254 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
255 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
256 | dependencies:
257 | tweetnacl "^0.14.3"
258 |
259 | boxen@^4.2.0:
260 | version "4.2.0"
261 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
262 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
263 | dependencies:
264 | ansi-align "^3.0.0"
265 | camelcase "^5.3.1"
266 | chalk "^3.0.0"
267 | cli-boxes "^2.2.0"
268 | string-width "^4.1.0"
269 | term-size "^2.1.0"
270 | type-fest "^0.8.1"
271 | widest-line "^3.1.0"
272 |
273 | brace-expansion@^1.1.7:
274 | version "1.1.11"
275 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
276 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
277 | dependencies:
278 | balanced-match "^1.0.0"
279 | concat-map "0.0.1"
280 |
281 | brotli-size@4.0.0:
282 | version "4.0.0"
283 | resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e"
284 | integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==
285 | dependencies:
286 | duplexer "0.1.1"
287 |
288 | buffer-from@^1.0.0:
289 | version "1.1.1"
290 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
291 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
292 |
293 | builtins@^1.0.3:
294 | version "1.0.3"
295 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
296 | integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
297 |
298 | cacache@^15.0.0, cacache@^15.0.3:
299 | version "15.0.4"
300 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1"
301 | integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw==
302 | dependencies:
303 | "@npmcli/move-file" "^1.0.1"
304 | chownr "^2.0.0"
305 | fs-minipass "^2.0.0"
306 | glob "^7.1.4"
307 | infer-owner "^1.0.4"
308 | lru-cache "^5.1.1"
309 | minipass "^3.1.1"
310 | minipass-collect "^1.0.2"
311 | minipass-flush "^1.0.5"
312 | minipass-pipeline "^1.2.2"
313 | mkdirp "^1.0.3"
314 | p-map "^4.0.0"
315 | promise-inflight "^1.0.1"
316 | rimraf "^3.0.2"
317 | ssri "^8.0.0"
318 | tar "^6.0.2"
319 | unique-filename "^1.1.1"
320 |
321 | camelcase@^5.3.1:
322 | version "5.3.1"
323 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
324 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
325 |
326 | caseless@~0.12.0:
327 | version "0.12.0"
328 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
329 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
330 |
331 | chalk@^2.0.0:
332 | version "2.4.2"
333 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
334 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
335 | dependencies:
336 | ansi-styles "^3.2.1"
337 | escape-string-regexp "^1.0.5"
338 | supports-color "^5.3.0"
339 |
340 | chalk@^3.0.0:
341 | version "3.0.0"
342 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
343 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
344 | dependencies:
345 | ansi-styles "^4.1.0"
346 | supports-color "^7.1.0"
347 |
348 | chownr@^1.1.1:
349 | version "1.1.4"
350 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
351 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
352 |
353 | chownr@^2.0.0:
354 | version "2.0.0"
355 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
356 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
357 |
358 | clean-stack@^2.0.0:
359 | version "2.2.0"
360 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
361 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
362 |
363 | cli-boxes@^2.2.0:
364 | version "2.2.0"
365 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d"
366 | integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==
367 |
368 | code-point-at@^1.0.0:
369 | version "1.1.0"
370 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
371 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
372 |
373 | color-convert@^1.9.0:
374 | version "1.9.3"
375 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
376 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
377 | dependencies:
378 | color-name "1.1.3"
379 |
380 | color-convert@^2.0.1:
381 | version "2.0.1"
382 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
383 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
384 | dependencies:
385 | color-name "~1.1.4"
386 |
387 | color-name@1.1.3:
388 | version "1.1.3"
389 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
390 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
391 |
392 | color-name@~1.1.4:
393 | version "1.1.4"
394 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
395 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
396 |
397 | colors@^1.4.0:
398 | version "1.4.0"
399 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
400 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
401 |
402 | combined-stream@^1.0.6, combined-stream@~1.0.6:
403 | version "1.0.8"
404 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
405 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
406 | dependencies:
407 | delayed-stream "~1.0.0"
408 |
409 | commander@^2.20.0:
410 | version "2.20.3"
411 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
412 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
413 |
414 | commondir@^1.0.1:
415 | version "1.0.1"
416 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
417 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
418 |
419 | concat-map@0.0.1:
420 | version "0.0.1"
421 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
422 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
423 |
424 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
425 | version "1.1.0"
426 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
427 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
428 |
429 | core-util-is@1.0.2, core-util-is@~1.0.0:
430 | version "1.0.2"
431 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
432 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
433 |
434 | dashdash@^1.12.0:
435 | version "1.14.1"
436 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
437 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
438 | dependencies:
439 | assert-plus "^1.0.0"
440 |
441 | debug@4, debug@^4.1.0:
442 | version "4.1.1"
443 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
444 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
445 | dependencies:
446 | ms "^2.1.1"
447 |
448 | debuglog@^1.0.1:
449 | version "1.0.1"
450 | resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
451 | integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
452 |
453 | delayed-stream@~1.0.0:
454 | version "1.0.0"
455 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
456 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
457 |
458 | delegates@^1.0.0:
459 | version "1.0.0"
460 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
461 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
462 |
463 | depd@^1.1.2:
464 | version "1.1.2"
465 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
466 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
467 |
468 | dezalgo@^1.0.0:
469 | version "1.0.3"
470 | resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
471 | integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
472 | dependencies:
473 | asap "^2.0.0"
474 | wrappy "1"
475 |
476 | duplexer@0.1.1, duplexer@^0.1.1:
477 | version "0.1.1"
478 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
479 | integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
480 |
481 | ecc-jsbn@~0.1.1:
482 | version "0.1.2"
483 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
484 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
485 | dependencies:
486 | jsbn "~0.1.0"
487 | safer-buffer "^2.1.0"
488 |
489 | emoji-regex@^7.0.1:
490 | version "7.0.3"
491 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
492 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
493 |
494 | emoji-regex@^8.0.0:
495 | version "8.0.0"
496 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
497 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
498 |
499 | encoding@^0.1.12:
500 | version "0.1.12"
501 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
502 | integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
503 | dependencies:
504 | iconv-lite "~0.4.13"
505 |
506 | env-paths@^2.2.0:
507 | version "2.2.0"
508 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
509 | integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
510 |
511 | err-code@^1.0.0:
512 | version "1.1.2"
513 | resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
514 | integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
515 |
516 | escape-string-regexp@^1.0.5:
517 | version "1.0.5"
518 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
519 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
520 |
521 | estree-walker@^0.6.1:
522 | version "0.6.1"
523 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
524 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
525 |
526 | estree-walker@^1.0.1:
527 | version "1.0.1"
528 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
529 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
530 |
531 | extend@~3.0.2:
532 | version "3.0.2"
533 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
534 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
535 |
536 | extsprintf@1.3.0:
537 | version "1.3.0"
538 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
539 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
540 |
541 | extsprintf@^1.2.0:
542 | version "1.4.0"
543 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
544 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
545 |
546 | fast-deep-equal@^3.1.1:
547 | version "3.1.3"
548 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
549 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
550 |
551 | fast-json-stable-stringify@^2.0.0:
552 | version "2.1.0"
553 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
554 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
555 |
556 | filesize@^6.1.0:
557 | version "6.1.0"
558 | resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00"
559 | integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==
560 |
561 | find-cache-dir@^3.3.1:
562 | version "3.3.1"
563 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
564 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
565 | dependencies:
566 | commondir "^1.0.1"
567 | make-dir "^3.0.2"
568 | pkg-dir "^4.1.0"
569 |
570 | find-up@^4.0.0:
571 | version "4.1.0"
572 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
573 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
574 | dependencies:
575 | locate-path "^5.0.0"
576 | path-exists "^4.0.0"
577 |
578 | forever-agent@~0.6.1:
579 | version "0.6.1"
580 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
581 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
582 |
583 | form-data@~2.3.2:
584 | version "2.3.3"
585 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
586 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
587 | dependencies:
588 | asynckit "^0.4.0"
589 | combined-stream "^1.0.6"
590 | mime-types "^2.1.12"
591 |
592 | fs-extra@8.1.0:
593 | version "8.1.0"
594 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
595 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
596 | dependencies:
597 | graceful-fs "^4.2.0"
598 | jsonfile "^4.0.0"
599 | universalify "^0.1.0"
600 |
601 | fs-minipass@^1.2.5:
602 | version "1.2.7"
603 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
604 | integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
605 | dependencies:
606 | minipass "^2.6.0"
607 |
608 | fs-minipass@^2.0.0, fs-minipass@^2.1.0:
609 | version "2.1.0"
610 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
611 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
612 | dependencies:
613 | minipass "^3.0.0"
614 |
615 | fs.realpath@^1.0.0:
616 | version "1.0.0"
617 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
618 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
619 |
620 | fsevents@~2.1.2:
621 | version "2.1.3"
622 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
623 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
624 |
625 | gauge@~2.7.3:
626 | version "2.7.4"
627 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
628 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
629 | dependencies:
630 | aproba "^1.0.3"
631 | console-control-strings "^1.0.0"
632 | has-unicode "^2.0.0"
633 | object-assign "^4.1.0"
634 | signal-exit "^3.0.0"
635 | string-width "^1.0.1"
636 | strip-ansi "^3.0.1"
637 | wide-align "^1.1.0"
638 |
639 | getpass@^0.1.1:
640 | version "0.1.7"
641 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
642 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
643 | dependencies:
644 | assert-plus "^1.0.0"
645 |
646 | glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
647 | version "7.1.6"
648 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
649 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
650 | dependencies:
651 | fs.realpath "^1.0.0"
652 | inflight "^1.0.4"
653 | inherits "2"
654 | minimatch "^3.0.4"
655 | once "^1.3.0"
656 | path-is-absolute "^1.0.0"
657 |
658 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2:
659 | version "4.2.4"
660 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
661 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
662 |
663 | gzip-size@^5.1.1:
664 | version "5.1.1"
665 | resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
666 | integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
667 | dependencies:
668 | duplexer "^0.1.1"
669 | pify "^4.0.1"
670 |
671 | har-schema@^2.0.0:
672 | version "2.0.0"
673 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
674 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
675 |
676 | har-validator@~5.1.3:
677 | version "5.1.3"
678 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
679 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
680 | dependencies:
681 | ajv "^6.5.5"
682 | har-schema "^2.0.0"
683 |
684 | has-flag@^3.0.0:
685 | version "3.0.0"
686 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
687 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
688 |
689 | has-flag@^4.0.0:
690 | version "4.0.0"
691 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
692 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
693 |
694 | has-unicode@^2.0.0:
695 | version "2.0.1"
696 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
697 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
698 |
699 | hosted-git-info@^3.0.2:
700 | version "3.0.4"
701 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d"
702 | integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==
703 | dependencies:
704 | lru-cache "^5.1.1"
705 |
706 | http-cache-semantics@^4.0.4:
707 | version "4.1.0"
708 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
709 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
710 |
711 | http-proxy-agent@^4.0.1:
712 | version "4.0.1"
713 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
714 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
715 | dependencies:
716 | "@tootallnate/once" "1"
717 | agent-base "6"
718 | debug "4"
719 |
720 | http-signature@~1.2.0:
721 | version "1.2.0"
722 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
723 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
724 | dependencies:
725 | assert-plus "^1.0.0"
726 | jsprim "^1.2.2"
727 | sshpk "^1.7.0"
728 |
729 | https-proxy-agent@^5.0.0:
730 | version "5.0.0"
731 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
732 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
733 | dependencies:
734 | agent-base "6"
735 | debug "4"
736 |
737 | humanize-ms@^1.2.1:
738 | version "1.2.1"
739 | resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
740 | integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
741 | dependencies:
742 | ms "^2.0.0"
743 |
744 | iconv-lite@~0.4.13:
745 | version "0.4.24"
746 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
747 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
748 | dependencies:
749 | safer-buffer ">= 2.1.2 < 3"
750 |
751 | ignore-walk@^3.0.3:
752 | version "3.0.3"
753 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
754 | integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
755 | dependencies:
756 | minimatch "^3.0.4"
757 |
758 | imurmurhash@^0.1.4:
759 | version "0.1.4"
760 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
761 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
762 |
763 | indent-string@^4.0.0:
764 | version "4.0.0"
765 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
766 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
767 |
768 | infer-owner@^1.0.4:
769 | version "1.0.4"
770 | resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
771 | integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
772 |
773 | inflight@^1.0.4:
774 | version "1.0.6"
775 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
776 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
777 | dependencies:
778 | once "^1.3.0"
779 | wrappy "1"
780 |
781 | inherits@2, inherits@~2.0.3:
782 | version "2.0.4"
783 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
784 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
785 |
786 | ip@1.1.5:
787 | version "1.1.5"
788 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
789 | integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
790 |
791 | is-fullwidth-code-point@^1.0.0:
792 | version "1.0.0"
793 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
794 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
795 | dependencies:
796 | number-is-nan "^1.0.0"
797 |
798 | is-fullwidth-code-point@^2.0.0:
799 | version "2.0.0"
800 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
801 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
802 |
803 | is-fullwidth-code-point@^3.0.0:
804 | version "3.0.0"
805 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
806 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
807 |
808 | is-lambda@^1.0.1:
809 | version "1.0.1"
810 | resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
811 | integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=
812 |
813 | is-typedarray@~1.0.0:
814 | version "1.0.0"
815 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
816 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
817 |
818 | isarray@~1.0.0:
819 | version "1.0.0"
820 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
821 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
822 |
823 | isexe@^2.0.0:
824 | version "2.0.0"
825 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
826 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
827 |
828 | isstream@~0.1.2:
829 | version "0.1.2"
830 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
831 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
832 |
833 | jest-worker@^26.0.0:
834 | version "26.1.0"
835 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d"
836 | integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==
837 | dependencies:
838 | merge-stream "^2.0.0"
839 | supports-color "^7.0.0"
840 |
841 | js-tokens@^4.0.0:
842 | version "4.0.0"
843 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
844 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
845 |
846 | jsbn@~0.1.0:
847 | version "0.1.1"
848 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
849 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
850 |
851 | json-parse-even-better-errors@^2.0.1:
852 | version "2.2.0"
853 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz#304d29aa54bb01156a1328c454034ff0ac8a7bf4"
854 | integrity sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g==
855 |
856 | json-schema-traverse@^0.4.1:
857 | version "0.4.1"
858 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
859 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
860 |
861 | json-schema@0.2.3:
862 | version "0.2.3"
863 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
864 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
865 |
866 | json-stringify-safe@~5.0.1:
867 | version "5.0.1"
868 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
869 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
870 |
871 | jsonfile@^4.0.0:
872 | version "4.0.0"
873 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
874 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
875 | optionalDependencies:
876 | graceful-fs "^4.1.6"
877 |
878 | jsonparse@^1.3.1:
879 | version "1.3.1"
880 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
881 | integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
882 |
883 | jsprim@^1.2.2:
884 | version "1.4.1"
885 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
886 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
887 | dependencies:
888 | assert-plus "1.0.0"
889 | extsprintf "1.3.0"
890 | json-schema "0.2.3"
891 | verror "1.10.0"
892 |
893 | locate-path@^5.0.0:
894 | version "5.0.0"
895 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
896 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
897 | dependencies:
898 | p-locate "^4.1.0"
899 |
900 | lru-cache@^5.1.1:
901 | version "5.1.1"
902 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
903 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
904 | dependencies:
905 | yallist "^3.0.2"
906 |
907 | magic-string@^0.25.2:
908 | version "0.25.7"
909 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
910 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
911 | dependencies:
912 | sourcemap-codec "^1.4.4"
913 |
914 | make-dir@^3.0.2:
915 | version "3.1.0"
916 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
917 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
918 | dependencies:
919 | semver "^6.0.0"
920 |
921 | make-fetch-happen@^8.0.7:
922 | version "8.0.7"
923 | resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.7.tgz#7f98e6e75784c541833d0ffe2f82c31418a87ac2"
924 | integrity sha512-rkDA4c1nMXVqLkfOaM5RK2dxkUndjLOCrPycTDZgbkFDzhmaCO3P1dmCW//yt1I/G1EcedJqMsSjWkV79Hh4hQ==
925 | dependencies:
926 | agentkeepalive "^4.1.0"
927 | cacache "^15.0.0"
928 | http-cache-semantics "^4.0.4"
929 | http-proxy-agent "^4.0.1"
930 | https-proxy-agent "^5.0.0"
931 | is-lambda "^1.0.1"
932 | lru-cache "^5.1.1"
933 | minipass "^3.1.3"
934 | minipass-collect "^1.0.2"
935 | minipass-fetch "^1.1.2"
936 | minipass-flush "^1.0.5"
937 | minipass-pipeline "^1.2.2"
938 | promise-retry "^1.1.1"
939 | socks-proxy-agent "^5.0.0"
940 | ssri "^8.0.0"
941 |
942 | merge-stream@^2.0.0:
943 | version "2.0.0"
944 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
945 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
946 |
947 | mime-db@1.44.0:
948 | version "1.44.0"
949 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
950 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
951 |
952 | mime-types@^2.1.12, mime-types@~2.1.19:
953 | version "2.1.27"
954 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
955 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
956 | dependencies:
957 | mime-db "1.44.0"
958 |
959 | minimatch@^3.0.4:
960 | version "3.0.4"
961 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
962 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
963 | dependencies:
964 | brace-expansion "^1.1.7"
965 |
966 | minimist@^1.2.5:
967 | version "1.2.5"
968 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
969 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
970 |
971 | minipass-collect@^1.0.2:
972 | version "1.0.2"
973 | resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
974 | integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
975 | dependencies:
976 | minipass "^3.0.0"
977 |
978 | minipass-fetch@^1.1.2:
979 | version "1.2.1"
980 | resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.2.1.tgz#1b97ecb559be56b09812d45b2e9509f1f59ece2f"
981 | integrity sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg==
982 | dependencies:
983 | minipass "^3.1.0"
984 | minipass-pipeline "^1.2.2"
985 | minipass-sized "^1.0.3"
986 | minizlib "^2.0.0"
987 | optionalDependencies:
988 | encoding "^0.1.12"
989 |
990 | minipass-flush@^1.0.5:
991 | version "1.0.5"
992 | resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
993 | integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
994 | dependencies:
995 | minipass "^3.0.0"
996 |
997 | minipass-json-stream@^1.0.1:
998 | version "1.0.1"
999 | resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7"
1000 | integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==
1001 | dependencies:
1002 | jsonparse "^1.3.1"
1003 | minipass "^3.0.0"
1004 |
1005 | minipass-pipeline@^1.2.2:
1006 | version "1.2.3"
1007 | resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34"
1008 | integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==
1009 | dependencies:
1010 | minipass "^3.0.0"
1011 |
1012 | minipass-sized@^1.0.3:
1013 | version "1.0.3"
1014 | resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
1015 | integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
1016 | dependencies:
1017 | minipass "^3.0.0"
1018 |
1019 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
1020 | version "2.9.0"
1021 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
1022 | integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
1023 | dependencies:
1024 | safe-buffer "^5.1.2"
1025 | yallist "^3.0.0"
1026 |
1027 | minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
1028 | version "3.1.3"
1029 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
1030 | integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
1031 | dependencies:
1032 | yallist "^4.0.0"
1033 |
1034 | minizlib@^1.2.1:
1035 | version "1.3.3"
1036 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
1037 | integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
1038 | dependencies:
1039 | minipass "^2.9.0"
1040 |
1041 | minizlib@^2.0.0, minizlib@^2.1.0:
1042 | version "2.1.0"
1043 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3"
1044 | integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==
1045 | dependencies:
1046 | minipass "^3.0.0"
1047 | yallist "^4.0.0"
1048 |
1049 | mkdirp@^0.5.0, mkdirp@^0.5.1:
1050 | version "0.5.5"
1051 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
1052 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
1053 | dependencies:
1054 | minimist "^1.2.5"
1055 |
1056 | mkdirp@^1.0.3, mkdirp@^1.0.4:
1057 | version "1.0.4"
1058 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
1059 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
1060 |
1061 | ms@^2.0.0, ms@^2.1.1:
1062 | version "2.1.2"
1063 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1064 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1065 |
1066 | node-gyp@^6.1.0:
1067 | version "6.1.0"
1068 | resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-6.1.0.tgz#64e31c61a4695ad304c1d5b82cf6b7c79cc79f3f"
1069 | integrity sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw==
1070 | dependencies:
1071 | env-paths "^2.2.0"
1072 | glob "^7.1.4"
1073 | graceful-fs "^4.2.2"
1074 | mkdirp "^0.5.1"
1075 | nopt "^4.0.1"
1076 | npmlog "^4.1.2"
1077 | request "^2.88.0"
1078 | rimraf "^2.6.3"
1079 | semver "^5.7.1"
1080 | tar "^4.4.12"
1081 | which "^1.3.1"
1082 |
1083 | nopt@^4.0.1:
1084 | version "4.0.3"
1085 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
1086 | integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
1087 | dependencies:
1088 | abbrev "1"
1089 | osenv "^0.1.4"
1090 |
1091 | npm-bundled@^1.1.1:
1092 | version "1.1.1"
1093 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
1094 | integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
1095 | dependencies:
1096 | npm-normalize-package-bin "^1.0.1"
1097 |
1098 | npm-install-checks@^4.0.0:
1099 | version "4.0.0"
1100 | resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4"
1101 | integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==
1102 | dependencies:
1103 | semver "^7.1.1"
1104 |
1105 | npm-normalize-package-bin@^1.0.1:
1106 | version "1.0.1"
1107 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
1108 | integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
1109 |
1110 | npm-package-arg@^8.0.0, npm-package-arg@^8.0.1:
1111 | version "8.0.1"
1112 | resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270"
1113 | integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==
1114 | dependencies:
1115 | hosted-git-info "^3.0.2"
1116 | semver "^7.0.0"
1117 | validate-npm-package-name "^3.0.0"
1118 |
1119 | npm-packlist@^2.1.0:
1120 | version "2.1.2"
1121 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.2.tgz#a3045b52aefc37e7a5e86a55e6ca8cb1e909e25a"
1122 | integrity sha512-eByPaP+wsKai0BJX5pmb58d3mfR0zUATcnyuvSxIudTEn+swCPFLxh7srCmqB4hr7i9V24/DPjjq5b2qUtbgXQ==
1123 | dependencies:
1124 | glob "^7.1.6"
1125 | ignore-walk "^3.0.3"
1126 | npm-bundled "^1.1.1"
1127 | npm-normalize-package-bin "^1.0.1"
1128 |
1129 | npm-pick-manifest@^6.0.0:
1130 | version "6.1.0"
1131 | resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a"
1132 | integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==
1133 | dependencies:
1134 | npm-install-checks "^4.0.0"
1135 | npm-package-arg "^8.0.0"
1136 | semver "^7.0.0"
1137 |
1138 | npm-registry-fetch@^8.0.3:
1139 | version "8.1.0"
1140 | resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-8.1.0.tgz#1d5c229b82412414b9c63cde040b51981db76904"
1141 | integrity sha512-RkcugRDye2j6yEiHGMyAdKQoipgp8VToSIjm+TFLhVraXOkC/WU2kjE2URcYBpcJ4hs++VFBKo6+Zg4wmrS+Qw==
1142 | dependencies:
1143 | "@npmcli/ci-detect" "^1.0.0"
1144 | lru-cache "^5.1.1"
1145 | make-fetch-happen "^8.0.7"
1146 | minipass "^3.1.3"
1147 | minipass-fetch "^1.1.2"
1148 | minipass-json-stream "^1.0.1"
1149 | minizlib "^2.0.0"
1150 | npm-package-arg "^8.0.0"
1151 |
1152 | npmlog@^4.1.2:
1153 | version "4.1.2"
1154 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
1155 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
1156 | dependencies:
1157 | are-we-there-yet "~1.1.2"
1158 | console-control-strings "~1.1.0"
1159 | gauge "~2.7.3"
1160 | set-blocking "~2.0.0"
1161 |
1162 | number-is-nan@^1.0.0:
1163 | version "1.0.1"
1164 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1165 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
1166 |
1167 | oauth-sign@~0.9.0:
1168 | version "0.9.0"
1169 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
1170 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
1171 |
1172 | object-assign@^4.1.0:
1173 | version "4.1.1"
1174 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1175 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1176 |
1177 | once@^1.3.0:
1178 | version "1.4.0"
1179 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1180 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1181 | dependencies:
1182 | wrappy "1"
1183 |
1184 | os-homedir@^1.0.0:
1185 | version "1.0.2"
1186 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1187 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
1188 |
1189 | os-tmpdir@^1.0.0:
1190 | version "1.0.2"
1191 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1192 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
1193 |
1194 | osenv@^0.1.4:
1195 | version "0.1.5"
1196 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
1197 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
1198 | dependencies:
1199 | os-homedir "^1.0.0"
1200 | os-tmpdir "^1.0.0"
1201 |
1202 | p-limit@^2.2.0:
1203 | version "2.3.0"
1204 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1205 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1206 | dependencies:
1207 | p-try "^2.0.0"
1208 |
1209 | p-locate@^4.1.0:
1210 | version "4.1.0"
1211 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1212 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1213 | dependencies:
1214 | p-limit "^2.2.0"
1215 |
1216 | p-map@^4.0.0:
1217 | version "4.0.0"
1218 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
1219 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
1220 | dependencies:
1221 | aggregate-error "^3.0.0"
1222 |
1223 | p-try@^2.0.0:
1224 | version "2.2.0"
1225 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1226 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1227 |
1228 | pacote@^11.1.6:
1229 | version "11.1.10"
1230 | resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.1.10.tgz#cbd56a5a60c9cf472bc8ea7ba87112d749655dd4"
1231 | integrity sha512-xJSSSxcHLo1CZJESvIZ2hbC5/5WP2oDHeUeTV2FvVDPOZG7+ixbxnV0n3TkdaUqlbC0RwnwMQ3wkJ/YywYM0Cg==
1232 | dependencies:
1233 | "@npmcli/git" "^2.0.1"
1234 | "@npmcli/installed-package-contents" "^1.0.5"
1235 | "@npmcli/promise-spawn" "^1.2.0"
1236 | "@npmcli/run-script" "^1.3.0"
1237 | cacache "^15.0.3"
1238 | chownr "^2.0.0"
1239 | fs-minipass "^2.1.0"
1240 | infer-owner "^1.0.4"
1241 | minipass "^3.1.3"
1242 | mkdirp "^1.0.3"
1243 | npm-package-arg "^8.0.1"
1244 | npm-packlist "^2.1.0"
1245 | npm-pick-manifest "^6.0.0"
1246 | npm-registry-fetch "^8.0.3"
1247 | promise-retry "^1.1.1"
1248 | read-package-json-fast "^1.1.3"
1249 | rimraf "^3.0.2"
1250 | ssri "^8.0.0"
1251 | tar "^6.0.1"
1252 |
1253 | path-exists@^4.0.0:
1254 | version "4.0.0"
1255 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1256 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1257 |
1258 | path-is-absolute@^1.0.0:
1259 | version "1.0.1"
1260 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1261 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1262 |
1263 | path-parse@^1.0.6:
1264 | version "1.0.6"
1265 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
1266 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
1267 |
1268 | performance-now@^2.1.0:
1269 | version "2.1.0"
1270 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
1271 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
1272 |
1273 | picomatch@^2.2.2:
1274 | version "2.2.2"
1275 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
1276 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
1277 |
1278 | pify@^4.0.1:
1279 | version "4.0.1"
1280 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
1281 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
1282 |
1283 | pkg-dir@^4.1.0:
1284 | version "4.2.0"
1285 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1286 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1287 | dependencies:
1288 | find-up "^4.0.0"
1289 |
1290 | process-nextick-args@~2.0.0:
1291 | version "2.0.1"
1292 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1293 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1294 |
1295 | promise-inflight@^1.0.1:
1296 | version "1.0.1"
1297 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
1298 | integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
1299 |
1300 | promise-retry@^1.1.1:
1301 | version "1.1.1"
1302 | resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d"
1303 | integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=
1304 | dependencies:
1305 | err-code "^1.0.0"
1306 | retry "^0.10.0"
1307 |
1308 | psl@^1.1.28:
1309 | version "1.8.0"
1310 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
1311 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
1312 |
1313 | punycode@^2.1.0, punycode@^2.1.1:
1314 | version "2.1.1"
1315 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1316 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1317 |
1318 | qs@~6.5.2:
1319 | version "6.5.2"
1320 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1321 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
1322 |
1323 | randombytes@^2.1.0:
1324 | version "2.1.0"
1325 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1326 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1327 | dependencies:
1328 | safe-buffer "^5.1.0"
1329 |
1330 | read-package-json-fast@^1.1.1, read-package-json-fast@^1.1.3:
1331 | version "1.1.3"
1332 | resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz#3b78464ea8f3c4447f3358635390b6946dc0737e"
1333 | integrity sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg==
1334 | dependencies:
1335 | json-parse-even-better-errors "^2.0.1"
1336 | npm-normalize-package-bin "^1.0.1"
1337 |
1338 | readable-stream@^2.0.6:
1339 | version "2.3.7"
1340 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
1341 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
1342 | dependencies:
1343 | core-util-is "~1.0.0"
1344 | inherits "~2.0.3"
1345 | isarray "~1.0.0"
1346 | process-nextick-args "~2.0.0"
1347 | safe-buffer "~5.1.1"
1348 | string_decoder "~1.1.1"
1349 | util-deprecate "~1.0.1"
1350 |
1351 | readdir-scoped-modules@^1.1.0:
1352 | version "1.1.0"
1353 | resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
1354 | integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
1355 | dependencies:
1356 | debuglog "^1.0.1"
1357 | dezalgo "^1.0.0"
1358 | graceful-fs "^4.1.2"
1359 | once "^1.3.0"
1360 |
1361 | regenerator-runtime@^0.13.4:
1362 | version "0.13.5"
1363 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
1364 | integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
1365 |
1366 | request@^2.88.0:
1367 | version "2.88.2"
1368 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
1369 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
1370 | dependencies:
1371 | aws-sign2 "~0.7.0"
1372 | aws4 "^1.8.0"
1373 | caseless "~0.12.0"
1374 | combined-stream "~1.0.6"
1375 | extend "~3.0.2"
1376 | forever-agent "~0.6.1"
1377 | form-data "~2.3.2"
1378 | har-validator "~5.1.3"
1379 | http-signature "~1.2.0"
1380 | is-typedarray "~1.0.0"
1381 | isstream "~0.1.2"
1382 | json-stringify-safe "~5.0.1"
1383 | mime-types "~2.1.19"
1384 | oauth-sign "~0.9.0"
1385 | performance-now "^2.1.0"
1386 | qs "~6.5.2"
1387 | safe-buffer "^5.1.2"
1388 | tough-cookie "~2.5.0"
1389 | tunnel-agent "^0.6.0"
1390 | uuid "^3.3.2"
1391 |
1392 | resolve@1.15.1:
1393 | version "1.15.1"
1394 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
1395 | integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
1396 | dependencies:
1397 | path-parse "^1.0.6"
1398 |
1399 | retry@^0.10.0:
1400 | version "0.10.1"
1401 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
1402 | integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
1403 |
1404 | rimraf@^2.6.3:
1405 | version "2.7.1"
1406 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
1407 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
1408 | dependencies:
1409 | glob "^7.1.3"
1410 |
1411 | rimraf@^3.0.2:
1412 | version "3.0.2"
1413 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1414 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1415 | dependencies:
1416 | glob "^7.1.3"
1417 |
1418 | rollup-plugin-filesize@^9.0.1:
1419 | version "9.0.1"
1420 | resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-9.0.1.tgz#bae2408f008df518ee2bdaab4d234dc4272bc1da"
1421 | integrity sha512-k25SZsoFTaIwNCSbSU7401OyJIO+98Wa8sKtnUxcDiZgw2wGSSJ7+FhEYRpbIu1c2EXnvHJx/DJYGohG4lOmAw==
1422 | dependencies:
1423 | "@babel/runtime" "^7.9.6"
1424 | boxen "^4.2.0"
1425 | brotli-size "4.0.0"
1426 | colors "^1.4.0"
1427 | filesize "^6.1.0"
1428 | gzip-size "^5.1.1"
1429 | pacote "^11.1.6"
1430 | terser "^4.6.12"
1431 |
1432 | rollup-plugin-replace@^2.2.0:
1433 | version "2.2.0"
1434 | resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3"
1435 | integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==
1436 | dependencies:
1437 | magic-string "^0.25.2"
1438 | rollup-pluginutils "^2.6.0"
1439 |
1440 | rollup-plugin-terser@^6.1.0:
1441 | version "6.1.0"
1442 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz#071866585aea104bfbb9dd1019ac523e63c81e45"
1443 | integrity sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==
1444 | dependencies:
1445 | "@babel/code-frame" "^7.8.3"
1446 | jest-worker "^26.0.0"
1447 | serialize-javascript "^3.0.0"
1448 | terser "^4.7.0"
1449 |
1450 | rollup-plugin-typescript2@^0.27.1:
1451 | version "0.27.1"
1452 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.1.tgz#4f27193408a8f040139eed3e3db7b0c7f3668200"
1453 | integrity sha512-RJl77Bbj1EunAQDC3dK/O2HWuSUX3oJbRGzyLoS5o9W4Hs1Nix3Gavqj1Lzs5Y6Ff4H2xXfmZ1WWUQCYocSbzQ==
1454 | dependencies:
1455 | "@rollup/pluginutils" "^3.0.8"
1456 | find-cache-dir "^3.3.1"
1457 | fs-extra "8.1.0"
1458 | resolve "1.15.1"
1459 | tslib "1.11.2"
1460 |
1461 | rollup-pluginutils@^2.6.0:
1462 | version "2.8.2"
1463 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
1464 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
1465 | dependencies:
1466 | estree-walker "^0.6.1"
1467 |
1468 | rollup@^2.18.1:
1469 | version "2.18.1"
1470 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.18.1.tgz#1662c679da5dfc89ec6fda75951a2bcca1a4f77d"
1471 | integrity sha512-w4X77ADA+WTGlapC8Z6yggdJtODw3SBl6R2LSkA7ZW5MtdkgcB7sfaSD1UWyx8diXbMcGIb0eI9gCx/dyqOgNQ==
1472 | optionalDependencies:
1473 | fsevents "~2.1.2"
1474 |
1475 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2:
1476 | version "5.2.1"
1477 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1478 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1479 |
1480 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1481 | version "5.1.2"
1482 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1483 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1484 |
1485 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
1486 | version "2.1.2"
1487 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1488 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1489 |
1490 | semver@^5.7.1:
1491 | version "5.7.1"
1492 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1493 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
1494 |
1495 | semver@^6.0.0:
1496 | version "6.3.0"
1497 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1498 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1499 |
1500 | semver@^7.0.0, semver@^7.1.1, semver@^7.3.2:
1501 | version "7.3.2"
1502 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
1503 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
1504 |
1505 | serialize-javascript@^3.0.0:
1506 | version "3.1.0"
1507 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea"
1508 | integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==
1509 | dependencies:
1510 | randombytes "^2.1.0"
1511 |
1512 | set-blocking@~2.0.0:
1513 | version "2.0.0"
1514 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1515 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
1516 |
1517 | signal-exit@^3.0.0:
1518 | version "3.0.3"
1519 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
1520 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
1521 |
1522 | smart-buffer@^4.1.0:
1523 | version "4.1.0"
1524 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba"
1525 | integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==
1526 |
1527 | socks-proxy-agent@^5.0.0:
1528 | version "5.0.0"
1529 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60"
1530 | integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==
1531 | dependencies:
1532 | agent-base "6"
1533 | debug "4"
1534 | socks "^2.3.3"
1535 |
1536 | socks@^2.3.3:
1537 | version "2.4.1"
1538 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.4.1.tgz#cea68a280a3bf7cb6333dbb40cfb243d10725e9d"
1539 | integrity sha512-8mWHeYC1OA0500qzb+sqwm0Hzi8oBpeuI1JugoBVMEJtJvxSgco8xFSK+NRnZcHeeWjTbF82KUDo5sXH22TY5A==
1540 | dependencies:
1541 | ip "1.1.5"
1542 | smart-buffer "^4.1.0"
1543 |
1544 | source-map-support@~0.5.12:
1545 | version "0.5.19"
1546 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
1547 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
1548 | dependencies:
1549 | buffer-from "^1.0.0"
1550 | source-map "^0.6.0"
1551 |
1552 | source-map@^0.6.0, source-map@~0.6.1:
1553 | version "0.6.1"
1554 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1555 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1556 |
1557 | sourcemap-codec@^1.4.4:
1558 | version "1.4.8"
1559 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1560 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1561 |
1562 | sshpk@^1.7.0:
1563 | version "1.16.1"
1564 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
1565 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
1566 | dependencies:
1567 | asn1 "~0.2.3"
1568 | assert-plus "^1.0.0"
1569 | bcrypt-pbkdf "^1.0.0"
1570 | dashdash "^1.12.0"
1571 | ecc-jsbn "~0.1.1"
1572 | getpass "^0.1.1"
1573 | jsbn "~0.1.0"
1574 | safer-buffer "^2.0.2"
1575 | tweetnacl "~0.14.0"
1576 |
1577 | ssri@^8.0.0:
1578 | version "8.0.0"
1579 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808"
1580 | integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==
1581 | dependencies:
1582 | minipass "^3.1.1"
1583 |
1584 | string-width@^1.0.1:
1585 | version "1.0.2"
1586 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1587 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
1588 | dependencies:
1589 | code-point-at "^1.0.0"
1590 | is-fullwidth-code-point "^1.0.0"
1591 | strip-ansi "^3.0.0"
1592 |
1593 | "string-width@^1.0.2 || 2":
1594 | version "2.1.1"
1595 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1596 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
1597 | dependencies:
1598 | is-fullwidth-code-point "^2.0.0"
1599 | strip-ansi "^4.0.0"
1600 |
1601 | string-width@^3.0.0:
1602 | version "3.1.0"
1603 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
1604 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
1605 | dependencies:
1606 | emoji-regex "^7.0.1"
1607 | is-fullwidth-code-point "^2.0.0"
1608 | strip-ansi "^5.1.0"
1609 |
1610 | string-width@^4.0.0, string-width@^4.1.0:
1611 | version "4.2.0"
1612 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
1613 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
1614 | dependencies:
1615 | emoji-regex "^8.0.0"
1616 | is-fullwidth-code-point "^3.0.0"
1617 | strip-ansi "^6.0.0"
1618 |
1619 | string_decoder@~1.1.1:
1620 | version "1.1.1"
1621 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1622 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1623 | dependencies:
1624 | safe-buffer "~5.1.0"
1625 |
1626 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1627 | version "3.0.1"
1628 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1629 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1630 | dependencies:
1631 | ansi-regex "^2.0.0"
1632 |
1633 | strip-ansi@^4.0.0:
1634 | version "4.0.0"
1635 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1636 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
1637 | dependencies:
1638 | ansi-regex "^3.0.0"
1639 |
1640 | strip-ansi@^5.1.0:
1641 | version "5.2.0"
1642 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
1643 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
1644 | dependencies:
1645 | ansi-regex "^4.1.0"
1646 |
1647 | strip-ansi@^6.0.0:
1648 | version "6.0.0"
1649 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
1650 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
1651 | dependencies:
1652 | ansi-regex "^5.0.0"
1653 |
1654 | supports-color@^5.3.0:
1655 | version "5.5.0"
1656 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1657 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1658 | dependencies:
1659 | has-flag "^3.0.0"
1660 |
1661 | supports-color@^7.0.0, supports-color@^7.1.0:
1662 | version "7.1.0"
1663 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
1664 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
1665 | dependencies:
1666 | has-flag "^4.0.0"
1667 |
1668 | tar@^4.4.12:
1669 | version "4.4.13"
1670 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
1671 | integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
1672 | dependencies:
1673 | chownr "^1.1.1"
1674 | fs-minipass "^1.2.5"
1675 | minipass "^2.8.6"
1676 | minizlib "^1.2.1"
1677 | mkdirp "^0.5.0"
1678 | safe-buffer "^5.1.2"
1679 | yallist "^3.0.3"
1680 |
1681 | tar@^6.0.1, tar@^6.0.2:
1682 | version "6.0.2"
1683 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39"
1684 | integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==
1685 | dependencies:
1686 | chownr "^2.0.0"
1687 | fs-minipass "^2.0.0"
1688 | minipass "^3.0.0"
1689 | minizlib "^2.1.0"
1690 | mkdirp "^1.0.3"
1691 | yallist "^4.0.0"
1692 |
1693 | term-size@^2.1.0:
1694 | version "2.2.0"
1695 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753"
1696 | integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==
1697 |
1698 | terser@^4.6.12, terser@^4.7.0:
1699 | version "4.8.0"
1700 | resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
1701 | integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
1702 | dependencies:
1703 | commander "^2.20.0"
1704 | source-map "~0.6.1"
1705 | source-map-support "~0.5.12"
1706 |
1707 | tough-cookie@~2.5.0:
1708 | version "2.5.0"
1709 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
1710 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
1711 | dependencies:
1712 | psl "^1.1.28"
1713 | punycode "^2.1.1"
1714 |
1715 | tslib@1.11.2:
1716 | version "1.11.2"
1717 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.2.tgz#9c79d83272c9a7aaf166f73915c9667ecdde3cc9"
1718 | integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==
1719 |
1720 | tunnel-agent@^0.6.0:
1721 | version "0.6.0"
1722 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1723 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1724 | dependencies:
1725 | safe-buffer "^5.0.1"
1726 |
1727 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1728 | version "0.14.5"
1729 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1730 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1731 |
1732 | type-fest@^0.8.1:
1733 | version "0.8.1"
1734 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
1735 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
1736 |
1737 | typescript@^3.9.5:
1738 | version "3.9.5"
1739 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36"
1740 | integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==
1741 |
1742 | unique-filename@^1.1.1:
1743 | version "1.1.1"
1744 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
1745 | integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
1746 | dependencies:
1747 | unique-slug "^2.0.0"
1748 |
1749 | unique-slug@^2.0.0:
1750 | version "2.0.2"
1751 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
1752 | integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
1753 | dependencies:
1754 | imurmurhash "^0.1.4"
1755 |
1756 | universalify@^0.1.0:
1757 | version "0.1.2"
1758 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
1759 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
1760 |
1761 | uri-js@^4.2.2:
1762 | version "4.2.2"
1763 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
1764 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
1765 | dependencies:
1766 | punycode "^2.1.0"
1767 |
1768 | util-deprecate@~1.0.1:
1769 | version "1.0.2"
1770 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1771 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1772 |
1773 | uuid@^3.3.2:
1774 | version "3.4.0"
1775 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
1776 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
1777 |
1778 | validate-npm-package-name@^3.0.0:
1779 | version "3.0.0"
1780 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
1781 | integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
1782 | dependencies:
1783 | builtins "^1.0.3"
1784 |
1785 | verror@1.10.0:
1786 | version "1.10.0"
1787 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
1788 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1789 | dependencies:
1790 | assert-plus "^1.0.0"
1791 | core-util-is "1.0.2"
1792 | extsprintf "^1.2.0"
1793 |
1794 | which@^1.3.1:
1795 | version "1.3.1"
1796 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1797 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1798 | dependencies:
1799 | isexe "^2.0.0"
1800 |
1801 | which@^2.0.2:
1802 | version "2.0.2"
1803 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1804 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1805 | dependencies:
1806 | isexe "^2.0.0"
1807 |
1808 | wide-align@^1.1.0:
1809 | version "1.1.3"
1810 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
1811 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
1812 | dependencies:
1813 | string-width "^1.0.2 || 2"
1814 |
1815 | widest-line@^3.1.0:
1816 | version "3.1.0"
1817 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
1818 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
1819 | dependencies:
1820 | string-width "^4.0.0"
1821 |
1822 | wrappy@1:
1823 | version "1.0.2"
1824 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1825 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1826 |
1827 | yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
1828 | version "3.1.1"
1829 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
1830 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
1831 |
1832 | yallist@^4.0.0:
1833 | version "4.0.0"
1834 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1835 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1836 |
--------------------------------------------------------------------------------