├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── babel.config.js
├── example
├── README.md
├── app
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ └── manifest.json
│ ├── src
│ │ ├── App.css
│ │ ├── App.js
│ │ ├── App.test.js
│ │ ├── Navbar.js
│ │ ├── charts
│ │ │ ├── BasicBarChart.js
│ │ │ ├── LiveChart.js
│ │ │ ├── MixedLineBarChart.js
│ │ │ ├── MultiDatasetBarChart.js
│ │ │ ├── RealtimeTimeseriesChart.js
│ │ │ ├── StyledBarChart.js
│ │ │ └── index.js
│ │ ├── index.css
│ │ ├── index.js
│ │ └── logo.svg
│ └── yarn.lock
├── hasura
│ ├── config.yaml
│ └── migrations
│ │ ├── 1552117082230_init.up.sql
│ │ ├── 1552117082230_init.up.yaml
│ │ ├── 1552349794748_create_relationship_comments_public_table_articles.down.yaml
│ │ ├── 1552349794748_create_relationship_comments_public_table_articles.up.yaml
│ │ ├── 1552436653783_alter_table_public_stocks_add_column_uuid.down.yaml
│ │ ├── 1552436653783_alter_table_public_stocks_add_column_uuid.up.yaml
│ │ ├── 1552436714359_run_sql_migration.down.yaml
│ │ └── 1552436714359_run_sql_migration.up.yaml
└── scripts
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── README.md
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ └── yarn.lock
├── how-it-works.md
├── package.json
├── rollup.config.js
├── src
├── array-fields.js
├── converter.js
└── index.js
├── test
├── data.test.js
└── index.test.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | lib
3 | bundle
4 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | example
3 | bundle
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Hasura
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.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # graphql2chartjs - Instant realtime charts using GraphQL
2 |
3 | `graphql2chartjs` reshapes your GraphQL data as per the [ChartJS](https://chartjs.org) API. This makes it easy to query a GraphQL API and render the output as a ChartJS chart.
4 |
5 | For example, if you're using Postgres and [Hasura](https://hasura.io), this is what using `graphql2chartjs` looks like:
6 |
7 | 
8 |
9 |
10 |
11 | ## Demos & sandbox
12 | We've set up a GraphQL server with continuously changing data, so that you can try graphql2chartjs out easily.
13 |
14 |
15 | |[View live charts](https://graphql2chartjs-examples.herokuapp.com) | [Edit in sandbox](https://codesandbox.io/s/p2wpj1o8pj) | [Open GraphiQL](https://g2c-examples-graphiql.herokuapp.com/) |
16 | |---|---|---|
17 |
18 | 
19 |
20 | The demo above cover the following types of charts: [basic](https://graphql2chartjs-examples.herokuapp.com/#bar), [multiple datasets](https://graphql2chartjs-examples.herokuapp.com/#multi-bar), [mixed chart-types](https://graphql2chartjs-examples.herokuapp.com/#mixed), [realtime chart with live data](https://graphql2chartjs-examples.herokuapp.com/#live-chart), [realtime time-series](https://graphql2chartjs-examples.herokuapp.com/#timeseries-chart)
21 |
22 | ## Usage with Hasura
23 | Hasura gives you an instant realtime GraphQL API on an existing Postgres database. You can create views to capture analytics and aggregations on your database and instantly turn them into charts.
24 |
25 | Watch this video below to see a demo/tutorial of using Hasura with an existing Postgres database, creating views and building charts.
26 |
27 |
32 |
33 |
34 | ## Example usage with react, apollo and react-chartjs-2
35 |
36 | ```javascript
37 | import {Query} from 'react-apollo';
38 | import gql from 'graphql-tag';
39 | import graphql2chartjs from 'graphql2chartjs';
40 | import {Bar} from 'react-chartjs-2';
41 |
42 | const Chart = () => (
43 |
52 | {({data} => {
53 | if (data) {
54 | const g2c = new graphql2chartjs(data, 'bar');
55 | return ( );
56 | }
57 | return null;
58 | }
59 |
60 | );
61 | ```
62 |
63 | ## Mapping GraphQL queries to ChartJS charts
64 |
65 | Different types of charts need different structures in their datasets.
66 |
67 | For example a bar chart dataset needs labels and data associated for each label; the ChartJS API refers to this as `label` and `data`. Once you alias fields in your graphql query to `label` and `data`, and pass the response through `graphql2chartjs`, your dataset is ready to be used by bar chart in chartjs.
68 |
69 | ### Bar / Line / Doughnut / Pie / Radar / Polar Area / Area
70 |
71 | Charts of this type need 2 data inputs, `label` and `data`.
72 | ```graphql
73 | query {
74 | ArticleLikes : articles {
75 | label: title
76 | data: likes
77 | }
78 | }
79 | ```
80 |
81 | ### Scatter / Bubble
82 |
83 | Charts of this type need 2 data inputs: `data_x`, `data_y` (and `data_r` for bubble).
84 | ```graphql
85 | query {
86 | ArticleLikesVsComments : articles {
87 | data_x: num_likes
88 | data_y: num_comments
89 | }
90 | }
91 | ```
92 |
93 | ### Time series (line / bar)
94 |
95 | Charts of this type need 2 data inputs, `data_x` or `data_t` and `data_y`. Note that there is no `label`.
96 |
97 | ```graphql
98 | query {
99 | StockPrices : stockprice {
100 | data_t: created
101 | data_y: price
102 | }
103 | }
104 | ```
105 |
106 | ## graphql2chartjs usage
107 |
108 | graphql2chartjs works in 3 steps:
109 |
110 | 1. Initialise graphql2chartjs: `const g2c = new graphql2chartjs()`
111 | 2. Add data from your graphql response: `g2c.add(graphqlResponse.data, 'line')`
112 | 3. Set your chart data to the data properly of the graphql2chartjs instance: `g2c.data`
113 |
114 | ### Step 1: Initialiase with data: `new graphql2chartjs()`
115 |
116 | #### Option 1: Initialise with data and chart type
117 |
118 | **`graphql2chartjs(data, chartType)`**
119 |
120 | ```javascript
121 | const g2c = new graphql2chartjs(data, 'bar');
122 | ```
123 |
124 | - `data`: This is your GraphQL response. This data should have fields `label`, `data` etc. as per the GraphQL querying described above.
125 | - `chartType`: This is a string that represents valid values of what your chart type is. Valid values include `'line'`, `'bar'`, `'radar'`, `'doughnut'`, `'pie'`, `'polarArea'`, `'bubble'`, `'scatter'`.
126 |
127 | **Notes:**
128 | - This is the simplest way of using `graphql2chartjs`
129 | - If you have multiple datasets, all of the datasets will be rendered automatically as the same type of chart
130 | - To customise the UI options of the rendered chart like colors or to create a mixed type chart (one dataset is rendered as a line chart, another as a bar chart) use the next initialisation method instead of this one.
131 |
132 |
133 | #### Option 2: Initialise with data and a transform function
134 |
135 | **`graphql2chartjs(data, transform)`**
136 |
137 | The transformation function can add chartjs dataset props or even modify the record data:
138 |
139 | ```javascript
140 | const g2c = new graphql2chartjs(data, (datasetName, dataPoint) => {
141 | return {
142 | chartType: 'bar',
143 | backgroundColor: 'yellow'
144 | };
145 | });
146 | ```
147 |
148 | - `transform(datasetName, dataPoint)`: This function defined by you can take the name of the dataset and the data record that comes from the GraphQL response and returns an object that can should have the `chartType` key and optionally other keys that specify other dataset properties.
149 | - The object returned by this function should look like the following:
150 | ```javascript
151 | {
152 | chartType: 'line', // Or 'line', 'bar', 'radar', 'doughnut', 'pie', 'polarArea', 'bubble', 'scatter'
153 |
154 | }
155 | ```
156 | - `chartType`: This should be a string value, one of: `'line'`, `'bar'`, `'radar'`, `'doughnut'`, `'pie'`, `'polarArea'`, `'bubble'`, `'scatter'`
157 | - Other keys in this object should be dataset properties. These properties are slightly different for different chart types.
158 | - Line chart: https://www.chartjs.org/docs/latest/charts/line.html#dataset-properties
159 | - Bar chart: https://www.chartjs.org/docs/latest/charts/bar.html#dataset-properties
160 | - Radar chart: https://www.chartjs.org/docs/latest/charts/radar.html#dataset-properties
161 | - Doughnut & Pie: https://www.chartjs.org/docs/latest/charts/doughnut.html#dataset-properties
162 | - Polar: https://www.chartjs.org/docs/latest/charts/polar.html#dataset-properties
163 | - Bubble: https://www.chartjs.org/docs/latest/charts/bubble.html#dataset-properties
164 | - Scatter: https://www.chartjs.org/docs/latest/charts/scatter.html#dataset-properties
165 |
166 |
167 | ### Step 2: Now create your chart with data - `g2c.data`
168 |
169 | `g2c.data` gives you access to the latest ChartJS data that can be passed to your chart.
170 |
171 | 1. Javascript
172 | ```javascript
173 | var myChart = new Chart(ctx, { data: g2c.data });
174 | ```
175 |
176 | 2. react-chartjs-2
177 | ```javascript
178 |
179 | ```
180 |
181 | ### Step 3: (optional) Incrementally add data for your chart
182 |
183 | **`g2c.add()`**
184 |
185 | Once you've initialised a `graphql2chartjs` object, you can use the `add` function to add data for the first time or incrementally:
186 |
187 | ```javascript
188 | await data = runQuery(..);
189 |
190 | // Add for a chart type
191 | g2c.add(data, 'line');
192 |
193 | // Add with a transformation function to change UI props for the new data added or udpated
194 | g2c.add(data, (datasetName, dataPoint) => {
195 | chartType: 'line',
196 | pointBackgroundColor: 'yellow'
197 | });
198 | ```
199 |
200 |
201 | ## Installation
202 |
203 | ### Via npm
204 |
205 | ```
206 | npm install --save graphql2chartjs
207 | ```
208 |
209 | ### Use in a script tag
210 |
211 | ```html
212 |
213 | ```
214 |
215 | ## Reforming the data
216 |
217 | ### `reform()`
218 |
219 | You can reform the existing data in your `graphql2chartjs` instance using the reform function that takes a reformer function as an argument. This reformer function is run over every datapoint in every dataset. For instance, to scale the x and y coordinates, you would do something like:
220 |
221 | ```
222 | g2c.reform((datasetName, dataPoint) => {
223 | // scale the x, y coordinates
224 | return {
225 | data_x: scalingFactor(dataPoint.data_x),
226 | data_y: scalingFactor(dataPoint.data_y)
227 | }
228 | })
229 | ```
230 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | const presets = [
2 | [
3 | "@babel/env",
4 | {
5 | targets: {
6 | edge: "17",
7 | firefox: "60",
8 | chrome: "67",
9 | safari: "11.1",
10 | },
11 | useBuiltIns: "usage",
12 | },
13 | ],
14 | ];
15 |
16 | module.exports = { presets };
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # Example
2 |
3 | This example app is live at https://graphql2chartjs-examples.herokuapp.com
4 |
5 | ## Client (React app)
6 |
7 | The app directory has the React app that is already set up with a backend.
8 |
9 | ## Migrations (Hasura migrations)
10 |
11 | The hasura directory contains the migrations for the Hasura GraphQL Engine backend that is setup at https://graphql2chartjs.hasura.app and has a GraphQL endpoint https://graphqlchartjs.hasura.app/v1/graphql
12 |
13 | ## Scripts
14 |
15 | The scripts directory contains the scripts that are run to populate the backend with sample data.
16 |
--------------------------------------------------------------------------------
/example/app/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 |
--------------------------------------------------------------------------------
/example/app/README.md:
--------------------------------------------------------------------------------
1 | To run this example:
2 |
3 | ```
4 | npm install
5 | npm start
6 | ```
7 |
--------------------------------------------------------------------------------
/example/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "graphql2chartjs-examples",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "apollo-boost": "^0.1.28",
7 | "apollo-link-ws": "^1.0.14",
8 | "bootstrap": "^4.3.1",
9 | "chart.js": "^2.7.3",
10 | "graphql": "^14.1.1",
11 | "graphql2chartjs": "^0.2.1",
12 | "react": "^16.8.3",
13 | "react-apollo": "^2.4.1",
14 | "react-bootstrap": "^1.0.0-beta.5",
15 | "react-chartjs-2": "^2.7.4",
16 | "react-dom": "^16.8.3",
17 | "react-scripts": "2.1.5",
18 | "react-syntax-highlighter": "^10.1.3",
19 | "subscriptions-transport-ws": "^0.9.15"
20 | },
21 | "scripts": {
22 | "start": "react-scripts start",
23 | "build": "react-scripts build",
24 | "test": "react-scripts test",
25 | "eject": "react-scripts eject"
26 | },
27 | "eslintConfig": {
28 | "extends": "react-app"
29 | },
30 | "browserslist": [
31 | ">0.2%",
32 | "not dead",
33 | "not ie <= 11",
34 | "not op_mini all"
35 | ],
36 | "devDependencies": {
37 | "@playlyfe/gql": "^2.6.1"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/example/app/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hasura/graphql2chartjs/0392dc0f6bab724f62fa1521f6d7bba54b5e4c2e/example/app/public/favicon.ico
--------------------------------------------------------------------------------
/example/app/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
15 |
16 |
17 |
23 |
32 | graphql2chartjs examples
33 |
34 |
35 | You need to enable JavaScript to run this app.
36 |
37 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example/app/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": ".",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/example/app/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | animation: App-logo-spin infinite 20s linear;
7 | height: 40vmin;
8 | pointer-events: none;
9 | }
10 |
11 | .App-header {
12 | background-color: #282c34;
13 | min-height: 100vh;
14 | display: flex;
15 | flex-direction: column;
16 | align-items: center;
17 | justify-content: center;
18 | font-size: calc(10px + 2vmin);
19 | color: white;
20 | }
21 |
22 | .App-link {
23 | color: #61dafb;
24 | }
25 |
26 | @keyframes App-logo-spin {
27 | from {
28 | transform: rotate(0deg);
29 | }
30 | to {
31 | transform: rotate(360deg);
32 | }
33 | }
34 |
35 | .half_screen {
36 | width: 50%;
37 | display: inline-block;
38 | position: relative;
39 | }
40 |
41 | .chartWrapper {
42 | display: flex;
43 | }
44 |
45 | .loadingIndicator {
46 | position: absolute;
47 | top: 50%;
48 | left: 50%;
49 | transform: translate(-50%, -50%);
50 | }
51 |
52 | @media(max-width: 767px) {
53 | .half_screen {
54 | width: 100%;
55 | display: block;
56 | }
57 | .chartWrapper {
58 | display: block;
59 | }
60 | }
61 |
62 | .fiftypercent {
63 | width: 100px;
64 | display: inline-block;
65 | }
--------------------------------------------------------------------------------
/example/app/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './App.css';
3 | import NavBar from './Navbar';
4 |
5 | import {
6 | BasicBarChart,
7 | StyledBarChart,
8 | MultiDatasetBarChart,
9 | MixedLineBarChart,
10 | LiveChart,
11 | RealtimeTimeseriesChart
12 | } from './charts';
13 |
14 | const App = () => (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | );
27 |
28 | export default App;
29 |
--------------------------------------------------------------------------------
/example/app/src/App.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './App';
4 |
5 | it('renders without crashing', () => {
6 | const div = document.createElement('div');
7 | ReactDOM.render( , div);
8 | ReactDOM.unmountComponentAtNode(div);
9 | });
10 |
--------------------------------------------------------------------------------
/example/app/src/Navbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Navbar, Nav, NavDropdown, Button } from 'react-bootstrap';
3 |
4 | const Bar = () => {
5 | return (
6 |
7 | graphql2chartjs examples
8 |
9 |
10 |
11 | Basic bar chart
12 | Styled bar chart
13 | Bar (multiple datasets)
14 | Mixed chart (bar and line)
15 | Live chart
16 | Time series
17 |
18 |
19 |
20 |
21 | GitHub
22 |
23 |
24 | Edit in sandbox
25 |
26 |
27 |
28 |
29 | )
30 | }
31 |
32 | export default Bar;
33 |
34 |
--------------------------------------------------------------------------------
/example/app/src/charts/BasicBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Bar } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { Query } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | const query = `
10 | query {
11 | ArticleLikes: article_stats {
12 | id
13 | label: title
14 | data: num_likes
15 | }
16 | }
17 | `;
18 |
19 | // Chart component
20 | const Chart = ({ query }) => (
21 |
24 | {
25 | ({data, error, loading}) => {
26 | if (loading || error) {
27 | return Please wait
;
28 | }
29 | // create graphql2chartjs instance
30 | const g2c = new graphql2chartjs();
31 | // add graphql data to graphql2chartjs instance
32 | g2c.add(data, 'bar');
33 | // render chart with g2c data :)
34 | return (
35 |
36 | )
37 | }
38 | }
39 |
40 | )
41 |
42 | /****************************************UTILS*****************************************/
43 |
44 | const HighlightedQuery = ({ query }) => (
45 |
49 | {query}
50 |
51 | )
52 |
53 | const BasicBarChart = ({ path }) => {
54 | return (
55 |
56 |
57 |
58 |
Basic bar chart
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
View source
69 |
70 |
71 |
72 | )
73 | }
74 |
75 | export { BasicBarChart };
76 |
--------------------------------------------------------------------------------
/example/app/src/charts/LiveChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Line } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { Subscription } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | const subscription = `
10 | subscription {
11 | stock_price_for_Amazon: stocks (
12 | order_by: {
13 | created: desc
14 | }
15 | where: {
16 | ticker: {
17 | _eq: "AMZN"
18 | }
19 | }
20 | limit: 100
21 | ) {
22 | data_t: created
23 | data_y: price
24 | }
25 | }
26 | `;
27 |
28 | // Chart component
29 | const Chart = () => (
30 |
33 | {
34 | ({data, error, loading}) => {
35 | if (loading || error) {
36 | console.error(error);
37 | return Please wait
;
38 | }
39 | // create graphql2chartjs instance
40 | const g2c = new graphql2chartjs();
41 | // add graphql data to graphql2chartjs instance while adding different chart types and properties
42 | g2c.add(data, (dataSetName, dataPoint) => {
43 | return {
44 | ...dataPoint,
45 | chartType: 'line',
46 | borderColor: '#333538',
47 | pointBackgroundColor: '#333538',
48 | backgroundColor: '#333538',
49 | fill: false
50 | }
51 | });
52 | // render chart with g2c data :)
53 | return (
54 |
68 | )
69 | }
70 | }
71 |
72 | )
73 |
74 | /****************************************UTILS*****************************************/
75 |
76 | const HighlightedSubscription = () => (
77 |
81 | {subscription}
82 |
83 | )
84 |
85 | const LiveChart = ({ path }) => {
86 | return (
87 |
88 |
89 |
90 |
Live chart (with mock data)
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
View source
101 |
102 |
103 |
104 |
105 | )
106 | }
107 |
108 | export { LiveChart };
109 |
--------------------------------------------------------------------------------
/example/app/src/charts/MixedLineBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Bar } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { Query } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | const query = `
10 | query {
11 | ArticleComments: article_stats {
12 | id
13 | label: title
14 | data: num_comments
15 | }
16 | ArticleLikes: article_stats {
17 | id
18 | label: title
19 | data: num_likes
20 | }
21 | }
22 | `;
23 |
24 | // Chart component
25 | const Chart = () => (
26 |
29 | {
30 | ({data, error, loading}) => {
31 | if (loading || error) {
32 | console.error(error);
33 | return Please wait
;
34 | }
35 | // create graphql2chartjs instance
36 | const g2c = new graphql2chartjs();
37 | // add graphql data to graphql2chartjs instance while adding different chart types and properties
38 | g2c.add(data, (dataSetName, dataPoint) => {
39 | if (dataSetName === 'ArticleLikes') {
40 | // return bar chart properties for article likes
41 | return {
42 | ...dataPoint,
43 | chartType: 'bar',
44 | backgroundColor: '#44c0c1',
45 | }
46 | }
47 | // return line chart properties for article comments
48 | return {
49 | ...dataPoint,
50 | chartType: 'line',
51 | borderColor: '#ffce49',
52 | pointBackgroundColor: '#ffce49',
53 | backgroundColor: '#ffce49',
54 | fill: false
55 | }
56 | });
57 | // render chart with g2c data :)
58 | return (
59 |
60 | )
61 | }
62 | }
63 |
64 | )
65 |
66 | /****************************************UTILS*****************************************/
67 |
68 | const HighlightedQuery = ({ query }) => (
69 |
73 | {query}
74 |
75 | )
76 |
77 | const MixedLineBarChart = ({ path }) => {
78 | return (
79 |
80 |
81 |
82 |
Mixed chart (line and bar)
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
View source
93 |
94 |
95 |
96 | )
97 | }
98 |
99 | export { MixedLineBarChart };
100 |
--------------------------------------------------------------------------------
/example/app/src/charts/MultiDatasetBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Bar } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { Query } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | const query = `
10 | query {
11 | ArticleComments: article_stats {
12 | id
13 | label: title
14 | data: num_comments
15 | }
16 | ArticleLikes: article_stats {
17 | id
18 | label: title
19 | data: num_likes
20 | }
21 | }
22 | `;
23 |
24 | // Chart component
25 | const Chart = () => (
26 |
29 | {
30 | ({data, error, loading}) => {
31 | if (loading || error) {
32 | console.error(error);
33 | return Please wait
;
34 | }
35 | // create graphql2chartjs instance
36 | const g2c = new graphql2chartjs();
37 | // add graphql data to graphql2chartjs instance while adding the backgroundcolor property
38 | g2c.add(data, (dataSetName, dataPoint) => {
39 | if (dataSetName === 'ArticleLikes') {
40 | return {
41 | ...dataPoint,
42 | chartType: 'bar',
43 | backgroundColor: '#44c0c1',
44 | }
45 | }
46 | return {
47 | ...dataPoint,
48 | chartType: 'bar',
49 | backgroundColor: '#ffce49',
50 | }
51 | });
52 | // render chart with g2c data :)
53 | return (
54 |
55 | )
56 | }
57 | }
58 |
59 | )
60 |
61 | /****************************************UTILS*****************************************/
62 |
63 | const HighlightedQuery = ({ query }) => (
64 |
68 | {query}
69 |
70 | )
71 |
72 | const MultiDatasetBarChart = ({ path }) => {
73 | return (
74 |
75 |
76 |
77 |
Bar chart (multiple datasets)
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
View source
88 |
89 |
90 |
91 | )
92 | }
93 |
94 | export { MultiDatasetBarChart };
95 |
--------------------------------------------------------------------------------
/example/app/src/charts/RealtimeTimeseriesChart.js:
--------------------------------------------------------------------------------
1 | import React, {useState, useEffect} from 'react';
2 | import { Line } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { ApolloConsumer } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | // Chart component
10 | const Chart = ({client}) => {
11 | const [chartJsData, setChartjsData] = useState({});
12 | useEffect(
13 | () => {
14 | // initialize g2c
15 | const g2c = new graphql2chartjs();
16 | let latestTime = null;
17 | // load initial data
18 | client.query({
19 | query: gql`${firstQuery}`
20 | }).then((resp) => {
21 | // add the received data to g2c and update state
22 | g2c.add(resp.data, () => lineChartOptions);
23 | setChartjsData(g2c.data)
24 |
25 | // update the timestamp of the last received entry
26 | if (resp.data.StockPriceForAmazon.length) {
27 | latestTime = resp.data.StockPriceForAmazon[0].data_t;
28 | }
29 |
30 | // subscribe to a notification with newest data in the database
31 | client.subscribe({
32 | query: gql`${lastEventSubscription}`
33 | }).subscribe({
34 | next(event) {
35 | // if the data is not stale, fetch new data and add to g2c
36 | if (event.data.StockPriceForAmazon.length) {
37 | if (!latestTime || event.data.StockPriceForAmazon[0].data_t > latestTime) {
38 | fetchMore()
39 | }
40 | }
41 | },
42 | error(err) {
43 | console.error(err);
44 | }
45 | })
46 | })
47 |
48 | const fetchMore = () => {
49 | client.query({
50 | query: gql`${fetchMoreQuery}`,
51 | variables: {
52 | time: latestTime || "2019-03-12T19:16:45.640128+00:00"
53 | }
54 | }).then((resp) => {
55 | if (resp.data.StockPriceForAmazon.length) {
56 | g2c.add(resp.data, () => lineChartOptions);
57 | latestTime = resp.data.StockPriceForAmazon[0].data_t;
58 | setChartjsData(g2c.data);
59 | }
60 | })
61 | }
62 | },
63 | []
64 | )
65 |
66 | return (
67 |
81 | )
82 | }
83 |
84 | /****************************************UTILS*****************************************/
85 |
86 | const firstQuery = `
87 | query {
88 | StockPriceForAmazon: stocks (
89 | order_by: {
90 | created: desc
91 | }
92 | where: {
93 | ticker: {
94 | _eq: "AMZN"
95 | }
96 | }
97 | limit: 1000
98 | ) {
99 | data_t: created
100 | data_y: price
101 | ticker
102 | }
103 | }
104 | `;
105 |
106 | const lastEventSubscription = `
107 | subscription {
108 | StockPriceForAmazon: stocks (
109 | order_by: {
110 | created: desc
111 | }
112 | where: {
113 | ticker: {
114 | _eq: "AMZN"
115 | }
116 | }
117 | limit: 1
118 | ) {
119 | data_t: created
120 | }
121 | }
122 | `
123 |
124 | const fetchMoreQuery = `
125 | query ($time: timestamptz) {
126 | StockPriceForAmazon: stocks (
127 | order_by: {
128 | created: desc
129 | }
130 | where: {
131 | _and: [
132 | {
133 | ticker: {
134 | _eq: "AMZN"
135 | }
136 | },
137 | {
138 | created: {
139 | _gt: $time
140 | }
141 | }
142 | ]
143 | }
144 | ) {
145 | data_t: created
146 | data_y: price
147 | ticker
148 | }
149 | }
150 | `
151 |
152 | const HighlightedSubscription = () => (
153 |
157 | {
158 | `
159 | # first query to load last 1000 data points${firstQuery}
160 |
161 | # subscription to detect any change in the database${lastEventSubscription}
162 |
163 | # fetch data newer than the locally existing data${fetchMoreQuery}
164 | `
165 | }
166 |
167 | )
168 |
169 | const RealtimeTimeseriesChart = ({ path }) => {
170 | return (
171 |
172 |
173 |
174 |
Timeseries chart (with mock data)
175 |
176 |
177 |
178 |
179 |
180 |
181 | {
182 | client =>
183 | }
184 |
185 |
186 |
187 |
188 |
View source
189 |
190 |
191 |
192 |
193 | )
194 | }
195 |
196 | const lineChartOptions = {
197 | chartType: 'line',
198 | fill: false,
199 | borderColor: 'brown',
200 | pointBackgroundColor: 'brown',
201 | showLine: false
202 | }
203 |
204 | export { RealtimeTimeseriesChart };
205 |
--------------------------------------------------------------------------------
/example/app/src/charts/StyledBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Bar } from 'react-chartjs-2';
3 | import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4 | import SyntaxHighlighter from 'react-syntax-highlighter';
5 | import graphql2chartjs from 'graphql2chartjs';
6 | import { Query } from 'react-apollo';
7 | import gql from 'graphql-tag';
8 |
9 | const query = `
10 | query {
11 | ArticleLikes: article_stats {
12 | id
13 | label: title
14 | data: num_likes
15 | }
16 | }
17 | `;
18 |
19 | // Chart component
20 | const Chart = ({ query }) => (
21 |
24 | {
25 | ({data, error, loading}) => {
26 | if (loading || error) {
27 | return Please wait
;
28 | }
29 | // create graphql2chartjs instance
30 | const g2c = new graphql2chartjs();
31 | // add graphql data to graphql2chartjs instance while adding the backgroundcolor property
32 | g2c.add(data, (datasetName, dataPoint) => ({
33 | ...dataPoint,
34 | chartType: 'bar',
35 | backgroundColor: '#44c0c1',
36 | }));
37 | // render chart with g2c data :)
38 | return (
39 |
40 | )
41 | }
42 | }
43 |
44 | )
45 |
46 | /****************************************UTILS*****************************************/
47 |
48 | const HighlightedQuery = ({ query }) => (
49 |
53 | {query}
54 |
55 | )
56 |
57 | const StyledBarChart = ({ path }) => {
58 | return (
59 |
60 |
61 |
62 |
Styled bar chart
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
View source
73 |
74 |
75 |
76 | )
77 | }
78 |
79 | export { StyledBarChart };
80 |
--------------------------------------------------------------------------------
/example/app/src/charts/index.js:
--------------------------------------------------------------------------------
1 | export { BasicBarChart } from './BasicBarChart';
2 | export { StyledBarChart } from './StyledBarChart';
3 | export { MultiDatasetBarChart } from './MultiDatasetBarChart';
4 | export { MixedLineBarChart } from './MixedLineBarChart';
5 | export { LiveChart } from './LiveChart';
6 | export { RealtimeTimeseriesChart } from './RealtimeTimeseriesChart';
7 |
--------------------------------------------------------------------------------
/example/app/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
5 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
6 | sans-serif;
7 | -webkit-font-smoothing: antialiased;
8 | -moz-osx-font-smoothing: grayscale;
9 | }
10 |
11 | code {
12 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
13 | monospace;
14 | }
15 |
--------------------------------------------------------------------------------
/example/app/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './index.css';
4 | import App from './App';
5 | import { ApolloClient } from 'apollo-client';
6 | import { ApolloProvider } from 'react-apollo';
7 | import { WebSocketLink } from 'apollo-link-ws';
8 | import { InMemoryCache } from 'apollo-cache-inmemory';
9 |
10 | const link = new WebSocketLink({
11 | uri: 'wss://graphql2chartjs.hasura.app/v1/graphql',
12 | options: {
13 | reconnect: true
14 | }
15 | })
16 |
17 | const cache = new InMemoryCache();
18 |
19 | const client = new ApolloClient({
20 | link,
21 | cache
22 | });
23 |
24 | ReactDOM.render(
25 | (
26 |
27 |
28 |
29 | ),
30 | document.getElementById('root')
31 | );
32 |
--------------------------------------------------------------------------------
/example/app/src/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/hasura/config.yaml:
--------------------------------------------------------------------------------
1 | endpoint: http://localhost:8080
2 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552117082230_init.up.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE public.articles (
2 | id integer NOT NULL,
3 | title text NOT NULL,
4 | created timestamp with time zone DEFAULT now() NOT NULL,
5 | length integer NOT NULL
6 | );
7 |
8 |
9 | CREATE SEQUENCE public.article_id_seq
10 | AS integer
11 | START WITH 1
12 | INCREMENT BY 1
13 | NO MINVALUE
14 | NO MAXVALUE
15 | CACHE 1;
16 |
17 |
18 | CREATE TABLE public.comments (
19 | uuid uuid DEFAULT public.gen_random_uuid() NOT NULL,
20 | article_id integer NOT NULL,
21 | comment text NOT NULL,
22 | created timestamp with time zone DEFAULT now() NOT NULL
23 | );
24 |
25 |
26 |
27 | CREATE TABLE public.likes (
28 | uuid uuid DEFAULT public.gen_random_uuid() NOT NULL,
29 | article_id integer NOT NULL,
30 | created timestamp with time zone DEFAULT now() NOT NULL
31 | );
32 |
33 |
34 |
35 | CREATE VIEW public.article_stats AS
36 | SELECT a.id,
37 | a.title,
38 | a.length,
39 | l.count AS num_likes,
40 | c.count AS num_comments
41 | FROM public.articles a,
42 | ( SELECT likes.article_id,
43 | count(likes.uuid) AS count
44 | FROM public.likes
45 | GROUP BY likes.article_id) l,
46 | ( SELECT comments.article_id,
47 | count(comments.uuid) AS count
48 | FROM public.comments
49 | GROUP BY comments.article_id) c
50 | WHERE ((a.id = l.article_id) AND (a.id = c.article_id));
51 |
52 |
53 |
54 | CREATE TABLE public.stocks (
55 | ticker text NOT NULL,
56 | price numeric NOT NULL,
57 | created timestamp with time zone DEFAULT now() NOT NULL
58 | );
59 |
60 |
61 |
62 | ALTER TABLE ONLY public.articles ALTER COLUMN id SET DEFAULT nextval('public.article_id_seq'::regclass);
63 |
64 | ALTER TABLE ONLY public.articles
65 | ADD CONSTRAINT article_pkey PRIMARY KEY (id);
66 |
67 |
68 | ALTER TABLE ONLY public.comments
69 | ADD CONSTRAINT comments_pkey PRIMARY KEY (uuid);
70 |
71 |
72 | ALTER TABLE ONLY public.likes
73 | ADD CONSTRAINT likes_pkey PRIMARY KEY (uuid);
74 |
75 | ALTER TABLE ONLY public.stocks
76 | ADD CONSTRAINT stocks_pkey PRIMARY KEY (ticker);
77 |
78 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552117082230_init.up.yaml:
--------------------------------------------------------------------------------
1 | - type: replace_metadata
2 | args: {"functions":[],"remote_schemas":[],"tables":[{"table":"article_stats","object_relationships":[],"array_relationships":[],"insert_permissions":[],"select_permissions":[{"role":"anonymous","comment":null,"permission":{"allow_aggregations":false,"columns":["id","title","length","num_likes","num_comments"],"filter":{}}}],"update_permissions":[],"delete_permissions":[],"event_triggers":[]},{"table":"comments","object_relationships":[],"array_relationships":[],"insert_permissions":[],"select_permissions":[],"update_permissions":[],"delete_permissions":[],"event_triggers":[]},{"table":"stocks","object_relationships":[],"array_relationships":[],"insert_permissions":[],"select_permissions":[{"role":"anonymous","comment":null,"permission":{"allow_aggregations":false,"columns":["ticker","price","created"],"filter":{}}}],"update_permissions":[],"delete_permissions":[],"event_triggers":[]},{"table":"articles","object_relationships":[],"array_relationships":[],"insert_permissions":[],"select_permissions":[],"update_permissions":[],"delete_permissions":[],"event_triggers":[]},{"table":"likes","object_relationships":[],"array_relationships":[],"insert_permissions":[],"select_permissions":[],"update_permissions":[],"delete_permissions":[],"event_triggers":[]}],"query_templates":[]}
3 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552349794748_create_relationship_comments_public_table_articles.down.yaml:
--------------------------------------------------------------------------------
1 | - args:
2 | relationship: comments
3 | table:
4 | name: articles
5 | schema: public
6 | type: drop_relationship
7 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552349794748_create_relationship_comments_public_table_articles.up.yaml:
--------------------------------------------------------------------------------
1 | - args:
2 | name: comments
3 | table:
4 | name: articles
5 | schema: public
6 | using:
7 | manual_configuration:
8 | column_mapping:
9 | id: article_id
10 | remote_table:
11 | name: comments
12 | schema: public
13 | type: create_array_relationship
14 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552436653783_alter_table_public_stocks_add_column_uuid.down.yaml:
--------------------------------------------------------------------------------
1 | - args:
2 | sql: ALTER TABLE "public"."stocks" DROP COLUMN "uuid"
3 | type: run_sql
4 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552436653783_alter_table_public_stocks_add_column_uuid.up.yaml:
--------------------------------------------------------------------------------
1 | - args:
2 | sql: CREATE EXTENSION IF NOT EXISTS pgcrypto;
3 | type: run_sql
4 | - args:
5 | sql: ALTER TABLE "public"."stocks" ADD COLUMN "uuid" uuid NOT NULL DEFAULT gen_random_uuid()
6 | type: run_sql
7 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552436714359_run_sql_migration.down.yaml:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/example/hasura/migrations/1552436714359_run_sql_migration.up.yaml:
--------------------------------------------------------------------------------
1 | - args:
2 | cascade: false
3 | sql: |-
4 | alter table stocks drop constraint stocks_pkey;
5 | alter table stocks add constraint stocks_pkey primary key (uuid)
6 | type: run_sql
7 |
--------------------------------------------------------------------------------
/example/scripts/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/example/scripts/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 |
--------------------------------------------------------------------------------
/example/scripts/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:8
2 | WORKDIR /usr/src/app
3 | COPY package*.json ./
4 | RUN npm install
5 | COPY . .
6 | CMD [ "node", "index.js" ]
--------------------------------------------------------------------------------
/example/scripts/README.md:
--------------------------------------------------------------------------------
1 | Scripts that run to keep changing the data in the database.
2 |
3 | ```
4 | ADMIN_SECRET= node index.js
5 | ```
6 |
7 | ```
8 | docker build -t g2c-stocks-script:v1 .
9 | docker run -e ADMIN_SECRET= g2c-stocks-script:v1
10 | ```
11 |
--------------------------------------------------------------------------------
/example/scripts/index.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config();
2 | const fetch = require('node-fetch');
3 |
4 | const trendVars = {
5 | minor: 1,
6 | major: 10
7 | };
8 |
9 | let companies = [
10 | {ticker: 'AMZN', price: 821.66},
11 | {ticker: 'FB', price: 490.89},
12 | {ticker: 'AAPL', price: 853.23},
13 | {ticker: 'GOOG', price: 829.36},
14 | {ticker: 'MSFT', price: 871.95}
15 | ];
16 |
17 | // Set up minor trend (updates every half second)
18 | const changeMinor = () => {
19 | companies = companies.map((c) => {
20 | return {
21 | ticker: c.ticker,
22 | price: c.price + (Math.random() * 2) - 1
23 | };
24 | });
25 | };
26 | setInterval(changeMinor, 500);
27 |
28 | // Set up major trend (updates every 5seconds)
29 | const changeMajor = () => {
30 | companies = companies.map((c) => {
31 | return {
32 | ticker: c.ticker,
33 | price: c.price + (Math.random() * 20) - 10
34 | };
35 | });
36 | };
37 | setInterval(changeMajor, 5000);
38 |
39 | // Update stock prices
40 | const updatePrices = () => {
41 | fetch(
42 | 'https://graphql2chartjs.hasura.app/v1/graphql',
43 | {
44 | method: 'POST',
45 | body: JSON.stringify({
46 | query: `
47 | mutation($data: [stocks_insert_input!]!) {
48 | insert_stocks(objects: $data) {
49 | affected_rows
50 | }
51 | }
52 | `,
53 | variables: {
54 | data: companies
55 | }
56 | }),
57 | headers: {
58 | 'x-hasura-admin-secret': process.env.ADMIN_SECRET
59 | }
60 | }
61 | ).then((resp) => resp.json()).then((r) => {
62 | console.log(JSON.stringify(r, null, 2));
63 | setTimeout(updatePrices, 1000);
64 | });
65 | };
66 |
67 | updatePrices();
68 |
--------------------------------------------------------------------------------
/example/scripts/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "scripts",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "dotenv": {
8 | "version": "6.2.0",
9 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
10 | "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w=="
11 | },
12 | "node-fetch": {
13 | "version": "2.3.0",
14 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
15 | "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/example/scripts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "scripts",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1"
7 | },
8 | "author": "",
9 | "license": "ISC",
10 | "dependencies": {
11 | "dotenv": "^6.2.0",
12 | "node-fetch": "^2.3.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/scripts/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | dotenv@^6.2.0:
6 | version "6.2.0"
7 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
8 |
9 | node-fetch@^2.3.0:
10 | version "2.3.0"
11 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5"
12 |
--------------------------------------------------------------------------------
/how-it-works.md:
--------------------------------------------------------------------------------
1 | ## How it works
2 |
3 | ### Motivation
4 |
5 | We started using ChartJS with GraphQL so that we could leverage GraphQL's realtime subscriptions to build realtime charts. Soon enough we realised that we can automate this tedious procedure of restructuring the GraphQL data to a form that ChartJS expects.
6 |
7 | The idea behind this tool is to generate ChartJS compliant `data` object from your GraphQL response by simply adding a few aliases in your GraphQL query.
8 |
9 | ### GraphQL Aliasing
10 |
11 | GraphQL gives you the power of aliasing the response fields with custom names. Lets look at a simple GraphQL query.
12 |
13 | ```gql
14 | query {
15 | rootField {
16 | field1
17 | field2
18 | }
19 | }
20 |
21 | ```
22 |
23 | The response to this query would be of the form:
24 |
25 | ```json
26 | {
27 | "data": {
28 | "rootField": [
29 | {
30 | "field1": "value 1",
31 | "field2": "value 2"
32 | }
33 | ]
34 | }
35 | }
36 | ```
37 |
38 | Now, when we alias the above GraphQL query like so:
39 |
40 | ```gql
41 | query {
42 | aliasedRootField: rootField {
43 | aliasedField1: field1
44 | aliasedField2: field2
45 | }
46 | }
47 | ```
48 |
49 | The response would be:
50 |
51 | ```
52 | {
53 | "data": {
54 | "aliasedRootField": {
55 | "aliasedField1": 'value 1',
56 | "aliasedField2": 'value 2'
57 | }
58 | }
59 | }
60 | ```
61 |
62 | ### ChartJS API
63 |
64 | Most of the ChartJS charts expect a data object of the form:
65 |
66 | ```js
67 | {
68 | "labels": ["label1", "label2", ..., "label10"], // list of strings
69 | "datasets": [ // list of custom datasets with their properties
70 | {
71 | "data": [1334, 4314, ..., 2356],
72 | "backgroundColor": ['red', "blue", ..., "brown"],
73 | "borderColor": ['red', "blue", ..., "brown"],
74 | "fill": false
75 | }
76 | ]
77 | }
78 | ```
79 |
80 | ### The graphql2chartjs function
81 |
82 | The `graphql2chartjs` function i.e. the default export of this library accepts two arguments:
83 | 1. **type**: (String) Type of the chart; Eg. `bar`, `line`, `pie`
84 | 2. **graphqlData**: [Object] This should be an object with each field having its value as a list of data points.
85 |
86 | You can directly feed the output of the `graphql2chartjs` function to your ChartJS instance.
87 |
88 | ```js
89 |
90 | const graphQLResponse = makeGraphQLQuery();
91 | var chartType = 'bar';
92 |
93 | var myChart = new Chart(ctx, {
94 | type: chartType,
95 | data: graphql2chartjs(chartType, graphQLResponse),
96 | options: {...} //custom options
97 | });
98 |
99 | ```
100 |
101 | ### How the restructuring works
102 |
103 | The `graphql2chartjs` function understands the API for each kind of chart that it supports. It constructs appropriate arrays mapping the indices of labels with other dataset properties.
104 |
105 | Lets consider this GraphQL response:
106 |
107 | ```json
108 | {
109 | "data": {
110 | "VideoGameFollowers": [
111 | {
112 | "id": 1,
113 | "label": "Dota",
114 | "data": 427014,
115 | "pointBackgroundColor": "red",
116 | "fill": false
117 | },
118 | {
119 | "id": 2,
120 | "label": "CS:GO",
121 | "data": 220006,
122 | "pointBackgroundColor": "yellow",
123 | "fill": false
124 | },
125 | {
126 | "id": 3,
127 | "label": "NFS",
128 | "data": 71004,
129 | "pointBackgroundColor": "#3366ff",
130 | "fill": false
131 | },
132 | {
133 | "id": 4,
134 | "label": "PUBG",
135 | "data": 129769,
136 | "pointBackgroundColor": "#330000",
137 | "fill": false
138 | },
139 | {
140 | "id": 5,
141 | "label": "Quake 3",
142 | "data": 90808,
143 | "pointBackgroundColor": "green",
144 | "fill": false
145 | }
146 | ]
147 | }
148 | }
149 | ```
150 |
151 | The above GraphQL response is restructured to the ChartJS `data` as follows:
152 |
153 | 1. It starts with initializing the `data` object as:
154 |
155 | ```json
156 | {
157 | "labels": [],
158 | "datasets": []
159 | }
160 | ```
161 |
162 | 2. It pushes a dataset with label as `humanized(rootFieldName)`. In this case, the root field is `VideoGameFollowers`. After inserting this step, the `data` object looks like
163 |
164 | ```json
165 | {
166 | "labels": [],
167 | "dataset": [
168 | {
169 | "label": "Video game followers"
170 | }
171 | ]
172 | }
173 | ```
174 |
175 | 3. It then iterates over the contents of this dataset. For each datapoint in the dataset, it pushes the label to the top level `labels` array and every other property to the dataset. So, after inserting the first data point, that is:
176 | ```json
177 | {
178 | "id": 1,
179 | "name": "Dota",
180 | "data": 427014,
181 | "pointBackgroundColor": "red",
182 | "fill": false
183 | }
184 | ```
185 |
186 | the `data` object looks like:
187 |
188 | ```json
189 | {
190 | "labels": ["Dota"],
191 | "datasets": [
192 | {
193 | "data": [427014],
194 | "pointBackgroundColor": ["red"],
195 | "fill": false
196 | }
197 | ]
198 | }
199 | ```
200 |
201 | As you see, `pointBackgroundColor` and `data` get pushed in an array while `fill` gets set as a top level field. This is because `graphql2chartjs` function understands that the ChartJS API expects `pointBackgroundColor` to be an array and `fill` to be a simple flag.
202 |
203 | 4. It repeats the step above for every data point. The final `data` object would be:
204 |
205 | ```json
206 | {
207 | "labels": [ "Dota", "Cs:go", "Nfs", "Pubg", "Quake 3"],
208 | "datasets": [
209 | {
210 | "label": "Video game followers",
211 | "id": 5,
212 | "data": [ 427014, 220006, 71004, 129769, 90808 ],
213 | "pointBackgroundColor": ["red", "yellow", "#3366ff", "#330000", "green"],
214 | "fill": false
215 | }
216 | ]
217 | }
218 | ```
219 |
220 | Now you can pass this data object to your ChartJS instance and you will have a chart like this:
221 |
222 | 
223 |
224 | #
225 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "graphql2chartjs",
3 | "version": "0.3.1",
4 | "description": "",
5 | "main": "lib/index.js",
6 | "scripts": {
7 | "test": "node test/index.test.js",
8 | "compile": "rm -rf lib && ./node_modules/.bin/babel src --out-dir lib",
9 | "bundle": "rm -rf bundle/js && ./node_modules/.bin/rollup -c",
10 | "launch": "yarn compile && yarn bundle && yarn publish"
11 | },
12 | "author": "Hasura",
13 | "repository": "hasura/graphql2chartjs",
14 | "license": "ISC",
15 | "dependencies": {
16 | "@babel/polyfill": "^7.2.5",
17 | "inflection": "^1.12.0"
18 | },
19 | "devDependencies": {
20 | "@babel/cli": "^7.2.3",
21 | "@babel/core": "^7.3.4",
22 | "@babel/preset-env": "^7.3.4",
23 | "browserify": "^16.2.3",
24 | "rollup": "^1.3.1",
25 | "rollup-plugin-babel": "^4.3.2",
26 | "rollup-plugin-commonjs": "^9.2.1",
27 | "rollup-plugin-filesize": "^6.0.1",
28 | "rollup-plugin-multi-entry": "^2.1.0",
29 | "rollup-plugin-node-resolve": "^4.0.1",
30 | "rollup-plugin-progress": "^1.0.0"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import babel from 'rollup-plugin-babel';
2 | import resolve from 'rollup-plugin-node-resolve';
3 | import multiEntry from 'rollup-plugin-multi-entry';
4 | import filesize from 'rollup-plugin-filesize';
5 | import commonjs from 'rollup-plugin-commonjs';
6 | import progress from 'rollup-plugin-progress';
7 |
8 | let pluginOptions = [
9 | multiEntry(),
10 | resolve({
11 | module: true,
12 | jsnext: true,
13 | browser: true
14 | }),
15 | commonjs(),
16 | progress(),
17 | babel({
18 | exclude: 'node_modules/**',
19 | }),
20 | filesize({
21 | showGzippedSize: false,
22 | })
23 | ];
24 |
25 | export default [{
26 | input: './src/index.js',
27 | output: {
28 | name: 'main', // for external calls (need exports)
29 | file: 'bundle/js/index.js',
30 | format: 'umd',
31 | },
32 | moduleName: 'graphql2chartjs',
33 | plugins: pluginOptions,
34 | }];
35 |
--------------------------------------------------------------------------------
/src/array-fields.js:
--------------------------------------------------------------------------------
1 | const line = {
2 | data: true,
3 | borderDash: true,
4 | pointBackgroundColor: true,
5 | pointBorderColor: true,
6 | pointBorderWidth: true,
7 | pointRadius: true,
8 | pointStyle: true,
9 | pointRotation: true,
10 | pointHitRadius: true,
11 | pointHoverBackgroundColor: true,
12 | pointHoverBorderColor: true,
13 | pointHoverBorderWidth: true,
14 | pointHoverRadius: true,
15 | };
16 |
17 | const bar = {
18 | data: true,
19 | backgroundColor: true,
20 | borderColor: true,
21 | borderWidth: true,
22 | hoverBackgroundColor: true,
23 | hoverBorderColor: true,
24 | hoverBorderWidth: true
25 | };
26 |
27 | const pie = {
28 | data: true,
29 | backgroundColor: true,
30 | borderColor: true,
31 | borderWidth: true,
32 | hoverBackgroundColor: true,
33 | hoverBorderColor: true,
34 | hoverBorderWidth: true
35 | }
36 |
37 | const polar = {
38 | data: true,
39 | backgroundColor: true,
40 | borderColor: true,
41 | borderWidth: true,
42 | hoverBackgroundColor: true,
43 | hoverBorderColor: true,
44 | hoverBorderWidth: true
45 | }
46 |
47 | const scatter = {
48 | borderDash: true,
49 | pointBackgroundColor: true,
50 | pointBorderColor: true,
51 | pointBorderWidth: true,
52 | pointRadius: true,
53 | pointStyle: true,
54 | pointRotation: true,
55 | pointHitRadius: true,
56 | pointHoverBackgroundColor: true,
57 | pointHoverBorderColor: true,
58 | pointHoverBorderWidth: true,
59 | pointHoverRadius: true,
60 | };
61 |
62 | const bubble = {
63 | borderDash: true,
64 | pointBackgroundColor: true,
65 | pointBorderColor: true,
66 | pointBorderWidth: true,
67 | pointRadius: true,
68 | pointStyle: true,
69 | pointRotation: true,
70 | pointHitRadius: true,
71 | pointHoverBackgroundColor: true,
72 | pointHoverBorderColor: true,
73 | pointHoverBorderWidth: true,
74 | pointHoverRadius: true,
75 | };
76 |
77 | const radar = {
78 | data: true,
79 | borderDash: true,
80 | pointBackgroundColor: true,
81 | pointBorderColor: true,
82 | pointBorderWidth: true,
83 | pointRadius: true,
84 | pointStyle: true,
85 | pointRotation: true,
86 | pointHitRadius: true,
87 | pointHoverBackgroundColor: true,
88 | pointHoverBorderColor: true,
89 | pointHoverBorderWidth: true,
90 | pointHoverRadius: true,
91 | }
92 |
93 | module.exports = {
94 | line,
95 | bar,
96 | scatter,
97 | bubble,
98 | pie,
99 | polar,
100 | radar
101 | };
--------------------------------------------------------------------------------
/src/converter.js:
--------------------------------------------------------------------------------
1 | const inflection = require('inflection');
2 | const arrayFields = require('./array-fields');
3 |
4 | const chartTypeMap = {
5 | 'line': arrayFields.line,
6 | 'bar': arrayFields.bar,
7 | 'radar': arrayFields.radar,
8 | 'polarArea': arrayFields.polar,
9 | 'doughnut': arrayFields.pie,
10 | 'pie': arrayFields.pie,
11 | 'bubble': arrayFields.bubble,
12 | 'scatter': arrayFields.scatter
13 | };
14 |
15 | function convert(graphqlData, chartType) {
16 | const data = {
17 | labels: [],
18 | datasets: [],
19 | };
20 | const dataSets = Object.keys(graphqlData);
21 | const numDataSets = dataSets.length;
22 | for (let i = 0; i < numDataSets; i++) {
23 | const dataSetName = dataSets[i];
24 | const dataSet = graphqlData[dataSetName];
25 | data.datasets.push({
26 | label: inflection.transform(dataSetName, ['underscore', 'humanize']),
27 | data: []
28 | });
29 | const dataSetSize = dataSet.length;
30 | for (let j = 0; j < dataSetSize; j++) {
31 | const element = dataSet[j];
32 | let isRadiusDefined = element.data_r !== undefined;
33 | if (element.data_x !== undefined || element.data_t !== undefined) {
34 | if (element.data_x) {
35 | const dataPoint = {
36 | x: element.data_x,
37 | y: element.data_y,
38 | }
39 | if (isRadiusDefined) {
40 | dataPoint.r = element.data_r;
41 | }
42 | data.datasets[i].data.push(dataPoint);
43 | } else if (element.data_t !== undefined) {
44 | data.datasets[i].data.push();
45 | let dataPoint = {
46 | t: element.data_t,
47 | y: element.data_y
48 | };
49 | if (isRadiusDefined) {
50 | dataPoint[r] = element.data_r;
51 | }
52 | data.datasets[i].data.push(dataPoint);
53 | }
54 | }
55 | const arrayFieldsByType = element.chartType ? chartTypeMap[element.chartType] : chartTypeMap[chartType];
56 | Object.keys(element).forEach(property => {
57 | if (property === 'data_x' || property === 'data_t' || property === 'data_y' || property === 'data_r') {
58 | return;
59 | }
60 | if (property === 'label') {
61 | if (i === 0) {
62 | data.labels.push(element[property]);
63 | }
64 | } else if (arrayFieldsByType[property]) {
65 | if (!data.datasets[i][property]) {
66 | data.datasets[i][property] = [];
67 | }
68 | data.datasets[i][property].push(element[property]);
69 | } else {
70 | data.datasets[i][property === 'chartType' ? 'type' : property] = element[property];
71 | }
72 | });
73 | }
74 | };
75 | return data;
76 | }
77 |
78 | module.exports = convert;
79 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | const converter = require('./converter');
2 |
3 | function convert (type, graphqlData) {
4 | try {
5 | return converter(graphqlData, type);
6 | } catch (e) {
7 | console.error('unexpected error in graphql2chartjs; please check your graphql response');
8 | console.error(e);
9 | }
10 | }
11 |
12 | class Graphql2Chartjs {
13 | constructor(graphqlData, arg) {
14 | this.handleInit(graphqlData, arg);
15 | }
16 |
17 | handleInit (graphqlData, arg) {
18 | this.data = {};
19 | if (!graphqlData) {
20 | return;
21 | }
22 | if (typeof arg === 'string') {
23 | this.gqlData = graphqlData;
24 | this.chartType = arg;
25 | this.data = convert(arg, graphqlData);
26 | } else if (typeof arg === 'function') {
27 | this.transformer = arg;
28 | this.gqlData = this.transformGqlData(graphqlData, arg);
29 | this.data = convert(this.chartType, this.gqlData);
30 | } else {
31 | console.error('invalid second argument to graphql2chartjs');
32 | }
33 | }
34 |
35 | transformGqlData(graphqlData, transformer) {
36 | const transformedGqlData = {};
37 | Object.keys(graphqlData).forEach(datasetName => {
38 | if (Array.isArray(graphqlData[datasetName])) {
39 | transformedGqlData[datasetName] = graphqlData[datasetName].map((dataPoint) => {
40 | return { ...dataPoint, ...transformer(datasetName, dataPoint) }
41 | });
42 | }
43 | });
44 | return transformedGqlData;
45 | }
46 |
47 | reset (graphqlData, arg) {
48 | this.handleInit(graphqlData, arg);
49 | }
50 |
51 | add (graphqlData, arg) {
52 | if (!graphqlData) {
53 | console.warn('invalid graphql data provided to Graphql2Chartjs');
54 | return;
55 | }
56 | if (!this.gqlData || (this.gqlData && Object.keys(this.gqlData).length === 0)) {
57 | this.handleInit(graphqlData, arg);
58 | return;
59 | }
60 | this.mergeData(
61 | (typeof arg === 'function') ? this.chartType : arg,
62 | (typeof arg === 'function') ? this.transformGqlData(graphqlData, arg) : graphqlData
63 | );
64 | }
65 |
66 | reform (transformer) {
67 | this.gqlData = this.transformGqlData(this.gqlData, transformer);
68 | this.data = convert(this.chartType, this.gqlData);
69 | }
70 |
71 | mergeData(type, graphqlData) {
72 | const oldGqlData = { ...this.gqlData };
73 | Object.keys(graphqlData).forEach(dsName => {
74 | if (oldGqlData[dsName]) {
75 | graphqlData[dsName].forEach((dp) => {
76 | const oldDs = oldGqlData[dsName];
77 | let oldDsLength = oldGqlData[dsName].length;
78 | let refIndex;
79 | for (var _i = oldDs.length - 1; _i >= 0; _i--) {
80 | let refDp = oldDs[_i];
81 | if (refDp.label && refDp.label === dp.label) {
82 | refIndex = _i;
83 | break;
84 | } else if (refDp.data_r !== undefined) {
85 | if (refDp.data_x === dp.data_x && refDp.data_y === dp.data_y && refDp.data_r === dp.data_r) {
86 | refIndex = _i;
87 | break;
88 | }
89 | } else if (refDp.data_x !== undefined) {
90 | if (refDp.data_x === dp.data_x && refDp.data_y === dp.data_y) {
91 | refIndex = _i;
92 | break;
93 | }
94 | } else if (refDp.data_t !== undefined) {
95 | if (refDp.data_t === dp.data_t && refDp.data_y === dp.data_y) {
96 | refIndex = _i;
97 | break;
98 | }
99 | }
100 | }
101 | if (!refIndex) {
102 | refIndex = oldDsLength;
103 | oldDsLength++;
104 | oldGqlData[dsName] = [...oldGqlData[dsName], { ...dp }]
105 | } else {
106 | oldGqlData[dsName][refIndex] = {...oldGqlData[dsName][refIndex], ...dp};
107 | }
108 | })
109 | } else {
110 | oldGqlData[dsName] = graphqlData[dsName];
111 | }
112 | })
113 | this.gqlData = oldGqlData;
114 | this.data = convert(type, oldGqlData);
115 | }
116 | }
117 | if ((typeof window) != 'undefined') {
118 | window.Graphql2Chartjs = Graphql2Chartjs;
119 | window.graphql2chartjs = Graphql2Chartjs;
120 | window.GraphQL2ChartJS = Graphql2Chartjs;
121 | window.Graphql2chartjs = Graphql2Chartjs;
122 | }
123 | module.exports = Graphql2Chartjs;
124 |
--------------------------------------------------------------------------------
/test/index.test.js:
--------------------------------------------------------------------------------
1 | const Graphql2Chartjs = require('../src/index');
2 | const { vg1, vg2, vg3, scatter1, scatter2 } = require('./data.test')
3 |
4 | const logTestResult = (condition, message) => {
5 | if (condition) {
6 | console.log(`Passed: ${message}`);
7 | } else {
8 | console.log(`Failed: ${message}`);
9 | process.exit(1);
10 | }
11 | }
12 |
13 | const runTests = () => {
14 | console.log('Running tests \n\n');
15 | let g2c = new Graphql2Chartjs();
16 | logTestResult((Object.keys(g2c.data).length === 0), 'Empty initialization');
17 | g2c = new Graphql2Chartjs()
18 | g2c.add(vg1.data, 'line')
19 | logTestResult(
20 | (
21 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1,
22 | g2c.data.datasets[0].fill === false &&
23 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
24 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
25 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
26 | g2c.data.datasets[0].data[3] === 129769 && g2c.data.datasets[0].pointBackgroundColor[3] === "#330000" &&
27 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green" &&
28 | true
29 | ),
30 | 'Initialization with data without transformer'
31 | )
32 | g2c = new Graphql2Chartjs();
33 | g2c.add(vg2.data, (dsName, dp) => {
34 | return {
35 | ...dp, fill: true, chartType: 'line'
36 | }
37 | })
38 | logTestResult(
39 | (
40 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1,
41 | g2c.data.datasets[0].fill === true &&
42 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
43 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
44 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
45 | g2c.data.datasets[0].data[3] === 129222 && g2c.data.datasets[0].pointBackgroundColor[3] === "#330000" &&
46 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green"
47 | ),
48 | 'Initialization with data with transformer'
49 | )
50 | g2c.add({ "VideoGameFollowers": [{
51 | "id": 4,
52 | "label": "PUBG",
53 | "data": 129769,
54 | "pointBackgroundColor": "#333333",
55 | }]}, 'line')
56 | logTestResult(
57 | (
58 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1,
59 | g2c.data.datasets[0].fill === true &&
60 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
61 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
62 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
63 | g2c.data.datasets[0].data[3] === 129769 && g2c.data.datasets[0].pointBackgroundColor[3] === "#333333" &&
64 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green"
65 | ),
66 | 'Update without transformer'
67 | )
68 | g2c.add({ "VideoGameFollowers": [{
69 | "id": 4,
70 | "label": "PUBG",
71 | "data": 129769,
72 | "pointBackgroundColor": "#333333",
73 | }]}, (ds, dp) => {
74 | return {
75 | pointBackgroundColor: "#111111",
76 | data: 120000,
77 | chartType: 'line'
78 | }
79 | })
80 | logTestResult(
81 | (
82 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1 &&
83 | g2c.data.datasets[0].fill === true &&
84 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
85 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
86 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
87 | g2c.data.datasets[0].data[3] === 120000 && g2c.data.datasets[0].pointBackgroundColor[3] === "#111111" &&
88 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green"
89 | ),
90 | 'Update with transformer'
91 | )
92 | g2c.add(scatter1.data, 'line');
93 | logTestResult(
94 | (
95 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 3 &&
96 | g2c.data.datasets[1].backgroundColor === "purple" &&
97 | g2c.data.datasets[2].backgroundColor === "orange"
98 | ),
99 | 'Update by adding a new dataset'
100 | )
101 |
102 | g2c.reform((dp, ds) => {
103 | return {
104 | chartType: 'line'
105 | }
106 | })
107 |
108 | g2c.add(scatter1.data, (ds, dp) => {
109 | if (ds === 'DataSet2') {
110 | return {
111 | ...dp,
112 | backgroundColor: 'red',
113 | chartType: 'line'
114 | };
115 | } else if (ds === 'DataSet1') {
116 | return {
117 | ...dp,
118 | backgroundColor: 'green',
119 | chartType: 'line'
120 | };
121 |
122 | }
123 | return dp;
124 | });
125 | logTestResult(
126 | (
127 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 3 &&
128 | g2c.data.datasets[1].backgroundColor === "green" &&
129 | g2c.data.datasets[2].backgroundColor === "red"
130 | ),
131 | 'Update by adding a new dataset with transformer'
132 | )
133 |
134 | g2c.reset(scatter1.data, (ds, dp) => {
135 | if (ds === 'DataSet2') {
136 | return {
137 | ...dp,
138 | backgroundColor: 'brown',
139 | chartType: 'scatter'
140 | };
141 | } else if (ds === 'DataSet1') {
142 | return {
143 | ...dp,
144 | backgroundColor: 'blue',
145 | chartType: 'bubble'
146 | };
147 | }
148 | return dp;
149 | });
150 | logTestResult(
151 | (
152 | g2c.data.labels.length === 0 && g2c.data.datasets.length === 2 &&
153 | g2c.data.datasets[1].backgroundColor === "brown" &&
154 | g2c.data.datasets[0].backgroundColor === "blue"
155 | ),
156 | 'Reset scatter new data'
157 | )
158 |
159 | g2c.reset(vg3.data, (ds, db) => {
160 | return {
161 | chartType: 'bar'
162 | }
163 | })
164 | logTestResult(
165 | (
166 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1 &&
167 | g2c.data.datasets[0].backgroundColor[0] === "red" && g2c.data.datasets[0].data[0] === 427014 &&
168 | g2c.data.datasets[0].backgroundColor[1] === "yellow" && g2c.data.datasets[0].data[1] === 220006 &&
169 | g2c.data.datasets[0].backgroundColor[2] === "#3366ff" && g2c.data.datasets[0].data[2] === 71004 &&
170 | g2c.data.datasets[0].backgroundColor[3] === "#330000" && g2c.data.datasets[0].data[3] === 129769 &&
171 | g2c.data.datasets[0].backgroundColor[4] === "green" && g2c.data.datasets[0].data[4] === 90808
172 | ),
173 | 'Reset with bar data'
174 | )
175 |
176 | g2c = new Graphql2Chartjs(vg1.data, 'line');
177 | logTestResult(
178 | (
179 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1,
180 | g2c.data.datasets[0].fill === false &&
181 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
182 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
183 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
184 | g2c.data.datasets[0].data[3] === 129769 && g2c.data.datasets[0].pointBackgroundColor[3] === "#330000" &&
185 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green" &&
186 | true
187 | ),
188 | 'Initialization with constructor'
189 | )
190 |
191 | g2c = new Graphql2Chartjs(vg2.data, (dsName, dp) => {
192 | return {
193 | ...dp, fill: true, chartType: 'line'
194 | }
195 | })
196 | logTestResult(
197 | (
198 | g2c.data.labels.length === 5 && g2c.data.datasets.length === 1,
199 | g2c.data.datasets[0].fill === true &&
200 | g2c.data.datasets[0].data[0] === 427014 && g2c.data.datasets[0].pointBackgroundColor[0] === "red" &&
201 | g2c.data.datasets[0].data[1] === 220006 && g2c.data.datasets[0].pointBackgroundColor[1] === "yellow" &&
202 | g2c.data.datasets[0].data[2] === 71004 && g2c.data.datasets[0].pointBackgroundColor[2] === "#3366ff" &&
203 | g2c.data.datasets[0].data[3] === 129222 && g2c.data.datasets[0].pointBackgroundColor[3] === "#330000" &&
204 | g2c.data.datasets[0].data[4] === 90808 && g2c.data.datasets[0].pointBackgroundColor[4] === "green"
205 | ),
206 | 'Initialization with constructor with transformer'
207 | )
208 | }
209 |
210 | runTests();
211 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/cli@^7.2.3":
6 | version "7.2.3"
7 | resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.2.3.tgz#1b262e42a3e959d28ab3d205ba2718e1923cfee6"
8 | dependencies:
9 | commander "^2.8.1"
10 | convert-source-map "^1.1.0"
11 | fs-readdir-recursive "^1.1.0"
12 | glob "^7.0.0"
13 | lodash "^4.17.10"
14 | mkdirp "^0.5.1"
15 | output-file-sync "^2.0.0"
16 | slash "^2.0.0"
17 | source-map "^0.5.0"
18 | optionalDependencies:
19 | chokidar "^2.0.3"
20 |
21 | "@babel/code-frame@^7.0.0":
22 | version "7.0.0"
23 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
24 | dependencies:
25 | "@babel/highlight" "^7.0.0"
26 |
27 | "@babel/core@^7.3.4":
28 | version "7.3.4"
29 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b"
30 | dependencies:
31 | "@babel/code-frame" "^7.0.0"
32 | "@babel/generator" "^7.3.4"
33 | "@babel/helpers" "^7.2.0"
34 | "@babel/parser" "^7.3.4"
35 | "@babel/template" "^7.2.2"
36 | "@babel/traverse" "^7.3.4"
37 | "@babel/types" "^7.3.4"
38 | convert-source-map "^1.1.0"
39 | debug "^4.1.0"
40 | json5 "^2.1.0"
41 | lodash "^4.17.11"
42 | resolve "^1.3.2"
43 | semver "^5.4.1"
44 | source-map "^0.5.0"
45 |
46 | "@babel/generator@^7.2.2":
47 | version "7.3.3"
48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.3.tgz#185962ade59a52e00ca2bdfcfd1d58e528d4e39e"
49 | dependencies:
50 | "@babel/types" "^7.3.3"
51 | jsesc "^2.5.1"
52 | lodash "^4.17.11"
53 | source-map "^0.5.0"
54 | trim-right "^1.0.1"
55 |
56 | "@babel/generator@^7.3.4":
57 | version "7.3.4"
58 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e"
59 | dependencies:
60 | "@babel/types" "^7.3.4"
61 | jsesc "^2.5.1"
62 | lodash "^4.17.11"
63 | source-map "^0.5.0"
64 | trim-right "^1.0.1"
65 |
66 | "@babel/helper-annotate-as-pure@^7.0.0":
67 | version "7.0.0"
68 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
69 | dependencies:
70 | "@babel/types" "^7.0.0"
71 |
72 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
73 | version "7.1.0"
74 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
75 | dependencies:
76 | "@babel/helper-explode-assignable-expression" "^7.1.0"
77 | "@babel/types" "^7.0.0"
78 |
79 | "@babel/helper-call-delegate@^7.1.0":
80 | version "7.1.0"
81 | resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a"
82 | dependencies:
83 | "@babel/helper-hoist-variables" "^7.0.0"
84 | "@babel/traverse" "^7.1.0"
85 | "@babel/types" "^7.0.0"
86 |
87 | "@babel/helper-define-map@^7.1.0":
88 | version "7.1.0"
89 | resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
90 | dependencies:
91 | "@babel/helper-function-name" "^7.1.0"
92 | "@babel/types" "^7.0.0"
93 | lodash "^4.17.10"
94 |
95 | "@babel/helper-explode-assignable-expression@^7.1.0":
96 | version "7.1.0"
97 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
98 | dependencies:
99 | "@babel/traverse" "^7.1.0"
100 | "@babel/types" "^7.0.0"
101 |
102 | "@babel/helper-function-name@^7.1.0":
103 | version "7.1.0"
104 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
105 | dependencies:
106 | "@babel/helper-get-function-arity" "^7.0.0"
107 | "@babel/template" "^7.1.0"
108 | "@babel/types" "^7.0.0"
109 |
110 | "@babel/helper-get-function-arity@^7.0.0":
111 | version "7.0.0"
112 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
113 | dependencies:
114 | "@babel/types" "^7.0.0"
115 |
116 | "@babel/helper-hoist-variables@^7.0.0":
117 | version "7.0.0"
118 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88"
119 | dependencies:
120 | "@babel/types" "^7.0.0"
121 |
122 | "@babel/helper-member-expression-to-functions@^7.0.0":
123 | version "7.0.0"
124 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
125 | dependencies:
126 | "@babel/types" "^7.0.0"
127 |
128 | "@babel/helper-module-imports@^7.0.0":
129 | version "7.0.0"
130 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
131 | dependencies:
132 | "@babel/types" "^7.0.0"
133 |
134 | "@babel/helper-module-transforms@^7.1.0":
135 | version "7.2.2"
136 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963"
137 | dependencies:
138 | "@babel/helper-module-imports" "^7.0.0"
139 | "@babel/helper-simple-access" "^7.1.0"
140 | "@babel/helper-split-export-declaration" "^7.0.0"
141 | "@babel/template" "^7.2.2"
142 | "@babel/types" "^7.2.2"
143 | lodash "^4.17.10"
144 |
145 | "@babel/helper-optimise-call-expression@^7.0.0":
146 | version "7.0.0"
147 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
148 | dependencies:
149 | "@babel/types" "^7.0.0"
150 |
151 | "@babel/helper-plugin-utils@^7.0.0":
152 | version "7.0.0"
153 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
154 |
155 | "@babel/helper-regex@^7.0.0":
156 | version "7.0.0"
157 | resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27"
158 | dependencies:
159 | lodash "^4.17.10"
160 |
161 | "@babel/helper-remap-async-to-generator@^7.1.0":
162 | version "7.1.0"
163 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
164 | dependencies:
165 | "@babel/helper-annotate-as-pure" "^7.0.0"
166 | "@babel/helper-wrap-function" "^7.1.0"
167 | "@babel/template" "^7.1.0"
168 | "@babel/traverse" "^7.1.0"
169 | "@babel/types" "^7.0.0"
170 |
171 | "@babel/helper-replace-supers@^7.1.0":
172 | version "7.2.3"
173 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5"
174 | dependencies:
175 | "@babel/helper-member-expression-to-functions" "^7.0.0"
176 | "@babel/helper-optimise-call-expression" "^7.0.0"
177 | "@babel/traverse" "^7.2.3"
178 | "@babel/types" "^7.0.0"
179 |
180 | "@babel/helper-replace-supers@^7.3.4":
181 | version "7.3.4"
182 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz#a795208e9b911a6eeb08e5891faacf06e7013e13"
183 | dependencies:
184 | "@babel/helper-member-expression-to-functions" "^7.0.0"
185 | "@babel/helper-optimise-call-expression" "^7.0.0"
186 | "@babel/traverse" "^7.3.4"
187 | "@babel/types" "^7.3.4"
188 |
189 | "@babel/helper-simple-access@^7.1.0":
190 | version "7.1.0"
191 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
192 | dependencies:
193 | "@babel/template" "^7.1.0"
194 | "@babel/types" "^7.0.0"
195 |
196 | "@babel/helper-split-export-declaration@^7.0.0":
197 | version "7.0.0"
198 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
199 | dependencies:
200 | "@babel/types" "^7.0.0"
201 |
202 | "@babel/helper-wrap-function@^7.1.0":
203 | version "7.2.0"
204 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
205 | dependencies:
206 | "@babel/helper-function-name" "^7.1.0"
207 | "@babel/template" "^7.1.0"
208 | "@babel/traverse" "^7.1.0"
209 | "@babel/types" "^7.2.0"
210 |
211 | "@babel/helpers@^7.2.0":
212 | version "7.3.1"
213 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9"
214 | dependencies:
215 | "@babel/template" "^7.1.2"
216 | "@babel/traverse" "^7.1.5"
217 | "@babel/types" "^7.3.0"
218 |
219 | "@babel/highlight@^7.0.0":
220 | version "7.0.0"
221 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
222 | dependencies:
223 | chalk "^2.0.0"
224 | esutils "^2.0.2"
225 | js-tokens "^4.0.0"
226 |
227 | "@babel/parser@^7.2.2", "@babel/parser@^7.2.3":
228 | version "7.3.3"
229 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87"
230 |
231 | "@babel/parser@^7.3.4":
232 | version "7.3.4"
233 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c"
234 |
235 | "@babel/plugin-proposal-async-generator-functions@^7.2.0":
236 | version "7.2.0"
237 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
238 | dependencies:
239 | "@babel/helper-plugin-utils" "^7.0.0"
240 | "@babel/helper-remap-async-to-generator" "^7.1.0"
241 | "@babel/plugin-syntax-async-generators" "^7.2.0"
242 |
243 | "@babel/plugin-proposal-json-strings@^7.2.0":
244 | version "7.2.0"
245 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317"
246 | dependencies:
247 | "@babel/helper-plugin-utils" "^7.0.0"
248 | "@babel/plugin-syntax-json-strings" "^7.2.0"
249 |
250 | "@babel/plugin-proposal-object-rest-spread@^7.3.4":
251 | version "7.3.4"
252 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz#47f73cf7f2a721aad5c0261205405c642e424654"
253 | dependencies:
254 | "@babel/helper-plugin-utils" "^7.0.0"
255 | "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
256 |
257 | "@babel/plugin-proposal-optional-catch-binding@^7.2.0":
258 | version "7.2.0"
259 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5"
260 | dependencies:
261 | "@babel/helper-plugin-utils" "^7.0.0"
262 | "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
263 |
264 | "@babel/plugin-proposal-unicode-property-regex@^7.2.0":
265 | version "7.2.0"
266 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520"
267 | dependencies:
268 | "@babel/helper-plugin-utils" "^7.0.0"
269 | "@babel/helper-regex" "^7.0.0"
270 | regexpu-core "^4.2.0"
271 |
272 | "@babel/plugin-syntax-async-generators@^7.2.0":
273 | version "7.2.0"
274 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f"
275 | dependencies:
276 | "@babel/helper-plugin-utils" "^7.0.0"
277 |
278 | "@babel/plugin-syntax-json-strings@^7.2.0":
279 | version "7.2.0"
280 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470"
281 | dependencies:
282 | "@babel/helper-plugin-utils" "^7.0.0"
283 |
284 | "@babel/plugin-syntax-object-rest-spread@^7.2.0":
285 | version "7.2.0"
286 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
287 | dependencies:
288 | "@babel/helper-plugin-utils" "^7.0.0"
289 |
290 | "@babel/plugin-syntax-optional-catch-binding@^7.2.0":
291 | version "7.2.0"
292 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c"
293 | dependencies:
294 | "@babel/helper-plugin-utils" "^7.0.0"
295 |
296 | "@babel/plugin-transform-arrow-functions@^7.2.0":
297 | version "7.2.0"
298 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
299 | dependencies:
300 | "@babel/helper-plugin-utils" "^7.0.0"
301 |
302 | "@babel/plugin-transform-async-to-generator@^7.3.4":
303 | version "7.3.4"
304 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz#4e45408d3c3da231c0e7b823f407a53a7eb3048c"
305 | dependencies:
306 | "@babel/helper-module-imports" "^7.0.0"
307 | "@babel/helper-plugin-utils" "^7.0.0"
308 | "@babel/helper-remap-async-to-generator" "^7.1.0"
309 |
310 | "@babel/plugin-transform-block-scoped-functions@^7.2.0":
311 | version "7.2.0"
312 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190"
313 | dependencies:
314 | "@babel/helper-plugin-utils" "^7.0.0"
315 |
316 | "@babel/plugin-transform-block-scoping@^7.3.4":
317 | version "7.3.4"
318 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz#5c22c339de234076eee96c8783b2fed61202c5c4"
319 | dependencies:
320 | "@babel/helper-plugin-utils" "^7.0.0"
321 | lodash "^4.17.11"
322 |
323 | "@babel/plugin-transform-classes@^7.3.4":
324 | version "7.3.4"
325 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz#dc173cb999c6c5297e0b5f2277fdaaec3739d0cc"
326 | dependencies:
327 | "@babel/helper-annotate-as-pure" "^7.0.0"
328 | "@babel/helper-define-map" "^7.1.0"
329 | "@babel/helper-function-name" "^7.1.0"
330 | "@babel/helper-optimise-call-expression" "^7.0.0"
331 | "@babel/helper-plugin-utils" "^7.0.0"
332 | "@babel/helper-replace-supers" "^7.3.4"
333 | "@babel/helper-split-export-declaration" "^7.0.0"
334 | globals "^11.1.0"
335 |
336 | "@babel/plugin-transform-computed-properties@^7.2.0":
337 | version "7.2.0"
338 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da"
339 | dependencies:
340 | "@babel/helper-plugin-utils" "^7.0.0"
341 |
342 | "@babel/plugin-transform-destructuring@^7.2.0":
343 | version "7.3.2"
344 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d"
345 | dependencies:
346 | "@babel/helper-plugin-utils" "^7.0.0"
347 |
348 | "@babel/plugin-transform-dotall-regex@^7.2.0":
349 | version "7.2.0"
350 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49"
351 | dependencies:
352 | "@babel/helper-plugin-utils" "^7.0.0"
353 | "@babel/helper-regex" "^7.0.0"
354 | regexpu-core "^4.1.3"
355 |
356 | "@babel/plugin-transform-duplicate-keys@^7.2.0":
357 | version "7.2.0"
358 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3"
359 | dependencies:
360 | "@babel/helper-plugin-utils" "^7.0.0"
361 |
362 | "@babel/plugin-transform-exponentiation-operator@^7.2.0":
363 | version "7.2.0"
364 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008"
365 | dependencies:
366 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
367 | "@babel/helper-plugin-utils" "^7.0.0"
368 |
369 | "@babel/plugin-transform-for-of@^7.2.0":
370 | version "7.2.0"
371 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9"
372 | dependencies:
373 | "@babel/helper-plugin-utils" "^7.0.0"
374 |
375 | "@babel/plugin-transform-function-name@^7.2.0":
376 | version "7.2.0"
377 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a"
378 | dependencies:
379 | "@babel/helper-function-name" "^7.1.0"
380 | "@babel/helper-plugin-utils" "^7.0.0"
381 |
382 | "@babel/plugin-transform-literals@^7.2.0":
383 | version "7.2.0"
384 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1"
385 | dependencies:
386 | "@babel/helper-plugin-utils" "^7.0.0"
387 |
388 | "@babel/plugin-transform-modules-amd@^7.2.0":
389 | version "7.2.0"
390 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6"
391 | dependencies:
392 | "@babel/helper-module-transforms" "^7.1.0"
393 | "@babel/helper-plugin-utils" "^7.0.0"
394 |
395 | "@babel/plugin-transform-modules-commonjs@^7.2.0":
396 | version "7.2.0"
397 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404"
398 | dependencies:
399 | "@babel/helper-module-transforms" "^7.1.0"
400 | "@babel/helper-plugin-utils" "^7.0.0"
401 | "@babel/helper-simple-access" "^7.1.0"
402 |
403 | "@babel/plugin-transform-modules-systemjs@^7.3.4":
404 | version "7.3.4"
405 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz#813b34cd9acb6ba70a84939f3680be0eb2e58861"
406 | dependencies:
407 | "@babel/helper-hoist-variables" "^7.0.0"
408 | "@babel/helper-plugin-utils" "^7.0.0"
409 |
410 | "@babel/plugin-transform-modules-umd@^7.2.0":
411 | version "7.2.0"
412 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae"
413 | dependencies:
414 | "@babel/helper-module-transforms" "^7.1.0"
415 | "@babel/helper-plugin-utils" "^7.0.0"
416 |
417 | "@babel/plugin-transform-named-capturing-groups-regex@^7.3.0":
418 | version "7.3.0"
419 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz#140b52985b2d6ef0cb092ef3b29502b990f9cd50"
420 | dependencies:
421 | regexp-tree "^0.1.0"
422 |
423 | "@babel/plugin-transform-new-target@^7.0.0":
424 | version "7.0.0"
425 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a"
426 | dependencies:
427 | "@babel/helper-plugin-utils" "^7.0.0"
428 |
429 | "@babel/plugin-transform-object-super@^7.2.0":
430 | version "7.2.0"
431 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598"
432 | dependencies:
433 | "@babel/helper-plugin-utils" "^7.0.0"
434 | "@babel/helper-replace-supers" "^7.1.0"
435 |
436 | "@babel/plugin-transform-parameters@^7.2.0":
437 | version "7.3.3"
438 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz#3a873e07114e1a5bee17d04815662c8317f10e30"
439 | dependencies:
440 | "@babel/helper-call-delegate" "^7.1.0"
441 | "@babel/helper-get-function-arity" "^7.0.0"
442 | "@babel/helper-plugin-utils" "^7.0.0"
443 |
444 | "@babel/plugin-transform-regenerator@^7.3.4":
445 | version "7.3.4"
446 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz#1601655c362f5b38eead6a52631f5106b29fa46a"
447 | dependencies:
448 | regenerator-transform "^0.13.4"
449 |
450 | "@babel/plugin-transform-shorthand-properties@^7.2.0":
451 | version "7.2.0"
452 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0"
453 | dependencies:
454 | "@babel/helper-plugin-utils" "^7.0.0"
455 |
456 | "@babel/plugin-transform-spread@^7.2.0":
457 | version "7.2.2"
458 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406"
459 | dependencies:
460 | "@babel/helper-plugin-utils" "^7.0.0"
461 |
462 | "@babel/plugin-transform-sticky-regex@^7.2.0":
463 | version "7.2.0"
464 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1"
465 | dependencies:
466 | "@babel/helper-plugin-utils" "^7.0.0"
467 | "@babel/helper-regex" "^7.0.0"
468 |
469 | "@babel/plugin-transform-template-literals@^7.2.0":
470 | version "7.2.0"
471 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b"
472 | dependencies:
473 | "@babel/helper-annotate-as-pure" "^7.0.0"
474 | "@babel/helper-plugin-utils" "^7.0.0"
475 |
476 | "@babel/plugin-transform-typeof-symbol@^7.2.0":
477 | version "7.2.0"
478 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2"
479 | dependencies:
480 | "@babel/helper-plugin-utils" "^7.0.0"
481 |
482 | "@babel/plugin-transform-unicode-regex@^7.2.0":
483 | version "7.2.0"
484 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b"
485 | dependencies:
486 | "@babel/helper-plugin-utils" "^7.0.0"
487 | "@babel/helper-regex" "^7.0.0"
488 | regexpu-core "^4.1.3"
489 |
490 | "@babel/polyfill@^7.2.5":
491 | version "7.2.5"
492 | resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d"
493 | dependencies:
494 | core-js "^2.5.7"
495 | regenerator-runtime "^0.12.0"
496 |
497 | "@babel/preset-env@^7.3.4":
498 | version "7.3.4"
499 | resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1"
500 | dependencies:
501 | "@babel/helper-module-imports" "^7.0.0"
502 | "@babel/helper-plugin-utils" "^7.0.0"
503 | "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
504 | "@babel/plugin-proposal-json-strings" "^7.2.0"
505 | "@babel/plugin-proposal-object-rest-spread" "^7.3.4"
506 | "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
507 | "@babel/plugin-proposal-unicode-property-regex" "^7.2.0"
508 | "@babel/plugin-syntax-async-generators" "^7.2.0"
509 | "@babel/plugin-syntax-json-strings" "^7.2.0"
510 | "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
511 | "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
512 | "@babel/plugin-transform-arrow-functions" "^7.2.0"
513 | "@babel/plugin-transform-async-to-generator" "^7.3.4"
514 | "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
515 | "@babel/plugin-transform-block-scoping" "^7.3.4"
516 | "@babel/plugin-transform-classes" "^7.3.4"
517 | "@babel/plugin-transform-computed-properties" "^7.2.0"
518 | "@babel/plugin-transform-destructuring" "^7.2.0"
519 | "@babel/plugin-transform-dotall-regex" "^7.2.0"
520 | "@babel/plugin-transform-duplicate-keys" "^7.2.0"
521 | "@babel/plugin-transform-exponentiation-operator" "^7.2.0"
522 | "@babel/plugin-transform-for-of" "^7.2.0"
523 | "@babel/plugin-transform-function-name" "^7.2.0"
524 | "@babel/plugin-transform-literals" "^7.2.0"
525 | "@babel/plugin-transform-modules-amd" "^7.2.0"
526 | "@babel/plugin-transform-modules-commonjs" "^7.2.0"
527 | "@babel/plugin-transform-modules-systemjs" "^7.3.4"
528 | "@babel/plugin-transform-modules-umd" "^7.2.0"
529 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0"
530 | "@babel/plugin-transform-new-target" "^7.0.0"
531 | "@babel/plugin-transform-object-super" "^7.2.0"
532 | "@babel/plugin-transform-parameters" "^7.2.0"
533 | "@babel/plugin-transform-regenerator" "^7.3.4"
534 | "@babel/plugin-transform-shorthand-properties" "^7.2.0"
535 | "@babel/plugin-transform-spread" "^7.2.0"
536 | "@babel/plugin-transform-sticky-regex" "^7.2.0"
537 | "@babel/plugin-transform-template-literals" "^7.2.0"
538 | "@babel/plugin-transform-typeof-symbol" "^7.2.0"
539 | "@babel/plugin-transform-unicode-regex" "^7.2.0"
540 | browserslist "^4.3.4"
541 | invariant "^2.2.2"
542 | js-levenshtein "^1.1.3"
543 | semver "^5.3.0"
544 |
545 | "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
546 | version "7.2.2"
547 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
548 | dependencies:
549 | "@babel/code-frame" "^7.0.0"
550 | "@babel/parser" "^7.2.2"
551 | "@babel/types" "^7.2.2"
552 |
553 | "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.3":
554 | version "7.2.3"
555 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8"
556 | dependencies:
557 | "@babel/code-frame" "^7.0.0"
558 | "@babel/generator" "^7.2.2"
559 | "@babel/helper-function-name" "^7.1.0"
560 | "@babel/helper-split-export-declaration" "^7.0.0"
561 | "@babel/parser" "^7.2.3"
562 | "@babel/types" "^7.2.2"
563 | debug "^4.1.0"
564 | globals "^11.1.0"
565 | lodash "^4.17.10"
566 |
567 | "@babel/traverse@^7.3.4":
568 | version "7.3.4"
569 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06"
570 | dependencies:
571 | "@babel/code-frame" "^7.0.0"
572 | "@babel/generator" "^7.3.4"
573 | "@babel/helper-function-name" "^7.1.0"
574 | "@babel/helper-split-export-declaration" "^7.0.0"
575 | "@babel/parser" "^7.3.4"
576 | "@babel/types" "^7.3.4"
577 | debug "^4.1.0"
578 | globals "^11.1.0"
579 | lodash "^4.17.11"
580 |
581 | "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
582 | version "7.3.3"
583 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.3.tgz#6c44d1cdac2a7625b624216657d5bc6c107ab436"
584 | dependencies:
585 | esutils "^2.0.2"
586 | lodash "^4.17.11"
587 | to-fast-properties "^2.0.0"
588 |
589 | "@babel/types@^7.3.4":
590 | version "7.3.4"
591 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed"
592 | dependencies:
593 | esutils "^2.0.2"
594 | lodash "^4.17.11"
595 | to-fast-properties "^2.0.0"
596 |
597 | "@types/estree@0.0.39":
598 | version "0.0.39"
599 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
600 |
601 | "@types/node@^11.9.5":
602 | version "11.9.5"
603 | resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.5.tgz#011eece9d3f839a806b63973e228f85967b79ed3"
604 |
605 | JSONStream@^1.0.3:
606 | version "1.3.5"
607 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
608 | dependencies:
609 | jsonparse "^1.2.0"
610 | through ">=2.2.7 <3"
611 |
612 | abbrev@1:
613 | version "1.1.1"
614 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
615 |
616 | acorn-dynamic-import@^4.0.0:
617 | version "4.0.0"
618 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
619 |
620 | acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1:
621 | version "1.6.2"
622 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.6.2.tgz#b7d7ceca6f22e6417af933a62cad4de01048d5d2"
623 | dependencies:
624 | acorn "^6.0.2"
625 | acorn-dynamic-import "^4.0.0"
626 | acorn-walk "^6.1.0"
627 | xtend "^4.0.1"
628 |
629 | acorn-walk@^6.1.0:
630 | version "6.1.1"
631 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
632 |
633 | acorn@^6.0.2, acorn@^6.1.0:
634 | version "6.1.1"
635 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
636 |
637 | ansi-align@^3.0.0:
638 | version "3.0.0"
639 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
640 | dependencies:
641 | string-width "^3.0.0"
642 |
643 | ansi-regex@^2.0.0:
644 | version "2.1.1"
645 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
646 |
647 | ansi-regex@^3.0.0:
648 | version "3.0.0"
649 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
650 |
651 | ansi-regex@^4.0.0:
652 | version "4.0.0"
653 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
654 |
655 | ansi-styles@^2.2.1:
656 | version "2.2.1"
657 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
658 |
659 | ansi-styles@^3.2.1:
660 | version "3.2.1"
661 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
662 | dependencies:
663 | color-convert "^1.9.0"
664 |
665 | anymatch@^2.0.0:
666 | version "2.0.0"
667 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
668 | dependencies:
669 | micromatch "^3.1.4"
670 | normalize-path "^2.1.1"
671 |
672 | aproba@^1.0.3:
673 | version "1.2.0"
674 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
675 |
676 | are-we-there-yet@~1.1.2:
677 | version "1.1.5"
678 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
679 | dependencies:
680 | delegates "^1.0.0"
681 | readable-stream "^2.0.6"
682 |
683 | arr-diff@^4.0.0:
684 | version "4.0.0"
685 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
686 |
687 | arr-flatten@^1.1.0:
688 | version "1.1.0"
689 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
690 |
691 | arr-union@^3.1.0:
692 | version "3.1.0"
693 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
694 |
695 | array-filter@~0.0.0:
696 | version "0.0.1"
697 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
698 |
699 | array-map@~0.0.0:
700 | version "0.0.0"
701 | resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
702 |
703 | array-reduce@~0.0.0:
704 | version "0.0.0"
705 | resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
706 |
707 | array-unique@^0.3.2:
708 | version "0.3.2"
709 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
710 |
711 | asn1.js@^4.0.0:
712 | version "4.10.1"
713 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
714 | dependencies:
715 | bn.js "^4.0.0"
716 | inherits "^2.0.1"
717 | minimalistic-assert "^1.0.0"
718 |
719 | assert@^1.4.0:
720 | version "1.4.1"
721 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
722 | dependencies:
723 | util "0.10.3"
724 |
725 | assign-symbols@^1.0.0:
726 | version "1.0.0"
727 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
728 |
729 | async-array-reduce@^0.2.1:
730 | version "0.2.1"
731 | resolved "https://registry.yarnpkg.com/async-array-reduce/-/async-array-reduce-0.2.1.tgz#c8be010a2b5cd00dea96c81116034693dfdd82d1"
732 |
733 | async-each@^1.0.1:
734 | version "1.0.1"
735 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
736 |
737 | atob@^2.1.1:
738 | version "2.1.2"
739 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
740 |
741 | balanced-match@^1.0.0:
742 | version "1.0.0"
743 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
744 |
745 | base64-js@^1.0.2:
746 | version "1.3.0"
747 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
748 |
749 | base@^0.11.1:
750 | version "0.11.2"
751 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
752 | dependencies:
753 | cache-base "^1.0.1"
754 | class-utils "^0.3.5"
755 | component-emitter "^1.2.1"
756 | define-property "^1.0.0"
757 | isobject "^3.0.1"
758 | mixin-deep "^1.2.0"
759 | pascalcase "^0.1.1"
760 |
761 | binary-extensions@^1.0.0:
762 | version "1.13.0"
763 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1"
764 |
765 | bl@^1.0.0:
766 | version "1.2.2"
767 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
768 | dependencies:
769 | readable-stream "^2.3.5"
770 | safe-buffer "^5.1.1"
771 |
772 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
773 | version "4.11.8"
774 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
775 |
776 | boxen@^2.0.0:
777 | version "2.1.0"
778 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-2.1.0.tgz#8d576156e33fc26a34d6be8635fd16b1d745f0b2"
779 | dependencies:
780 | ansi-align "^3.0.0"
781 | camelcase "^5.0.0"
782 | chalk "^2.4.1"
783 | cli-boxes "^1.0.0"
784 | string-width "^3.0.0"
785 | term-size "^1.2.0"
786 | widest-line "^2.0.0"
787 |
788 | brace-expansion@^1.1.7:
789 | version "1.1.11"
790 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
791 | dependencies:
792 | balanced-match "^1.0.0"
793 | concat-map "0.0.1"
794 |
795 | braces@^2.3.1, braces@^2.3.2:
796 | version "2.3.2"
797 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
798 | dependencies:
799 | arr-flatten "^1.1.0"
800 | array-unique "^0.3.2"
801 | extend-shallow "^2.0.1"
802 | fill-range "^4.0.0"
803 | isobject "^3.0.1"
804 | repeat-element "^1.1.2"
805 | snapdragon "^0.8.1"
806 | snapdragon-node "^2.0.1"
807 | split-string "^3.0.2"
808 | to-regex "^3.0.1"
809 |
810 | brorand@^1.0.1:
811 | version "1.1.0"
812 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
813 |
814 | brotli-size@0.0.3:
815 | version "0.0.3"
816 | resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-0.0.3.tgz#1d3855b38f182591a6f69da1516131676e5f62f2"
817 | dependencies:
818 | duplexer "^0.1.1"
819 | iltorb "^2.0.5"
820 |
821 | browser-pack@^6.0.1:
822 | version "6.1.0"
823 | resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774"
824 | dependencies:
825 | JSONStream "^1.0.3"
826 | combine-source-map "~0.8.0"
827 | defined "^1.0.0"
828 | safe-buffer "^5.1.1"
829 | through2 "^2.0.0"
830 | umd "^3.0.0"
831 |
832 | browser-resolve@^1.11.0, browser-resolve@^1.7.0:
833 | version "1.11.3"
834 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
835 | dependencies:
836 | resolve "1.1.7"
837 |
838 | browserify-aes@^1.0.0, browserify-aes@^1.0.4:
839 | version "1.2.0"
840 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
841 | dependencies:
842 | buffer-xor "^1.0.3"
843 | cipher-base "^1.0.0"
844 | create-hash "^1.1.0"
845 | evp_bytestokey "^1.0.3"
846 | inherits "^2.0.1"
847 | safe-buffer "^5.0.1"
848 |
849 | browserify-cipher@^1.0.0:
850 | version "1.0.1"
851 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
852 | dependencies:
853 | browserify-aes "^1.0.4"
854 | browserify-des "^1.0.0"
855 | evp_bytestokey "^1.0.0"
856 |
857 | browserify-des@^1.0.0:
858 | version "1.0.2"
859 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
860 | dependencies:
861 | cipher-base "^1.0.1"
862 | des.js "^1.0.0"
863 | inherits "^2.0.1"
864 | safe-buffer "^5.1.2"
865 |
866 | browserify-rsa@^4.0.0:
867 | version "4.0.1"
868 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
869 | dependencies:
870 | bn.js "^4.1.0"
871 | randombytes "^2.0.1"
872 |
873 | browserify-sign@^4.0.0:
874 | version "4.0.4"
875 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
876 | dependencies:
877 | bn.js "^4.1.1"
878 | browserify-rsa "^4.0.0"
879 | create-hash "^1.1.0"
880 | create-hmac "^1.1.2"
881 | elliptic "^6.0.0"
882 | inherits "^2.0.1"
883 | parse-asn1 "^5.0.0"
884 |
885 | browserify-zlib@~0.2.0:
886 | version "0.2.0"
887 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
888 | dependencies:
889 | pako "~1.0.5"
890 |
891 | browserify@^16.2.3:
892 | version "16.2.3"
893 | resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b"
894 | dependencies:
895 | JSONStream "^1.0.3"
896 | assert "^1.4.0"
897 | browser-pack "^6.0.1"
898 | browser-resolve "^1.11.0"
899 | browserify-zlib "~0.2.0"
900 | buffer "^5.0.2"
901 | cached-path-relative "^1.0.0"
902 | concat-stream "^1.6.0"
903 | console-browserify "^1.1.0"
904 | constants-browserify "~1.0.0"
905 | crypto-browserify "^3.0.0"
906 | defined "^1.0.0"
907 | deps-sort "^2.0.0"
908 | domain-browser "^1.2.0"
909 | duplexer2 "~0.1.2"
910 | events "^2.0.0"
911 | glob "^7.1.0"
912 | has "^1.0.0"
913 | htmlescape "^1.1.0"
914 | https-browserify "^1.0.0"
915 | inherits "~2.0.1"
916 | insert-module-globals "^7.0.0"
917 | labeled-stream-splicer "^2.0.0"
918 | mkdirp "^0.5.0"
919 | module-deps "^6.0.0"
920 | os-browserify "~0.3.0"
921 | parents "^1.0.1"
922 | path-browserify "~0.0.0"
923 | process "~0.11.0"
924 | punycode "^1.3.2"
925 | querystring-es3 "~0.2.0"
926 | read-only-stream "^2.0.0"
927 | readable-stream "^2.0.2"
928 | resolve "^1.1.4"
929 | shasum "^1.0.0"
930 | shell-quote "^1.6.1"
931 | stream-browserify "^2.0.0"
932 | stream-http "^2.0.0"
933 | string_decoder "^1.1.1"
934 | subarg "^1.0.0"
935 | syntax-error "^1.1.1"
936 | through2 "^2.0.0"
937 | timers-browserify "^1.0.1"
938 | tty-browserify "0.0.1"
939 | url "~0.11.0"
940 | util "~0.10.1"
941 | vm-browserify "^1.0.0"
942 | xtend "^4.0.0"
943 |
944 | browserslist@^4.3.4:
945 | version "4.4.1"
946 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062"
947 | dependencies:
948 | caniuse-lite "^1.0.30000929"
949 | electron-to-chromium "^1.3.103"
950 | node-releases "^1.1.3"
951 |
952 | buffer-alloc-unsafe@^1.1.0:
953 | version "1.1.0"
954 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
955 |
956 | buffer-alloc@^1.2.0:
957 | version "1.2.0"
958 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
959 | dependencies:
960 | buffer-alloc-unsafe "^1.1.0"
961 | buffer-fill "^1.0.0"
962 |
963 | buffer-fill@^1.0.0:
964 | version "1.0.0"
965 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
966 |
967 | buffer-from@^1.0.0:
968 | version "1.1.1"
969 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
970 |
971 | buffer-xor@^1.0.3:
972 | version "1.0.3"
973 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
974 |
975 | buffer@^5.0.2:
976 | version "5.2.1"
977 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
978 | dependencies:
979 | base64-js "^1.0.2"
980 | ieee754 "^1.1.4"
981 |
982 | builtin-modules@^3.0.0:
983 | version "3.0.0"
984 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1"
985 |
986 | builtin-status-codes@^3.0.0:
987 | version "3.0.0"
988 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
989 |
990 | cache-base@^1.0.1:
991 | version "1.0.1"
992 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
993 | dependencies:
994 | collection-visit "^1.0.0"
995 | component-emitter "^1.2.1"
996 | get-value "^2.0.6"
997 | has-value "^1.0.0"
998 | isobject "^3.0.1"
999 | set-value "^2.0.0"
1000 | to-object-path "^0.3.0"
1001 | union-value "^1.0.0"
1002 | unset-value "^1.0.0"
1003 |
1004 | cached-path-relative@^1.0.0:
1005 | version "1.0.2"
1006 | resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db"
1007 |
1008 | camelcase@^5.0.0:
1009 | version "5.0.0"
1010 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
1011 |
1012 | caniuse-lite@^1.0.30000929:
1013 | version "1.0.30000938"
1014 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000938.tgz#b64bf1427438df40183fce910fe24e34feda7a3f"
1015 |
1016 | chalk@^1.1.3:
1017 | version "1.1.3"
1018 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
1019 | dependencies:
1020 | ansi-styles "^2.2.1"
1021 | escape-string-regexp "^1.0.2"
1022 | has-ansi "^2.0.0"
1023 | strip-ansi "^3.0.0"
1024 | supports-color "^2.0.0"
1025 |
1026 | chalk@^2.0.0, chalk@^2.4.1:
1027 | version "2.4.2"
1028 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1029 | dependencies:
1030 | ansi-styles "^3.2.1"
1031 | escape-string-regexp "^1.0.5"
1032 | supports-color "^5.3.0"
1033 |
1034 | chokidar@^2.0.3:
1035 | version "2.1.2"
1036 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058"
1037 | dependencies:
1038 | anymatch "^2.0.0"
1039 | async-each "^1.0.1"
1040 | braces "^2.3.2"
1041 | glob-parent "^3.1.0"
1042 | inherits "^2.0.3"
1043 | is-binary-path "^1.0.0"
1044 | is-glob "^4.0.0"
1045 | normalize-path "^3.0.0"
1046 | path-is-absolute "^1.0.0"
1047 | readdirp "^2.2.1"
1048 | upath "^1.1.0"
1049 | optionalDependencies:
1050 | fsevents "^1.2.7"
1051 |
1052 | chownr@^1.0.1, chownr@^1.1.1:
1053 | version "1.1.1"
1054 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
1055 |
1056 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1057 | version "1.0.4"
1058 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
1059 | dependencies:
1060 | inherits "^2.0.1"
1061 | safe-buffer "^5.0.1"
1062 |
1063 | class-utils@^0.3.5:
1064 | version "0.3.6"
1065 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
1066 | dependencies:
1067 | arr-union "^3.1.0"
1068 | define-property "^0.2.5"
1069 | isobject "^3.0.0"
1070 | static-extend "^0.1.1"
1071 |
1072 | cli-boxes@^1.0.0:
1073 | version "1.0.0"
1074 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
1075 |
1076 | code-point-at@^1.0.0:
1077 | version "1.1.0"
1078 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
1079 |
1080 | collection-visit@^1.0.0:
1081 | version "1.0.0"
1082 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1083 | dependencies:
1084 | map-visit "^1.0.0"
1085 | object-visit "^1.0.0"
1086 |
1087 | color-convert@^1.9.0:
1088 | version "1.9.3"
1089 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1090 | dependencies:
1091 | color-name "1.1.3"
1092 |
1093 | color-name@1.1.3:
1094 | version "1.1.3"
1095 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1096 |
1097 | colors@^1.3.2:
1098 | version "1.3.3"
1099 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
1100 |
1101 | combine-source-map@^0.8.0, combine-source-map@~0.8.0:
1102 | version "0.8.0"
1103 | resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
1104 | dependencies:
1105 | convert-source-map "~1.1.0"
1106 | inline-source-map "~0.6.0"
1107 | lodash.memoize "~3.0.3"
1108 | source-map "~0.5.3"
1109 |
1110 | commander@^2.8.1:
1111 | version "2.19.0"
1112 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
1113 |
1114 | commander@~2.17.1:
1115 | version "2.17.1"
1116 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
1117 |
1118 | component-emitter@^1.2.1:
1119 | version "1.2.1"
1120 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
1121 |
1122 | concat-map@0.0.1:
1123 | version "0.0.1"
1124 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1125 |
1126 | concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0:
1127 | version "1.6.2"
1128 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
1129 | dependencies:
1130 | buffer-from "^1.0.0"
1131 | inherits "^2.0.3"
1132 | readable-stream "^2.2.2"
1133 | typedarray "^0.0.6"
1134 |
1135 | console-browserify@^1.1.0:
1136 | version "1.1.0"
1137 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
1138 | dependencies:
1139 | date-now "^0.1.4"
1140 |
1141 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
1142 | version "1.1.0"
1143 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
1144 |
1145 | constants-browserify@~1.0.0:
1146 | version "1.0.0"
1147 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
1148 |
1149 | convert-source-map@^1.1.0:
1150 | version "1.6.0"
1151 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
1152 | dependencies:
1153 | safe-buffer "~5.1.1"
1154 |
1155 | convert-source-map@~1.1.0:
1156 | version "1.1.3"
1157 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
1158 |
1159 | copy-descriptor@^0.1.0:
1160 | version "0.1.1"
1161 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
1162 |
1163 | core-js@^2.5.7:
1164 | version "2.6.5"
1165 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895"
1166 |
1167 | core-util-is@~1.0.0:
1168 | version "1.0.2"
1169 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
1170 |
1171 | create-ecdh@^4.0.0:
1172 | version "4.0.3"
1173 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
1174 | dependencies:
1175 | bn.js "^4.1.0"
1176 | elliptic "^6.0.0"
1177 |
1178 | create-hash@^1.1.0, create-hash@^1.1.2:
1179 | version "1.2.0"
1180 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
1181 | dependencies:
1182 | cipher-base "^1.0.1"
1183 | inherits "^2.0.1"
1184 | md5.js "^1.3.4"
1185 | ripemd160 "^2.0.1"
1186 | sha.js "^2.4.0"
1187 |
1188 | create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
1189 | version "1.1.7"
1190 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
1191 | dependencies:
1192 | cipher-base "^1.0.3"
1193 | create-hash "^1.1.0"
1194 | inherits "^2.0.1"
1195 | ripemd160 "^2.0.0"
1196 | safe-buffer "^5.0.1"
1197 | sha.js "^2.4.8"
1198 |
1199 | cross-spawn@^5.0.1:
1200 | version "5.1.0"
1201 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
1202 | dependencies:
1203 | lru-cache "^4.0.1"
1204 | shebang-command "^1.2.0"
1205 | which "^1.2.9"
1206 |
1207 | crypto-browserify@^3.0.0:
1208 | version "3.12.0"
1209 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
1210 | dependencies:
1211 | browserify-cipher "^1.0.0"
1212 | browserify-sign "^4.0.0"
1213 | create-ecdh "^4.0.0"
1214 | create-hash "^1.1.0"
1215 | create-hmac "^1.1.0"
1216 | diffie-hellman "^5.0.0"
1217 | inherits "^2.0.1"
1218 | pbkdf2 "^3.0.3"
1219 | public-encrypt "^4.0.0"
1220 | randombytes "^2.0.0"
1221 | randomfill "^1.0.3"
1222 |
1223 | dash-ast@^1.0.0:
1224 | version "1.0.0"
1225 | resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37"
1226 |
1227 | date-now@^0.1.4:
1228 | version "0.1.4"
1229 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
1230 |
1231 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
1232 | version "2.6.9"
1233 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1234 | dependencies:
1235 | ms "2.0.0"
1236 |
1237 | debug@^4.1.0:
1238 | version "4.1.1"
1239 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
1240 | dependencies:
1241 | ms "^2.1.1"
1242 |
1243 | decode-uri-component@^0.2.0:
1244 | version "0.2.0"
1245 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
1246 |
1247 | decompress-response@^3.3.0:
1248 | version "3.3.0"
1249 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
1250 | dependencies:
1251 | mimic-response "^1.0.0"
1252 |
1253 | deep-assign@^2.0.0:
1254 | version "2.0.0"
1255 | resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572"
1256 | dependencies:
1257 | is-obj "^1.0.0"
1258 |
1259 | deep-extend@^0.6.0:
1260 | version "0.6.0"
1261 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
1262 |
1263 | define-property@^0.2.5:
1264 | version "0.2.5"
1265 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1266 | dependencies:
1267 | is-descriptor "^0.1.0"
1268 |
1269 | define-property@^1.0.0:
1270 | version "1.0.0"
1271 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1272 | dependencies:
1273 | is-descriptor "^1.0.0"
1274 |
1275 | define-property@^2.0.2:
1276 | version "2.0.2"
1277 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1278 | dependencies:
1279 | is-descriptor "^1.0.2"
1280 | isobject "^3.0.1"
1281 |
1282 | defined@^1.0.0:
1283 | version "1.0.0"
1284 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
1285 |
1286 | delegates@^1.0.0:
1287 | version "1.0.0"
1288 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
1289 |
1290 | deps-sort@^2.0.0:
1291 | version "2.0.0"
1292 | resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
1293 | dependencies:
1294 | JSONStream "^1.0.3"
1295 | shasum "^1.0.0"
1296 | subarg "^1.0.0"
1297 | through2 "^2.0.0"
1298 |
1299 | des.js@^1.0.0:
1300 | version "1.0.0"
1301 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
1302 | dependencies:
1303 | inherits "^2.0.1"
1304 | minimalistic-assert "^1.0.0"
1305 |
1306 | detect-libc@^1.0.2, detect-libc@^1.0.3:
1307 | version "1.0.3"
1308 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
1309 |
1310 | detective@^5.0.2:
1311 | version "5.2.0"
1312 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
1313 | dependencies:
1314 | acorn-node "^1.6.1"
1315 | defined "^1.0.0"
1316 | minimist "^1.1.1"
1317 |
1318 | diffie-hellman@^5.0.0:
1319 | version "5.0.3"
1320 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
1321 | dependencies:
1322 | bn.js "^4.1.0"
1323 | miller-rabin "^4.0.0"
1324 | randombytes "^2.0.0"
1325 |
1326 | domain-browser@^1.2.0:
1327 | version "1.2.0"
1328 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
1329 |
1330 | duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
1331 | version "0.1.4"
1332 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
1333 | dependencies:
1334 | readable-stream "^2.0.2"
1335 |
1336 | duplexer@^0.1.1:
1337 | version "0.1.1"
1338 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
1339 |
1340 | electron-to-chromium@^1.3.103:
1341 | version "1.3.113"
1342 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9"
1343 |
1344 | elliptic@^6.0.0:
1345 | version "6.4.1"
1346 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
1347 | dependencies:
1348 | bn.js "^4.4.0"
1349 | brorand "^1.0.1"
1350 | hash.js "^1.0.0"
1351 | hmac-drbg "^1.0.0"
1352 | inherits "^2.0.1"
1353 | minimalistic-assert "^1.0.0"
1354 | minimalistic-crypto-utils "^1.0.0"
1355 |
1356 | emoji-regex@^7.0.1:
1357 | version "7.0.3"
1358 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
1359 |
1360 | end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1361 | version "1.4.1"
1362 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
1363 | dependencies:
1364 | once "^1.4.0"
1365 |
1366 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
1367 | version "1.0.5"
1368 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1369 |
1370 | estree-walker@^0.5.2:
1371 | version "0.5.2"
1372 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
1373 |
1374 | estree-walker@^0.6.0:
1375 | version "0.6.0"
1376 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae"
1377 |
1378 | esutils@^2.0.2:
1379 | version "2.0.2"
1380 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
1381 |
1382 | events@^2.0.0:
1383 | version "2.1.0"
1384 | resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
1385 |
1386 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
1387 | version "1.0.3"
1388 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
1389 | dependencies:
1390 | md5.js "^1.3.4"
1391 | safe-buffer "^5.1.1"
1392 |
1393 | execa@^0.7.0:
1394 | version "0.7.0"
1395 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
1396 | dependencies:
1397 | cross-spawn "^5.0.1"
1398 | get-stream "^3.0.0"
1399 | is-stream "^1.1.0"
1400 | npm-run-path "^2.0.0"
1401 | p-finally "^1.0.0"
1402 | signal-exit "^3.0.0"
1403 | strip-eof "^1.0.0"
1404 |
1405 | expand-brackets@^2.1.4:
1406 | version "2.1.4"
1407 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
1408 | dependencies:
1409 | debug "^2.3.3"
1410 | define-property "^0.2.5"
1411 | extend-shallow "^2.0.1"
1412 | posix-character-classes "^0.1.0"
1413 | regex-not "^1.0.0"
1414 | snapdragon "^0.8.1"
1415 | to-regex "^3.0.1"
1416 |
1417 | expand-template@^2.0.3:
1418 | version "2.0.3"
1419 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
1420 |
1421 | expand-tilde@^2.0.0, expand-tilde@^2.0.2:
1422 | version "2.0.2"
1423 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
1424 | dependencies:
1425 | homedir-polyfill "^1.0.1"
1426 |
1427 | extend-shallow@^2.0.1:
1428 | version "2.0.1"
1429 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1430 | dependencies:
1431 | is-extendable "^0.1.0"
1432 |
1433 | extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1434 | version "3.0.2"
1435 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1436 | dependencies:
1437 | assign-symbols "^1.0.0"
1438 | is-extendable "^1.0.1"
1439 |
1440 | extglob@^2.0.4:
1441 | version "2.0.4"
1442 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1443 | dependencies:
1444 | array-unique "^0.3.2"
1445 | define-property "^1.0.0"
1446 | expand-brackets "^2.1.4"
1447 | extend-shallow "^2.0.1"
1448 | fragment-cache "^0.2.1"
1449 | regex-not "^1.0.0"
1450 | snapdragon "^0.8.1"
1451 | to-regex "^3.0.1"
1452 |
1453 | filesize@^3.6.1:
1454 | version "3.6.1"
1455 | resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
1456 |
1457 | fill-range@^4.0.0:
1458 | version "4.0.0"
1459 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
1460 | dependencies:
1461 | extend-shallow "^2.0.1"
1462 | is-number "^3.0.0"
1463 | repeat-string "^1.6.1"
1464 | to-regex-range "^2.1.0"
1465 |
1466 | for-in@^1.0.2:
1467 | version "1.0.2"
1468 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
1469 |
1470 | fragment-cache@^0.2.1:
1471 | version "0.2.1"
1472 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
1473 | dependencies:
1474 | map-cache "^0.2.2"
1475 |
1476 | fs-constants@^1.0.0:
1477 | version "1.0.0"
1478 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
1479 |
1480 | fs-minipass@^1.2.5:
1481 | version "1.2.5"
1482 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
1483 | dependencies:
1484 | minipass "^2.2.1"
1485 |
1486 | fs-readdir-recursive@^1.1.0:
1487 | version "1.1.0"
1488 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
1489 |
1490 | fs.realpath@^1.0.0:
1491 | version "1.0.0"
1492 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1493 |
1494 | fsevents@^1.2.7:
1495 | version "1.2.7"
1496 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
1497 | dependencies:
1498 | nan "^2.9.2"
1499 | node-pre-gyp "^0.10.0"
1500 |
1501 | function-bind@^1.1.1:
1502 | version "1.1.1"
1503 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1504 |
1505 | gauge@~2.7.3:
1506 | version "2.7.4"
1507 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
1508 | dependencies:
1509 | aproba "^1.0.3"
1510 | console-control-strings "^1.0.0"
1511 | has-unicode "^2.0.0"
1512 | object-assign "^4.1.0"
1513 | signal-exit "^3.0.0"
1514 | string-width "^1.0.1"
1515 | strip-ansi "^3.0.1"
1516 | wide-align "^1.1.0"
1517 |
1518 | get-assigned-identifiers@^1.2.0:
1519 | version "1.2.0"
1520 | resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1"
1521 |
1522 | get-stream@^3.0.0:
1523 | version "3.0.0"
1524 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
1525 |
1526 | get-value@^2.0.3, get-value@^2.0.6:
1527 | version "2.0.6"
1528 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
1529 |
1530 | github-from-package@0.0.0:
1531 | version "0.0.0"
1532 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
1533 |
1534 | glob-parent@^3.1.0:
1535 | version "3.1.0"
1536 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
1537 | dependencies:
1538 | is-glob "^3.1.0"
1539 | path-dirname "^1.0.0"
1540 |
1541 | glob@^7.0.0, glob@^7.1.0, glob@^7.1.2, glob@^7.1.3:
1542 | version "7.1.3"
1543 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
1544 | dependencies:
1545 | fs.realpath "^1.0.0"
1546 | inflight "^1.0.4"
1547 | inherits "2"
1548 | minimatch "^3.0.4"
1549 | once "^1.3.0"
1550 | path-is-absolute "^1.0.0"
1551 |
1552 | global-modules@^1.0.0:
1553 | version "1.0.0"
1554 | resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
1555 | dependencies:
1556 | global-prefix "^1.0.1"
1557 | is-windows "^1.0.1"
1558 | resolve-dir "^1.0.0"
1559 |
1560 | global-prefix@^1.0.1:
1561 | version "1.0.2"
1562 | resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
1563 | dependencies:
1564 | expand-tilde "^2.0.2"
1565 | homedir-polyfill "^1.0.1"
1566 | ini "^1.3.4"
1567 | is-windows "^1.0.1"
1568 | which "^1.2.14"
1569 |
1570 | globals@^11.1.0:
1571 | version "11.11.0"
1572 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
1573 |
1574 | graceful-fs@^4.1.11:
1575 | version "4.1.15"
1576 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
1577 |
1578 | gzip-size@^5.0.0:
1579 | version "5.0.0"
1580 | resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80"
1581 | dependencies:
1582 | duplexer "^0.1.1"
1583 | pify "^3.0.0"
1584 |
1585 | has-ansi@^2.0.0:
1586 | version "2.0.0"
1587 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1588 | dependencies:
1589 | ansi-regex "^2.0.0"
1590 |
1591 | has-flag@^3.0.0:
1592 | version "3.0.0"
1593 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1594 |
1595 | has-glob@^1.0.0:
1596 | version "1.0.0"
1597 | resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207"
1598 | dependencies:
1599 | is-glob "^3.0.0"
1600 |
1601 | has-unicode@^2.0.0:
1602 | version "2.0.1"
1603 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
1604 |
1605 | has-value@^0.3.1:
1606 | version "0.3.1"
1607 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
1608 | dependencies:
1609 | get-value "^2.0.3"
1610 | has-values "^0.1.4"
1611 | isobject "^2.0.0"
1612 |
1613 | has-value@^1.0.0:
1614 | version "1.0.0"
1615 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
1616 | dependencies:
1617 | get-value "^2.0.6"
1618 | has-values "^1.0.0"
1619 | isobject "^3.0.0"
1620 |
1621 | has-values@^0.1.4:
1622 | version "0.1.4"
1623 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
1624 |
1625 | has-values@^1.0.0:
1626 | version "1.0.0"
1627 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
1628 | dependencies:
1629 | is-number "^3.0.0"
1630 | kind-of "^4.0.0"
1631 |
1632 | has@^1.0.0:
1633 | version "1.0.3"
1634 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1635 | dependencies:
1636 | function-bind "^1.1.1"
1637 |
1638 | hash-base@^3.0.0:
1639 | version "3.0.4"
1640 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
1641 | dependencies:
1642 | inherits "^2.0.1"
1643 | safe-buffer "^5.0.1"
1644 |
1645 | hash.js@^1.0.0, hash.js@^1.0.3:
1646 | version "1.1.7"
1647 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
1648 | dependencies:
1649 | inherits "^2.0.3"
1650 | minimalistic-assert "^1.0.1"
1651 |
1652 | hmac-drbg@^1.0.0:
1653 | version "1.0.1"
1654 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
1655 | dependencies:
1656 | hash.js "^1.0.3"
1657 | minimalistic-assert "^1.0.0"
1658 | minimalistic-crypto-utils "^1.0.1"
1659 |
1660 | homedir-polyfill@^1.0.1:
1661 | version "1.0.3"
1662 | resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
1663 | dependencies:
1664 | parse-passwd "^1.0.0"
1665 |
1666 | htmlescape@^1.1.0:
1667 | version "1.1.1"
1668 | resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
1669 |
1670 | https-browserify@^1.0.0:
1671 | version "1.0.0"
1672 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
1673 |
1674 | iconv-lite@^0.4.4:
1675 | version "0.4.24"
1676 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1677 | dependencies:
1678 | safer-buffer ">= 2.1.2 < 3"
1679 |
1680 | ieee754@^1.1.4:
1681 | version "1.1.12"
1682 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
1683 |
1684 | ignore-walk@^3.0.1:
1685 | version "3.0.1"
1686 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
1687 | dependencies:
1688 | minimatch "^3.0.4"
1689 |
1690 | iltorb@^2.0.5:
1691 | version "2.4.1"
1692 | resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-2.4.1.tgz#3ae14f0a76ba880503884a2fe630b1f748eb4c17"
1693 | dependencies:
1694 | detect-libc "^1.0.3"
1695 | npmlog "^4.1.2"
1696 | prebuild-install "^5.2.1"
1697 | which-pm-runs "^1.0.0"
1698 |
1699 | inflection@^1.12.0:
1700 | version "1.12.0"
1701 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416"
1702 |
1703 | inflight@^1.0.4:
1704 | version "1.0.6"
1705 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1706 | dependencies:
1707 | once "^1.3.0"
1708 | wrappy "1"
1709 |
1710 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
1711 | version "2.0.3"
1712 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1713 |
1714 | inherits@2.0.1:
1715 | version "2.0.1"
1716 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
1717 |
1718 | ini@^1.3.4, ini@~1.3.0:
1719 | version "1.3.5"
1720 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
1721 |
1722 | inline-source-map@~0.6.0:
1723 | version "0.6.2"
1724 | resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
1725 | dependencies:
1726 | source-map "~0.5.3"
1727 |
1728 | insert-module-globals@^7.0.0:
1729 | version "7.2.0"
1730 | resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba"
1731 | dependencies:
1732 | JSONStream "^1.0.3"
1733 | acorn-node "^1.5.2"
1734 | combine-source-map "^0.8.0"
1735 | concat-stream "^1.6.1"
1736 | is-buffer "^1.1.0"
1737 | path-is-absolute "^1.0.1"
1738 | process "~0.11.0"
1739 | through2 "^2.0.0"
1740 | undeclared-identifiers "^1.1.2"
1741 | xtend "^4.0.0"
1742 |
1743 | invariant@^2.2.2:
1744 | version "2.2.4"
1745 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
1746 | dependencies:
1747 | loose-envify "^1.0.0"
1748 |
1749 | is-accessor-descriptor@^0.1.6:
1750 | version "0.1.6"
1751 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
1752 | dependencies:
1753 | kind-of "^3.0.2"
1754 |
1755 | is-accessor-descriptor@^1.0.0:
1756 | version "1.0.0"
1757 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
1758 | dependencies:
1759 | kind-of "^6.0.0"
1760 |
1761 | is-binary-path@^1.0.0:
1762 | version "1.0.1"
1763 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
1764 | dependencies:
1765 | binary-extensions "^1.0.0"
1766 |
1767 | is-buffer@^1.1.0, is-buffer@^1.1.5:
1768 | version "1.1.6"
1769 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1770 |
1771 | is-data-descriptor@^0.1.4:
1772 | version "0.1.4"
1773 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
1774 | dependencies:
1775 | kind-of "^3.0.2"
1776 |
1777 | is-data-descriptor@^1.0.0:
1778 | version "1.0.0"
1779 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
1780 | dependencies:
1781 | kind-of "^6.0.0"
1782 |
1783 | is-descriptor@^0.1.0:
1784 | version "0.1.6"
1785 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
1786 | dependencies:
1787 | is-accessor-descriptor "^0.1.6"
1788 | is-data-descriptor "^0.1.4"
1789 | kind-of "^5.0.0"
1790 |
1791 | is-descriptor@^1.0.0, is-descriptor@^1.0.2:
1792 | version "1.0.2"
1793 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
1794 | dependencies:
1795 | is-accessor-descriptor "^1.0.0"
1796 | is-data-descriptor "^1.0.0"
1797 | kind-of "^6.0.2"
1798 |
1799 | is-extendable@^0.1.0, is-extendable@^0.1.1:
1800 | version "0.1.1"
1801 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1802 |
1803 | is-extendable@^1.0.1:
1804 | version "1.0.1"
1805 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
1806 | dependencies:
1807 | is-plain-object "^2.0.4"
1808 |
1809 | is-extglob@^2.1.0, is-extglob@^2.1.1:
1810 | version "2.1.1"
1811 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1812 |
1813 | is-fullwidth-code-point@^1.0.0:
1814 | version "1.0.0"
1815 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1816 | dependencies:
1817 | number-is-nan "^1.0.0"
1818 |
1819 | is-fullwidth-code-point@^2.0.0:
1820 | version "2.0.0"
1821 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1822 |
1823 | is-glob@^3.0.0, is-glob@^3.1.0:
1824 | version "3.1.0"
1825 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
1826 | dependencies:
1827 | is-extglob "^2.1.0"
1828 |
1829 | is-glob@^4.0.0:
1830 | version "4.0.0"
1831 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
1832 | dependencies:
1833 | is-extglob "^2.1.1"
1834 |
1835 | is-module@^1.0.0:
1836 | version "1.0.0"
1837 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
1838 |
1839 | is-number@^3.0.0:
1840 | version "3.0.0"
1841 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1842 | dependencies:
1843 | kind-of "^3.0.2"
1844 |
1845 | is-obj@^1.0.0:
1846 | version "1.0.1"
1847 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
1848 |
1849 | is-plain-obj@^1.1.0:
1850 | version "1.1.0"
1851 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
1852 |
1853 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
1854 | version "2.0.4"
1855 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1856 | dependencies:
1857 | isobject "^3.0.1"
1858 |
1859 | is-stream@^1.1.0:
1860 | version "1.1.0"
1861 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1862 |
1863 | is-valid-glob@^1.0.0:
1864 | version "1.0.0"
1865 | resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
1866 |
1867 | is-windows@^1.0.1, is-windows@^1.0.2:
1868 | version "1.0.2"
1869 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
1870 |
1871 | isarray@1.0.0, isarray@~1.0.0:
1872 | version "1.0.0"
1873 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1874 |
1875 | isarray@^2.0.4:
1876 | version "2.0.4"
1877 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7"
1878 |
1879 | isexe@^2.0.0:
1880 | version "2.0.0"
1881 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1882 |
1883 | isobject@^2.0.0:
1884 | version "2.1.0"
1885 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1886 | dependencies:
1887 | isarray "1.0.0"
1888 |
1889 | isobject@^3.0.0, isobject@^3.0.1:
1890 | version "3.0.1"
1891 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1892 |
1893 | js-levenshtein@^1.1.3:
1894 | version "1.1.6"
1895 | resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
1896 |
1897 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
1898 | version "4.0.0"
1899 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1900 |
1901 | jsesc@^2.5.1:
1902 | version "2.5.2"
1903 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1904 |
1905 | jsesc@~0.5.0:
1906 | version "0.5.0"
1907 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1908 |
1909 | json-stable-stringify@~0.0.0:
1910 | version "0.0.1"
1911 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
1912 | dependencies:
1913 | jsonify "~0.0.0"
1914 |
1915 | json5@^2.1.0:
1916 | version "2.1.0"
1917 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
1918 | dependencies:
1919 | minimist "^1.2.0"
1920 |
1921 | jsonify@~0.0.0:
1922 | version "0.0.0"
1923 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1924 |
1925 | jsonparse@^1.2.0:
1926 | version "1.3.1"
1927 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
1928 |
1929 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
1930 | version "3.2.2"
1931 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1932 | dependencies:
1933 | is-buffer "^1.1.5"
1934 |
1935 | kind-of@^4.0.0:
1936 | version "4.0.0"
1937 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1938 | dependencies:
1939 | is-buffer "^1.1.5"
1940 |
1941 | kind-of@^5.0.0:
1942 | version "5.1.0"
1943 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
1944 |
1945 | kind-of@^6.0.0, kind-of@^6.0.2:
1946 | version "6.0.2"
1947 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
1948 |
1949 | labeled-stream-splicer@^2.0.0:
1950 | version "2.0.1"
1951 | resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926"
1952 | dependencies:
1953 | inherits "^2.0.1"
1954 | isarray "^2.0.4"
1955 | stream-splicer "^2.0.0"
1956 |
1957 | lodash.memoize@~3.0.3:
1958 | version "3.0.4"
1959 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
1960 |
1961 | lodash@^4.17.10, lodash@^4.17.11:
1962 | version "4.17.11"
1963 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
1964 |
1965 | loose-envify@^1.0.0:
1966 | version "1.4.0"
1967 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1968 | dependencies:
1969 | js-tokens "^3.0.0 || ^4.0.0"
1970 |
1971 | lru-cache@^4.0.1:
1972 | version "4.1.5"
1973 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
1974 | dependencies:
1975 | pseudomap "^1.0.2"
1976 | yallist "^2.1.2"
1977 |
1978 | magic-string@^0.25.1:
1979 | version "0.25.2"
1980 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9"
1981 | dependencies:
1982 | sourcemap-codec "^1.4.4"
1983 |
1984 | map-cache@^0.2.2:
1985 | version "0.2.2"
1986 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
1987 |
1988 | map-visit@^1.0.0:
1989 | version "1.0.0"
1990 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
1991 | dependencies:
1992 | object-visit "^1.0.0"
1993 |
1994 | matched@^1.0.2:
1995 | version "1.0.2"
1996 | resolved "https://registry.yarnpkg.com/matched/-/matched-1.0.2.tgz#1d95d77dd5f1b5075a9e94acde5462ffd85f317a"
1997 | dependencies:
1998 | arr-union "^3.1.0"
1999 | async-array-reduce "^0.2.1"
2000 | glob "^7.1.2"
2001 | has-glob "^1.0.0"
2002 | is-valid-glob "^1.0.0"
2003 | resolve-dir "^1.0.0"
2004 |
2005 | md5.js@^1.3.4:
2006 | version "1.3.5"
2007 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
2008 | dependencies:
2009 | hash-base "^3.0.0"
2010 | inherits "^2.0.1"
2011 | safe-buffer "^5.1.2"
2012 |
2013 | micromatch@^3.1.10, micromatch@^3.1.4:
2014 | version "3.1.10"
2015 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
2016 | dependencies:
2017 | arr-diff "^4.0.0"
2018 | array-unique "^0.3.2"
2019 | braces "^2.3.1"
2020 | define-property "^2.0.2"
2021 | extend-shallow "^3.0.2"
2022 | extglob "^2.0.4"
2023 | fragment-cache "^0.2.1"
2024 | kind-of "^6.0.2"
2025 | nanomatch "^1.2.9"
2026 | object.pick "^1.3.0"
2027 | regex-not "^1.0.0"
2028 | snapdragon "^0.8.1"
2029 | to-regex "^3.0.2"
2030 |
2031 | miller-rabin@^4.0.0:
2032 | version "4.0.1"
2033 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
2034 | dependencies:
2035 | bn.js "^4.0.0"
2036 | brorand "^1.0.1"
2037 |
2038 | mimic-response@^1.0.0:
2039 | version "1.0.1"
2040 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
2041 |
2042 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
2043 | version "1.0.1"
2044 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
2045 |
2046 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
2047 | version "1.0.1"
2048 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
2049 |
2050 | minimatch@^3.0.4:
2051 | version "3.0.4"
2052 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
2053 | dependencies:
2054 | brace-expansion "^1.1.7"
2055 |
2056 | minimist@0.0.8:
2057 | version "0.0.8"
2058 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
2059 |
2060 | minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0:
2061 | version "1.2.0"
2062 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
2063 |
2064 | minipass@^2.2.1, minipass@^2.3.4:
2065 | version "2.3.5"
2066 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
2067 | dependencies:
2068 | safe-buffer "^5.1.2"
2069 | yallist "^3.0.0"
2070 |
2071 | minizlib@^1.1.1:
2072 | version "1.2.1"
2073 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
2074 | dependencies:
2075 | minipass "^2.2.1"
2076 |
2077 | mixin-deep@^1.2.0:
2078 | version "1.3.1"
2079 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
2080 | dependencies:
2081 | for-in "^1.0.2"
2082 | is-extendable "^1.0.1"
2083 |
2084 | mkdirp@^0.5.0, mkdirp@^0.5.1:
2085 | version "0.5.1"
2086 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
2087 | dependencies:
2088 | minimist "0.0.8"
2089 |
2090 | module-deps@^6.0.0:
2091 | version "6.2.0"
2092 | resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.0.tgz#d41a2e790245ce319171e4e7c4d8c73993ba3cd5"
2093 | dependencies:
2094 | JSONStream "^1.0.3"
2095 | browser-resolve "^1.7.0"
2096 | cached-path-relative "^1.0.0"
2097 | concat-stream "~1.6.0"
2098 | defined "^1.0.0"
2099 | detective "^5.0.2"
2100 | duplexer2 "^0.1.2"
2101 | inherits "^2.0.1"
2102 | parents "^1.0.0"
2103 | readable-stream "^2.0.2"
2104 | resolve "^1.4.0"
2105 | stream-combiner2 "^1.1.1"
2106 | subarg "^1.0.0"
2107 | through2 "^2.0.0"
2108 | xtend "^4.0.0"
2109 |
2110 | ms@2.0.0:
2111 | version "2.0.0"
2112 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2113 |
2114 | ms@^2.1.1:
2115 | version "2.1.1"
2116 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
2117 |
2118 | nan@^2.9.2:
2119 | version "2.12.1"
2120 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
2121 |
2122 | nanomatch@^1.2.9:
2123 | version "1.2.13"
2124 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
2125 | dependencies:
2126 | arr-diff "^4.0.0"
2127 | array-unique "^0.3.2"
2128 | define-property "^2.0.2"
2129 | extend-shallow "^3.0.2"
2130 | fragment-cache "^0.2.1"
2131 | is-windows "^1.0.2"
2132 | kind-of "^6.0.2"
2133 | object.pick "^1.3.0"
2134 | regex-not "^1.0.0"
2135 | snapdragon "^0.8.1"
2136 | to-regex "^3.0.1"
2137 |
2138 | napi-build-utils@^1.0.1:
2139 | version "1.0.1"
2140 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508"
2141 |
2142 | needle@^2.2.1:
2143 | version "2.2.4"
2144 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
2145 | dependencies:
2146 | debug "^2.1.2"
2147 | iconv-lite "^0.4.4"
2148 | sax "^1.2.4"
2149 |
2150 | node-abi@^2.7.0:
2151 | version "2.7.1"
2152 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.1.tgz#a8997ae91176a5fbaa455b194976e32683cda643"
2153 | dependencies:
2154 | semver "^5.4.1"
2155 |
2156 | node-pre-gyp@^0.10.0:
2157 | version "0.10.3"
2158 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
2159 | dependencies:
2160 | detect-libc "^1.0.2"
2161 | mkdirp "^0.5.1"
2162 | needle "^2.2.1"
2163 | nopt "^4.0.1"
2164 | npm-packlist "^1.1.6"
2165 | npmlog "^4.0.2"
2166 | rc "^1.2.7"
2167 | rimraf "^2.6.1"
2168 | semver "^5.3.0"
2169 | tar "^4"
2170 |
2171 | node-releases@^1.1.3:
2172 | version "1.1.8"
2173 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.8.tgz#32a63fff63c5e51b7e0f540ac95947d220fc6862"
2174 | dependencies:
2175 | semver "^5.3.0"
2176 |
2177 | noop-logger@^0.1.1:
2178 | version "0.1.1"
2179 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
2180 |
2181 | nopt@^4.0.1:
2182 | version "4.0.1"
2183 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
2184 | dependencies:
2185 | abbrev "1"
2186 | osenv "^0.1.4"
2187 |
2188 | normalize-path@^2.1.1:
2189 | version "2.1.1"
2190 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
2191 | dependencies:
2192 | remove-trailing-separator "^1.0.1"
2193 |
2194 | normalize-path@^3.0.0:
2195 | version "3.0.0"
2196 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
2197 |
2198 | npm-bundled@^1.0.1:
2199 | version "1.0.6"
2200 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
2201 |
2202 | npm-packlist@^1.1.6:
2203 | version "1.4.0"
2204 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.0.tgz#b2c0867af2a396e0734343d2b6b3f7934db935f2"
2205 | dependencies:
2206 | ignore-walk "^3.0.1"
2207 | npm-bundled "^1.0.1"
2208 |
2209 | npm-run-path@^2.0.0:
2210 | version "2.0.2"
2211 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
2212 | dependencies:
2213 | path-key "^2.0.0"
2214 |
2215 | npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
2216 | version "4.1.2"
2217 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
2218 | dependencies:
2219 | are-we-there-yet "~1.1.2"
2220 | console-control-strings "~1.1.0"
2221 | gauge "~2.7.3"
2222 | set-blocking "~2.0.0"
2223 |
2224 | number-is-nan@^1.0.0:
2225 | version "1.0.1"
2226 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
2227 |
2228 | object-assign@^4.1.0:
2229 | version "4.1.1"
2230 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
2231 |
2232 | object-copy@^0.1.0:
2233 | version "0.1.0"
2234 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
2235 | dependencies:
2236 | copy-descriptor "^0.1.0"
2237 | define-property "^0.2.5"
2238 | kind-of "^3.0.3"
2239 |
2240 | object-visit@^1.0.0:
2241 | version "1.0.1"
2242 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
2243 | dependencies:
2244 | isobject "^3.0.0"
2245 |
2246 | object.pick@^1.3.0:
2247 | version "1.3.0"
2248 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
2249 | dependencies:
2250 | isobject "^3.0.1"
2251 |
2252 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
2253 | version "1.4.0"
2254 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2255 | dependencies:
2256 | wrappy "1"
2257 |
2258 | os-browserify@~0.3.0:
2259 | version "0.3.0"
2260 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
2261 |
2262 | os-homedir@^1.0.0, os-homedir@^1.0.1:
2263 | version "1.0.2"
2264 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
2265 |
2266 | os-tmpdir@^1.0.0:
2267 | version "1.0.2"
2268 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
2269 |
2270 | osenv@^0.1.4:
2271 | version "0.1.5"
2272 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
2273 | dependencies:
2274 | os-homedir "^1.0.0"
2275 | os-tmpdir "^1.0.0"
2276 |
2277 | output-file-sync@^2.0.0:
2278 | version "2.0.1"
2279 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0"
2280 | dependencies:
2281 | graceful-fs "^4.1.11"
2282 | is-plain-obj "^1.1.0"
2283 | mkdirp "^0.5.1"
2284 |
2285 | p-finally@^1.0.0:
2286 | version "1.0.0"
2287 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
2288 |
2289 | pako@~1.0.5:
2290 | version "1.0.8"
2291 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4"
2292 |
2293 | parents@^1.0.0, parents@^1.0.1:
2294 | version "1.0.1"
2295 | resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
2296 | dependencies:
2297 | path-platform "~0.11.15"
2298 |
2299 | parse-asn1@^5.0.0:
2300 | version "5.1.4"
2301 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
2302 | dependencies:
2303 | asn1.js "^4.0.0"
2304 | browserify-aes "^1.0.0"
2305 | create-hash "^1.1.0"
2306 | evp_bytestokey "^1.0.0"
2307 | pbkdf2 "^3.0.3"
2308 | safe-buffer "^5.1.1"
2309 |
2310 | parse-passwd@^1.0.0:
2311 | version "1.0.0"
2312 | resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
2313 |
2314 | pascalcase@^0.1.1:
2315 | version "0.1.1"
2316 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
2317 |
2318 | path-browserify@~0.0.0:
2319 | version "0.0.1"
2320 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
2321 |
2322 | path-dirname@^1.0.0:
2323 | version "1.0.2"
2324 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
2325 |
2326 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
2327 | version "1.0.1"
2328 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2329 |
2330 | path-key@^2.0.0:
2331 | version "2.0.1"
2332 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
2333 |
2334 | path-parse@^1.0.6:
2335 | version "1.0.6"
2336 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
2337 |
2338 | path-platform@~0.11.15:
2339 | version "0.11.15"
2340 | resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
2341 |
2342 | pbkdf2@^3.0.3:
2343 | version "3.0.17"
2344 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
2345 | dependencies:
2346 | create-hash "^1.1.2"
2347 | create-hmac "^1.1.4"
2348 | ripemd160 "^2.0.1"
2349 | safe-buffer "^5.0.1"
2350 | sha.js "^2.4.8"
2351 |
2352 | pify@^3.0.0:
2353 | version "3.0.0"
2354 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
2355 |
2356 | posix-character-classes@^0.1.0:
2357 | version "0.1.1"
2358 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
2359 |
2360 | prebuild-install@^5.2.1:
2361 | version "5.2.4"
2362 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.4.tgz#8cc41a217ef778a31d3a876fe6668d05406db750"
2363 | dependencies:
2364 | detect-libc "^1.0.3"
2365 | expand-template "^2.0.3"
2366 | github-from-package "0.0.0"
2367 | minimist "^1.2.0"
2368 | mkdirp "^0.5.1"
2369 | napi-build-utils "^1.0.1"
2370 | node-abi "^2.7.0"
2371 | noop-logger "^0.1.1"
2372 | npmlog "^4.0.1"
2373 | os-homedir "^1.0.1"
2374 | pump "^2.0.1"
2375 | rc "^1.2.7"
2376 | simple-get "^2.7.0"
2377 | tar-fs "^1.13.0"
2378 | tunnel-agent "^0.6.0"
2379 | which-pm-runs "^1.0.0"
2380 |
2381 | private@^0.1.6:
2382 | version "0.1.8"
2383 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
2384 |
2385 | process-nextick-args@~2.0.0:
2386 | version "2.0.0"
2387 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
2388 |
2389 | process@~0.11.0:
2390 | version "0.11.10"
2391 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
2392 |
2393 | pseudomap@^1.0.2:
2394 | version "1.0.2"
2395 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
2396 |
2397 | public-encrypt@^4.0.0:
2398 | version "4.0.3"
2399 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
2400 | dependencies:
2401 | bn.js "^4.1.0"
2402 | browserify-rsa "^4.0.0"
2403 | create-hash "^1.1.0"
2404 | parse-asn1 "^5.0.0"
2405 | randombytes "^2.0.1"
2406 | safe-buffer "^5.1.2"
2407 |
2408 | pump@^1.0.0:
2409 | version "1.0.3"
2410 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
2411 | dependencies:
2412 | end-of-stream "^1.1.0"
2413 | once "^1.3.1"
2414 |
2415 | pump@^2.0.1:
2416 | version "2.0.1"
2417 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
2418 | dependencies:
2419 | end-of-stream "^1.1.0"
2420 | once "^1.3.1"
2421 |
2422 | punycode@1.3.2:
2423 | version "1.3.2"
2424 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
2425 |
2426 | punycode@^1.3.2:
2427 | version "1.4.1"
2428 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
2429 |
2430 | querystring-es3@~0.2.0:
2431 | version "0.2.1"
2432 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
2433 |
2434 | querystring@0.2.0:
2435 | version "0.2.0"
2436 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
2437 |
2438 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
2439 | version "2.1.0"
2440 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
2441 | dependencies:
2442 | safe-buffer "^5.1.0"
2443 |
2444 | randomfill@^1.0.3:
2445 | version "1.0.4"
2446 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
2447 | dependencies:
2448 | randombytes "^2.0.5"
2449 | safe-buffer "^5.1.0"
2450 |
2451 | rc@^1.2.7:
2452 | version "1.2.8"
2453 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
2454 | dependencies:
2455 | deep-extend "^0.6.0"
2456 | ini "~1.3.0"
2457 | minimist "^1.2.0"
2458 | strip-json-comments "~2.0.1"
2459 |
2460 | read-only-stream@^2.0.0:
2461 | version "2.0.0"
2462 | resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
2463 | dependencies:
2464 | readable-stream "^2.0.2"
2465 |
2466 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
2467 | version "2.3.6"
2468 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
2469 | dependencies:
2470 | core-util-is "~1.0.0"
2471 | inherits "~2.0.3"
2472 | isarray "~1.0.0"
2473 | process-nextick-args "~2.0.0"
2474 | safe-buffer "~5.1.1"
2475 | string_decoder "~1.1.1"
2476 | util-deprecate "~1.0.1"
2477 |
2478 | readdirp@^2.2.1:
2479 | version "2.2.1"
2480 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
2481 | dependencies:
2482 | graceful-fs "^4.1.11"
2483 | micromatch "^3.1.10"
2484 | readable-stream "^2.0.2"
2485 |
2486 | regenerate-unicode-properties@^7.0.0:
2487 | version "7.0.0"
2488 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
2489 | dependencies:
2490 | regenerate "^1.4.0"
2491 |
2492 | regenerate@^1.4.0:
2493 | version "1.4.0"
2494 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
2495 |
2496 | regenerator-runtime@^0.12.0:
2497 | version "0.12.1"
2498 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
2499 |
2500 | regenerator-transform@^0.13.4:
2501 | version "0.13.4"
2502 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb"
2503 | dependencies:
2504 | private "^0.1.6"
2505 |
2506 | regex-not@^1.0.0, regex-not@^1.0.2:
2507 | version "1.0.2"
2508 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
2509 | dependencies:
2510 | extend-shallow "^3.0.2"
2511 | safe-regex "^1.1.0"
2512 |
2513 | regexp-tree@^0.1.0:
2514 | version "0.1.5"
2515 | resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.5.tgz#7cd71fca17198d04b4176efd79713f2998009397"
2516 |
2517 | regexpu-core@^4.1.3, regexpu-core@^4.2.0:
2518 | version "4.4.0"
2519 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
2520 | dependencies:
2521 | regenerate "^1.4.0"
2522 | regenerate-unicode-properties "^7.0.0"
2523 | regjsgen "^0.5.0"
2524 | regjsparser "^0.6.0"
2525 | unicode-match-property-ecmascript "^1.0.4"
2526 | unicode-match-property-value-ecmascript "^1.0.2"
2527 |
2528 | regjsgen@^0.5.0:
2529 | version "0.5.0"
2530 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
2531 |
2532 | regjsparser@^0.6.0:
2533 | version "0.6.0"
2534 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
2535 | dependencies:
2536 | jsesc "~0.5.0"
2537 |
2538 | remove-trailing-separator@^1.0.1:
2539 | version "1.1.0"
2540 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
2541 |
2542 | repeat-element@^1.1.2:
2543 | version "1.1.3"
2544 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
2545 |
2546 | repeat-string@^1.6.1:
2547 | version "1.6.1"
2548 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
2549 |
2550 | resolve-dir@^1.0.0:
2551 | version "1.0.1"
2552 | resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
2553 | dependencies:
2554 | expand-tilde "^2.0.0"
2555 | global-modules "^1.0.0"
2556 |
2557 | resolve-url@^0.2.1:
2558 | version "0.2.1"
2559 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
2560 |
2561 | resolve@1.1.7:
2562 | version "1.1.7"
2563 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
2564 |
2565 | resolve@^1.1.4, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0:
2566 | version "1.10.0"
2567 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
2568 | dependencies:
2569 | path-parse "^1.0.6"
2570 |
2571 | ret@~0.1.10:
2572 | version "0.1.15"
2573 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
2574 |
2575 | rimraf@^2.6.1:
2576 | version "2.6.3"
2577 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
2578 | dependencies:
2579 | glob "^7.1.3"
2580 |
2581 | ripemd160@^2.0.0, ripemd160@^2.0.1:
2582 | version "2.0.2"
2583 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
2584 | dependencies:
2585 | hash-base "^3.0.0"
2586 | inherits "^2.0.1"
2587 |
2588 | rollup-plugin-babel@^4.3.2:
2589 | version "4.3.2"
2590 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz#8c0e1bd7aa9826e90769cf76895007098ffd1413"
2591 | dependencies:
2592 | "@babel/helper-module-imports" "^7.0.0"
2593 | rollup-pluginutils "^2.3.0"
2594 |
2595 | rollup-plugin-commonjs@^9.2.1:
2596 | version "9.2.1"
2597 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.1.tgz#bb151ca8fa23600c7a03e25f9f0a45b1ee922dac"
2598 | dependencies:
2599 | estree-walker "^0.5.2"
2600 | magic-string "^0.25.1"
2601 | resolve "^1.10.0"
2602 | rollup-pluginutils "^2.3.3"
2603 |
2604 | rollup-plugin-filesize@^6.0.1:
2605 | version "6.0.1"
2606 | resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-6.0.1.tgz#71937b48a411374c76c4a7e6bbdb087780d8bd64"
2607 | dependencies:
2608 | boxen "^2.0.0"
2609 | brotli-size "0.0.3"
2610 | colors "^1.3.2"
2611 | deep-assign "^2.0.0"
2612 | filesize "^3.6.1"
2613 | gzip-size "^5.0.0"
2614 | terser "^3.10.0"
2615 |
2616 | rollup-plugin-multi-entry@^2.1.0:
2617 | version "2.1.0"
2618 | resolved "https://registry.yarnpkg.com/rollup-plugin-multi-entry/-/rollup-plugin-multi-entry-2.1.0.tgz#64a7287adfd437cab33bf6364a8d8ab1e7a7725d"
2619 | dependencies:
2620 | matched "^1.0.2"
2621 |
2622 | rollup-plugin-node-resolve@^4.0.1:
2623 | version "4.0.1"
2624 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.1.tgz#f95765d174e5daeef9ea6268566141f53aa9d422"
2625 | dependencies:
2626 | builtin-modules "^3.0.0"
2627 | is-module "^1.0.0"
2628 | resolve "^1.10.0"
2629 |
2630 | rollup-plugin-progress@^1.0.0:
2631 | version "1.0.0"
2632 | resolved "https://registry.yarnpkg.com/rollup-plugin-progress/-/rollup-plugin-progress-1.0.0.tgz#bcec2c4270776943659303f59255e57a38152f36"
2633 | dependencies:
2634 | chalk "^1.1.3"
2635 |
2636 | rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3:
2637 | version "2.4.1"
2638 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz#de43ab54965bbf47843599a7f3adceb723de38db"
2639 | dependencies:
2640 | estree-walker "^0.6.0"
2641 | micromatch "^3.1.10"
2642 |
2643 | rollup@^1.3.1:
2644 | version "1.3.1"
2645 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.3.1.tgz#cf3bad0ba38ee4534e3057cc6b7e662b6db83d78"
2646 | dependencies:
2647 | "@types/estree" "0.0.39"
2648 | "@types/node" "^11.9.5"
2649 | acorn "^6.1.0"
2650 |
2651 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2652 | version "5.1.2"
2653 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2654 |
2655 | safe-regex@^1.1.0:
2656 | version "1.1.0"
2657 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
2658 | dependencies:
2659 | ret "~0.1.10"
2660 |
2661 | "safer-buffer@>= 2.1.2 < 3":
2662 | version "2.1.2"
2663 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2664 |
2665 | sax@^1.2.4:
2666 | version "1.2.4"
2667 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
2668 |
2669 | semver@^5.3.0, semver@^5.4.1:
2670 | version "5.6.0"
2671 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
2672 |
2673 | set-blocking@~2.0.0:
2674 | version "2.0.0"
2675 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
2676 |
2677 | set-value@^0.4.3:
2678 | version "0.4.3"
2679 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
2680 | dependencies:
2681 | extend-shallow "^2.0.1"
2682 | is-extendable "^0.1.1"
2683 | is-plain-object "^2.0.1"
2684 | to-object-path "^0.3.0"
2685 |
2686 | set-value@^2.0.0:
2687 | version "2.0.0"
2688 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
2689 | dependencies:
2690 | extend-shallow "^2.0.1"
2691 | is-extendable "^0.1.1"
2692 | is-plain-object "^2.0.3"
2693 | split-string "^3.0.1"
2694 |
2695 | sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
2696 | version "2.4.11"
2697 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
2698 | dependencies:
2699 | inherits "^2.0.1"
2700 | safe-buffer "^5.0.1"
2701 |
2702 | shasum@^1.0.0:
2703 | version "1.0.2"
2704 | resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
2705 | dependencies:
2706 | json-stable-stringify "~0.0.0"
2707 | sha.js "~2.4.4"
2708 |
2709 | shebang-command@^1.2.0:
2710 | version "1.2.0"
2711 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
2712 | dependencies:
2713 | shebang-regex "^1.0.0"
2714 |
2715 | shebang-regex@^1.0.0:
2716 | version "1.0.0"
2717 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
2718 |
2719 | shell-quote@^1.6.1:
2720 | version "1.6.1"
2721 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
2722 | dependencies:
2723 | array-filter "~0.0.0"
2724 | array-map "~0.0.0"
2725 | array-reduce "~0.0.0"
2726 | jsonify "~0.0.0"
2727 |
2728 | signal-exit@^3.0.0:
2729 | version "3.0.2"
2730 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
2731 |
2732 | simple-concat@^1.0.0:
2733 | version "1.0.0"
2734 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
2735 |
2736 | simple-get@^2.7.0:
2737 | version "2.8.1"
2738 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d"
2739 | dependencies:
2740 | decompress-response "^3.3.0"
2741 | once "^1.3.1"
2742 | simple-concat "^1.0.0"
2743 |
2744 | slash@^2.0.0:
2745 | version "2.0.0"
2746 | resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
2747 |
2748 | snapdragon-node@^2.0.1:
2749 | version "2.1.1"
2750 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
2751 | dependencies:
2752 | define-property "^1.0.0"
2753 | isobject "^3.0.0"
2754 | snapdragon-util "^3.0.1"
2755 |
2756 | snapdragon-util@^3.0.1:
2757 | version "3.0.1"
2758 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
2759 | dependencies:
2760 | kind-of "^3.2.0"
2761 |
2762 | snapdragon@^0.8.1:
2763 | version "0.8.2"
2764 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
2765 | dependencies:
2766 | base "^0.11.1"
2767 | debug "^2.2.0"
2768 | define-property "^0.2.5"
2769 | extend-shallow "^2.0.1"
2770 | map-cache "^0.2.2"
2771 | source-map "^0.5.6"
2772 | source-map-resolve "^0.5.0"
2773 | use "^3.1.0"
2774 |
2775 | source-map-resolve@^0.5.0:
2776 | version "0.5.2"
2777 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
2778 | dependencies:
2779 | atob "^2.1.1"
2780 | decode-uri-component "^0.2.0"
2781 | resolve-url "^0.2.1"
2782 | source-map-url "^0.4.0"
2783 | urix "^0.1.0"
2784 |
2785 | source-map-support@~0.5.9:
2786 | version "0.5.10"
2787 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c"
2788 | dependencies:
2789 | buffer-from "^1.0.0"
2790 | source-map "^0.6.0"
2791 |
2792 | source-map-url@^0.4.0:
2793 | version "0.4.0"
2794 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
2795 |
2796 | source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3:
2797 | version "0.5.7"
2798 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2799 |
2800 | source-map@^0.6.0, source-map@~0.6.1:
2801 | version "0.6.1"
2802 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2803 |
2804 | sourcemap-codec@^1.4.4:
2805 | version "1.4.4"
2806 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f"
2807 |
2808 | split-string@^3.0.1, split-string@^3.0.2:
2809 | version "3.1.0"
2810 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
2811 | dependencies:
2812 | extend-shallow "^3.0.0"
2813 |
2814 | static-extend@^0.1.1:
2815 | version "0.1.2"
2816 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
2817 | dependencies:
2818 | define-property "^0.2.5"
2819 | object-copy "^0.1.0"
2820 |
2821 | stream-browserify@^2.0.0:
2822 | version "2.0.2"
2823 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
2824 | dependencies:
2825 | inherits "~2.0.1"
2826 | readable-stream "^2.0.2"
2827 |
2828 | stream-combiner2@^1.1.1:
2829 | version "1.1.1"
2830 | resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
2831 | dependencies:
2832 | duplexer2 "~0.1.0"
2833 | readable-stream "^2.0.2"
2834 |
2835 | stream-http@^2.0.0:
2836 | version "2.8.3"
2837 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
2838 | dependencies:
2839 | builtin-status-codes "^3.0.0"
2840 | inherits "^2.0.1"
2841 | readable-stream "^2.3.6"
2842 | to-arraybuffer "^1.0.0"
2843 | xtend "^4.0.0"
2844 |
2845 | stream-splicer@^2.0.0:
2846 | version "2.0.0"
2847 | resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
2848 | dependencies:
2849 | inherits "^2.0.1"
2850 | readable-stream "^2.0.2"
2851 |
2852 | string-width@^1.0.1:
2853 | version "1.0.2"
2854 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
2855 | dependencies:
2856 | code-point-at "^1.0.0"
2857 | is-fullwidth-code-point "^1.0.0"
2858 | strip-ansi "^3.0.0"
2859 |
2860 | "string-width@^1.0.2 || 2", string-width@^2.1.1:
2861 | version "2.1.1"
2862 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
2863 | dependencies:
2864 | is-fullwidth-code-point "^2.0.0"
2865 | strip-ansi "^4.0.0"
2866 |
2867 | string-width@^3.0.0:
2868 | version "3.0.0"
2869 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1"
2870 | dependencies:
2871 | emoji-regex "^7.0.1"
2872 | is-fullwidth-code-point "^2.0.0"
2873 | strip-ansi "^5.0.0"
2874 |
2875 | string_decoder@^1.1.1:
2876 | version "1.2.0"
2877 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
2878 | dependencies:
2879 | safe-buffer "~5.1.0"
2880 |
2881 | string_decoder@~1.1.1:
2882 | version "1.1.1"
2883 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2884 | dependencies:
2885 | safe-buffer "~5.1.0"
2886 |
2887 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2888 | version "3.0.1"
2889 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2890 | dependencies:
2891 | ansi-regex "^2.0.0"
2892 |
2893 | strip-ansi@^4.0.0:
2894 | version "4.0.0"
2895 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
2896 | dependencies:
2897 | ansi-regex "^3.0.0"
2898 |
2899 | strip-ansi@^5.0.0:
2900 | version "5.0.0"
2901 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f"
2902 | dependencies:
2903 | ansi-regex "^4.0.0"
2904 |
2905 | strip-eof@^1.0.0:
2906 | version "1.0.0"
2907 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
2908 |
2909 | strip-json-comments@~2.0.1:
2910 | version "2.0.1"
2911 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2912 |
2913 | subarg@^1.0.0:
2914 | version "1.0.0"
2915 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
2916 | dependencies:
2917 | minimist "^1.1.0"
2918 |
2919 | supports-color@^2.0.0:
2920 | version "2.0.0"
2921 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2922 |
2923 | supports-color@^5.3.0:
2924 | version "5.5.0"
2925 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2926 | dependencies:
2927 | has-flag "^3.0.0"
2928 |
2929 | syntax-error@^1.1.1:
2930 | version "1.4.0"
2931 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"
2932 | dependencies:
2933 | acorn-node "^1.2.0"
2934 |
2935 | tar-fs@^1.13.0:
2936 | version "1.16.3"
2937 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
2938 | dependencies:
2939 | chownr "^1.0.1"
2940 | mkdirp "^0.5.1"
2941 | pump "^1.0.0"
2942 | tar-stream "^1.1.2"
2943 |
2944 | tar-stream@^1.1.2:
2945 | version "1.6.2"
2946 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
2947 | dependencies:
2948 | bl "^1.0.0"
2949 | buffer-alloc "^1.2.0"
2950 | end-of-stream "^1.0.0"
2951 | fs-constants "^1.0.0"
2952 | readable-stream "^2.3.0"
2953 | to-buffer "^1.1.1"
2954 | xtend "^4.0.0"
2955 |
2956 | tar@^4:
2957 | version "4.4.8"
2958 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
2959 | dependencies:
2960 | chownr "^1.1.1"
2961 | fs-minipass "^1.2.5"
2962 | minipass "^2.3.4"
2963 | minizlib "^1.1.1"
2964 | mkdirp "^0.5.0"
2965 | safe-buffer "^5.1.2"
2966 | yallist "^3.0.2"
2967 |
2968 | term-size@^1.2.0:
2969 | version "1.2.0"
2970 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
2971 | dependencies:
2972 | execa "^0.7.0"
2973 |
2974 | terser@^3.10.0:
2975 | version "3.16.1"
2976 | resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493"
2977 | dependencies:
2978 | commander "~2.17.1"
2979 | source-map "~0.6.1"
2980 | source-map-support "~0.5.9"
2981 |
2982 | through2@^2.0.0:
2983 | version "2.0.5"
2984 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
2985 | dependencies:
2986 | readable-stream "~2.3.6"
2987 | xtend "~4.0.1"
2988 |
2989 | "through@>=2.2.7 <3":
2990 | version "2.3.8"
2991 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2992 |
2993 | timers-browserify@^1.0.1:
2994 | version "1.4.2"
2995 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
2996 | dependencies:
2997 | process "~0.11.0"
2998 |
2999 | to-arraybuffer@^1.0.0:
3000 | version "1.0.1"
3001 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
3002 |
3003 | to-buffer@^1.1.1:
3004 | version "1.1.1"
3005 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
3006 |
3007 | to-fast-properties@^2.0.0:
3008 | version "2.0.0"
3009 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
3010 |
3011 | to-object-path@^0.3.0:
3012 | version "0.3.0"
3013 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
3014 | dependencies:
3015 | kind-of "^3.0.2"
3016 |
3017 | to-regex-range@^2.1.0:
3018 | version "2.1.1"
3019 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
3020 | dependencies:
3021 | is-number "^3.0.0"
3022 | repeat-string "^1.6.1"
3023 |
3024 | to-regex@^3.0.1, to-regex@^3.0.2:
3025 | version "3.0.2"
3026 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
3027 | dependencies:
3028 | define-property "^2.0.2"
3029 | extend-shallow "^3.0.2"
3030 | regex-not "^1.0.2"
3031 | safe-regex "^1.1.0"
3032 |
3033 | trim-right@^1.0.1:
3034 | version "1.0.1"
3035 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
3036 |
3037 | tty-browserify@0.0.1:
3038 | version "0.0.1"
3039 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
3040 |
3041 | tunnel-agent@^0.6.0:
3042 | version "0.6.0"
3043 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
3044 | dependencies:
3045 | safe-buffer "^5.0.1"
3046 |
3047 | typedarray@^0.0.6:
3048 | version "0.0.6"
3049 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
3050 |
3051 | umd@^3.0.0:
3052 | version "3.0.3"
3053 | resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf"
3054 |
3055 | undeclared-identifiers@^1.1.2:
3056 | version "1.1.3"
3057 | resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f"
3058 | dependencies:
3059 | acorn-node "^1.3.0"
3060 | dash-ast "^1.0.0"
3061 | get-assigned-identifiers "^1.2.0"
3062 | simple-concat "^1.0.0"
3063 | xtend "^4.0.1"
3064 |
3065 | unicode-canonical-property-names-ecmascript@^1.0.4:
3066 | version "1.0.4"
3067 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
3068 |
3069 | unicode-match-property-ecmascript@^1.0.4:
3070 | version "1.0.4"
3071 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
3072 | dependencies:
3073 | unicode-canonical-property-names-ecmascript "^1.0.4"
3074 | unicode-property-aliases-ecmascript "^1.0.4"
3075 |
3076 | unicode-match-property-value-ecmascript@^1.0.2:
3077 | version "1.0.2"
3078 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
3079 |
3080 | unicode-property-aliases-ecmascript@^1.0.4:
3081 | version "1.0.4"
3082 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
3083 |
3084 | union-value@^1.0.0:
3085 | version "1.0.0"
3086 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
3087 | dependencies:
3088 | arr-union "^3.1.0"
3089 | get-value "^2.0.6"
3090 | is-extendable "^0.1.1"
3091 | set-value "^0.4.3"
3092 |
3093 | unset-value@^1.0.0:
3094 | version "1.0.0"
3095 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
3096 | dependencies:
3097 | has-value "^0.3.1"
3098 | isobject "^3.0.0"
3099 |
3100 | upath@^1.1.0:
3101 | version "1.1.0"
3102 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
3103 |
3104 | urix@^0.1.0:
3105 | version "0.1.0"
3106 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
3107 |
3108 | url@~0.11.0:
3109 | version "0.11.0"
3110 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
3111 | dependencies:
3112 | punycode "1.3.2"
3113 | querystring "0.2.0"
3114 |
3115 | use@^3.1.0:
3116 | version "3.1.1"
3117 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
3118 |
3119 | util-deprecate@~1.0.1:
3120 | version "1.0.2"
3121 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
3122 |
3123 | util@0.10.3:
3124 | version "0.10.3"
3125 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
3126 | dependencies:
3127 | inherits "2.0.1"
3128 |
3129 | util@~0.10.1:
3130 | version "0.10.4"
3131 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
3132 | dependencies:
3133 | inherits "2.0.3"
3134 |
3135 | vm-browserify@^1.0.0:
3136 | version "1.1.0"
3137 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
3138 |
3139 | which-pm-runs@^1.0.0:
3140 | version "1.0.0"
3141 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
3142 |
3143 | which@^1.2.14, which@^1.2.9:
3144 | version "1.3.1"
3145 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
3146 | dependencies:
3147 | isexe "^2.0.0"
3148 |
3149 | wide-align@^1.1.0:
3150 | version "1.1.3"
3151 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
3152 | dependencies:
3153 | string-width "^1.0.2 || 2"
3154 |
3155 | widest-line@^2.0.0:
3156 | version "2.0.1"
3157 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
3158 | dependencies:
3159 | string-width "^2.1.1"
3160 |
3161 | wrappy@1:
3162 | version "1.0.2"
3163 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
3164 |
3165 | xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
3166 | version "4.0.1"
3167 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
3168 |
3169 | yallist@^2.1.2:
3170 | version "2.1.2"
3171 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
3172 |
3173 | yallist@^3.0.0, yallist@^3.0.2:
3174 | version "3.0.3"
3175 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
3176 |
--------------------------------------------------------------------------------