├── Gruntfile.js
├── LICENSE
├── README.md
├── dist
├── README.md
├── css
│ └── query-editor.css
├── datasource.js
├── datasource.js.map
├── img
│ ├── ntopng_logo.svg
│ └── simpleJson_logo.svg
├── module.js
├── module.js.map
├── partials
│ ├── annotations.editor.html
│ ├── config.html
│ ├── query.editor.html
│ └── query.options.html
├── plugin.json
├── query_ctrl.js
└── query_ctrl.js.map
├── package.json
├── spec
├── datasource_spec.js
└── test-main.js
├── src
├── css
│ └── query-editor.css
├── datasource.js
├── img
│ ├── ntopng_logo.svg
│ └── simpleJson_logo.svg
├── module.js
├── partials
│ ├── annotations.editor.html
│ ├── config.html
│ ├── query.editor.html
│ └── query.options.html
├── plugin.json
└── query_ctrl.js
└── yarn.lock
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function(grunt) {
2 |
3 | require('load-grunt-tasks')(grunt);
4 |
5 | grunt.loadNpmTasks('grunt-execute');
6 | grunt.loadNpmTasks('grunt-contrib-clean');
7 |
8 | grunt.initConfig({
9 |
10 | clean: ["dist"],
11 |
12 | copy: {
13 | src_to_dist: {
14 | cwd: 'src',
15 | expand: true,
16 | src: ['**/*', '!**/*.js', '!**/*.scss'],
17 | dest: 'dist'
18 | },
19 | pluginDef: {
20 | expand: true,
21 | src: ['README.md'],
22 | dest: 'dist'
23 | }
24 | },
25 |
26 | watch: {
27 | rebuild_all: {
28 | files: ['src/**/*'],
29 | tasks: ['default'],
30 | options: {spawn: false}
31 | }
32 | },
33 |
34 | babel: {
35 | options: {
36 | sourceMap: true,
37 | presets: ['es2015']
38 | },
39 | dist: {
40 | options: {
41 | plugins: ['transform-es2015-modules-systemjs', 'transform-es2015-for-of']
42 | },
43 | files: [{
44 | cwd: 'src',
45 | expand: true,
46 | src: ['**/*.js'],
47 | dest: 'dist',
48 | ext:'.js'
49 | }]
50 | },
51 | distTestNoSystemJs: {
52 | files: [{
53 | cwd: 'src',
54 | expand: true,
55 | src: ['**/*.js'],
56 | dest: 'dist/test',
57 | ext:'.js'
58 | }]
59 | },
60 | distTestsSpecsNoSystemJs: {
61 | files: [{
62 | expand: true,
63 | cwd: 'spec',
64 | src: ['**/*.js'],
65 | dest: 'dist/test/spec',
66 | ext:'.js'
67 | }]
68 | }
69 | },
70 |
71 | mochaTest: {
72 | test: {
73 | options: {
74 | reporter: 'spec'
75 | },
76 | src: ['dist/test/spec/test-main.js', 'dist/test/spec/*_spec.js']
77 | }
78 | }
79 | });
80 |
81 | grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:pluginDef', 'babel', 'mochaTest']);
82 | };
83 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (C) 2013-17 - ntop.org
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Discontinuation Notice
2 | ----------------------
3 |
4 | ntop has redicected resources and focus to the integration of InfluxDB, which is natively supported in ntopng starting from version 3.8. For this reason, support and development for this plugin have been discontinued in favour of the InfluxDB Grafana datasource plugin https://grafana.com/docs/features/datasources/influxdb/.
5 |
6 | To start using InfluxDB with ntopng please refer to the documentation: https://www.ntop.org/guides/ntopng/basic_concepts/timeseries.html#influxdb-driver
7 |
8 | ## ntopng Datasource
9 |
10 | The official ntopng Grafana datasource plugin lets you quickly
11 | navigate ntopng data from inside the beautiful Grafana dashboards.
12 |
13 | ### Setting Up the Datasource
14 |
15 | To set up the datasource visit Grafana Datasources page and select the
16 | green button `Add a datasource`. Select `ntopng` as the datasource
17 | `Type` in the page that opens.
18 |
19 | The HTTP url must point to a running ntopng instance, to the endpoint
20 | `/lua/modules/grafana`. The `Access` method must be set to
21 | `Direct`. An example of a full HTTP url that assumes there is an
22 | ntopng instance running on `localhost` port `3001` is the following:
23 |
24 | `http://localhost:3001/lua/modules/grafana`
25 |
26 | Tick `Basic Auth` if your ntopng instance has authentication enabled
27 | and specify a username-password pair in fields `User` and
28 | `Password`. The pair must identify an ntopng user. Leave the `Basic
29 | Auth` checkbock unticked if ntopng has no authentication
30 | (`--disable-login`).
31 |
32 | Finally, hit the button `Save and Test` to verify the datasource is
33 | working properly. A green message `Success: Data souce is working`
34 | appears to confirm the datasource is properly set up.
35 |
36 | ### Supported metrics
37 |
38 | Once the datasource is set up, ntopng metrics can be charted in any
39 | Grafana dashboard.
40 |
41 | Supported metrics are:
42 | - Interface metrics
43 | - Host metrics
44 |
45 | Metrics that identify an interface are prefixed with a `interface_`
46 | that precedes the actual interface name. Similarly, metrics that
47 | identify an host are prefixed with a `host_` followed by the actual
48 | host ip address.
49 |
50 | Interface and host metrics have a suffix that contain the type of
51 | metric (i.e., `traffic` for traffic rates and traffic totals orT
52 | `allprotocols` for layer-7 application protocol rates).
53 | The type of metric is followed by the unit of measure (i.e., `bps`
54 | for bits per second, `pps` for packets per second, and `bytes`).
55 |
56 | #### Interface Metrics
57 |
58 | Supported interface metrics are:
59 | - Traffic rates, in bits and packets per second
60 | - Traffic totals, both in Bytes and packets
61 | - Application protocol rates, in bits per second
62 |
63 | #### Host Metrics
64 |
65 | Supported host metrics are:
66 | - Traffic rate in bits per second
67 | - Traffic total in Bytes
68 | - Application protocol rates in bits per second.
69 |
--------------------------------------------------------------------------------
/dist/README.md:
--------------------------------------------------------------------------------
1 | ## ntopng Datasource
2 |
3 | The official ntopng Grafana datasource plugin lets you quickly
4 | navigate ntopng data from inside the beautiful Grafana dashboards.
5 |
6 | ### Setting Up the Datasource
7 |
8 | To set up the datasource visit Grafana Datasources page and select the
9 | green button `Add a datasource`. Select `ntopng` as the datasource
10 | `Type` in the page that opens.
11 |
12 | The HTTP url must point to a running ntopng instance, to the endpoint
13 | `/lua/modules/grafana`. The `Access` method must be set to
14 | `Direct`. An example of a full HTTP url that assumes there is an
15 | ntopng instance running on `localhost` port `3001` is the following:
16 |
17 | `http://localhost:3001/lua/modules/grafana`
18 |
19 | Tick `Basic Auth` if your ntopng instance has authentication enabled
20 | and specify a username-password pair in fields `User` and
21 | `Password`. The pair must identify an ntopng user. Leave the `Basic
22 | Auth` checkbock unticked if ntopng has no authentication
23 | (`--disable-login`).
24 |
25 | Finally, hit the button `Save and Test` to verify the datasource is
26 | working properly. A green message `Success: Data souce is working`
27 | appears to confirm the datasource is properly set up.
28 |
29 | ### Supported metrics
30 |
31 | Once the datasource is set up, ntopng metrics can be charted in any
32 | Grafana dashboard.
33 |
34 | Supported metrics are:
35 | - Interface metrics
36 | - Host metrics
37 |
38 | Metrics that identify an interface are prefixed with a `interface_`
39 | that precedes the actual interface name. Similarly, metrics that
40 | identify an host are prefixed with a `host_` followed by the actual
41 | host ip address.
42 |
43 | Interface and host metrics have a suffix that contain the type of
44 | metric (i.e., `traffic` for traffic rates and traffic totals or
45 | `allprotocols` for layer-7 application protocol rates).
46 | The type of metric is followed by the unit of measure (i.e., `bps`
47 | for bits per second, `pps` for packets per second, and `bytes`).
48 |
49 | #### Interface Metrics
50 |
51 | Supported interface metrics are:
52 | - Traffic rates, in bits and packets per second
53 | - Traffic totals, both in Bytes and packets
54 | - Application protocol rates, in bits per second
55 |
56 | #### Host Metrics
57 |
58 | Supported host metrics are:
59 | - Traffic rate in bits per second
60 | - Traffic total in Bytes
61 | - Application protocol rates in bits per second.
62 |
--------------------------------------------------------------------------------
/dist/css/query-editor.css:
--------------------------------------------------------------------------------
1 | .generic-datasource-query-row .query-keyword {
2 | width: 75px;
3 | }
--------------------------------------------------------------------------------
/dist/datasource.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | System.register(['lodash'], function (_export, _context) {
4 | "use strict";
5 |
6 | var _, _createClass, GenericDatasource;
7 |
8 | function _classCallCheck(instance, Constructor) {
9 | if (!(instance instanceof Constructor)) {
10 | throw new TypeError("Cannot call a class as a function");
11 | }
12 | }
13 |
14 | return {
15 | setters: [function (_lodash) {
16 | _ = _lodash.default;
17 | }],
18 | execute: function () {
19 | _createClass = function () {
20 | function defineProperties(target, props) {
21 | for (var i = 0; i < props.length; i++) {
22 | var descriptor = props[i];
23 | descriptor.enumerable = descriptor.enumerable || false;
24 | descriptor.configurable = true;
25 | if ("value" in descriptor) descriptor.writable = true;
26 | Object.defineProperty(target, descriptor.key, descriptor);
27 | }
28 | }
29 |
30 | return function (Constructor, protoProps, staticProps) {
31 | if (protoProps) defineProperties(Constructor.prototype, protoProps);
32 | if (staticProps) defineProperties(Constructor, staticProps);
33 | return Constructor;
34 | };
35 | }();
36 |
37 | _export('GenericDatasource', GenericDatasource = function () {
38 | function GenericDatasource(instanceSettings, $q, backendSrv, templateSrv) {
39 | _classCallCheck(this, GenericDatasource);
40 |
41 | this.type = instanceSettings.type;
42 | this.url = instanceSettings.url;
43 | this.name = instanceSettings.name;
44 | this.q = $q;
45 | this.backendSrv = backendSrv;
46 | this.templateSrv = templateSrv;
47 | this.withCredentials = instanceSettings.withCredentials;
48 | this.headers = { 'Content-Type': 'application/json' };
49 | if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) {
50 | this.headers['Authorization'] = instanceSettings.basicAuth;
51 | }
52 | }
53 |
54 | _createClass(GenericDatasource, [{
55 | key: 'query',
56 | value: function query(options) {
57 | var query = this.buildQueryParameters(options);
58 | query.targets = query.targets.filter(function (t) {
59 | return !t.hide;
60 | });
61 |
62 | if (query.targets.length <= 0) {
63 | return this.q.when({ data: [] });
64 | }
65 |
66 | return this.doRequest({
67 | url: this.url + '/query',
68 | data: query,
69 | method: 'POST'
70 | });
71 | }
72 | }, {
73 | key: 'testDatasource',
74 | value: function testDatasource() {
75 | return this.doRequest({
76 | url: this.url + '/',
77 | method: 'GET'
78 | }).then(function (response) {
79 | if (response.status === 200) {
80 | return { status: "success", message: "Data source is working", title: "Success" };
81 | }
82 | });
83 | }
84 | }, {
85 | key: 'annotationQuery',
86 | value: function annotationQuery(options) {
87 | var query = this.templateSrv.replace(options.annotation.query, {}, 'glob');
88 | var annotationQuery = {
89 | range: options.range,
90 | annotation: {
91 | name: options.annotation.name,
92 | datasource: options.annotation.datasource,
93 | enable: options.annotation.enable,
94 | iconColor: options.annotation.iconColor,
95 | query: query
96 | },
97 | rangeRaw: options.rangeRaw
98 | };
99 |
100 | return this.doRequest({
101 | url: this.url + '/annotations',
102 | method: 'POST',
103 | data: annotationQuery
104 | }).then(function (result) {
105 | return result.data;
106 | });
107 | }
108 | }, {
109 | key: 'metricFindQuery',
110 | value: function metricFindQuery(query) {
111 | var interpolated = {
112 | target: this.templateSrv.replace(query, null, 'regex')
113 | };
114 |
115 | return this.doRequest({
116 | url: this.url + '/search',
117 | data: interpolated,
118 | method: 'POST'
119 | }).then(this.mapToTextValue);
120 | }
121 | }, {
122 | key: 'mapToTextValue',
123 | value: function mapToTextValue(result) {
124 | return _.map(result.data, function (d, i) {
125 | if (d && d.text && d.value) {
126 | return { text: d.text, value: d.value };
127 | } else if (_.isObject(d)) {
128 | return { text: d, value: i };
129 | }
130 | return { text: d, value: d };
131 | });
132 | }
133 | }, {
134 | key: 'doRequest',
135 | value: function doRequest(options) {
136 | options.withCredentials = this.withCredentials;
137 | options.headers = this.headers;
138 |
139 | return this.backendSrv.datasourceRequest(options);
140 | }
141 | }, {
142 | key: 'buildQueryParameters',
143 | value: function buildQueryParameters(options) {
144 | var _this = this;
145 |
146 | //remove placeholder targets
147 | options.targets = _.filter(options.targets, function (target) {
148 | return target.target !== 'select metric';
149 | });
150 |
151 | var targets = _.map(options.targets, function (target) {
152 | return {
153 | target: _this.templateSrv.replace(target.target, options.scopedVars, 'regex'),
154 | refId: target.refId,
155 | hide: target.hide,
156 | type: target.type || 'timeserie'
157 | };
158 | });
159 |
160 | options.targets = targets;
161 |
162 | return options;
163 | }
164 | }]);
165 |
166 | return GenericDatasource;
167 | }());
168 |
169 | _export('GenericDatasource', GenericDatasource);
170 | }
171 | };
172 | });
173 | //# sourceMappingURL=datasource.js.map
174 |
--------------------------------------------------------------------------------
/dist/datasource.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../src/datasource.js"],"names":["_","GenericDatasource","instanceSettings","$q","backendSrv","templateSrv","type","url","name","q","withCredentials","headers","basicAuth","length","options","query","buildQueryParameters","targets","filter","t","hide","when","data","doRequest","method","then","response","status","message","title","replace","annotation","annotationQuery","range","datasource","enable","iconColor","rangeRaw","result","interpolated","target","mapToTextValue","map","d","i","text","value","isObject","datasourceRequest","scopedVars","refId"],"mappings":";;;;;;;;;;;;;;;AAAOA,O;;;;;;;;;;;;;;;;;;;;;mCAEMC,iB;AAEX,mCAAYC,gBAAZ,EAA8BC,EAA9B,EAAkCC,UAAlC,EAA8CC,WAA9C,EAA2D;AAAA;;AACzD,eAAKC,IAAL,GAAYJ,iBAAiBI,IAA7B;AACA,eAAKC,GAAL,GAAWL,iBAAiBK,GAA5B;AACA,eAAKC,IAAL,GAAYN,iBAAiBM,IAA7B;AACA,eAAKC,CAAL,GAASN,EAAT;AACA,eAAKC,UAAL,GAAkBA,UAAlB;AACA,eAAKC,WAAL,GAAmBA,WAAnB;AACA,eAAKK,eAAL,GAAuBR,iBAAiBQ,eAAxC;AACA,eAAKC,OAAL,GAAe,EAAC,gBAAgB,kBAAjB,EAAf;AACA,cAAI,OAAOT,iBAAiBU,SAAxB,KAAsC,QAAtC,IAAkDV,iBAAiBU,SAAjB,CAA2BC,MAA3B,GAAoC,CAA1F,EAA6F;AAC3F,iBAAKF,OAAL,CAAa,eAAb,IAAgCT,iBAAiBU,SAAjD;AACD;AACF;;;;gCAEKE,O,EAAS;AACb,gBAAIC,QAAQ,KAAKC,oBAAL,CAA0BF,OAA1B,CAAZ;AACAC,kBAAME,OAAN,GAAgBF,MAAME,OAAN,CAAcC,MAAd,CAAqB;AAAA,qBAAK,CAACC,EAAEC,IAAR;AAAA,aAArB,CAAhB;;AAEA,gBAAIL,MAAME,OAAN,CAAcJ,MAAd,IAAwB,CAA5B,EAA+B;AAC7B,qBAAO,KAAKJ,CAAL,CAAOY,IAAP,CAAY,EAACC,MAAM,EAAP,EAAZ,CAAP;AACD;;AAED,mBAAO,KAAKC,SAAL,CAAe;AACpBhB,mBAAK,KAAKA,GAAL,GAAW,QADI;AAEpBe,oBAAMP,KAFc;AAGpBS,sBAAQ;AAHY,aAAf,CAAP;AAKD;;;2CAEgB;AACf,mBAAO,KAAKD,SAAL,CAAe;AACpBhB,mBAAK,KAAKA,GAAL,GAAW,GADI;AAEpBiB,sBAAQ;AAFY,aAAf,EAGJC,IAHI,CAGC,oBAAY;AAClB,kBAAIC,SAASC,MAAT,KAAoB,GAAxB,EAA6B;AAC3B,uBAAO,EAAEA,QAAQ,SAAV,EAAqBC,SAAS,wBAA9B,EAAwDC,OAAO,SAA/D,EAAP;AACD;AACF,aAPM,CAAP;AAQD;;;0CAEef,O,EAAS;AACvB,gBAAIC,QAAQ,KAAKV,WAAL,CAAiByB,OAAjB,CAAyBhB,QAAQiB,UAAR,CAAmBhB,KAA5C,EAAmD,EAAnD,EAAuD,MAAvD,CAAZ;AACA,gBAAIiB,kBAAkB;AACpBC,qBAAOnB,QAAQmB,KADK;AAEpBF,0BAAY;AACVvB,sBAAMM,QAAQiB,UAAR,CAAmBvB,IADf;AAEV0B,4BAAYpB,QAAQiB,UAAR,CAAmBG,UAFrB;AAGVC,wBAAQrB,QAAQiB,UAAR,CAAmBI,MAHjB;AAIVC,2BAAWtB,QAAQiB,UAAR,CAAmBK,SAJpB;AAKVrB,uBAAOA;AALG,eAFQ;AASpBsB,wBAAUvB,QAAQuB;AATE,aAAtB;;AAYA,mBAAO,KAAKd,SAAL,CAAe;AACpBhB,mBAAK,KAAKA,GAAL,GAAW,cADI;AAEpBiB,sBAAQ,MAFY;AAGpBF,oBAAMU;AAHc,aAAf,EAIJP,IAJI,CAIC,kBAAU;AAChB,qBAAOa,OAAOhB,IAAd;AACD,aANM,CAAP;AAOD;;;0CAEeP,K,EAAO;AACrB,gBAAIwB,eAAe;AACfC,sBAAQ,KAAKnC,WAAL,CAAiByB,OAAjB,CAAyBf,KAAzB,EAAgC,IAAhC,EAAsC,OAAtC;AADO,aAAnB;;AAIA,mBAAO,KAAKQ,SAAL,CAAe;AACpBhB,mBAAK,KAAKA,GAAL,GAAW,SADI;AAEpBe,oBAAMiB,YAFc;AAGpBf,sBAAQ;AAHY,aAAf,EAIJC,IAJI,CAIC,KAAKgB,cAJN,CAAP;AAKD;;;yCAEcH,M,EAAQ;AACrB,mBAAOtC,EAAE0C,GAAF,CAAMJ,OAAOhB,IAAb,EAAmB,UAACqB,CAAD,EAAIC,CAAJ,EAAU;AAClC,kBAAID,KAAKA,EAAEE,IAAP,IAAeF,EAAEG,KAArB,EAA4B;AAC1B,uBAAO,EAAED,MAAMF,EAAEE,IAAV,EAAgBC,OAAOH,EAAEG,KAAzB,EAAP;AACD,eAFD,MAEO,IAAI9C,EAAE+C,QAAF,CAAWJ,CAAX,CAAJ,EAAmB;AACxB,uBAAO,EAAEE,MAAMF,CAAR,EAAWG,OAAOF,CAAlB,EAAP;AACD;AACD,qBAAO,EAAEC,MAAMF,CAAR,EAAWG,OAAOH,CAAlB,EAAP;AACD,aAPM,CAAP;AAQD;;;oCAES7B,O,EAAS;AACjBA,oBAAQJ,eAAR,GAA0B,KAAKA,eAA/B;AACAI,oBAAQH,OAAR,GAAkB,KAAKA,OAAvB;;AAEA,mBAAO,KAAKP,UAAL,CAAgB4C,iBAAhB,CAAkClC,OAAlC,CAAP;AACD;;;+CAEoBA,O,EAAS;AAAA;;AAC5B;AACAA,oBAAQG,OAAR,GAAkBjB,EAAEkB,MAAF,CAASJ,QAAQG,OAAjB,EAA0B,kBAAU;AACpD,qBAAOuB,OAAOA,MAAP,KAAkB,eAAzB;AACD,aAFiB,CAAlB;;AAIA,gBAAIvB,UAAUjB,EAAE0C,GAAF,CAAM5B,QAAQG,OAAd,EAAuB,kBAAU;AAC7C,qBAAO;AACLuB,wBAAQ,MAAKnC,WAAL,CAAiByB,OAAjB,CAAyBU,OAAOA,MAAhC,EAAwC1B,QAAQmC,UAAhD,EAA4D,OAA5D,CADH;AAELC,uBAAOV,OAAOU,KAFT;AAGL9B,sBAAMoB,OAAOpB,IAHR;AAILd,sBAAMkC,OAAOlC,IAAP,IAAe;AAJhB,eAAP;AAMD,aAPa,CAAd;;AASAQ,oBAAQG,OAAR,GAAkBA,OAAlB;;AAEA,mBAAOH,OAAP;AACD","file":"datasource.js","sourcesContent":["import _ from \"lodash\";\n\nexport class GenericDatasource {\n\n constructor(instanceSettings, $q, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.url = instanceSettings.url;\n this.name = instanceSettings.name;\n this.q = $q;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.withCredentials = instanceSettings.withCredentials;\n this.headers = {'Content-Type': 'application/json'};\n if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) {\n this.headers['Authorization'] = instanceSettings.basicAuth;\n }\n }\n\n query(options) {\n var query = this.buildQueryParameters(options);\n query.targets = query.targets.filter(t => !t.hide);\n\n if (query.targets.length <= 0) {\n return this.q.when({data: []});\n }\n\n return this.doRequest({\n url: this.url + '/query',\n data: query,\n method: 'POST'\n });\n }\n\n testDatasource() {\n return this.doRequest({\n url: this.url + '/',\n method: 'GET',\n }).then(response => {\n if (response.status === 200) {\n return { status: \"success\", message: \"Data source is working\", title: \"Success\" };\n }\n });\n }\n\n annotationQuery(options) {\n var query = this.templateSrv.replace(options.annotation.query, {}, 'glob');\n var annotationQuery = {\n range: options.range,\n annotation: {\n name: options.annotation.name,\n datasource: options.annotation.datasource,\n enable: options.annotation.enable,\n iconColor: options.annotation.iconColor,\n query: query\n },\n rangeRaw: options.rangeRaw\n };\n\n return this.doRequest({\n url: this.url + '/annotations',\n method: 'POST',\n data: annotationQuery\n }).then(result => {\n return result.data;\n });\n }\n\n metricFindQuery(query) {\n var interpolated = {\n target: this.templateSrv.replace(query, null, 'regex')\n };\n\n return this.doRequest({\n url: this.url + '/search',\n data: interpolated,\n method: 'POST',\n }).then(this.mapToTextValue);\n }\n\n mapToTextValue(result) {\n return _.map(result.data, (d, i) => {\n if (d && d.text && d.value) {\n return { text: d.text, value: d.value };\n } else if (_.isObject(d)) {\n return { text: d, value: i};\n }\n return { text: d, value: d };\n });\n }\n\n doRequest(options) {\n options.withCredentials = this.withCredentials;\n options.headers = this.headers;\n\n return this.backendSrv.datasourceRequest(options);\n }\n\n buildQueryParameters(options) {\n //remove placeholder targets\n options.targets = _.filter(options.targets, target => {\n return target.target !== 'select metric';\n });\n\n var targets = _.map(options.targets, target => {\n return {\n target: this.templateSrv.replace(target.target, options.scopedVars, 'regex'),\n refId: target.refId,\n hide: target.hide,\n type: target.type || 'timeserie'\n };\n });\n\n options.targets = targets;\n\n return options;\n }\n}\n"]}
--------------------------------------------------------------------------------
/dist/img/ntopng_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/dist/img/simpleJson_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
636 |
--------------------------------------------------------------------------------
/dist/module.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | System.register(['./datasource', './query_ctrl'], function (_export, _context) {
4 | "use strict";
5 |
6 | var GenericDatasource, GenericDatasourceQueryCtrl, GenericConfigCtrl, GenericQueryOptionsCtrl, GenericAnnotationsQueryCtrl;
7 |
8 | function _classCallCheck(instance, Constructor) {
9 | if (!(instance instanceof Constructor)) {
10 | throw new TypeError("Cannot call a class as a function");
11 | }
12 | }
13 |
14 | return {
15 | setters: [function (_datasource) {
16 | GenericDatasource = _datasource.GenericDatasource;
17 | }, function (_query_ctrl) {
18 | GenericDatasourceQueryCtrl = _query_ctrl.GenericDatasourceQueryCtrl;
19 | }],
20 | execute: function () {
21 | _export('ConfigCtrl', GenericConfigCtrl = function GenericConfigCtrl() {
22 | _classCallCheck(this, GenericConfigCtrl);
23 | });
24 |
25 | GenericConfigCtrl.templateUrl = 'partials/config.html';
26 |
27 | _export('QueryOptionsCtrl', GenericQueryOptionsCtrl = function GenericQueryOptionsCtrl() {
28 | _classCallCheck(this, GenericQueryOptionsCtrl);
29 | });
30 |
31 | GenericQueryOptionsCtrl.templateUrl = 'partials/query.options.html';
32 |
33 | _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl = function GenericAnnotationsQueryCtrl() {
34 | _classCallCheck(this, GenericAnnotationsQueryCtrl);
35 | });
36 |
37 | GenericAnnotationsQueryCtrl.templateUrl = 'partials/annotations.editor.html';
38 |
39 | _export('Datasource', GenericDatasource);
40 |
41 | _export('QueryCtrl', GenericDatasourceQueryCtrl);
42 |
43 | _export('ConfigCtrl', GenericConfigCtrl);
44 |
45 | _export('QueryOptionsCtrl', GenericQueryOptionsCtrl);
46 |
47 | _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl);
48 | }
49 | };
50 | });
51 | //# sourceMappingURL=module.js.map
52 |
--------------------------------------------------------------------------------
/dist/module.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../src/module.js"],"names":["GenericDatasource","GenericDatasourceQueryCtrl","GenericConfigCtrl","templateUrl","GenericQueryOptionsCtrl","GenericAnnotationsQueryCtrl"],"mappings":";;;;;;;;;;;;;;;AAAQA,uB,eAAAA,iB;;AACAC,gC,eAAAA,0B;;;4BAEFC,iB;;;;AACNA,wBAAkBC,WAAlB,GAAgC,sBAAhC;;kCAEMC,uB;;;;AACNA,8BAAwBD,WAAxB,GAAsC,6BAAtC;;sCAEME,2B;;;;AACNA,kCAA4BF,WAA5B,GAA0C,kCAA1C;;4BAGEH,iB;;2BACAC,0B;;4BACAC,iB;;kCACAE,uB;;sCACAC,2B","file":"module.js","sourcesContent":["import {GenericDatasource} from './datasource';\nimport {GenericDatasourceQueryCtrl} from './query_ctrl';\n\nclass GenericConfigCtrl {}\nGenericConfigCtrl.templateUrl = 'partials/config.html';\n\nclass GenericQueryOptionsCtrl {}\nGenericQueryOptionsCtrl.templateUrl = 'partials/query.options.html';\n\nclass GenericAnnotationsQueryCtrl {}\nGenericAnnotationsQueryCtrl.templateUrl = 'partials/annotations.editor.html'\n\nexport {\n GenericDatasource as Datasource,\n GenericDatasourceQueryCtrl as QueryCtrl,\n GenericConfigCtrl as ConfigCtrl,\n GenericQueryOptionsCtrl as QueryOptionsCtrl,\n GenericAnnotationsQueryCtrl as AnnotationsQueryCtrl\n};\n"]}
--------------------------------------------------------------------------------
/dist/partials/annotations.editor.html:
--------------------------------------------------------------------------------
1 |
2 |
Query
3 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/dist/partials/config.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/dist/partials/query.editor.html:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
--------------------------------------------------------------------------------
/dist/partials/query.options.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/dist/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ntopng",
3 | "id": "ntop-ntopng-datasource",
4 | "type": "datasource",
5 |
6 | "metrics": true,
7 | "annotations": false,
8 |
9 | "info": {
10 | "description": "ntopng datasource",
11 | "author": {
12 | "name": "ntop",
13 | "url": "https://www.ntop.org"
14 | },
15 | "logos": {
16 | "small": "img/ntopng_logo.svg",
17 | "large": "img/ntopng_logo.svg"
18 | },
19 | "links": [
20 | {"name": "GitHub", "url": "https://github.com/ntop/ntopng-grafana-datasource"},
21 | {"name": "MIT License", "url": "https://github.com/ntop/ntopng-grafana-datasource/blob/master/LICENSE"}
22 | ],
23 | "version": "1.0.0",
24 | "updated": "2017-09-25"
25 | },
26 |
27 | "dependencies": {
28 | "grafanaVersion": "4.x.x",
29 | "plugins": [ ]
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/dist/query_ctrl.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | System.register(['app/plugins/sdk', './css/query-editor.css!'], function (_export, _context) {
4 | "use strict";
5 |
6 | var QueryCtrl, _createClass, GenericDatasourceQueryCtrl;
7 |
8 | function _classCallCheck(instance, Constructor) {
9 | if (!(instance instanceof Constructor)) {
10 | throw new TypeError("Cannot call a class as a function");
11 | }
12 | }
13 |
14 | function _possibleConstructorReturn(self, call) {
15 | if (!self) {
16 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
17 | }
18 |
19 | return call && (typeof call === "object" || typeof call === "function") ? call : self;
20 | }
21 |
22 | function _inherits(subClass, superClass) {
23 | if (typeof superClass !== "function" && superClass !== null) {
24 | throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
25 | }
26 |
27 | subClass.prototype = Object.create(superClass && superClass.prototype, {
28 | constructor: {
29 | value: subClass,
30 | enumerable: false,
31 | writable: true,
32 | configurable: true
33 | }
34 | });
35 | if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
36 | }
37 |
38 | return {
39 | setters: [function (_appPluginsSdk) {
40 | QueryCtrl = _appPluginsSdk.QueryCtrl;
41 | }, function (_cssQueryEditorCss) {}],
42 | execute: function () {
43 | _createClass = function () {
44 | function defineProperties(target, props) {
45 | for (var i = 0; i < props.length; i++) {
46 | var descriptor = props[i];
47 | descriptor.enumerable = descriptor.enumerable || false;
48 | descriptor.configurable = true;
49 | if ("value" in descriptor) descriptor.writable = true;
50 | Object.defineProperty(target, descriptor.key, descriptor);
51 | }
52 | }
53 |
54 | return function (Constructor, protoProps, staticProps) {
55 | if (protoProps) defineProperties(Constructor.prototype, protoProps);
56 | if (staticProps) defineProperties(Constructor, staticProps);
57 | return Constructor;
58 | };
59 | }();
60 |
61 | _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl = function (_QueryCtrl) {
62 | _inherits(GenericDatasourceQueryCtrl, _QueryCtrl);
63 |
64 | function GenericDatasourceQueryCtrl($scope, $injector) {
65 | _classCallCheck(this, GenericDatasourceQueryCtrl);
66 |
67 | var _this = _possibleConstructorReturn(this, (GenericDatasourceQueryCtrl.__proto__ || Object.getPrototypeOf(GenericDatasourceQueryCtrl)).call(this, $scope, $injector));
68 |
69 | _this.scope = $scope;
70 | _this.target.target = _this.target.target || 'select metric';
71 | _this.target.type = _this.target.type || 'timeserie';
72 | return _this;
73 | }
74 |
75 | _createClass(GenericDatasourceQueryCtrl, [{
76 | key: 'getOptions',
77 | value: function getOptions(query) {
78 | return this.datasource.metricFindQuery(query || '');
79 | }
80 | }, {
81 | key: 'toggleEditorMode',
82 | value: function toggleEditorMode() {
83 | this.target.rawQuery = !this.target.rawQuery;
84 | }
85 | }, {
86 | key: 'onChangeInternal',
87 | value: function onChangeInternal() {
88 | this.panelCtrl.refresh(); // Asks the panel to refresh data.
89 | }
90 | }]);
91 |
92 | return GenericDatasourceQueryCtrl;
93 | }(QueryCtrl));
94 |
95 | _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl);
96 |
97 | GenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html';
98 | }
99 | };
100 | });
101 | //# sourceMappingURL=query_ctrl.js.map
102 |
--------------------------------------------------------------------------------
/dist/query_ctrl.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../src/query_ctrl.js"],"names":["QueryCtrl","GenericDatasourceQueryCtrl","$scope","$injector","scope","target","type","query","datasource","metricFindQuery","rawQuery","panelCtrl","refresh","templateUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAQA,e,kBAAAA,S;;;;;;;;;;;;;;;;;;;;;4CAGKC,0B;;;AAEX,4CAAYC,MAAZ,EAAoBC,SAApB,EAAgC;AAAA;;AAAA,8JACxBD,MADwB,EAChBC,SADgB;;AAG9B,gBAAKC,KAAL,GAAaF,MAAb;AACA,gBAAKG,MAAL,CAAYA,MAAZ,GAAqB,MAAKA,MAAL,CAAYA,MAAZ,IAAsB,eAA3C;AACA,gBAAKA,MAAL,CAAYC,IAAZ,GAAmB,MAAKD,MAAL,CAAYC,IAAZ,IAAoB,WAAvC;AAL8B;AAM/B;;;;qCAEUC,K,EAAO;AAChB,mBAAO,KAAKC,UAAL,CAAgBC,eAAhB,CAAgCF,SAAS,EAAzC,CAAP;AACD;;;6CAEkB;AACjB,iBAAKF,MAAL,CAAYK,QAAZ,GAAuB,CAAC,KAAKL,MAAL,CAAYK,QAApC;AACD;;;6CAEkB;AACjB,iBAAKC,SAAL,CAAeC,OAAf,GADiB,CACS;AAC3B;;;;QApB6CZ,S;;;;AAuBhDC,iCAA2BY,WAA3B,GAAyC,4BAAzC","file":"query_ctrl.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport './css/query-editor.css!'\n\nexport class GenericDatasourceQueryCtrl extends QueryCtrl {\n\n constructor($scope, $injector) {\n super($scope, $injector);\n\n this.scope = $scope;\n this.target.target = this.target.target || 'select metric';\n this.target.type = this.target.type || 'timeserie';\n }\n\n getOptions(query) {\n return this.datasource.metricFindQuery(query || '');\n }\n\n toggleEditorMode() {\n this.target.rawQuery = !this.target.rawQuery;\n }\n\n onChangeInternal() {\n this.panelCtrl.refresh(); // Asks the panel to refresh data.\n }\n}\n\nGenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html';\n\n"]}
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ntop-ntopng",
3 | "private": true,
4 | "version": "1.0.0",
5 | "description": "",
6 | "main": "index.js",
7 | "scripts": {
8 | "build": "./node_modules/grunt-cli/bin/grunt",
9 | "test": "./node_modules/grunt-cli/bin/grunt mochaTest"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/ntop/ntopng-grafana-datasource.git"
14 | },
15 | "author": "ntop",
16 | "license": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/ntop/ntopng-grafana-datasource/issues"
19 | },
20 | "engines": {
21 | "node": "6.10.0"
22 | },
23 | "engineStrict": true,
24 | "devDependencies": {
25 | "babel": "^6.23.0",
26 | "babel-plugin-transform-es2015-for-of": "^6.23.0",
27 | "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
28 | "babel-preset-es2015": "^6.24.1",
29 | "babel-preset-stage-2": "^6.24.1",
30 | "chai": "^3.5.0",
31 | "grunt": "^1.0.1",
32 | "grunt-babel": "^6.0.0",
33 | "grunt-cli": "^1.2.0",
34 | "grunt-contrib-clean": "^1.1.0",
35 | "grunt-contrib-copy": "^1.0.0",
36 | "grunt-contrib-uglify": "^2.3.0",
37 | "grunt-contrib-watch": "^1.0.0",
38 | "grunt-mocha-test": "^0.13.2",
39 | "grunt-systemjs-builder": "^1.0.0",
40 | "jsdom": "^9.12.0",
41 | "load-grunt-tasks": "^3.5.2",
42 | "lodash": "^4.17.4",
43 | "mocha": "^3.5.3",
44 | "prunk": "^1.3.1",
45 | "q": "^1.5.0"
46 | },
47 | "dependencies": {
48 | "babel-plugin-transform-es2015-for-of": "^6.6.0",
49 | "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
50 | "babel-preset-es2015": "^6.24.1",
51 | "lodash": "^4.17.4",
52 | "mocha": "^3.2.0"
53 | },
54 | "homepage": "https://github.com/ntop/ntopng-grafana-datasource"
55 | }
56 |
--------------------------------------------------------------------------------
/spec/datasource_spec.js:
--------------------------------------------------------------------------------
1 | import {Datasource} from "../module";
2 | import Q from "q";
3 |
4 | describe('GenericDatasource', function() {
5 | var ctx = {};
6 |
7 | beforeEach(function() {
8 | ctx.$q = Q;
9 | ctx.backendSrv = {};
10 | ctx.templateSrv = {};
11 | ctx.ds = new Datasource({}, ctx.$q, ctx.backendSrv, ctx.templateSrv);
12 | });
13 |
14 | it('should return an empty array when no targets are set', function(done) {
15 | ctx.ds.query({targets: []}).then(function(result) {
16 | expect(result.data).to.have.length(0);
17 | done();
18 | });
19 | });
20 |
21 | it('should return the server results when a target is set', function(done) {
22 | ctx.backendSrv.datasourceRequest = function(request) {
23 | return ctx.$q.when({
24 | _request: request,
25 | data: [
26 | {
27 | target: 'X',
28 | datapoints: [1, 2, 3]
29 | }
30 | ]
31 | });
32 | };
33 |
34 | ctx.templateSrv.replace = function(data) {
35 | return data;
36 | }
37 |
38 | ctx.ds.query({targets: ['hits']}).then(function(result) {
39 | expect(result._request.data.targets).to.have.length(1);
40 |
41 | var series = result.data[0];
42 | expect(series.target).to.equal('X');
43 | expect(series.datapoints).to.have.length(3);
44 | done();
45 | });
46 | });
47 |
48 | it ('should return the metric results when a target is null', function(done) {
49 | ctx.backendSrv.datasourceRequest = function(request) {
50 | return ctx.$q.when({
51 | _request: request,
52 | data: [
53 | "metric_0",
54 | "metric_1",
55 | "metric_2",
56 | ]
57 | });
58 | };
59 |
60 | ctx.templateSrv.replace = function(data) {
61 | return data;
62 | }
63 |
64 | ctx.ds.metricFindQuery({target: null}).then(function(result) {
65 | expect(result).to.have.length(3);
66 | expect(result[0].text).to.equal('metric_0');
67 | expect(result[0].value).to.equal('metric_0');
68 | expect(result[1].text).to.equal('metric_1');
69 | expect(result[1].value).to.equal('metric_1');
70 | expect(result[2].text).to.equal('metric_2');
71 | expect(result[2].value).to.equal('metric_2');
72 | done();
73 | });
74 | });
75 |
76 | it ('should return the metric target results when a target is set', function(done) {
77 | ctx.backendSrv.datasourceRequest = function(request) {
78 | var target = request.data.target;
79 | var result = [target + "_0", target + "_1", target + "_2"];
80 |
81 | return ctx.$q.when({
82 | _request: request,
83 | data: result
84 | });
85 | };
86 |
87 | ctx.templateSrv.replace = function(data) {
88 | return data;
89 | }
90 |
91 | ctx.ds.metricFindQuery('search').then(function(result) {
92 | expect(result).to.have.length(3);
93 | expect(result[0].text).to.equal('search_0');
94 | expect(result[0].value).to.equal('search_0');
95 | expect(result[1].text).to.equal('search_1');
96 | expect(result[1].value).to.equal('search_1');
97 | expect(result[2].text).to.equal('search_2');
98 | expect(result[2].value).to.equal('search_2');
99 | done();
100 | });
101 | });
102 |
103 | it ('should return the metric results when the target is an empty string', function(done) {
104 | ctx.backendSrv.datasourceRequest = function(request) {
105 | return ctx.$q.when({
106 | _request: request,
107 | data: [
108 | "metric_0",
109 | "metric_1",
110 | "metric_2",
111 | ]
112 | });
113 | };
114 |
115 | ctx.templateSrv.replace = function(data) {
116 | return data;
117 | }
118 |
119 | ctx.ds.metricFindQuery('').then(function(result) {
120 | expect(result).to.have.length(3);
121 | expect(result[0].text).to.equal('metric_0');
122 | expect(result[0].value).to.equal('metric_0');
123 | expect(result[1].text).to.equal('metric_1');
124 | expect(result[1].value).to.equal('metric_1');
125 | expect(result[2].text).to.equal('metric_2');
126 | expect(result[2].value).to.equal('metric_2');
127 | done();
128 | });
129 | });
130 |
131 | it ('should return the metric results when the args are an empty object', function(done) {
132 | ctx.backendSrv.datasourceRequest = function(request) {
133 | return ctx.$q.when({
134 | _request: request,
135 | data: [
136 | "metric_0",
137 | "metric_1",
138 | "metric_2",
139 | ]
140 | });
141 | };
142 |
143 | ctx.templateSrv.replace = function(data) {
144 | return data;
145 | }
146 |
147 | ctx.ds.metricFindQuery().then(function(result) {
148 | expect(result).to.have.length(3);
149 | expect(result[0].text).to.equal('metric_0');
150 | expect(result[0].value).to.equal('metric_0');
151 | expect(result[1].text).to.equal('metric_1');
152 | expect(result[1].value).to.equal('metric_1');
153 | expect(result[2].text).to.equal('metric_2');
154 | expect(result[2].value).to.equal('metric_2');
155 | done();
156 | });
157 | });
158 |
159 | it ('should return the metric target results when the args are a string', function(done) {
160 | ctx.backendSrv.datasourceRequest = function(request) {
161 | var target = request.data.target;
162 | var result = [target + "_0", target + "_1", target + "_2"];
163 |
164 | return ctx.$q.when({
165 | _request: request,
166 | data: result
167 | });
168 | };
169 |
170 | ctx.templateSrv.replace = function(data) {
171 | return data;
172 | }
173 |
174 | ctx.ds.metricFindQuery('search').then(function(result) {
175 | expect(result).to.have.length(3);
176 | expect(result[0].text).to.equal('search_0');
177 | expect(result[0].value).to.equal('search_0');
178 | expect(result[1].text).to.equal('search_1');
179 | expect(result[1].value).to.equal('search_1');
180 | expect(result[2].text).to.equal('search_2');
181 | expect(result[2].value).to.equal('search_2');
182 | done();
183 | });
184 | });
185 |
186 | it ('should return data as text and as value', function(done) {
187 | var result = ctx.ds.mapToTextValue({data: ["zero", "one", "two"]});
188 |
189 | expect(result).to.have.length(3);
190 | expect(result[0].text).to.equal('zero');
191 | expect(result[0].value).to.equal('zero');
192 | expect(result[1].text).to.equal('one');
193 | expect(result[1].value).to.equal('one');
194 | expect(result[2].text).to.equal('two');
195 | expect(result[2].value).to.equal('two');
196 | done();
197 | });
198 |
199 | it ('should return text as text and value as value', function(done) {
200 | var data = [
201 | {text: "zero", value: "value_0"},
202 | {text: "one", value: "value_1"},
203 | {text: "two", value: "value_2"},
204 | ];
205 |
206 | var result = ctx.ds.mapToTextValue({data: data});
207 |
208 | expect(result).to.have.length(3);
209 | expect(result[0].text).to.equal('zero');
210 | expect(result[0].value).to.equal('value_0');
211 | expect(result[1].text).to.equal('one');
212 | expect(result[1].value).to.equal('value_1');
213 | expect(result[2].text).to.equal('two');
214 | expect(result[2].value).to.equal('value_2');
215 | done();
216 | });
217 |
218 | it ('should return data as text and index as value', function(done) {
219 | var data = [
220 | {a: "zero", b: "value_0"},
221 | {a: "one", b: "value_1"},
222 | {a: "two", b: "value_2"},
223 | ];
224 |
225 | var result = ctx.ds.mapToTextValue({data: data});
226 |
227 | expect(result).to.have.length(3);
228 | expect(result[0].text).to.equal(data[0]);
229 | expect(result[0].value).to.equal(0);
230 | expect(result[1].text).to.equal(data[1]);
231 | expect(result[1].value).to.equal(1);
232 | expect(result[2].text).to.equal(data[2]);
233 | expect(result[2].value).to.equal(2);
234 | done();
235 | });
236 | });
237 |
--------------------------------------------------------------------------------
/spec/test-main.js:
--------------------------------------------------------------------------------
1 | import prunk from 'prunk';
2 | import {jsdom} from 'jsdom';
3 | import chai from 'chai';
4 |
5 | // Mock Grafana modules that are not available outside of the core project
6 | // Required for loading module.js
7 | prunk.mock('./css/query-editor.css!', 'no css, dude.');
8 | prunk.mock('app/plugins/sdk', {
9 | QueryCtrl: null
10 | });
11 |
12 | // Setup jsdom
13 | // Required for loading angularjs
14 | global.document = jsdom('');
15 | global.window = global.document.parentWindow;
16 |
17 | // Setup Chai
18 | chai.should();
19 | global.assert = chai.assert;
20 | global.expect = chai.expect;
21 |
--------------------------------------------------------------------------------
/src/css/query-editor.css:
--------------------------------------------------------------------------------
1 | .generic-datasource-query-row .query-keyword {
2 | width: 75px;
3 | }
--------------------------------------------------------------------------------
/src/datasource.js:
--------------------------------------------------------------------------------
1 | import _ from "lodash";
2 |
3 | export class GenericDatasource {
4 |
5 | constructor(instanceSettings, $q, backendSrv, templateSrv) {
6 | this.type = instanceSettings.type;
7 | this.url = instanceSettings.url;
8 | this.name = instanceSettings.name;
9 | this.q = $q;
10 | this.backendSrv = backendSrv;
11 | this.templateSrv = templateSrv;
12 | this.withCredentials = instanceSettings.withCredentials;
13 | this.headers = {'Content-Type': 'application/json'};
14 | if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) {
15 | this.headers['Authorization'] = instanceSettings.basicAuth;
16 | }
17 | }
18 |
19 | query(options) {
20 | var query = this.buildQueryParameters(options);
21 | query.targets = query.targets.filter(t => !t.hide);
22 |
23 | if (query.targets.length <= 0) {
24 | return this.q.when({data: []});
25 | }
26 |
27 | return this.doRequest({
28 | url: this.url + '/query',
29 | data: query,
30 | method: 'POST'
31 | });
32 | }
33 |
34 | testDatasource() {
35 | return this.doRequest({
36 | url: this.url + '/',
37 | method: 'GET',
38 | }).then(response => {
39 | if (response.status === 200) {
40 | return { status: "success", message: "Data source is working", title: "Success" };
41 | }
42 | });
43 | }
44 |
45 | annotationQuery(options) {
46 | var query = this.templateSrv.replace(options.annotation.query, {}, 'glob');
47 | var annotationQuery = {
48 | range: options.range,
49 | annotation: {
50 | name: options.annotation.name,
51 | datasource: options.annotation.datasource,
52 | enable: options.annotation.enable,
53 | iconColor: options.annotation.iconColor,
54 | query: query
55 | },
56 | rangeRaw: options.rangeRaw
57 | };
58 |
59 | return this.doRequest({
60 | url: this.url + '/annotations',
61 | method: 'POST',
62 | data: annotationQuery
63 | }).then(result => {
64 | return result.data;
65 | });
66 | }
67 |
68 | metricFindQuery(query) {
69 | var interpolated = {
70 | target: this.templateSrv.replace(query, null, 'regex')
71 | };
72 |
73 | return this.doRequest({
74 | url: this.url + '/search',
75 | data: interpolated,
76 | method: 'POST',
77 | }).then(this.mapToTextValue);
78 | }
79 |
80 | mapToTextValue(result) {
81 | return _.map(result.data, (d, i) => {
82 | if (d && d.text && d.value) {
83 | return { text: d.text, value: d.value };
84 | } else if (_.isObject(d)) {
85 | return { text: d, value: i};
86 | }
87 | return { text: d, value: d };
88 | });
89 | }
90 |
91 | doRequest(options) {
92 | options.withCredentials = this.withCredentials;
93 | options.headers = this.headers;
94 |
95 | return this.backendSrv.datasourceRequest(options);
96 | }
97 |
98 | buildQueryParameters(options) {
99 | //remove placeholder targets
100 | options.targets = _.filter(options.targets, target => {
101 | return target.target !== 'select metric';
102 | });
103 |
104 | var targets = _.map(options.targets, target => {
105 | return {
106 | target: this.templateSrv.replace(target.target, options.scopedVars, 'regex'),
107 | refId: target.refId,
108 | hide: target.hide,
109 | type: target.type || 'timeserie'
110 | };
111 | });
112 |
113 | options.targets = targets;
114 |
115 | return options;
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/src/img/ntopng_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/src/img/simpleJson_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
636 |
--------------------------------------------------------------------------------
/src/module.js:
--------------------------------------------------------------------------------
1 | import {GenericDatasource} from './datasource';
2 | import {GenericDatasourceQueryCtrl} from './query_ctrl';
3 |
4 | class GenericConfigCtrl {}
5 | GenericConfigCtrl.templateUrl = 'partials/config.html';
6 |
7 | class GenericQueryOptionsCtrl {}
8 | GenericQueryOptionsCtrl.templateUrl = 'partials/query.options.html';
9 |
10 | class GenericAnnotationsQueryCtrl {}
11 | GenericAnnotationsQueryCtrl.templateUrl = 'partials/annotations.editor.html'
12 |
13 | export {
14 | GenericDatasource as Datasource,
15 | GenericDatasourceQueryCtrl as QueryCtrl,
16 | GenericConfigCtrl as ConfigCtrl,
17 | GenericQueryOptionsCtrl as QueryOptionsCtrl,
18 | GenericAnnotationsQueryCtrl as AnnotationsQueryCtrl
19 | };
20 |
--------------------------------------------------------------------------------
/src/partials/annotations.editor.html:
--------------------------------------------------------------------------------
1 |
2 | Query
3 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/partials/config.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/partials/query.editor.html:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
--------------------------------------------------------------------------------
/src/partials/query.options.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ntopng",
3 | "id": "ntop-ntopng-datasource",
4 | "type": "datasource",
5 |
6 | "metrics": true,
7 | "annotations": false,
8 |
9 | "info": {
10 | "description": "ntopng datasource",
11 | "author": {
12 | "name": "ntop",
13 | "url": "https://www.ntop.org"
14 | },
15 | "logos": {
16 | "small": "img/ntopng_logo.svg",
17 | "large": "img/ntopng_logo.svg"
18 | },
19 | "links": [
20 | {"name": "GitHub", "url": "https://github.com/ntop/ntopng-grafana-datasource"},
21 | {"name": "MIT License", "url": "https://github.com/ntop/ntopng-grafana-datasource/blob/master/LICENSE"}
22 | ],
23 | "version": "1.0.0",
24 | "updated": "2017-09-25"
25 | },
26 |
27 | "dependencies": {
28 | "grafanaVersion": "4.x.x",
29 | "plugins": [ ]
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/query_ctrl.js:
--------------------------------------------------------------------------------
1 | import {QueryCtrl} from 'app/plugins/sdk';
2 | import './css/query-editor.css!'
3 |
4 | export class GenericDatasourceQueryCtrl extends QueryCtrl {
5 |
6 | constructor($scope, $injector) {
7 | super($scope, $injector);
8 |
9 | this.scope = $scope;
10 | this.target.target = this.target.target || 'select metric';
11 | this.target.type = this.target.type || 'timeserie';
12 | }
13 |
14 | getOptions(query) {
15 | return this.datasource.metricFindQuery(query || '');
16 | }
17 |
18 | toggleEditorMode() {
19 | this.target.rawQuery = !this.target.rawQuery;
20 | }
21 |
22 | onChangeInternal() {
23 | this.panelCtrl.refresh(); // Asks the panel to refresh data.
24 | }
25 | }
26 |
27 | GenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html';
28 |
29 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abbrev@1:
6 | version "1.1.0"
7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
8 |
9 | acorn-globals@^1.0.2:
10 | version "1.0.9"
11 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
12 | dependencies:
13 | acorn "^2.1.0"
14 |
15 | acorn@0.11.0:
16 | version "0.11.0"
17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-0.11.0.tgz#6e95f0253ad161ff0127db32983e5e2e5352d59a"
18 |
19 | acorn@^2.1.0:
20 | version "2.7.0"
21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
22 |
23 | align-text@^0.1.1, align-text@^0.1.3:
24 | version "0.1.4"
25 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
26 | dependencies:
27 | kind-of "^3.0.2"
28 | longest "^1.0.1"
29 | repeat-string "^1.5.2"
30 |
31 | amdefine@>=0.0.4:
32 | version "1.0.1"
33 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
34 |
35 | ansi-regex@^2.0.0:
36 | version "2.1.1"
37 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
38 |
39 | ansi-styles@^2.2.1:
40 | version "2.2.1"
41 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
42 |
43 | "argparse@~ 0.1.11":
44 | version "0.1.16"
45 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c"
46 | dependencies:
47 | underscore "~1.7.0"
48 | underscore.string "~2.4.0"
49 |
50 | array-differ@^1.0.0:
51 | version "1.0.0"
52 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
53 |
54 | array-union@^1.0.1:
55 | version "1.0.2"
56 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
57 | dependencies:
58 | array-uniq "^1.0.1"
59 |
60 | array-uniq@^1.0.1:
61 | version "1.0.3"
62 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
63 |
64 | arrify@^1.0.0:
65 | version "1.0.1"
66 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
67 |
68 | asn1@~0.2.3:
69 | version "0.2.3"
70 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
71 |
72 | assert-plus@^0.2.0:
73 | version "0.2.0"
74 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
75 |
76 | assert-plus@^1.0.0:
77 | version "1.0.0"
78 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
79 |
80 | assertion-error@^1.0.1:
81 | version "1.0.2"
82 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
83 |
84 | async@~0.1.22:
85 | version "0.1.22"
86 | resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"
87 |
88 | async@~0.2.6, async@~0.2.9:
89 | version "0.2.10"
90 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
91 |
92 | asynckit@^0.4.0:
93 | version "0.4.0"
94 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
95 |
96 | aws-sign2@~0.6.0:
97 | version "0.6.0"
98 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
99 |
100 | aws4@^1.2.1:
101 | version "1.6.0"
102 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
103 |
104 | babel-code-frame@^6.22.0:
105 | version "6.22.0"
106 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
107 | dependencies:
108 | chalk "^1.1.0"
109 | esutils "^2.0.2"
110 | js-tokens "^3.0.0"
111 |
112 | babel-core@^6.0.12, babel-core@^6.23.0, babel-core@^6.9.0:
113 | version "6.23.1"
114 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df"
115 | dependencies:
116 | babel-code-frame "^6.22.0"
117 | babel-generator "^6.23.0"
118 | babel-helpers "^6.23.0"
119 | babel-messages "^6.23.0"
120 | babel-register "^6.23.0"
121 | babel-runtime "^6.22.0"
122 | babel-template "^6.23.0"
123 | babel-traverse "^6.23.1"
124 | babel-types "^6.23.0"
125 | babylon "^6.11.0"
126 | convert-source-map "^1.1.0"
127 | debug "^2.1.1"
128 | json5 "^0.5.0"
129 | lodash "^4.2.0"
130 | minimatch "^3.0.2"
131 | path-is-absolute "^1.0.0"
132 | private "^0.1.6"
133 | slash "^1.0.0"
134 | source-map "^0.5.0"
135 |
136 | babel-generator@^6.23.0:
137 | version "6.23.0"
138 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5"
139 | dependencies:
140 | babel-messages "^6.23.0"
141 | babel-runtime "^6.22.0"
142 | babel-types "^6.23.0"
143 | detect-indent "^4.0.0"
144 | jsesc "^1.3.0"
145 | lodash "^4.2.0"
146 | source-map "^0.5.0"
147 | trim-right "^1.0.1"
148 |
149 | babel-helper-call-delegate@^6.22.0:
150 | version "6.22.0"
151 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef"
152 | dependencies:
153 | babel-helper-hoist-variables "^6.22.0"
154 | babel-runtime "^6.22.0"
155 | babel-traverse "^6.22.0"
156 | babel-types "^6.22.0"
157 |
158 | babel-helper-define-map@^6.23.0:
159 | version "6.23.0"
160 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz#1444f960c9691d69a2ced6a205315f8fd00804e7"
161 | dependencies:
162 | babel-helper-function-name "^6.23.0"
163 | babel-runtime "^6.22.0"
164 | babel-types "^6.23.0"
165 | lodash "^4.2.0"
166 |
167 | babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.23.0:
168 | version "6.23.0"
169 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz#25742d67175c8903dbe4b6cb9d9e1fcb8dcf23a6"
170 | dependencies:
171 | babel-helper-get-function-arity "^6.22.0"
172 | babel-runtime "^6.22.0"
173 | babel-template "^6.23.0"
174 | babel-traverse "^6.23.0"
175 | babel-types "^6.23.0"
176 |
177 | babel-helper-get-function-arity@^6.22.0:
178 | version "6.22.0"
179 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce"
180 | dependencies:
181 | babel-runtime "^6.22.0"
182 | babel-types "^6.22.0"
183 |
184 | babel-helper-hoist-variables@^6.22.0:
185 | version "6.22.0"
186 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72"
187 | dependencies:
188 | babel-runtime "^6.22.0"
189 | babel-types "^6.22.0"
190 |
191 | babel-helper-optimise-call-expression@^6.23.0:
192 | version "6.23.0"
193 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz#f3ee7eed355b4282138b33d02b78369e470622f5"
194 | dependencies:
195 | babel-runtime "^6.22.0"
196 | babel-types "^6.23.0"
197 |
198 | babel-helper-regex@^6.22.0:
199 | version "6.22.0"
200 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d"
201 | dependencies:
202 | babel-runtime "^6.22.0"
203 | babel-types "^6.22.0"
204 | lodash "^4.2.0"
205 |
206 | babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.23.0:
207 | version "6.23.0"
208 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz#eeaf8ad9b58ec4337ca94223bacdca1f8d9b4bfd"
209 | dependencies:
210 | babel-helper-optimise-call-expression "^6.23.0"
211 | babel-messages "^6.23.0"
212 | babel-runtime "^6.22.0"
213 | babel-template "^6.23.0"
214 | babel-traverse "^6.23.0"
215 | babel-types "^6.23.0"
216 |
217 | babel-helpers@^6.23.0:
218 | version "6.23.0"
219 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992"
220 | dependencies:
221 | babel-runtime "^6.22.0"
222 | babel-template "^6.23.0"
223 |
224 | babel-messages@^6.23.0:
225 | version "6.23.0"
226 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
227 | dependencies:
228 | babel-runtime "^6.22.0"
229 |
230 | babel-plugin-check-es2015-constants@^6.22.0:
231 | version "6.22.0"
232 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
233 | dependencies:
234 | babel-runtime "^6.22.0"
235 |
236 | babel-plugin-transform-cjs-system-wrapper@^0.3.0:
237 | version "0.3.0"
238 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.3.0.tgz#f5759f29becd356faab7af52c99cde8e7bad0b21"
239 | dependencies:
240 | babel-template "^6.9.0"
241 |
242 | babel-plugin-transform-es2015-arrow-functions@^6.22.0:
243 | version "6.22.0"
244 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
245 | dependencies:
246 | babel-runtime "^6.22.0"
247 |
248 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
249 | version "6.22.0"
250 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
251 | dependencies:
252 | babel-runtime "^6.22.0"
253 |
254 | babel-plugin-transform-es2015-block-scoping@^6.22.0:
255 | version "6.23.0"
256 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz#e48895cf0b375be148cd7c8879b422707a053b51"
257 | dependencies:
258 | babel-runtime "^6.22.0"
259 | babel-template "^6.23.0"
260 | babel-traverse "^6.23.0"
261 | babel-types "^6.23.0"
262 | lodash "^4.2.0"
263 |
264 | babel-plugin-transform-es2015-classes@^6.22.0:
265 | version "6.23.0"
266 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz#49b53f326202a2fd1b3bbaa5e2edd8a4f78643c1"
267 | dependencies:
268 | babel-helper-define-map "^6.23.0"
269 | babel-helper-function-name "^6.23.0"
270 | babel-helper-optimise-call-expression "^6.23.0"
271 | babel-helper-replace-supers "^6.23.0"
272 | babel-messages "^6.23.0"
273 | babel-runtime "^6.22.0"
274 | babel-template "^6.23.0"
275 | babel-traverse "^6.23.0"
276 | babel-types "^6.23.0"
277 |
278 | babel-plugin-transform-es2015-computed-properties@^6.22.0:
279 | version "6.22.0"
280 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7"
281 | dependencies:
282 | babel-runtime "^6.22.0"
283 | babel-template "^6.22.0"
284 |
285 | babel-plugin-transform-es2015-destructuring@^6.22.0:
286 | version "6.23.0"
287 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
288 | dependencies:
289 | babel-runtime "^6.22.0"
290 |
291 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
292 | version "6.22.0"
293 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b"
294 | dependencies:
295 | babel-runtime "^6.22.0"
296 | babel-types "^6.22.0"
297 |
298 | babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0:
299 | version "6.23.0"
300 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
301 | dependencies:
302 | babel-runtime "^6.22.0"
303 |
304 | babel-plugin-transform-es2015-function-name@^6.22.0:
305 | version "6.22.0"
306 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104"
307 | dependencies:
308 | babel-helper-function-name "^6.22.0"
309 | babel-runtime "^6.22.0"
310 | babel-types "^6.22.0"
311 |
312 | babel-plugin-transform-es2015-literals@^6.22.0:
313 | version "6.22.0"
314 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
315 | dependencies:
316 | babel-runtime "^6.22.0"
317 |
318 | babel-plugin-transform-es2015-modules-amd@^6.22.0:
319 | version "6.22.0"
320 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21"
321 | dependencies:
322 | babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
323 | babel-runtime "^6.22.0"
324 | babel-template "^6.22.0"
325 |
326 | babel-plugin-transform-es2015-modules-commonjs@^6.22.0:
327 | version "6.23.0"
328 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.23.0.tgz#cba7aa6379fb7ec99250e6d46de2973aaffa7b92"
329 | dependencies:
330 | babel-plugin-transform-strict-mode "^6.22.0"
331 | babel-runtime "^6.22.0"
332 | babel-template "^6.23.0"
333 | babel-types "^6.23.0"
334 |
335 | babel-plugin-transform-es2015-modules-systemjs@^6.22.0, babel-plugin-transform-es2015-modules-systemjs@^6.5.0, babel-plugin-transform-es2015-modules-systemjs@^6.6.5:
336 | version "6.23.0"
337 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0"
338 | dependencies:
339 | babel-helper-hoist-variables "^6.22.0"
340 | babel-runtime "^6.22.0"
341 | babel-template "^6.23.0"
342 |
343 | babel-plugin-transform-es2015-modules-umd@^6.22.0:
344 | version "6.23.0"
345 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.23.0.tgz#8d284ae2e19ed8fe21d2b1b26d6e7e0fcd94f0f1"
346 | dependencies:
347 | babel-plugin-transform-es2015-modules-amd "^6.22.0"
348 | babel-runtime "^6.22.0"
349 | babel-template "^6.23.0"
350 |
351 | babel-plugin-transform-es2015-object-super@^6.22.0:
352 | version "6.22.0"
353 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc"
354 | dependencies:
355 | babel-helper-replace-supers "^6.22.0"
356 | babel-runtime "^6.22.0"
357 |
358 | babel-plugin-transform-es2015-parameters@^6.22.0:
359 | version "6.23.0"
360 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b"
361 | dependencies:
362 | babel-helper-call-delegate "^6.22.0"
363 | babel-helper-get-function-arity "^6.22.0"
364 | babel-runtime "^6.22.0"
365 | babel-template "^6.23.0"
366 | babel-traverse "^6.23.0"
367 | babel-types "^6.23.0"
368 |
369 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
370 | version "6.22.0"
371 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723"
372 | dependencies:
373 | babel-runtime "^6.22.0"
374 | babel-types "^6.22.0"
375 |
376 | babel-plugin-transform-es2015-spread@^6.22.0:
377 | version "6.22.0"
378 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
379 | dependencies:
380 | babel-runtime "^6.22.0"
381 |
382 | babel-plugin-transform-es2015-sticky-regex@^6.22.0:
383 | version "6.22.0"
384 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593"
385 | dependencies:
386 | babel-helper-regex "^6.22.0"
387 | babel-runtime "^6.22.0"
388 | babel-types "^6.22.0"
389 |
390 | babel-plugin-transform-es2015-template-literals@^6.22.0:
391 | version "6.22.0"
392 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
393 | dependencies:
394 | babel-runtime "^6.22.0"
395 |
396 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
397 | version "6.23.0"
398 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
399 | dependencies:
400 | babel-runtime "^6.22.0"
401 |
402 | babel-plugin-transform-es2015-unicode-regex@^6.22.0:
403 | version "6.22.0"
404 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20"
405 | dependencies:
406 | babel-helper-regex "^6.22.0"
407 | babel-runtime "^6.22.0"
408 | regexpu-core "^2.0.0"
409 |
410 | babel-plugin-transform-global-system-wrapper@0.0.1:
411 | version "0.0.1"
412 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.0.1.tgz#afb469cec0e04689b9fe7e8b1fd280fc94a6d8f2"
413 | dependencies:
414 | babel-template "^6.9.0"
415 |
416 | babel-plugin-transform-regenerator@^6.22.0:
417 | version "6.22.0"
418 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6"
419 | dependencies:
420 | regenerator-transform "0.9.8"
421 |
422 | babel-plugin-transform-strict-mode@^6.22.0:
423 | version "6.22.0"
424 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c"
425 | dependencies:
426 | babel-runtime "^6.22.0"
427 | babel-types "^6.22.0"
428 |
429 | babel-plugin-transform-system-register@0.0.1:
430 | version "0.0.1"
431 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz#9dff40390c2763ac518f0b2ad7c5ea4f65a5be25"
432 |
433 | babel-preset-es2015@^6.5.0:
434 | version "6.22.0"
435 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835"
436 | dependencies:
437 | babel-plugin-check-es2015-constants "^6.22.0"
438 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
439 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
440 | babel-plugin-transform-es2015-block-scoping "^6.22.0"
441 | babel-plugin-transform-es2015-classes "^6.22.0"
442 | babel-plugin-transform-es2015-computed-properties "^6.22.0"
443 | babel-plugin-transform-es2015-destructuring "^6.22.0"
444 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
445 | babel-plugin-transform-es2015-for-of "^6.22.0"
446 | babel-plugin-transform-es2015-function-name "^6.22.0"
447 | babel-plugin-transform-es2015-literals "^6.22.0"
448 | babel-plugin-transform-es2015-modules-amd "^6.22.0"
449 | babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
450 | babel-plugin-transform-es2015-modules-systemjs "^6.22.0"
451 | babel-plugin-transform-es2015-modules-umd "^6.22.0"
452 | babel-plugin-transform-es2015-object-super "^6.22.0"
453 | babel-plugin-transform-es2015-parameters "^6.22.0"
454 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
455 | babel-plugin-transform-es2015-spread "^6.22.0"
456 | babel-plugin-transform-es2015-sticky-regex "^6.22.0"
457 | babel-plugin-transform-es2015-template-literals "^6.22.0"
458 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
459 | babel-plugin-transform-es2015-unicode-regex "^6.22.0"
460 | babel-plugin-transform-regenerator "^6.22.0"
461 |
462 | babel-register@^6.23.0:
463 | version "6.23.0"
464 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3"
465 | dependencies:
466 | babel-core "^6.23.0"
467 | babel-runtime "^6.22.0"
468 | core-js "^2.4.0"
469 | home-or-tmp "^2.0.0"
470 | lodash "^4.2.0"
471 | mkdirp "^0.5.1"
472 | source-map-support "^0.4.2"
473 |
474 | babel-runtime@^6.18.0, babel-runtime@^6.22.0:
475 | version "6.23.0"
476 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
477 | dependencies:
478 | core-js "^2.4.0"
479 | regenerator-runtime "^0.10.0"
480 |
481 | babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.9.0:
482 | version "6.23.0"
483 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638"
484 | dependencies:
485 | babel-runtime "^6.22.0"
486 | babel-traverse "^6.23.0"
487 | babel-types "^6.23.0"
488 | babylon "^6.11.0"
489 | lodash "^4.2.0"
490 |
491 | babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1:
492 | version "6.23.1"
493 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48"
494 | dependencies:
495 | babel-code-frame "^6.22.0"
496 | babel-messages "^6.23.0"
497 | babel-runtime "^6.22.0"
498 | babel-types "^6.23.0"
499 | babylon "^6.15.0"
500 | debug "^2.2.0"
501 | globals "^9.0.0"
502 | invariant "^2.2.0"
503 | lodash "^4.2.0"
504 |
505 | babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0:
506 | version "6.23.0"
507 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
508 | dependencies:
509 | babel-runtime "^6.22.0"
510 | esutils "^2.0.2"
511 | lodash "^4.2.0"
512 | to-fast-properties "^1.0.1"
513 |
514 | babel@~6.5.1:
515 | version "6.5.2"
516 | resolved "https://registry.yarnpkg.com/babel/-/babel-6.5.2.tgz#59140607438270920047ff56f02b2d8630c2d129"
517 |
518 | babylon@^6.11.0, babylon@^6.15.0:
519 | version "6.15.0"
520 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
521 |
522 | balanced-match@^0.4.1:
523 | version "0.4.2"
524 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
525 |
526 | bcrypt-pbkdf@^1.0.0:
527 | version "1.0.1"
528 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
529 | dependencies:
530 | tweetnacl "^0.14.3"
531 |
532 | bindings@^1.2.1:
533 | version "1.2.1"
534 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
535 |
536 | bluebird@^3.3.4:
537 | version "3.4.7"
538 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
539 |
540 | boom@2.x.x:
541 | version "2.10.1"
542 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
543 | dependencies:
544 | hoek "2.x.x"
545 |
546 | brace-expansion@^1.0.0:
547 | version "1.1.6"
548 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
549 | dependencies:
550 | balanced-match "^0.4.1"
551 | concat-map "0.0.1"
552 |
553 | "browser-request@>= 0.3.1 < 0.4.0":
554 | version "0.3.3"
555 | resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17"
556 |
557 | buffer-shims@^1.0.0:
558 | version "1.0.0"
559 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
560 |
561 | camelcase@^1.0.2:
562 | version "1.2.1"
563 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
564 |
565 | caseless@~0.11.0:
566 | version "0.11.0"
567 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
568 |
569 | center-align@^0.1.1:
570 | version "0.1.3"
571 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
572 | dependencies:
573 | align-text "^0.1.3"
574 | lazy-cache "^1.0.3"
575 |
576 | chai@~3.5.0:
577 | version "3.5.0"
578 | resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
579 | dependencies:
580 | assertion-error "^1.0.1"
581 | deep-eql "^0.1.3"
582 | type-detect "^1.0.0"
583 |
584 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1:
585 | version "1.1.3"
586 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
587 | dependencies:
588 | ansi-styles "^2.2.1"
589 | escape-string-regexp "^1.0.2"
590 | has-ansi "^2.0.0"
591 | strip-ansi "^3.0.0"
592 | supports-color "^2.0.0"
593 |
594 | cliui@^2.1.0:
595 | version "2.1.0"
596 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
597 | dependencies:
598 | center-align "^0.1.1"
599 | right-align "^0.1.1"
600 | wordwrap "0.0.2"
601 |
602 | coffee-script@~1.3.3:
603 | version "1.3.3"
604 | resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.3.3.tgz#150d6b4cb522894369efed6a2101c20bc7f4a4f4"
605 |
606 | colors@~0.6.2:
607 | version "0.6.2"
608 | resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
609 |
610 | combined-stream@^1.0.5, combined-stream@~1.0.5:
611 | version "1.0.5"
612 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
613 | dependencies:
614 | delayed-stream "~1.0.0"
615 |
616 | commander@0.6.1:
617 | version "0.6.1"
618 | resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
619 |
620 | commander@2.3.0:
621 | version "2.3.0"
622 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
623 |
624 | commander@2.9.x, commander@^2.9.0:
625 | version "2.9.0"
626 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
627 | dependencies:
628 | graceful-readlink ">= 1.0.0"
629 |
630 | concat-map@0.0.1:
631 | version "0.0.1"
632 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
633 |
634 | "contextify@>= 0.1.9 < 0.2.0":
635 | version "0.1.15"
636 | resolved "https://registry.yarnpkg.com/contextify/-/contextify-0.1.15.tgz#3d34681d14a5ccbbe609c9ee11eda206b8cf266f"
637 | dependencies:
638 | bindings "^1.2.1"
639 | nan "^2.1.0"
640 |
641 | convert-source-map@^1.1.0:
642 | version "1.4.0"
643 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3"
644 |
645 | core-js@^2.4.0:
646 | version "2.4.1"
647 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
648 |
649 | core-util-is@~1.0.0:
650 | version "1.0.2"
651 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
652 |
653 | cryptiles@2.x.x:
654 | version "2.0.5"
655 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
656 | dependencies:
657 | boom "2.x.x"
658 |
659 | cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
660 | version "0.3.2"
661 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
662 |
663 | "cssstyle@>= 0.2.21 < 0.3.0":
664 | version "0.2.37"
665 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
666 | dependencies:
667 | cssom "0.3.x"
668 |
669 | d@1:
670 | version "1.0.0"
671 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
672 | dependencies:
673 | es5-ext "^0.10.9"
674 |
675 | d@^0.1.1, d@~0.1.1:
676 | version "0.1.1"
677 | resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
678 | dependencies:
679 | es5-ext "~0.10.2"
680 |
681 | dashdash@^1.12.0:
682 | version "1.14.1"
683 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
684 | dependencies:
685 | assert-plus "^1.0.0"
686 |
687 | data-uri-to-buffer@0.0.4:
688 | version "0.0.4"
689 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz#46e13ab9da8e309745c8d01ce547213ebdb2fe3f"
690 |
691 | dateformat@1.0.2-1.2.3:
692 | version "1.0.2-1.2.3"
693 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.2-1.2.3.tgz#b0220c02de98617433b72851cf47de3df2cdbee9"
694 |
695 | debug@2.2.0, debug@^2.1.1, debug@^2.2.0:
696 | version "2.2.0"
697 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
698 | dependencies:
699 | ms "0.7.1"
700 |
701 | debug@~0.7.0:
702 | version "0.7.4"
703 | resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
704 |
705 | decamelize@^1.0.0:
706 | version "1.2.0"
707 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
708 |
709 | deep-eql@^0.1.3:
710 | version "0.1.3"
711 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
712 | dependencies:
713 | type-detect "0.1.1"
714 |
715 | deep-is@~0.1.3:
716 | version "0.1.3"
717 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
718 |
719 | delayed-stream@~1.0.0:
720 | version "1.0.0"
721 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
722 |
723 | detect-indent@^4.0.0:
724 | version "4.0.0"
725 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
726 | dependencies:
727 | repeating "^2.0.0"
728 |
729 | diff@1.4.0:
730 | version "1.4.0"
731 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
732 |
733 | dom-serializer@0:
734 | version "0.1.0"
735 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
736 | dependencies:
737 | domelementtype "~1.1.1"
738 | entities "~1.1.1"
739 |
740 | domelementtype@1, domelementtype@^1.3.0:
741 | version "1.3.0"
742 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
743 |
744 | domelementtype@~1.1.1:
745 | version "1.1.3"
746 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
747 |
748 | domhandler@^2.3.0:
749 | version "2.3.0"
750 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
751 | dependencies:
752 | domelementtype "1"
753 |
754 | domutils@^1.5.1:
755 | version "1.5.1"
756 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
757 | dependencies:
758 | dom-serializer "0"
759 | domelementtype "1"
760 |
761 | duplexer@^0.1.1:
762 | version "0.1.1"
763 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
764 |
765 | ecc-jsbn@~0.1.1:
766 | version "0.1.1"
767 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
768 | dependencies:
769 | jsbn "~0.1.0"
770 |
771 | entities@^1.1.1, entities@~1.1.1:
772 | version "1.1.1"
773 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
774 |
775 | es5-ext@^0.10.12, es5-ext@^0.10.7, es5-ext@^0.10.9, es5-ext@~0.10.11, es5-ext@~0.10.2:
776 | version "0.10.12"
777 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
778 | dependencies:
779 | es6-iterator "2"
780 | es6-symbol "~3.1"
781 |
782 | es6-iterator@2:
783 | version "2.0.0"
784 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac"
785 | dependencies:
786 | d "^0.1.1"
787 | es5-ext "^0.10.7"
788 | es6-symbol "3"
789 |
790 | es6-symbol@3, es6-symbol@~3.1:
791 | version "3.1.0"
792 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa"
793 | dependencies:
794 | d "~0.1.1"
795 | es5-ext "~0.10.11"
796 |
797 | es6-template-strings@^2.0.0:
798 | version "2.0.1"
799 | resolved "https://registry.yarnpkg.com/es6-template-strings/-/es6-template-strings-2.0.1.tgz#b166c6a62562f478bb7775f6ca96103a599b4b2c"
800 | dependencies:
801 | es5-ext "^0.10.12"
802 | esniff "^1.1"
803 |
804 | escape-string-regexp@1.0.2:
805 | version "1.0.2"
806 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
807 |
808 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
809 | version "1.0.5"
810 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
811 |
812 | escodegen@^1.6.1:
813 | version "1.8.1"
814 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
815 | dependencies:
816 | esprima "^2.7.1"
817 | estraverse "^1.9.1"
818 | esutils "^2.0.2"
819 | optionator "^0.8.1"
820 | optionalDependencies:
821 | source-map "~0.2.0"
822 |
823 | esniff@^1.1:
824 | version "1.1.0"
825 | resolved "https://registry.yarnpkg.com/esniff/-/esniff-1.1.0.tgz#c66849229f91464dede2e0d40201ed6abf65f2ac"
826 | dependencies:
827 | d "1"
828 | es5-ext "^0.10.12"
829 |
830 | esprima@^2.7.1:
831 | version "2.7.3"
832 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
833 |
834 | "esprima@~ 1.0.2":
835 | version "1.0.4"
836 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"
837 |
838 | estraverse@^1.9.1:
839 | version "1.9.3"
840 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
841 |
842 | esutils@^2.0.2:
843 | version "2.0.2"
844 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
845 |
846 | eventemitter2@~0.4.13:
847 | version "0.4.14"
848 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab"
849 |
850 | exit@~0.1.1:
851 | version "0.1.2"
852 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
853 |
854 | extend@~3.0.0:
855 | version "3.0.0"
856 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
857 |
858 | extsprintf@1.0.2:
859 | version "1.0.2"
860 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
861 |
862 | fast-levenshtein@~2.0.4:
863 | version "2.0.6"
864 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
865 |
866 | faye-websocket@~0.4.3:
867 | version "0.4.4"
868 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.4.4.tgz#c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc"
869 |
870 | figures@^1.0.1:
871 | version "1.7.0"
872 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
873 | dependencies:
874 | escape-string-regexp "^1.0.5"
875 | object-assign "^4.1.0"
876 |
877 | file-sync-cmp@^0.1.0:
878 | version "0.1.1"
879 | resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"
880 |
881 | findup-sync@^0.2.1:
882 | version "0.2.1"
883 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.2.1.tgz#e0a90a450075c49466ee513732057514b81e878c"
884 | dependencies:
885 | glob "~4.3.0"
886 |
887 | findup-sync@~0.1.2:
888 | version "0.1.3"
889 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683"
890 | dependencies:
891 | glob "~3.2.9"
892 | lodash "~2.4.1"
893 |
894 | forever-agent@~0.6.1:
895 | version "0.6.1"
896 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
897 |
898 | form-data@~2.1.1:
899 | version "2.1.2"
900 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
901 | dependencies:
902 | asynckit "^0.4.0"
903 | combined-stream "^1.0.5"
904 | mime-types "^2.1.12"
905 |
906 | fs.realpath@^1.0.0:
907 | version "1.0.0"
908 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
909 |
910 | gaze@~0.5.1:
911 | version "0.5.2"
912 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f"
913 | dependencies:
914 | globule "~0.1.0"
915 |
916 | generate-function@^2.0.0:
917 | version "2.0.0"
918 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
919 |
920 | generate-object-property@^1.1.0:
921 | version "1.2.0"
922 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
923 | dependencies:
924 | is-property "^1.0.0"
925 |
926 | getobject@~0.1.0:
927 | version "0.1.0"
928 | resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c"
929 |
930 | getpass@^0.1.1:
931 | version "0.1.6"
932 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
933 | dependencies:
934 | assert-plus "^1.0.0"
935 |
936 | glob@3.2.11, glob@~3.2.9:
937 | version "3.2.11"
938 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
939 | dependencies:
940 | inherits "2"
941 | minimatch "0.3"
942 |
943 | glob@5.0.x:
944 | version "5.0.15"
945 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
946 | dependencies:
947 | inflight "^1.0.4"
948 | inherits "2"
949 | minimatch "2 || 3"
950 | once "^1.3.0"
951 | path-is-absolute "^1.0.0"
952 |
953 | glob@^7.0.3:
954 | version "7.1.1"
955 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
956 | dependencies:
957 | fs.realpath "^1.0.0"
958 | inflight "^1.0.4"
959 | inherits "2"
960 | minimatch "^3.0.2"
961 | once "^1.3.0"
962 | path-is-absolute "^1.0.0"
963 |
964 | glob@~3.1.21:
965 | version "3.1.21"
966 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
967 | dependencies:
968 | graceful-fs "~1.2.0"
969 | inherits "1"
970 | minimatch "~0.2.11"
971 |
972 | glob@~4.3.0:
973 | version "4.3.5"
974 | resolved "https://registry.yarnpkg.com/glob/-/glob-4.3.5.tgz#80fbb08ca540f238acce5d11d1e9bc41e75173d3"
975 | dependencies:
976 | inflight "^1.0.4"
977 | inherits "2"
978 | minimatch "^2.0.1"
979 | once "^1.3.0"
980 |
981 | globals@^9.0.0:
982 | version "9.16.0"
983 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80"
984 |
985 | globule@~0.1.0:
986 | version "0.1.0"
987 | resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
988 | dependencies:
989 | glob "~3.1.21"
990 | lodash "~1.0.1"
991 | minimatch "~0.2.11"
992 |
993 | graceful-fs@~1.2.0:
994 | version "1.2.3"
995 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
996 |
997 | "graceful-readlink@>= 1.0.0":
998 | version "1.0.1"
999 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1000 |
1001 | growl@1.9.2:
1002 | version "1.9.2"
1003 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
1004 |
1005 | grunt-babel@~6.0.0:
1006 | version "6.0.0"
1007 | resolved "https://registry.yarnpkg.com/grunt-babel/-/grunt-babel-6.0.0.tgz#378189b487de1168c4c4a9fc88dd6005b35df960"
1008 | dependencies:
1009 | babel-core "^6.0.12"
1010 |
1011 | grunt-contrib-clean@~0.6.0:
1012 | version "0.6.0"
1013 | resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-0.6.0.tgz#f532dba4b8212674c7c013e146bda6638b9048f6"
1014 | dependencies:
1015 | rimraf "~2.2.1"
1016 |
1017 | grunt-contrib-copy@~0.8.2:
1018 | version "0.8.2"
1019 | resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-0.8.2.tgz#df31c90ffcc409bc9fafe44ec0dd1e4259916fea"
1020 | dependencies:
1021 | chalk "^1.1.1"
1022 | file-sync-cmp "^0.1.0"
1023 |
1024 | grunt-contrib-uglify@~0.11.0:
1025 | version "0.11.1"
1026 | resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-0.11.1.tgz#5e22a2f676cd11d871fc2a0f08aa9b2973045325"
1027 | dependencies:
1028 | chalk "^1.0.0"
1029 | lodash "^4.0.1"
1030 | maxmin "^2.0.0"
1031 | uglify-js "~2.6.0"
1032 | uri-path "^1.0.0"
1033 |
1034 | grunt-contrib-watch@^0.6.1:
1035 | version "0.6.1"
1036 | resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz#64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15"
1037 | dependencies:
1038 | async "~0.2.9"
1039 | gaze "~0.5.1"
1040 | lodash "~2.4.1"
1041 | tiny-lr-fork "0.0.5"
1042 |
1043 | grunt-execute@~0.2.2:
1044 | version "0.2.2"
1045 | resolved "https://registry.yarnpkg.com/grunt-execute/-/grunt-execute-0.2.2.tgz#4e945fe57959cc0de7799083b6b42aed9616350a"
1046 |
1047 | grunt-legacy-log-utils@~0.1.1:
1048 | version "0.1.1"
1049 | resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz#c0706b9dd9064e116f36f23fe4e6b048672c0f7e"
1050 | dependencies:
1051 | colors "~0.6.2"
1052 | lodash "~2.4.1"
1053 | underscore.string "~2.3.3"
1054 |
1055 | grunt-legacy-log@~0.1.0:
1056 | version "0.1.3"
1057 | resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz#ec29426e803021af59029f87d2f9cd7335a05531"
1058 | dependencies:
1059 | colors "~0.6.2"
1060 | grunt-legacy-log-utils "~0.1.1"
1061 | hooker "~0.2.3"
1062 | lodash "~2.4.1"
1063 | underscore.string "~2.3.3"
1064 |
1065 | grunt-legacy-util@~0.2.0:
1066 | version "0.2.0"
1067 | resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz#93324884dbf7e37a9ff7c026dff451d94a9e554b"
1068 | dependencies:
1069 | async "~0.1.22"
1070 | exit "~0.1.1"
1071 | getobject "~0.1.0"
1072 | hooker "~0.2.3"
1073 | lodash "~0.9.2"
1074 | underscore.string "~2.2.1"
1075 | which "~1.0.5"
1076 |
1077 | grunt-mocha-test@~0.12.7:
1078 | version "0.12.7"
1079 | resolved "https://registry.yarnpkg.com/grunt-mocha-test/-/grunt-mocha-test-0.12.7.tgz#c61cdf32a6762954115fe712b983e3dd8e0c9554"
1080 | dependencies:
1081 | hooker "~0.2.3"
1082 | mkdirp "^0.5.0"
1083 |
1084 | grunt-systemjs-builder@^0.2.5:
1085 | version "0.2.7"
1086 | resolved "https://registry.yarnpkg.com/grunt-systemjs-builder/-/grunt-systemjs-builder-0.2.7.tgz#e1ba74ec95dd03f7706ae2e22cf4ef0e1bd29cc9"
1087 | dependencies:
1088 | systemjs-builder "0.14.11 - 0.15.x"
1089 |
1090 | grunt@~0.4.5:
1091 | version "0.4.5"
1092 | resolved "https://registry.yarnpkg.com/grunt/-/grunt-0.4.5.tgz#56937cd5194324adff6d207631832a9d6ba4e7f0"
1093 | dependencies:
1094 | async "~0.1.22"
1095 | coffee-script "~1.3.3"
1096 | colors "~0.6.2"
1097 | dateformat "1.0.2-1.2.3"
1098 | eventemitter2 "~0.4.13"
1099 | exit "~0.1.1"
1100 | findup-sync "~0.1.2"
1101 | getobject "~0.1.0"
1102 | glob "~3.1.21"
1103 | grunt-legacy-log "~0.1.0"
1104 | grunt-legacy-util "~0.2.0"
1105 | hooker "~0.2.3"
1106 | iconv-lite "~0.2.11"
1107 | js-yaml "~2.0.5"
1108 | lodash "~0.9.2"
1109 | minimatch "~0.2.12"
1110 | nopt "~1.0.10"
1111 | rimraf "~2.2.8"
1112 | underscore.string "~2.2.1"
1113 | which "~1.0.5"
1114 |
1115 | gzip-size@^3.0.0:
1116 | version "3.0.0"
1117 | resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
1118 | dependencies:
1119 | duplexer "^0.1.1"
1120 |
1121 | har-validator@~2.0.6:
1122 | version "2.0.6"
1123 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
1124 | dependencies:
1125 | chalk "^1.1.1"
1126 | commander "^2.9.0"
1127 | is-my-json-valid "^2.12.4"
1128 | pinkie-promise "^2.0.0"
1129 |
1130 | has-ansi@^2.0.0:
1131 | version "2.0.0"
1132 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1133 | dependencies:
1134 | ansi-regex "^2.0.0"
1135 |
1136 | hawk@~3.1.3:
1137 | version "3.1.3"
1138 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
1139 | dependencies:
1140 | boom "2.x.x"
1141 | cryptiles "2.x.x"
1142 | hoek "2.x.x"
1143 | sntp "1.x.x"
1144 |
1145 | hoek@2.x.x:
1146 | version "2.16.3"
1147 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
1148 |
1149 | home-or-tmp@^2.0.0:
1150 | version "2.0.0"
1151 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
1152 | dependencies:
1153 | os-homedir "^1.0.0"
1154 | os-tmpdir "^1.0.1"
1155 |
1156 | hooker@~0.2.3:
1157 | version "0.2.3"
1158 | resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
1159 |
1160 | "htmlparser2@>= 3.7.3 < 4.0.0":
1161 | version "3.9.2"
1162 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
1163 | dependencies:
1164 | domelementtype "^1.3.0"
1165 | domhandler "^2.3.0"
1166 | domutils "^1.5.1"
1167 | entities "^1.1.1"
1168 | inherits "^2.0.1"
1169 | readable-stream "^2.0.2"
1170 |
1171 | http-signature@~1.1.0:
1172 | version "1.1.1"
1173 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
1174 | dependencies:
1175 | assert-plus "^0.2.0"
1176 | jsprim "^1.2.2"
1177 | sshpk "^1.7.0"
1178 |
1179 | iconv-lite@~0.2.11:
1180 | version "0.2.11"
1181 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8"
1182 |
1183 | inflight@^1.0.4:
1184 | version "1.0.6"
1185 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1186 | dependencies:
1187 | once "^1.3.0"
1188 | wrappy "1"
1189 |
1190 | inherits@1:
1191 | version "1.0.2"
1192 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
1193 |
1194 | inherits@2, inherits@^2.0.1, inherits@~2.0.1:
1195 | version "2.0.3"
1196 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1197 |
1198 | invariant@^2.2.0:
1199 | version "2.2.2"
1200 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1201 | dependencies:
1202 | loose-envify "^1.0.0"
1203 |
1204 | is-buffer@^1.0.2:
1205 | version "1.1.4"
1206 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
1207 |
1208 | is-finite@^1.0.0:
1209 | version "1.0.2"
1210 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1211 | dependencies:
1212 | number-is-nan "^1.0.0"
1213 |
1214 | is-my-json-valid@^2.12.4:
1215 | version "2.15.0"
1216 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
1217 | dependencies:
1218 | generate-function "^2.0.0"
1219 | generate-object-property "^1.1.0"
1220 | jsonpointer "^4.0.0"
1221 | xtend "^4.0.0"
1222 |
1223 | is-property@^1.0.0:
1224 | version "1.0.2"
1225 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
1226 |
1227 | is-typedarray@~1.0.0:
1228 | version "1.0.0"
1229 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1230 |
1231 | isarray@~1.0.0:
1232 | version "1.0.0"
1233 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1234 |
1235 | isstream@~0.1.2:
1236 | version "0.1.2"
1237 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1238 |
1239 | jade@0.26.3:
1240 | version "0.26.3"
1241 | resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c"
1242 | dependencies:
1243 | commander "0.6.1"
1244 | mkdirp "0.3.0"
1245 |
1246 | jodid25519@^1.0.0:
1247 | version "1.0.2"
1248 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
1249 | dependencies:
1250 | jsbn "~0.1.0"
1251 |
1252 | js-tokens@^3.0.0:
1253 | version "3.0.1"
1254 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
1255 |
1256 | js-yaml@~2.0.5:
1257 | version "2.0.5"
1258 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-2.0.5.tgz#a25ae6509999e97df278c6719da11bd0687743a8"
1259 | dependencies:
1260 | argparse "~ 0.1.11"
1261 | esprima "~ 1.0.2"
1262 |
1263 | jsbn@~0.1.0:
1264 | version "0.1.1"
1265 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1266 |
1267 | jsdom@~3.1.2:
1268 | version "3.1.2"
1269 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-3.1.2.tgz#88e5fe2d3b45b628a153011e2aa0ead7f395b19c"
1270 | dependencies:
1271 | acorn "0.11.0"
1272 | acorn-globals "^1.0.2"
1273 | browser-request ">= 0.3.1 < 0.4.0"
1274 | contextify ">= 0.1.9 < 0.2.0"
1275 | cssom ">= 0.3.0 < 0.4.0"
1276 | cssstyle ">= 0.2.21 < 0.3.0"
1277 | escodegen "^1.6.1"
1278 | htmlparser2 ">= 3.7.3 < 4.0.0"
1279 | nwmatcher ">= 1.3.4 < 2.0.0"
1280 | parse5 ">= 1.3.1 < 2.0.0"
1281 | request ">= 2.44.0 < 3.0.0"
1282 | xml-name-validator "^1.0.0"
1283 | xmlhttprequest ">= 1.6.0 < 2.0.0"
1284 |
1285 | jsesc@^1.3.0:
1286 | version "1.3.0"
1287 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1288 |
1289 | jsesc@~0.5.0:
1290 | version "0.5.0"
1291 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1292 |
1293 | json-schema@0.2.3:
1294 | version "0.2.3"
1295 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1296 |
1297 | json-stringify-safe@~5.0.1:
1298 | version "5.0.1"
1299 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1300 |
1301 | json5@^0.5.0:
1302 | version "0.5.1"
1303 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1304 |
1305 | jsonpointer@^4.0.0:
1306 | version "4.0.1"
1307 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
1308 |
1309 | jsprim@^1.2.2:
1310 | version "1.3.1"
1311 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
1312 | dependencies:
1313 | extsprintf "1.0.2"
1314 | json-schema "0.2.3"
1315 | verror "1.3.6"
1316 |
1317 | kind-of@^3.0.2:
1318 | version "3.1.0"
1319 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
1320 | dependencies:
1321 | is-buffer "^1.0.2"
1322 |
1323 | lazy-cache@^1.0.3:
1324 | version "1.0.4"
1325 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
1326 |
1327 | levn@~0.3.0:
1328 | version "0.3.0"
1329 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1330 | dependencies:
1331 | prelude-ls "~1.1.2"
1332 | type-check "~0.3.2"
1333 |
1334 | load-grunt-tasks@~3.2.0:
1335 | version "3.2.0"
1336 | resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-3.2.0.tgz#25fe7e414ba0645a752bb06f52491b422332036f"
1337 | dependencies:
1338 | findup-sync "^0.2.1"
1339 | multimatch "^2.0.0"
1340 |
1341 | lodash@^4.0.1, lodash@~4.0.0:
1342 | version "4.0.1"
1343 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.0.1.tgz#cd8c902c9e03f2e69ce3e0e456d505ab89eb98f4"
1344 |
1345 | lodash@^4.2.0:
1346 | version "4.17.4"
1347 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
1348 |
1349 | lodash@~0.9.2:
1350 | version "0.9.2"
1351 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-0.9.2.tgz#8f3499c5245d346d682e5b0d3b40767e09f1a92c"
1352 |
1353 | lodash@~1.0.1:
1354 | version "1.0.2"
1355 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
1356 |
1357 | lodash@~2.4.1:
1358 | version "2.4.2"
1359 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e"
1360 |
1361 | longest@^1.0.1:
1362 | version "1.0.1"
1363 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
1364 |
1365 | loose-envify@^1.0.0:
1366 | version "1.3.1"
1367 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
1368 | dependencies:
1369 | js-tokens "^3.0.0"
1370 |
1371 | lru-cache@2:
1372 | version "2.7.3"
1373 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
1374 |
1375 | maxmin@^2.0.0:
1376 | version "2.1.0"
1377 | resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166"
1378 | dependencies:
1379 | chalk "^1.0.0"
1380 | figures "^1.0.1"
1381 | gzip-size "^3.0.0"
1382 | pretty-bytes "^3.0.0"
1383 |
1384 | mime-db@~1.26.0:
1385 | version "1.26.0"
1386 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
1387 |
1388 | mime-types@^2.1.12, mime-types@~2.1.7:
1389 | version "2.1.14"
1390 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
1391 | dependencies:
1392 | mime-db "~1.26.0"
1393 |
1394 | minimatch@0.3:
1395 | version "0.3.0"
1396 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
1397 | dependencies:
1398 | lru-cache "2"
1399 | sigmund "~1.0.0"
1400 |
1401 | "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
1402 | version "3.0.3"
1403 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
1404 | dependencies:
1405 | brace-expansion "^1.0.0"
1406 |
1407 | minimatch@^2.0.1:
1408 | version "2.0.10"
1409 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
1410 | dependencies:
1411 | brace-expansion "^1.0.0"
1412 |
1413 | minimatch@~0.2.11, minimatch@~0.2.12:
1414 | version "0.2.14"
1415 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
1416 | dependencies:
1417 | lru-cache "2"
1418 | sigmund "~1.0.0"
1419 |
1420 | minimist@0.0.8:
1421 | version "0.0.8"
1422 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1423 |
1424 | mkdirp@0.3.0:
1425 | version "0.3.0"
1426 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
1427 |
1428 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
1429 | version "0.5.1"
1430 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1431 | dependencies:
1432 | minimist "0.0.8"
1433 |
1434 | mocha@^2.4.5:
1435 | version "2.5.3"
1436 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58"
1437 | dependencies:
1438 | commander "2.3.0"
1439 | debug "2.2.0"
1440 | diff "1.4.0"
1441 | escape-string-regexp "1.0.2"
1442 | glob "3.2.11"
1443 | growl "1.9.2"
1444 | jade "0.26.3"
1445 | mkdirp "0.5.1"
1446 | supports-color "1.2.0"
1447 | to-iso-string "0.0.2"
1448 |
1449 | ms@0.7.1:
1450 | version "0.7.1"
1451 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
1452 |
1453 | multimatch@^2.0.0:
1454 | version "2.1.0"
1455 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
1456 | dependencies:
1457 | array-differ "^1.0.0"
1458 | array-union "^1.0.1"
1459 | arrify "^1.0.0"
1460 | minimatch "^3.0.0"
1461 |
1462 | nan@^2.1.0:
1463 | version "2.5.1"
1464 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
1465 |
1466 | nopt@~1.0.10:
1467 | version "1.0.10"
1468 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
1469 | dependencies:
1470 | abbrev "1"
1471 |
1472 | nopt@~2.0.0:
1473 | version "2.0.0"
1474 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.0.0.tgz#ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d"
1475 | dependencies:
1476 | abbrev "1"
1477 |
1478 | noptify@~0.0.3:
1479 | version "0.0.3"
1480 | resolved "https://registry.yarnpkg.com/noptify/-/noptify-0.0.3.tgz#58f654a73d9753df0c51d9686dc92104a67f4bbb"
1481 | dependencies:
1482 | nopt "~2.0.0"
1483 |
1484 | number-is-nan@^1.0.0:
1485 | version "1.0.1"
1486 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1487 |
1488 | "nwmatcher@>= 1.3.4 < 2.0.0":
1489 | version "1.3.9"
1490 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a"
1491 |
1492 | oauth-sign@~0.8.1:
1493 | version "0.8.2"
1494 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1495 |
1496 | object-assign@^4.1.0:
1497 | version "4.1.1"
1498 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1499 |
1500 | once@^1.3.0:
1501 | version "1.4.0"
1502 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1503 | dependencies:
1504 | wrappy "1"
1505 |
1506 | optionator@^0.8.1:
1507 | version "0.8.2"
1508 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1509 | dependencies:
1510 | deep-is "~0.1.3"
1511 | fast-levenshtein "~2.0.4"
1512 | levn "~0.3.0"
1513 | prelude-ls "~1.1.2"
1514 | type-check "~0.3.2"
1515 | wordwrap "~1.0.0"
1516 |
1517 | os-homedir@^1.0.0:
1518 | version "1.0.2"
1519 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1520 |
1521 | os-tmpdir@^1.0.1:
1522 | version "1.0.2"
1523 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1524 |
1525 | "parse5@>= 1.3.1 < 2.0.0":
1526 | version "1.5.1"
1527 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
1528 |
1529 | path-is-absolute@^1.0.0:
1530 | version "1.0.1"
1531 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1532 |
1533 | pinkie-promise@^2.0.0:
1534 | version "2.0.1"
1535 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1536 | dependencies:
1537 | pinkie "^2.0.0"
1538 |
1539 | pinkie@^2.0.0:
1540 | version "2.0.4"
1541 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1542 |
1543 | prelude-ls@~1.1.2:
1544 | version "1.1.2"
1545 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1546 |
1547 | pretty-bytes@^3.0.0:
1548 | version "3.0.1"
1549 | resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf"
1550 | dependencies:
1551 | number-is-nan "^1.0.0"
1552 |
1553 | private@^0.1.6:
1554 | version "0.1.7"
1555 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
1556 |
1557 | process-nextick-args@~1.0.6:
1558 | version "1.0.7"
1559 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1560 |
1561 | prunk@~1.2.1:
1562 | version "1.2.1"
1563 | resolved "https://registry.yarnpkg.com/prunk/-/prunk-1.2.1.tgz#a8427d06563c7e60d411e43d0052bbb5a449188c"
1564 |
1565 | punycode@^1.4.1:
1566 | version "1.4.1"
1567 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1568 |
1569 | q@~1.4.1:
1570 | version "1.4.1"
1571 | resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
1572 |
1573 | qs@~0.5.2:
1574 | version "0.5.6"
1575 | resolved "https://registry.yarnpkg.com/qs/-/qs-0.5.6.tgz#31b1ad058567651c526921506b9a8793911a0384"
1576 |
1577 | qs@~6.3.0:
1578 | version "6.3.1"
1579 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d"
1580 |
1581 | readable-stream@^2.0.2:
1582 | version "2.2.3"
1583 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729"
1584 | dependencies:
1585 | buffer-shims "^1.0.0"
1586 | core-util-is "~1.0.0"
1587 | inherits "~2.0.1"
1588 | isarray "~1.0.0"
1589 | process-nextick-args "~1.0.6"
1590 | string_decoder "~0.10.x"
1591 | util-deprecate "~1.0.1"
1592 |
1593 | regenerate@^1.2.1:
1594 | version "1.3.2"
1595 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
1596 |
1597 | regenerator-runtime@^0.10.0:
1598 | version "0.10.3"
1599 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e"
1600 |
1601 | regenerator-transform@0.9.8:
1602 | version "0.9.8"
1603 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c"
1604 | dependencies:
1605 | babel-runtime "^6.18.0"
1606 | babel-types "^6.19.0"
1607 | private "^0.1.6"
1608 |
1609 | regexpu-core@^2.0.0:
1610 | version "2.0.0"
1611 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
1612 | dependencies:
1613 | regenerate "^1.2.1"
1614 | regjsgen "^0.2.0"
1615 | regjsparser "^0.1.4"
1616 |
1617 | regjsgen@^0.2.0:
1618 | version "0.2.0"
1619 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
1620 |
1621 | regjsparser@^0.1.4:
1622 | version "0.1.5"
1623 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
1624 | dependencies:
1625 | jsesc "~0.5.0"
1626 |
1627 | repeat-string@^1.5.2:
1628 | version "1.6.1"
1629 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1630 |
1631 | repeating@^2.0.0:
1632 | version "2.0.1"
1633 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
1634 | dependencies:
1635 | is-finite "^1.0.0"
1636 |
1637 | "request@>= 2.44.0 < 3.0.0":
1638 | version "2.79.0"
1639 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
1640 | dependencies:
1641 | aws-sign2 "~0.6.0"
1642 | aws4 "^1.2.1"
1643 | caseless "~0.11.0"
1644 | combined-stream "~1.0.5"
1645 | extend "~3.0.0"
1646 | forever-agent "~0.6.1"
1647 | form-data "~2.1.1"
1648 | har-validator "~2.0.6"
1649 | hawk "~3.1.3"
1650 | http-signature "~1.1.0"
1651 | is-typedarray "~1.0.0"
1652 | isstream "~0.1.2"
1653 | json-stringify-safe "~5.0.1"
1654 | mime-types "~2.1.7"
1655 | oauth-sign "~0.8.1"
1656 | qs "~6.3.0"
1657 | stringstream "~0.0.4"
1658 | tough-cookie "~2.3.0"
1659 | tunnel-agent "~0.4.1"
1660 | uuid "^3.0.0"
1661 |
1662 | right-align@^0.1.1:
1663 | version "0.1.3"
1664 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
1665 | dependencies:
1666 | align-text "^0.1.1"
1667 |
1668 | rimraf@~2.2.1, rimraf@~2.2.8:
1669 | version "2.2.8"
1670 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
1671 |
1672 | rollup@^0.36.3:
1673 | version "0.36.4"
1674 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.36.4.tgz#a224494c5386c1d73d38f7bb86f69f5eb011a3d2"
1675 | dependencies:
1676 | source-map-support "^0.4.0"
1677 |
1678 | rsvp@^3.0.13:
1679 | version "3.3.3"
1680 | resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813"
1681 |
1682 | semver@^4.3.3:
1683 | version "4.3.6"
1684 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
1685 |
1686 | sigmund@~1.0.0:
1687 | version "1.0.1"
1688 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
1689 |
1690 | slash@^1.0.0:
1691 | version "1.0.0"
1692 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
1693 |
1694 | sntp@1.x.x:
1695 | version "1.0.9"
1696 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1697 | dependencies:
1698 | hoek "2.x.x"
1699 |
1700 | source-map-support@^0.4.0, source-map-support@^0.4.2:
1701 | version "0.4.11"
1702 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
1703 | dependencies:
1704 | source-map "^0.5.3"
1705 |
1706 | source-map-support@~0.2.8:
1707 | version "0.2.10"
1708 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.2.10.tgz#ea5a3900a1c1cb25096a0ae8cc5c2b4b10ded3dc"
1709 | dependencies:
1710 | source-map "0.1.32"
1711 |
1712 | source-map@0.1.32:
1713 | version "0.1.32"
1714 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266"
1715 | dependencies:
1716 | amdefine ">=0.0.4"
1717 |
1718 | source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1:
1719 | version "0.5.6"
1720 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
1721 |
1722 | source-map@~0.2.0:
1723 | version "0.2.0"
1724 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
1725 | dependencies:
1726 | amdefine ">=0.0.4"
1727 |
1728 | sshpk@^1.7.0:
1729 | version "1.10.2"
1730 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa"
1731 | dependencies:
1732 | asn1 "~0.2.3"
1733 | assert-plus "^1.0.0"
1734 | dashdash "^1.12.0"
1735 | getpass "^0.1.1"
1736 | optionalDependencies:
1737 | bcrypt-pbkdf "^1.0.0"
1738 | ecc-jsbn "~0.1.1"
1739 | jodid25519 "^1.0.0"
1740 | jsbn "~0.1.0"
1741 | tweetnacl "~0.14.0"
1742 |
1743 | string_decoder@~0.10.x:
1744 | version "0.10.31"
1745 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1746 |
1747 | stringstream@~0.0.4:
1748 | version "0.0.5"
1749 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
1750 |
1751 | strip-ansi@^3.0.0:
1752 | version "3.0.1"
1753 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1754 | dependencies:
1755 | ansi-regex "^2.0.0"
1756 |
1757 | supports-color@1.2.0:
1758 | version "1.2.0"
1759 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
1760 |
1761 | supports-color@^2.0.0:
1762 | version "2.0.0"
1763 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1764 |
1765 | "systemjs-builder@0.14.11 - 0.15.x":
1766 | version "0.15.35"
1767 | resolved "https://registry.yarnpkg.com/systemjs-builder/-/systemjs-builder-0.15.35.tgz#5ab7f9627aec4857b3123c1da07030ea1cdd068f"
1768 | dependencies:
1769 | babel-core "^6.9.0"
1770 | babel-plugin-transform-cjs-system-wrapper "^0.3.0"
1771 | babel-plugin-transform-es2015-modules-systemjs "^6.6.5"
1772 | babel-plugin-transform-global-system-wrapper "0.0.1"
1773 | babel-plugin-transform-system-register "0.0.1"
1774 | bluebird "^3.3.4"
1775 | data-uri-to-buffer "0.0.4"
1776 | es6-template-strings "^2.0.0"
1777 | glob "^7.0.3"
1778 | mkdirp "^0.5.1"
1779 | rollup "^0.36.3"
1780 | source-map "^0.5.3"
1781 | systemjs "^0.19.43"
1782 | traceur "0.0.105"
1783 | uglify-js "^2.6.1"
1784 |
1785 | systemjs@^0.19.43:
1786 | version "0.19.46"
1787 | resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.46.tgz#c04574b3335f052a0e3c7a00ee4188c6e4c1e38e"
1788 | dependencies:
1789 | when "^3.7.5"
1790 |
1791 | tiny-lr-fork@0.0.5:
1792 | version "0.0.5"
1793 | resolved "https://registry.yarnpkg.com/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz#1e99e1e2a8469b736ab97d97eefa98c71f76ed0a"
1794 | dependencies:
1795 | debug "~0.7.0"
1796 | faye-websocket "~0.4.3"
1797 | noptify "~0.0.3"
1798 | qs "~0.5.2"
1799 |
1800 | to-fast-properties@^1.0.1:
1801 | version "1.0.2"
1802 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
1803 |
1804 | to-iso-string@0.0.2:
1805 | version "0.0.2"
1806 | resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1"
1807 |
1808 | tough-cookie@~2.3.0:
1809 | version "2.3.2"
1810 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
1811 | dependencies:
1812 | punycode "^1.4.1"
1813 |
1814 | traceur@0.0.105:
1815 | version "0.0.105"
1816 | resolved "https://registry.yarnpkg.com/traceur/-/traceur-0.0.105.tgz#5cf9dee83d6b77861c3d6c44d53859aed7ab0479"
1817 | dependencies:
1818 | commander "2.9.x"
1819 | glob "5.0.x"
1820 | rsvp "^3.0.13"
1821 | semver "^4.3.3"
1822 | source-map-support "~0.2.8"
1823 |
1824 | trim-right@^1.0.1:
1825 | version "1.0.1"
1826 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
1827 |
1828 | tunnel-agent@~0.4.1:
1829 | version "0.4.3"
1830 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
1831 |
1832 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1833 | version "0.14.5"
1834 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1835 |
1836 | type-check@~0.3.2:
1837 | version "0.3.2"
1838 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1839 | dependencies:
1840 | prelude-ls "~1.1.2"
1841 |
1842 | type-detect@0.1.1:
1843 | version "0.1.1"
1844 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
1845 |
1846 | type-detect@^1.0.0:
1847 | version "1.0.0"
1848 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
1849 |
1850 | uglify-js@^2.6.1, uglify-js@~2.6.0:
1851 | version "2.6.4"
1852 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf"
1853 | dependencies:
1854 | async "~0.2.6"
1855 | source-map "~0.5.1"
1856 | uglify-to-browserify "~1.0.0"
1857 | yargs "~3.10.0"
1858 |
1859 | uglify-to-browserify@~1.0.0:
1860 | version "1.0.2"
1861 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
1862 |
1863 | underscore.string@~2.2.1:
1864 | version "2.2.1"
1865 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19"
1866 |
1867 | underscore.string@~2.3.3:
1868 | version "2.3.3"
1869 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d"
1870 |
1871 | underscore.string@~2.4.0:
1872 | version "2.4.0"
1873 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"
1874 |
1875 | underscore@~1.7.0:
1876 | version "1.7.0"
1877 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
1878 |
1879 | uri-path@^1.0.0:
1880 | version "1.0.0"
1881 | resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32"
1882 |
1883 | util-deprecate@~1.0.1:
1884 | version "1.0.2"
1885 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1886 |
1887 | uuid@^3.0.0:
1888 | version "3.0.1"
1889 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
1890 |
1891 | verror@1.3.6:
1892 | version "1.3.6"
1893 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
1894 | dependencies:
1895 | extsprintf "1.0.2"
1896 |
1897 | when@^3.7.5:
1898 | version "3.7.8"
1899 | resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82"
1900 |
1901 | which@~1.0.5:
1902 | version "1.0.9"
1903 | resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f"
1904 |
1905 | window-size@0.1.0:
1906 | version "0.1.0"
1907 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
1908 |
1909 | wordwrap@0.0.2:
1910 | version "0.0.2"
1911 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
1912 |
1913 | wordwrap@~1.0.0:
1914 | version "1.0.0"
1915 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
1916 |
1917 | wrappy@1:
1918 | version "1.0.2"
1919 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1920 |
1921 | xml-name-validator@^1.0.0:
1922 | version "1.0.0"
1923 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-1.0.0.tgz#dcf82ee092322951ef8cc1ba596c9cbfd14a83f1"
1924 |
1925 | "xmlhttprequest@>= 1.6.0 < 2.0.0":
1926 | version "1.8.0"
1927 | resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
1928 |
1929 | xtend@^4.0.0:
1930 | version "4.0.1"
1931 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
1932 |
1933 | yargs@~3.10.0:
1934 | version "3.10.0"
1935 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
1936 | dependencies:
1937 | camelcase "^1.0.2"
1938 | cliui "^2.1.0"
1939 | decamelize "^1.0.0"
1940 | window-size "0.1.0"
1941 |
--------------------------------------------------------------------------------