From eb1bf78895706291174e53102fbda41273793287 Mon Sep 17 00:00:00 2001 From: "yichang.tyc" Date: Fri, 29 Jan 2021 10:40:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E9=80=A0=E4=B8=BAbackend=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gruntfile.js | 2 +- Magefile.go | 17 + README.md | 26 +- dist/.DS_Store | Bin 6148 -> 0 bytes dist/README.md | 93 - dist/css/query-editor.css | 3 - dist/datasource.js | 910 ---- dist/datasource.js.map | 1 - dist/img/yunjiankong.png | Bin 6091 -> 0 bytes dist/json/2019-10-30_ecs_test.json | 306 -- dist/json/2019-10-30_rds_test.json | 309 -- dist/module.js | 51 - dist/module.js.map | 1 - dist/partials/annotations.editor.html | 9 - dist/partials/config.html | 11 - dist/partials/query.editor.html | 147 - dist/partials/query.options.html | 4 - dist/plugin.json | 38 - dist/query_ctrl.js | 254 -- dist/query_ctrl.js.map | 1 - dist/sha1.js | 239 -- dist/sha1.js.map | 1 - dist/signer.js | 199 - dist/signer.js.map | 1 - dist/test/datasource.js | 910 ---- dist/test/datasource.js.map | 1 - dist/test/module.js | 51 - dist/test/module.js.map | 1 - dist/test/query_ctrl.js | 254 -- dist/test/query_ctrl.js.map | 1 - dist/test/sha1.js | 239 -- dist/test/sha1.js.map | 1 - dist/test/signer.js | 199 - dist/test/signer.js.map | 1 - dist/test/spec/datasource_spec.js | 273 -- dist/test/spec/datasource_spec.js.map | 1 - dist/test/spec/test-main.js | 36 - dist/test/spec/test-main.js.map | 1 - dist/test/util.js | 168 - dist/test/util.js.map | 1 - dist/util.js | 168 - dist/util.js.map | 1 - go.mod | 12 + package-lock.json | 5616 ------------------------- pkg/datasource.go | 683 +++ pkg/plugin.go | 38 + src/datasource.js | 479 +-- src/module.js | 8 +- src/partials/config.html | 12 +- src/partials/query.editor.html | 10 +- src/plugin.json | 7 +- src/query_ctrl.js | 11 +- yarn.lock | 2635 ------------ 53 files changed, 1024 insertions(+), 13417 deletions(-) create mode 100644 Magefile.go delete mode 100644 dist/.DS_Store delete mode 100644 dist/README.md delete mode 100644 dist/css/query-editor.css delete mode 100644 dist/datasource.js delete mode 100644 dist/datasource.js.map delete mode 100644 dist/img/yunjiankong.png delete mode 100644 dist/json/2019-10-30_ecs_test.json delete mode 100644 dist/json/2019-10-30_rds_test.json delete mode 100644 dist/module.js delete mode 100644 dist/module.js.map delete mode 100644 dist/partials/annotations.editor.html delete mode 100644 dist/partials/config.html delete mode 100644 dist/partials/query.editor.html delete mode 100644 dist/partials/query.options.html delete mode 100644 dist/plugin.json delete mode 100644 dist/query_ctrl.js delete mode 100644 dist/query_ctrl.js.map delete mode 100644 dist/sha1.js delete mode 100644 dist/sha1.js.map delete mode 100644 dist/signer.js delete mode 100644 dist/signer.js.map delete mode 100644 dist/test/datasource.js delete mode 100644 dist/test/datasource.js.map delete mode 100644 dist/test/module.js delete mode 100644 dist/test/module.js.map delete mode 100644 dist/test/query_ctrl.js delete mode 100644 dist/test/query_ctrl.js.map delete mode 100644 dist/test/sha1.js delete mode 100644 dist/test/sha1.js.map delete mode 100644 dist/test/signer.js delete mode 100644 dist/test/signer.js.map delete mode 100644 dist/test/spec/datasource_spec.js delete mode 100644 dist/test/spec/datasource_spec.js.map delete mode 100644 dist/test/spec/test-main.js delete mode 100644 dist/test/spec/test-main.js.map delete mode 100644 dist/test/util.js delete mode 100644 dist/test/util.js.map delete mode 100644 dist/util.js delete mode 100644 dist/util.js.map create mode 100644 go.mod delete mode 100644 package-lock.json create mode 100644 pkg/datasource.go create mode 100644 pkg/plugin.go delete mode 100644 yarn.lock diff --git a/Gruntfile.js b/Gruntfile.js index 2889d2b..0920e82 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -76,5 +76,5 @@ module.exports = function(grunt) { // } }); - grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:pluginDef', 'babel', 'mochaTest']); + grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:pluginDef', 'babel']); }; diff --git a/Magefile.go b/Magefile.go new file mode 100644 index 0000000..f23b1e1 --- /dev/null +++ b/Magefile.go @@ -0,0 +1,17 @@ +//+build mage + +package main + +import ( + "fmt" + // mage:import + build "github.com/grafana/grafana-plugin-sdk-go/build" +) + +// Hello prints a message (shows that you can define custom Mage targets). +func Hello() { + fmt.Println("hello plugin developer!") +} + +// Default configures the default target. +var Default = build.BuildAll diff --git a/README.md b/README.md index 610c2c8..d8163e8 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,14 @@ ## 3、数据源打包发布方式 a.进入aliyun-cms-grafana目录下,执行grunt命令(需要安装nodejs和npm),则会按照Gruntfile.js里面的配置将项目里面的文件打包到指定的目录, 当前配置是将项目文件打包到dist目录下,发布的时候打包发布整个插件目录下的文件,dist目录下一定是经源文件编译后的。 + b. 服务端编译 + 需要安装 + go 1.14 + mage + 之后在目录中运行 mage -v, 会自动在 dist目录下生成 相应的二进制包。之后跟随前端代码统一发布 + + + ## 4、FAQ a.云监控grafana数据源配置的AK保存在哪里?有没有AK被窃取的风险? 数据源配置AK存储在grafana内置的数据库里,不会通过网络传输AK,只要保证安装grafana机器的安全AK就不会被窃取。 @@ -87,7 +95,21 @@ a.修复window磁盘\转义问题 ## 11、20200730: a.tagFilter(type, regionId, tagType, tagKey) - 支持tagKey参数请求 + 支持tagKey做请求参数 b.优化variable dimensions功能; c.优化部分代码逻辑 - d.取消加密验证 \ No newline at end of file + d.取消加密验证 + e.支持30天内时间区间查询 +## 12、20200806: + a.增加根据queryMetricMeta API 获得dimensions后,按dimensions自动分类处理数据,实现根据dimensions信息绘制图线(queryMetricMeta 的QPS限制比较高,不建议一次刷新超过10个panel,当需要监控图表过多时,建议使用row功能,或者在同一个folder下多构建几个dashboard;) + ​b.优化Grafana同一个dashboard内多个panel同时刷新时,调用queryMetricMeta API 因QPS限制会产生失败问题,增加每次调用会随机延时1s内; + ​c.优化部分代码逻辑,dimensions为空时,会查询当前project和metric下所有的指标数据,当数据体量较大时,建议调大period值; + d.增加grafana服务内meta缓存,此缓存依托于浏览器,点击refresh dashboard会使用缓存内的meta +## 13、20200827: + a.优化触发query方式,仅在操作Y - column或者Y - column describe时自动触发查询,首次进入时仍会触发; + b.增加对Dimensions数据缓存处理,在修改namespace或metric时会刷新缓存; + c.增加对QueryMetricLast支持分页自动查询功能; + +## 14、20210128 + 升级到版本2.0 并生成之前版本1.0 + a. 请求方式改为服务端请求,解决客户端AK可以明文读取的安全问题 \ No newline at end of file diff --git a/dist/.DS_Store b/dist/.DS_Store deleted file mode 100644 index ca5d0e6e71945129431efcf086d0e96e397046d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~F^f4mh3n7#7gpu zObo#Gk7);t0M>LTwjO3?%m>_Y#trxB_H+5ZUN2sxtvcW-eZ*`(w*@I61*Cu!kOER* zK?>wCzTPb8ne-@9Kng5F0slS}y0a!*XM8#sVgw)umczJ?S%NHHAZxO9vO=?*9xPie z#t^SZJ6ZC&nrxlD9hSp~<(h|QedXQN6$w;|Bv*)=KooXQYjz> z{+R+c98QNlUn 0 ? ycol_variables : ycol; - - //自定义监控(acs_custom)、日志监控(acs_logMonitor)处理,只取下标为0的数据 - if (project.indexOf("acs_custom") != -1 || project.indexOf("acs_logMonitor") != -1) { - var dimensionAcsJson = target.dimensions[0]; - var dimensionAcsObj = { - groupId: group.toString(), - dimension: dimensionAcsJson.replace(/\&/gi, "%26").replace(/\{/gi, "%7B").replace(/\}/gi, "%7D") - }; - dimensions = JSON.stringify(dimensionAcsObj); - } else { - //正常数据 - dimensions = ""; - dimensions_variables.forEach(function (dimension, i) { - if (typeof dimension == "string") { - dimension = dimension.includes("{") ? dimension : "{" + dimension; - dimension = dimension.includes("}") ? dimension : dimension + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; - - dimensions += dimension + ","; - } else { - dimension.forEach(function (dimension_i) { - dimension_i = dimension_i.includes("{") ? dimension_i : "{" + dimension_i; - dimension_i = dimension_i.includes("}") ? dimension_i : dimension_i + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; - - dimensions += dimension_i + ","; - }); - } - }); - dimensions = dimensions.substring(0, dimensions.length - 1); - dimensions = "[" + dimensions + "]"; - dimensions = dimensions.replace(/\&/gi, "%26").replace(/\{/gi, "%7B").replace(/\}/gi, "%7D"); - } - //拼接url参数 - var queryConcat = "/?Action=QueryMetricList&Length=1000&Project=" + project + "&Metric=" + metric + "&Period=" + period + "&Dimensions=" + dimensions + "&StartTime=" + parseInt(options.range.from._d.getTime()) + "&EndTime=" + parseInt(options.range.to._d.getTime()); - - //定义Promise元数据、根据URL发起请求 - var request = _this.doNextToken(queryConcat, "", 0).then(function (response) { - var dataDatapoints = response; - var resResult = []; - //处理数据分类 - var target_datapoints = []; - if (dimensions.includes("instanceId")) { - for (var i in dataDatapoints) { - if (!target_datapoints[dataDatapoints[i].instanceId]) { - var arr = []; - arr.push(dataDatapoints[i]); - target_datapoints[dataDatapoints[i].instanceId] = arr; - } else { - target_datapoints[dataDatapoints[i].instanceId].push(dataDatapoints[i]); - } - } - } - // 处理Grafana所需的target值、Target组的所需返回结果集 - ycol.map(function (ycolTarget) { - if (dimensions.includes("instanceId")) { - for (var i in target_datapoints) { - var datapoints = []; - target_datapoints[i].forEach(function (Datapoint) { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 - resResult.push({ - target: describe + i + "." + ycolTarget, - datapoints: datapoints - }); - } - } else { - var datapoints = []; - dataDatapoints.forEach(function (Datapoint) { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 - resResult.push({ - target: describe + ycolTarget, - datapoints: datapoints - }); - } - }); - // 转对象封装 - result = result.concat(typeof resResult == "string" ? JSON.parse(resResult) : resResult); - }); - requests.push(request); - }); - // 统一单独处理返回值 - return Promise.all(requests.map(function (p) { - return p.catch(function (e) { - return e; - }); - })).then(function () { - return { data: result }; - }); - } - }, { - key: "wait", - value: function wait(ms) { - return new Promise(function (resolve) { - return setTimeout(resolve, ms); - }); - } - }, { - key: "doNextToken", - value: async function doNextToken(queryConcat, cursor, count) { - var _this2 = this; - - var path = ""; - if (this.isEmpty(cursor)) { - path = queryConcat; - } else { - path = queryConcat + "&Cursor=" + cursor; - } - var param = { - path: path, - method: "GET" - }; - // 签名已拼接的待查询URL - var query = this.buildRealUrl(param); - if (_.isEmpty(query)) { - var d = this.q.defer(); - d.resolve({ data: [] }); - return d.promise; - } - await this.wait(1000); - //定义Promise元数据、根据URL发起请求 - return this.backendSrv.datasourceRequest({ - url: query, - method: "GET", - headers: this.headers - }).then(function (response) { - var result = []; - if (response.status == "200" && response.data.Code == "200") { - result = angular.fromJson(response.data.Datapoints); - if (count > 20) { - return result; - } - count++; - var nextToken = response.data.Cursor; - if (_this2.isEmpty(response.data.Cursor)) { - return result; - } else { - return _this2.doNextToken(queryConcat, nextToken, count).then(function (data) { - return result.concat(data); - }); - } - } - return result; - }).catch(function () { - return []; - }); - } - }, { - key: "testDatasource", - value: function testDatasource() { - var param = { - path: "/?Action=AccessKeyGet", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - return { - status: "success", - message: "Data source is working", - title: "Success" - }; - } - }); - } - }, { - key: "annotationQuery", - value: function annotationQuery(options) {} - }, { - key: "metricFindQuery", - value: function metricFindQuery(options) { - var _this3 = this; - - var result = []; - //接受一个参数 - var namespacesQuery = options.match(/^namespaces\(([^\)]+?)(,\s?([^,]+?))?\)/); - namespacesQuery = namespacesQuery == null ? options.match(/^namespace\(([^\)]+?)(,\s?([^,]+?))?\)/) : namespacesQuery; - if (namespacesQuery != null) { - var filter = this.util.templateToStr(namespacesQuery[1]); - return this.getProject().then(function (namespaces) { - result = namespaces; - if (!_this3.isEmpty(filter)) { - result = []; - namespaces.map(function (namespace) { - if (namespace.text.includes(filter)) { - result.push(namespace); - } - }); - } - return result; - }); - } - - //接受二个参数 - var metricsQuery = options.match(/^metrics\(([^,]+?),\s?([^,]+?)\)/); - metricsQuery = metricsQuery == null ? options.match(/^metric\(([^,]+?),\s?([^,]+?)\)/) : metricsQuery; - if (metricsQuery != null) { - var namespace = this.util.templateToStr(metricsQuery[1]); - var filter = this.util.templateToStr(metricsQuery[2]); - - result = []; - return this.getMetrics(namespace).then(function (metrics) { - result = metrics; - if (!_this3.isEmpty(filter)) { - result = []; - metrics.map(function (metric) { - if (metric.text.includes(filter)) { - result.push(metric); - } - }); - } - return result; - }); - } - - //接受四个参数,过滤Tag提供key、value选择 - var tagFilterQuery = options.match(/^tagFilter\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - tagFilterQuery = tagFilterQuery == null ? options.match(/^tagsFilter\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : tagFilterQuery; - if (tagFilterQuery != null) { - var type = this.util.templateToStr(tagFilterQuery[1]); - var regionId = this.util.templateToStr(tagFilterQuery[2]); - var tagType = this.isEmpty(tagFilterQuery[3]) ? "" : tagFilterQuery[3]; - var tagKey = this.isEmpty(tagFilterQuery[4]) ? "" : tagFilterQuery[4]; - var path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId; - var tagKeyFilter = []; - if (tagKey) { - path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&Tag.1.key=" + tagKey; - if (tagKey.indexOf("&Tag.2.key=") != -1) { - var tagKeyArry = tagKey.split("&"); - tagKeyArry.forEach(function (tagKeyInd) { - tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf("key=") == -1 ? 0 : tagKeyInd.indexOf("key=") + 4)); - }); - } else { - tagKeyFilter.push(tagKey); - } - - if (tagKey.indexOf("Tag.1.key=") != -1) { - path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&" + tagKey; - } - if (tagKey.indexOf("PageNumber=") != -1) { - path = "/?Action=DescribeTags&PageSize=100&RegionId=" + regionId + "&" + tagKey; - } - if (tagKey.indexOf("&") == 0) { - path = "/?Action=DescribeTags&PageSize=100&RegionId=" + regionId + tagKey; - } - } - var nextToken = ""; - result = []; - return this.tagsFilter(type.toUpperCase(), nextToken, path, tagType, tagKeyFilter).then(function (tagsList) { - return _this3.util.arrayToMap(tagsList); - }); - } - - //接受四个参数,暂不支持数组,提供dimensions选择 - var dimensionsQuery = options.match(/^dimension\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - dimensionsQuery = dimensionsQuery == null ? options.match(/^dimensions\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : dimensionsQuery; - if (dimensionsQuery != null) { - var namespace = this.util.templateToStr(dimensionsQuery[1]); - var metric = this.util.templateToStr(dimensionsQuery[2]); - - var instanceId = dimensionsQuery[3]; - var instanceId_array = this.util.exists(instanceId) ? this.util.resolve(instanceId, {}) : []; - if (instanceId_array.length == 0) { - if (this.isEmpty(instanceId)) { - instanceId_array = []; - } else { - instanceId_array = this.util.strToArray(instanceId); - } - } - var filter = dimensionsQuery[4]; - var filter_array = this.util.exists(filter) ? this.util.resolve(filter, {}) : []; - if (filter_array.length == 0) { - if (this.isEmpty(filter)) { - filter_array = []; - } else { - filter_array = this.util.strToArray(filter); - } - } - result = []; - return this.getDimensions(namespace, metric, "", []).then(function (dimensions) { - var is_instanceId_bool = _this3.isEmpty(instanceId); - var is_filter_bool = _this3.isEmpty(filter); - if (is_instanceId_bool) { - result = dimensions; - } else { - var instanceId_result = []; - dimensions.map(function (dimension) { - instanceId_array.forEach(function (i) { - if (dimension.text.includes(i)) { - instanceId_result.push(dimension); - } - }); - }); - if (is_filter_bool) { - result = instanceId_result; - } else { - instanceId_result.map(function (dimension) { - filter_array.forEach(function (i) { - if (dimension.text.includes(i)) { - result.push(dimension); - } - }); - }); - } - } - return result; - }); - } - - //接受5个参数,暂不支持数组,提供tag选择 - var tagQuery = options.match(/^tag\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - tagQuery = tagQuery == null ? options.match(/^tags\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : tagQuery; - if (tagQuery != null) { - var resourceId = tagQuery[4]; - var resourceId_array = this.util.exists(resourceId) ? this.util.resolve(resourceId, {}) : []; - if (resourceId_array.length == 0) { - if (this.isEmpty(resourceId)) { - resourceId_array = []; - } else { - resourceId_array = []; - resourceId_array = this.util.strToArray(resourceId); - } - } - var tag = tagQuery[5]; - var tag_array = this.util.exists(tag) ? this.util.resolve(tag, {}) : []; - if (tag_array.length == 0) { - if (this.isEmpty(tag)) { - tag_array = []; - } else { - tag_array = []; - tag_array = this.util.strToArray(tag); - } - } - return this.listTagResources(tagQuery[1].toUpperCase(), tagQuery[2], tagQuery[3], resourceId_array, tag_array); - } - return []; - } - }, { - key: "getProject", - value: function getProject() { - var _this4 = this; - - var param = { - path: "/?Action=QueryProjectMeta&PageNumber=1&PageSize=1000", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - data.Resources.Resource.map(function (resource) { - if (!_this4.isEmpty(resource.Project)) { - result.push(resource.Project); - } - }); - } - //增加自定义监控、日志监控选项 - var acs_param = { - path: "/?Action=AccessKeyGet", - method: "GET" - }; - return _this4.backendSrv.datasourceRequest({ - url: _this4.buildRealUrl(acs_param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - result.push("acs_logMonitor_" + data.UserId); - result.push("acs_customMetric_" + data.UserId); - } - return _this4.util.arrayToMap(result); - }); - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getMetrics", - value: function getMetrics(project) { - var _this5 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=" + project, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var result = []; - data.Resources.Resource.map(function (resource) { - if (!_this5.isEmpty(resource.Metric)) { - result.push(resource.Metric); - } - }); - return _this5.util.arrayToMap(result); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getPeriod", - value: function getPeriod(project, metric) { - var _this6 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var period = []; - var resource = data.Resources.Resource; - if (resource.length > 0 && !_this6.isEmpty(resource[0].Periods)) { - period = resource[0].Periods.split(","); - } - return _this6.util.arrayToMap(period); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getStatistics", - value: function getStatistics(project, metric) { - var _this7 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var statistics = []; - var resource = data.Resources.Resource; - if (resource.length > 0 && !_this7.isEmpty(resource[0].Statistics)) { - statistics = resource[0].Statistics.split(","); - } - return _this7.util.arrayToMap(statistics); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getGroups", - value: function getGroups() { - var _this8 = this; - - var param = { - path: "/?Action=ListMyGroups&PageNumber=1&PageSize=9000", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var result = []; - var resource = data.Resources.Resource; - var i = resource.length; - while (i--) { - var group = resource[i]; - var groupInfo = []; - var groupId = group.GroupId; - var groupName = group.GroupName; - if (_this8.isEmpty(groupId) || _this8.isEmpty(groupName)) { - continue; - } - groupInfo.push(groupId, groupName + " / " + groupId); - result.push(groupInfo); - } - return _.map(result, function (d, i) { - return { text: d[1], value: d[0] }; - }); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getDimensions", - value: function getDimensions(project, metric, period, dimensions) { - var _this9 = this; - - if (project.indexOf("acs_customMetric") != -1 || project.indexOf("acs_logMonitor") != -1) { - return; - } - var result = []; - var endTime = new Date().getTime(); - var startTime = endTime - 1 * 60 * 60 * 1000; - var param = { - path: "/?Action=QueryMetricLast&Page=1&Length=90000&Period=" + period + "&Project=" + project + "&Metric=" + metric + "&StartTime=" + startTime + "&EndTime=" + endTime, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.Success == false) { - return; - } - // 构建可选参数dimensions - param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return _this9.backendSrv.datasourceRequest({ - url: _this9.buildRealUrl(param), - method: "GET" - }).then(function (response_meta) { - var data_meta = response_meta.data; - if (data_meta.ErrorCode == 200 && data_meta.Success == true) { - var resource = data_meta.Resources.Resource; - if (resource.length == 0 || _this9.isEmpty(resource[0].Dimensions)) { - return; - } - var dimension = resource[0].Dimensions.split(","); - var datapoints = JSON.parse(data.Datapoints); - datapoints.map(function (datapoint) { - var datapointInfo = '{"'; - dimension.forEach(function (value, index) { - value = value.replace(/"/g, ""); - if (value != "userId") { - if (datapoint[value].indexOf(":\\") != -1) { - datapointInfo += value + '":"' + datapoint[value] + '\\"'; - } else { - datapointInfo += value + '":"' + datapoint[value] + '"'; - } - if (index == dimension.length - 1) { - datapointInfo += "}"; - } else { - datapointInfo += ';"'; - } - } - }); - //去重 - if (result.length == 0) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { - result.push(datapointInfo); - } - } else if (result.length > 0 && !result.includes(datapointInfo)) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { - result.push(datapointInfo); - } - } - }); - return _this9.util.arrayToMap(result); - } - }); - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "tagsFilter", - value: function tagsFilter(type, nextToken, path, tagType, tagKeyFilter) { - var reqUrl = path; - if (!this.isEmpty(nextToken)) { - reqUrl += "&NextToken=" + nextToken; - } - var param = { - path: reqUrl, - method: "GET" - }; - var realUrl = ""; - if ("ECS" == type) { - realUrl = this.buildECSRealUrl(param); - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tags = data.Tags.Tag; - if (tags.length > 0) { - tags.forEach(function (tag) { - if ("key" == tagType) { - if (!result.includes(tag.TagKey)) { - result.push(tag.TagKey); - } - } else if ("value" == tagType) { - if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) { - var value = tag.TagKey + ":/:" + tag.TagValue; - if (!result.includes(value)) { - result.push(value); - } - } - } - }); - } - return result; - }); - } else if ("RDS" == type) { - realUrl = this.buildRDSRealUrl(param); - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tags = data.Items.TagInfos; - if (tags.length > 0) { - tags.forEach(function (tag) { - if ("key" == tagType) { - if (!result.includes(tag.TagKey)) { - result.push(tag.TagKey); - } - } else if ("value" == tagType) { - if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) { - var value = tag.TagKey + ":/:" + tag.TagValue; - if (!result.includes(value)) { - result.push(value); - } - } - } - }); - } - return result; - }); - } - } - }, { - key: "listTagResources", - value: function listTagResources(type, regionId, resourceType, resourceId, tag) { - var _this10 = this; - - type = this.isEmpty(type) ? "ECS" : type; - regionId = this.isEmpty(regionId) ? "cn-hangzhou" : regionId; - if ("ECS" == type) { - resourceType = this.isEmpty(resourceType) ? "instance" : resourceType; - } else if ("RDS" == type) { - resourceType = this.isEmpty(resourceType) ? "INSTANCE" : resourceType; - } - var path = "/?Action=ListTagResources&RegionId=" + regionId + "&ResourceType=" + resourceType; - for (var i = 0; i < resourceId.length; i++) { - if (50 > i) { - var v = resourceId[i]; - if (!this.isEmpty(v)) { - path += "&ResourceId." + (parseInt(i) + 1).toString() + "=" + v; - } - } - } - var tag_key_array = []; - var tag_value_array = []; - tag.forEach(function (t) { - if (!_this10.isEmpty(t)) { - if (t.indexOf(":/:") != -1) { - var t_split = t.split(":/:"); - if (!tag_key_array.includes(t_split[0])) { - tag_key_array.push(t_split[0]); - } - if (!tag_value_array.includes(t_split[1])) { - tag_value_array.push(t_split[1]); - } - } - } - }); - if (tag_key_array.length > 0) { - for (var i = 0; i < tag_key_array.length; i++) { - var key = tag_key_array[i]; - path += "&Tag." + (parseInt(i) + 1).toString() + ".Key=" + key; - } - } else if (tag_key_array.length == 0 && tag.length > 0) { - for (var i = 0; i < tag.length; i++) { - var key = tag[i]; - path += "&Tag." + (parseInt(i) + 1).toString() + ".Key=" + key; - } - } - var nextToken = ""; - return this.tagList(type, nextToken, path, tag_value_array).then(function (rep) { - var distinct_result = []; - rep.forEach(function (instanceId) { - if (!distinct_result.includes(instanceId)) { - distinct_result.push(instanceId); - } - }); - return _this10.util.arrayToMap(distinct_result); - }); - } - }, { - key: "tagList", - value: function tagList(type, nextToken, path, tag_value_array) { - var _this11 = this; - - var reqUrl = path; - if (!this.isEmpty(nextToken)) { - reqUrl += "&NextToken=" + nextToken; - } - var param = { - path: reqUrl, - method: "GET" - }; - var realUrl = ""; - if ("ECS" == type) { - realUrl = this.buildECSRealUrl(param); - } else if ("RDS" == type) { - realUrl = this.buildRDSRealUrl(param); - } - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tagResource = data.TagResources.TagResource; - if (tagResource.length > 0) { - tagResource.forEach(function (resource) { - if (tag_value_array.length > 0) { - if (tag_value_array.includes(resource.TagValue)) { - result.push(resource.ResourceId); - } - } else { - result.push(resource.ResourceId); - } - }); - } - if (_this11.isEmpty(data.NextToken)) { - return result; - } else { - return _this11.tagList(type, data.NextToken, path, tag_value_array).then(function (nextList) { - return result.concat(nextList); - }); - } - }); - } - }, { - key: "buildRealUrl", - value: function buildRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.cmsVersion - }, param); - signer.addAuthorization(); - return this.basePath + signer.request.path; - } - }, { - key: "buildECSRealUrl", - value: function buildECSRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.ecsVersion - }, param); - signer.addAuthorization(); - return this.ecsBasePath + signer.request.path; - } - }, { - key: "buildRDSRealUrl", - value: function buildRDSRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.rdsVersion - }, param); - signer.addAuthorization(); - return this.rdsBasePath + signer.request.path; - } - }, { - key: "isEmpty", - value: function isEmpty(obj) { - var re = new RegExp("^[ ]+$"); - if (!obj || obj == "null" || obj == null || obj == " " || obj == "" || obj == '""' || re.test(obj) || typeof obj == "undefined") { - return true; - } // 为空 - return false; // 不为空 - } - }]); - - return GenericDatasource; - }()); - - _export("GenericDatasource", GenericDatasource); - } - }; -}); -//# sourceMappingURL=datasource.js.map diff --git a/dist/datasource.js.map b/dist/datasource.js.map deleted file mode 100644 index b35cf7e..0000000 --- a/dist/datasource.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/datasource.js"],"names":["_","Util","CmsSigner","GenericDatasource","instanceSettings","$q","backendSrv","templateSrv","type","basePath","url","name","jsonData","q","util","headers","cmsVersion","ecsVersion","ecsBasePath","rdsVersion","rdsBasePath","options","requests","result","targets","forEach","target","project","metric","ycol","xcol","describe","exists","resolve","period","group","dimensions","dimensions_variables","dimension","push","ycol_variables","y_col","indexOf","length","dimensionAcsJson","dimensionAcsObj","groupId","toString","replace","JSON","stringify","i","includes","dimension_i","substring","queryConcat","parseInt","range","from","_d","getTime","to","request","doNextToken","then","response","dataDatapoints","resResult","target_datapoints","instanceId","arr","map","ycolTarget","datapoints","Datapoint","datapoint","concat","parse","Promise","all","p","catch","e","data","ms","setTimeout","cursor","count","path","isEmpty","param","method","query","buildRealUrl","d","defer","promise","wait","datasourceRequest","status","Code","angular","fromJson","Datapoints","nextToken","Cursor","ErrorCode","Success","message","title","namespacesQuery","match","filter","templateToStr","getProject","namespaces","namespace","text","metricsQuery","getMetrics","metrics","tagFilterQuery","regionId","tagType","tagKey","tagKeyFilter","tagKeyArry","split","tagKeyInd","tagsFilter","toUpperCase","tagsList","arrayToMap","dimensionsQuery","instanceId_array","strToArray","filter_array","getDimensions","is_instanceId_bool","is_filter_bool","instanceId_result","tagQuery","resourceId","resourceId_array","tag","tag_array","listTagResources","Resources","Resource","resource","Project","acs_param","UserId","error","console","log","Metric","Periods","statistics","Statistics","groupInfo","GroupId","groupName","GroupName","value","endTime","Date","startTime","response_meta","data_meta","Dimensions","datapointInfo","index","reqUrl","realUrl","buildECSRealUrl","tags","Tags","Tag","TagKey","TagValue","buildRDSRealUrl","Items","TagInfos","resourceType","v","tag_key_array","tag_value_array","t","t_split","key","tagList","rep","distinct_result","tagResource","TagResources","TagResource","ResourceId","NextToken","nextList","signer","accessKeyId","cmsAccessKey","secretAccessKey","cmsSecretKey","version","addAuthorization","obj","re","RegExp","test"],"mappings":"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","file":"datasource.js","sourcesContent":["import _ from \"lodash\";\nimport { Util } from \"./util.js\";\nimport { CmsSigner } from \"./signer.js\";\n\nexport class GenericDatasource {\n constructor(instanceSettings, $q, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.basePath = instanceSettings.url;\n this.name = instanceSettings.name;\n this.jsonData = instanceSettings.jsonData;\n this.q = $q;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.util = new Util(templateSrv);\n this.headers = { \"Content-Type\": \"application/json\" };\n this.cmsVersion = \"2018-03-08\";\n this.ecsVersion = \"2014-05-26\";\n this.ecsBasePath = \"https://ecs.aliyuncs.com\";\n this.rdsVersion = \"2014-08-15\";\n this.rdsBasePath = \"https://rds.aliyuncs.com\";\n }\n\n query(options) {\n var requests = [];\n var result = [];\n options.targets.forEach((target) => {\n //非空参数判空处理\n if (!target.project || !target.metric || !target.ycol || !target.xcol) {\n return;\n }\n //默认数据\n var ycol = target.ycol;\n var xcol = target.xcol;\n var describe = !target.describe ? target.describe : target.describe + \".\";\n //处理模版\n var project = this.util.exists(target.project) ? this.util.resolve(target.project, {}) : target.project;\n var metric = this.util.exists(target.metric) ? this.util.resolve(target.metric, {}) : target.metric;\n var period = this.util.exists(target.period) ? this.util.resolve(target.period, {}) : target.period;\n var group = this.util.exists(target.group) ? this.util.resolve(target.group, {}) : target.group;\n //处理数组模版\n var dimensions = \"\";\n\n var dimensions_variables = [];\n\n target.dimensions.forEach((dimension) => {\n this.util.exists(dimension) ? dimensions_variables.push(this.util.resolve(dimension, {})) : dimensions_variables.push(dimension);\n });\n var ycol_variables = [];\n ycol.forEach((y_col) => {\n y_col.indexOf(\"$\") != -1 ? ycol_variables.push(this.util.resolve(y_col, {})) : ycol_variables.push(y_col);\n });\n ycol = ycol_variables.length > 0 ? ycol_variables : ycol;\n\n //自定义监控(acs_custom)、日志监控(acs_logMonitor)处理,只取下标为0的数据\n if (project.indexOf(\"acs_custom\") != -1 || project.indexOf(\"acs_logMonitor\") != -1) {\n var dimensionAcsJson = target.dimensions[0];\n var dimensionAcsObj = {\n groupId: group.toString(),\n dimension: dimensionAcsJson.replace(/\\&/gi, \"%26\").replace(/\\{/gi, \"%7B\").replace(/\\}/gi, \"%7D\"),\n };\n dimensions = JSON.stringify(dimensionAcsObj);\n } else {\n //正常数据\n dimensions = \"\";\n dimensions_variables.forEach((dimension, i) => {\n if (typeof dimension == \"string\") {\n dimension = dimension.includes(\"{\") ? dimension : \"{\" + dimension;\n dimension = dimension.includes(\"}\") ? dimension : dimension + \"}\";\n dimension = dimension.includes(\"\\\\\") ? dimension.replace(\"\\\\\", \"\\\\\\\\\") : dimension;\n \n dimensions += dimension + \",\";\n } else {\n dimension.forEach((dimension_i) => {\n dimension_i = dimension_i.includes(\"{\") ? dimension_i : \"{\" + dimension_i;\n dimension_i = dimension_i.includes(\"}\") ? dimension_i : dimension_i + \"}\";\n dimension = dimension.includes(\"\\\\\") ? dimension.replace(\"\\\\\", \"\\\\\\\\\") : dimension;\n\n dimensions += dimension_i + \",\";\n });\n }\n });\n dimensions = dimensions.substring(0, dimensions.length - 1);\n dimensions = \"[\" + dimensions + \"]\";\n dimensions = dimensions.replace(/\\&/gi, \"%26\").replace(/\\{/gi, \"%7B\").replace(/\\}/gi, \"%7D\");\n }\n //拼接url参数\n var queryConcat = \"/?Action=QueryMetricList&Length=1000&Project=\" + project + \"&Metric=\" + metric + \"&Period=\" + period\n + \"&Dimensions=\" + dimensions + \"&StartTime=\" + parseInt(options.range.from._d.getTime()) + \"&EndTime=\" + parseInt(options.range.to._d.getTime());\n\n //定义Promise元数据、根据URL发起请求\n var request = this.doNextToken(queryConcat, \"\", 0).then((response) => {\n var dataDatapoints = response;\n var resResult = [];\n //处理数据分类\n var target_datapoints = [];\n if (dimensions.includes(\"instanceId\")) {\n for (var i in dataDatapoints) {\n if (!target_datapoints[dataDatapoints[i].instanceId]) {\n var arr = [];\n arr.push(dataDatapoints[i]);\n target_datapoints[dataDatapoints[i].instanceId] = arr;\n } else {\n target_datapoints[dataDatapoints[i].instanceId].push(\n dataDatapoints[i]\n );\n }\n }\n }\n // 处理Grafana所需的target值、Target组的所需返回结果集\n ycol.map((ycolTarget) => {\n if (dimensions.includes(\"instanceId\")) {\n for (var i in target_datapoints) {\n var datapoints = [];\n target_datapoints[i].forEach((Datapoint) => {\n var datapoint = [];\n datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]);\n // 封装返回目标的第二层数组值\n datapoints.push(datapoint);\n });\n // 封装返回目标的第三层数组值\n resResult.push({\n target: describe + i + \".\" + ycolTarget,\n datapoints: datapoints,\n });\n }\n } else {\n var datapoints = [];\n dataDatapoints.forEach((Datapoint) => {\n var datapoint = [];\n datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]);\n // 封装返回目标的第二层数组值\n datapoints.push(datapoint);\n });\n // 封装返回目标的第三层数组值\n resResult.push({\n target: describe + ycolTarget,\n datapoints: datapoints,\n });\n }\n });\n // 转对象封装\n result = result.concat(\n typeof resResult == \"string\" ? JSON.parse(resResult) : resResult\n );\n });\n requests.push(request);\n });\n // 统一单独处理返回值\n return Promise.all(requests.map((p) => p.catch((e) => e))).then(() => {\n return { data: result };\n });\n }\n wait(ms) {\n return new Promise(resolve => setTimeout(resolve, ms))\n }\n\n async doNextToken(queryConcat, cursor, count) {\n var path = \"\";\n if (this.isEmpty(cursor)) {\n path = queryConcat;\n } else {\n path = queryConcat + \"&Cursor=\" + cursor;\n }\n var param = {\n path: path,\n method: \"GET\",\n };\n // 签名已拼接的待查询URL\n var query = this.buildRealUrl(param);\n if (_.isEmpty(query)) {\n var d = this.q.defer();\n d.resolve({ data: [] });\n return d.promise;\n }\n await this.wait(1000);\n //定义Promise元数据、根据URL发起请求\n return this.backendSrv\n .datasourceRequest({\n url: query,\n method: \"GET\",\n headers: this.headers,\n })\n .then((response) => {\n var result = [];\n if (response.status == \"200\" && response.data.Code == \"200\") {\n result = angular.fromJson(response.data.Datapoints);\n if(count > 20){\n return result;\n }\n count++;\n var nextToken = response.data.Cursor;\n if (this.isEmpty(response.data.Cursor)) {\n return result;\n } else {\n return this.doNextToken(queryConcat, nextToken, count).then((data) => {\n return result.concat(data); \n });\n }\n }\n return result;\n }).catch(() => {\n return [];\n });\n }\n\n // 测试连接数据源接口\n testDatasource() {\n var param = {\n path: \"/?Action=AccessKeyGet\",\n method: \"GET\",\n };\n return this.backendSrv.datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n }).then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n return {\n status: \"success\",\n message: \"Data source is working\",\n title: \"Success\",\n };\n }\n });\n }\n\n annotationQuery(options) {}\n\n metricFindQuery(options) {\n var result = [];\n //接受一个参数\n var namespacesQuery = options.match(/^namespaces\\(([^\\)]+?)(,\\s?([^,]+?))?\\)/);\n namespacesQuery =\n namespacesQuery == null ? options.match(/^namespace\\(([^\\)]+?)(,\\s?([^,]+?))?\\)/) : namespacesQuery;\n if (namespacesQuery != null) {\n var filter = this.util.templateToStr(namespacesQuery[1]);\n return this.getProject().then((namespaces) => {\n result = namespaces;\n if (!this.isEmpty(filter)) {\n result = [];\n namespaces.map((namespace) => {\n if (namespace.text.includes(filter)) {\n result.push(namespace);\n }\n });\n }\n return result;\n });\n }\n\n //接受二个参数\n var metricsQuery = options.match(/^metrics\\(([^,]+?),\\s?([^,]+?)\\)/);\n metricsQuery =\n metricsQuery == null ? options.match(/^metric\\(([^,]+?),\\s?([^,]+?)\\)/) : metricsQuery;\n if (metricsQuery != null) {\n var namespace = this.util.templateToStr(metricsQuery[1]);\n var filter = this.util.templateToStr(metricsQuery[2]);\n\n result = [];\n return this.getMetrics(namespace).then((metrics) => {\n result = metrics;\n if (!this.isEmpty(filter)) {\n result = [];\n metrics.map((metric) => {\n if (metric.text.includes(filter)) {\n result.push(metric);\n }\n });\n }\n return result;\n });\n }\n\n //接受四个参数,过滤Tag提供key、value选择\n var tagFilterQuery = options.match(/^tagFilter\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n tagFilterQuery =\n tagFilterQuery == null ? options.match(/^tagsFilter\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : tagFilterQuery;\n if (tagFilterQuery != null) {\n var type = this.util.templateToStr(tagFilterQuery[1]);\n var regionId = this.util.templateToStr(tagFilterQuery[2]);\n var tagType = this.isEmpty(tagFilterQuery[3]) ? \"\" : tagFilterQuery[3];\n var tagKey = this.isEmpty(tagFilterQuery[4]) ? \"\" : tagFilterQuery[4];\n var path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId;\n var tagKeyFilter = [];\n if(tagKey){\n path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId + \"&Tag.1.key=\" + tagKey;\n if(tagKey.indexOf(\"&Tag.2.key=\") != -1){\n var tagKeyArry = tagKey.split(\"&\");\n tagKeyArry.forEach(tagKeyInd => {\n tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf(\"key=\") == -1 ? 0 : tagKeyInd.indexOf(\"key=\") + 4));\n })\n }else{\n tagKeyFilter.push(tagKey);\n }\n\n if(tagKey.indexOf(\"Tag.1.key=\") != -1){\n path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId + \"&\" + tagKey;\n }\n if(tagKey.indexOf(\"PageNumber=\") != -1){\n path = \"/?Action=DescribeTags&PageSize=100&RegionId=\" + regionId + \"&\" + tagKey;\n }\n if(tagKey.indexOf(\"&\") == 0){\n path = \"/?Action=DescribeTags&PageSize=100&RegionId=\" + regionId + tagKey;\n }\n }\n var nextToken = \"\";\n result = [];\n return this.tagsFilter(type.toUpperCase(), nextToken, path, tagType, tagKeyFilter).then((tagsList) => {\n return this.util.arrayToMap(tagsList);\n });\n }\n\n //接受四个参数,暂不支持数组,提供dimensions选择\n var dimensionsQuery = options.match(/^dimension\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n dimensionsQuery =\n dimensionsQuery == null ? options.match(/^dimensions\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : dimensionsQuery;\n if (dimensionsQuery != null) {\n var namespace = this.util.templateToStr(dimensionsQuery[1]);\n var metric = this.util.templateToStr(dimensionsQuery[2]);\n\n var instanceId = dimensionsQuery[3];\n var instanceId_array = this.util.exists(instanceId) ? this.util.resolve(instanceId, {}) : [];\n if (instanceId_array.length == 0) {\n if (this.isEmpty(instanceId)) {\n instanceId_array = [];\n } else {\n instanceId_array = this.util.strToArray(instanceId);\n }\n }\n var filter = dimensionsQuery[4];\n var filter_array = this.util.exists(filter) ? this.util.resolve(filter, {}) : [];\n if (filter_array.length == 0) {\n if (this.isEmpty(filter)) {\n filter_array = [];\n } else {\n filter_array = this.util.strToArray(filter);\n }\n }\n result = [];\n return this.getDimensions(namespace, metric, \"\", []).then(\n (dimensions) => {\n var is_instanceId_bool = this.isEmpty(instanceId);\n var is_filter_bool = this.isEmpty(filter);\n if (is_instanceId_bool) {\n result = dimensions;\n } else {\n var instanceId_result = [];\n dimensions.map((dimension) => {\n instanceId_array.forEach((i) => {\n if (dimension.text.includes(i)) {\n instanceId_result.push(dimension);\n }\n });\n });\n if (is_filter_bool) {\n result = instanceId_result;\n } else {\n instanceId_result.map((dimension) => {\n filter_array.forEach((i) => {\n if (dimension.text.includes(i)) {\n result.push(dimension);\n }\n });\n });\n }\n }\n return result;\n }\n );\n }\n\n //接受5个参数,暂不支持数组,提供tag选择\n var tagQuery = options.match(/^tag\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n tagQuery =\n tagQuery == null ? options.match(/^tags\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : tagQuery;\n if (tagQuery != null) {\n var resourceId = tagQuery[4];\n var resourceId_array = this.util.exists(resourceId) ? this.util.resolve(resourceId, {}) : [];\n if (resourceId_array.length == 0) {\n if (this.isEmpty(resourceId)) {\n resourceId_array = [];\n } else {\n resourceId_array = [];\n resourceId_array = this.util.strToArray(resourceId);\n }\n }\n var tag = tagQuery[5];\n var tag_array = this.util.exists(tag) ? this.util.resolve(tag, {}) : [];\n if (tag_array.length == 0) {\n if (this.isEmpty(tag)) {\n tag_array = [];\n } else {\n tag_array = [];\n tag_array = this.util.strToArray(tag);\n }\n }\n return this.listTagResources(\n tagQuery[1].toUpperCase(),\n tagQuery[2],\n tagQuery[3],\n resourceId_array,\n tag_array\n );\n }\n return [];\n }\n\n //返回所有的Project,QueryProjectMeta的API无自定义监控project、日志监控project,已拼接\n getProject() {\n var param = {\n path: \"/?Action=QueryProjectMeta&PageNumber=1&PageSize=1000\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var result = [];\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n data.Resources.Resource.map((resource) => {\n if (!this.isEmpty(resource.Project)) {\n result.push(resource.Project);\n }\n });\n }\n //增加自定义监控、日志监控选项\n var acs_param = {\n path: \"/?Action=AccessKeyGet\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(acs_param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n result.push(\"acs_logMonitor_\" + data.UserId);\n result.push(\"acs_customMetric_\" + data.UserId);\n }\n return this.util.arrayToMap(result);\n });\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project返回对应的所有的Metrics,无自定义监控、日志监控project对应的Metrics\n getMetrics(project) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=\" +\n project,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var result = [];\n data.Resources.Resource.map((resource) => {\n if (!this.isEmpty(resource.Metric)) {\n result.push(resource.Metric);\n }\n });\n return this.util.arrayToMap(result);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project及Metrics返回对应的所有的Period,无自定义监控、日志监控project对应的Period\n getPeriod(project, metric) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var period = [];\n var resource = data.Resources.Resource;\n if (resource.length > 0 && !this.isEmpty(resource[0].Periods)) {\n period = resource[0].Periods.split(\",\");\n }\n return this.util.arrayToMap(period);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project及Metrics返回对应的所有的Statistics,未去除已选项,无自定义监控、日志监控project对应的Period\n getStatistics(project, metric) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var statistics = [];\n var resource = data.Resources.Resource;\n if (resource.length > 0 && !this.isEmpty(resource[0].Statistics)) {\n statistics = resource[0].Statistics.split(\",\");\n }\n return this.util.arrayToMap(statistics);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //返回所有的Groups,自定义监控、日志使用\n getGroups() {\n var param = {\n path: \"/?Action=ListMyGroups&PageNumber=1&PageSize=9000\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var result = [];\n var resource = data.Resources.Resource;\n var i = resource.length;\n while (i--) {\n var group = resource[i];\n var groupInfo = [];\n var groupId = group.GroupId;\n var groupName = group.GroupName;\n if (this.isEmpty(groupId) || this.isEmpty(groupName)) {\n continue;\n }\n groupInfo.push(groupId, groupName + \" / \" + groupId);\n result.push(groupInfo);\n }\n return _.map(result, (d, i) => {\n return { text: d[1], value: d[0] };\n });\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n getDimensions(project, metric, period, dimensions) {\n if (\n project.indexOf(\"acs_customMetric\") != -1 ||\n project.indexOf(\"acs_logMonitor\") != -1\n ) {\n return;\n }\n var result = [];\n var endTime = new Date().getTime();\n var startTime = endTime - 1 * 60 * 60 * 1000;\n var param = {\n path:\n \"/?Action=QueryMetricLast&Page=1&Length=90000&Period=\" +\n period +\n \"&Project=\" +\n project +\n \"&Metric=\" +\n metric +\n \"&StartTime=\" +\n startTime +\n \"&EndTime=\" +\n endTime,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.Success == false) {\n return;\n }\n // 构建可选参数dimensions\n param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response_meta) => {\n var data_meta = response_meta.data;\n if (data_meta.ErrorCode == 200 && data_meta.Success == true) {\n var resource = data_meta.Resources.Resource;\n if (\n resource.length == 0 ||\n this.isEmpty(resource[0].Dimensions)\n ) {\n return;\n }\n var dimension = resource[0].Dimensions.split(\",\");\n var datapoints = JSON.parse(data.Datapoints);\n datapoints.map((datapoint) => {\n var datapointInfo = '{\"';\n dimension.forEach(function (value, index) {\n value = value.replace(/\"/g, \"\");\n if (value != \"userId\") {\n if (datapoint[value].indexOf(\":\\\\\") != -1) {\n datapointInfo += value + '\":\"' + datapoint[value] + '\\\\\"';\n } else {\n datapointInfo += value + '\":\"' + datapoint[value] + '\"';\n }\n if (index == dimension.length - 1) {\n datapointInfo += \"}\";\n } else {\n datapointInfo += ';\"';\n }\n }\n });\n //去重\n if (result.length == 0) {\n if (dimensions.length == 0) {\n result.push(datapointInfo);\n } else if (\n dimensions.length > 0 &&\n !dimensions.includes(datapointInfo)\n ) {\n result.push(datapointInfo);\n }\n } else if (\n result.length > 0 &&\n !result.includes(datapointInfo)\n ) {\n if (dimensions.length == 0) {\n result.push(datapointInfo);\n } else if (\n dimensions.length > 0 &&\n !dimensions.includes(datapointInfo)\n ) {\n result.push(datapointInfo);\n }\n }\n });\n return this.util.arrayToMap(result);\n }\n });\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n // 暂时无翻页功能,无nextToken字段返回\n tagsFilter(type, nextToken, path, tagType, tagKeyFilter) {\n var reqUrl = path;\n if (!this.isEmpty(nextToken)) {\n reqUrl += \"&NextToken=\" + nextToken;\n }\n var param = {\n path: reqUrl,\n method: \"GET\",\n };\n var realUrl = \"\";\n if (\"ECS\" == type) {\n realUrl = this.buildECSRealUrl(param);\n return this.backendSrv.datasourceRequest({\n url: realUrl,\n method: \"GET\",\n }).then((response) => {\n var result = [];\n var data = response.data;\n var tags = data.Tags.Tag;\n if (tags.length > 0) {\n tags.forEach((tag) => {\n if (\"key\" == tagType) {\n if (!result.includes(tag.TagKey)) {\n result.push(tag.TagKey);\n }\n } else if (\"value\" == tagType) {\n if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) {\n var value = tag.TagKey + \":/:\" + tag.TagValue;\n if (!result.includes(value)) {\n result.push(value);\n }\n }\n }\n });\n }\n return result;\n });\n } else if (\"RDS\" == type) {\n realUrl = this.buildRDSRealUrl(param);\n return this.backendSrv\n .datasourceRequest({\n url: realUrl,\n method: \"GET\",\n })\n .then((response) => {\n var result = [];\n var data = response.data;\n var tags = data.Items.TagInfos;\n if (tags.length > 0) {\n tags.forEach((tag) => {\n if (\"key\" == tagType) {\n if (!result.includes(tag.TagKey)) {\n result.push(tag.TagKey);\n }\n } else if (\"value\" == tagType) {\n if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) {\n var value = tag.TagKey + \":/:\" + tag.TagValue;\n if (!result.includes(value)) {\n result.push(value);\n }\n }\n }\n });\n }\n return result;\n });\n }\n }\n\n listTagResources(type, regionId, resourceType, resourceId, tag) {\n type = this.isEmpty(type) ? \"ECS\" : type;\n regionId = this.isEmpty(regionId) ? \"cn-hangzhou\" : regionId;\n if (\"ECS\" == type) {\n resourceType = this.isEmpty(resourceType) ? \"instance\" : resourceType;\n } else if (\"RDS\" == type) {\n resourceType = this.isEmpty(resourceType) ? \"INSTANCE\" : resourceType;\n }\n var path = \"/?Action=ListTagResources&RegionId=\" + regionId + \"&ResourceType=\" + resourceType;\n for (var i = 0; i < resourceId.length; i++) {\n if (50 > i) {\n var v = resourceId[i];\n if (!this.isEmpty(v)) {\n path += \"&ResourceId.\" + (parseInt(i) + 1).toString() + \"=\" + v;\n }\n }\n }\n var tag_key_array = [];\n var tag_value_array = [];\n tag.forEach((t) => {\n if (!this.isEmpty(t)) {\n if (t.indexOf(\":/:\") != -1) {\n var t_split = t.split(\":/:\");\n if (!tag_key_array.includes(t_split[0])) {\n tag_key_array.push(t_split[0]);\n }\n if (!tag_value_array.includes(t_split[1])) {\n tag_value_array.push(t_split[1]);\n }\n }\n }\n });\n if (tag_key_array.length > 0) {\n for (var i = 0; i < tag_key_array.length; i++) {\n var key = tag_key_array[i];\n path += \"&Tag.\" + (parseInt(i) + 1).toString() + \".Key=\" + key;\n }\n } else if (tag_key_array.length == 0 && tag.length > 0) {\n for (var i = 0; i < tag.length; i++) {\n var key = tag[i];\n path += \"&Tag.\" + (parseInt(i) + 1).toString() + \".Key=\" + key;\n }\n }\n var nextToken = \"\";\n return this.tagList(type, nextToken, path, tag_value_array).then((rep) => {\n var distinct_result = [];\n rep.forEach((instanceId) => {\n if (!distinct_result.includes(instanceId)) {\n distinct_result.push(instanceId);\n }\n });\n return this.util.arrayToMap(distinct_result);\n });\n }\n // 处理nextToken问题\n tagList(type, nextToken, path, tag_value_array) {\n var reqUrl = path;\n if (!this.isEmpty(nextToken)) {\n reqUrl += \"&NextToken=\" + nextToken;\n }\n var param = {\n path: reqUrl,\n method: \"GET\",\n };\n var realUrl = \"\";\n if (\"ECS\" == type) {\n realUrl = this.buildECSRealUrl(param);\n } else if (\"RDS\" == type) {\n realUrl = this.buildRDSRealUrl(param);\n }\n return this.backendSrv.datasourceRequest({\n url: realUrl,\n method: \"GET\",\n }).then((response) => {\n var result = [];\n var data = response.data;\n var tagResource = data.TagResources.TagResource;\n if (tagResource.length > 0) {\n tagResource.forEach((resource) => {\n if (tag_value_array.length > 0) {\n if (tag_value_array.includes(resource.TagValue)) {\n result.push(resource.ResourceId);\n }\n } else {\n result.push(resource.ResourceId);\n }\n });\n }\n if (this.isEmpty(data.NextToken)) {\n return result;\n } else {\n return this.tagList(type, data.NextToken, path, tag_value_array).then(\n (nextList) => {\n return result.concat(nextList);\n }\n );\n }\n });\n }\n\n // 根据云监控API文档处理URL签名,做封装调用接口用\n buildRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.cmsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.basePath + signer.request.path;\n }\n\n // 根据ECS API文档处理URL签名,做封装调用接口用\n buildECSRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.ecsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.ecsBasePath + signer.request.path;\n }\n\n // 根据RDS API文档处理URL签名,做封装调用接口用\n buildRDSRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.rdsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.rdsBasePath + signer.request.path;\n }\n\n // 判断对象是否为空对象 true 空\n isEmpty(obj) {\n var re = new RegExp(\"^[ ]+$\");\n if (\n !obj ||\n obj == \"null\" ||\n obj == null ||\n obj == \" \" ||\n obj == \"\" ||\n obj == '\"\"' ||\n re.test(obj) ||\n typeof obj == \"undefined\"\n ) {\n return true;\n } // 为空\n return false; // 不为空\n }\n}\n"]} \ No newline at end of file diff --git a/dist/img/yunjiankong.png b/dist/img/yunjiankong.png deleted file mode 100644 index 4af79d1a0da08ed44777b21a95fccda58b76ff75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6091 zcmds*=QkWs_wT2XiIze1HbEkK4^anW5WPh79%LkX8QmxmVGttGd+%KkOb{Y^Z_%R% zLG?H_nf`<+UFCYrJ+PhL{9_&07zAokvg~QkN*rP;q6>z zP@WC|(8Q@A<@7LSJEnI(GQCW=cJ%Oq-W`T_(955X3&W7gvCz2OX0se;i=l5W1XKyy zbToQe+QW2mj3^g~3!ReOhX~Me6!D@qb)I<(&*B3fERgMd%L5OA$iX4i9&=A`94JTr z9iY#)D|RNHKK(u9b++rZ-CHtwbaTS-;~@zYOeutD#|gkm)cS&;$Xzl^3kpIc+|?Hf zW`#B03B}rz{NPX)neQxNCwYf>He$~yOb=#_wf`FNLWLHF{g^wfV=HodU>HML5hnl# zajN9x_1WK=X74{TduWM(=)|E^lZJ0ikt^z7pS1@;bJ=m9gmMJopop#%OhPD-Tv>&l z_a(|20inQ&?Q`9|^&Tf;^fRg}2+B_HwEX-(;XHg*`;iWJYx@5tkTNN=-U()G>r=0f z1&hN8?-4&|&fp%+3RL(u`sk}-_?luZIre^4NfX+&MS}KDmhD~%x6S86p9AtgA=$*KOn93n7m|b9qG(Wee&P?ipg9Q6A%m?Ew zdGORGFqfsw`Ht@az*G!H{>~9~$UJy-4*Zhy(}FQP+23tmH8R*7LJ?M%eNIxJ-@beS z)H8#}dS%<*WEQ^E)c*|4jWW$BTtgko3;4UHvSg5UUq7QOqQHKv+Flv|WpE*M+Hn#z zBsvhoA8Z|%9inaH{F(9>6m#k*JkM(lQ;hR^Am)e)qTwVBDiFQeA z+5e4?qqtz#pEk5YiT|?`R@dLd{l?GdJ>p=x!MSkUHICPKBFMhMIa<>A@XEP39C5mMAK~cl&|^Sw>GC)B5f;1DY!Z0knpFk^w<+U_H8x(_OLe z5w&yDbi}o#9{2rP)%m%$k>V|FV+_Kx!$|n_uBM1PTd&G4fwM&|fYN*4cTtaj@_+YK zPLxQ4j=h}>E?EJ(vw^hDe@-usZzj9sQsijQRxY;Mj1jeT*9+GyrFM&lJ|uc?ABF8a z83b>b?Bods64q_e)OGheBgmD<)(4^#)0{6YPA+f7r}1Bx(CXf(QU>!Or*v z{cq?1_hC=sIfCwh0HL165PqdeXDS&MP&;-05gf|E1+$hGfk(r2l^1evz zgcxgJFPH8$TbNFMfEz(7&)q~2zFohC{JpB95rKPYAA)!Son=X!d`S}>;5w|d(gAt| zFH7b6WyEzZQza4<;Jp*OWb>XRwEh4l(#0RC#|}bM+e=e5wd3Q|eG~Mw-NBW#nT>#J zqV9l*dd8S=J0QouEN5f#Hre0jD?A>v2P2UV<&(n6_kM0DUv#8yEQ^xXj_3 z!F%jaHk9+jkLmIgj{4U)hcM7a&IP&}POy{>og*)I@2`tx^2Px0>gY)9Hcl7vL z^J9n(iv<1e3=)KY1@z$Hr-3-~1 zJ`CuD5?m0|>lPyF1vL9)A^R4wblSbPgEWyx#q8X$I<%+%Bpo2I7*_JKe}O6frOls% zwmpmIRy=%ra30;NA}M((ZbN+=Oa3{|@od+^fQV7uQKA!5N}UV!YA zRqz_5GjPS9Yvj8GlxxD-y6>6;5KQ7u-+>QXfwYL;z=puA1{ ztdw93NLv9|`Ubu0P*iWZlLzjpG0qr+|8(b z17x_%6lz&`H8}jp#vW@v0!Mb|w7KR~ZEg3*U^iH;&z9M(UI%}#Pz*d0b7_Blg5!&A zYIu}1tt#=8%bBDLHTH*g-4D6==+B2?avgh5Z)*L?tc{eM`OEI6?7O-1=j`uPy)vzN z@;#mk-!Rr~$!-zRJl1IOmV8G|Slu5z?BV=pYP+kQ*v4jchZ3G>4F1S8GOCoFUw1OQ zAWDclYF>H+vVUKd>O&!zuQ5%jv~z<=bzUNc^*5^+?F)l-Q5r1!?cNfpKt^)-jshU&z^S`~-?obXjbLhu!d1f_=J&W5n>cuR^L1~;AS zQZwA+%r)7GtDci>Ld>vyo42$m?7>vaJ$s?lg|nV^_A!pgr{%}Y`9eZlaO=2a0jvjl zA0l*6=ph5Wp|5+izl}#2b*Gco+qN&atrf^#J}%w$zRevfH$SX^*S9xw!1l|_*d*>; zbF6jBP5BEJdcax3@3)+h8VK`M!a2+eG4cWZ>wfUrNpPXD7=EO?#vb6G(B#6rRTdL8 zb$OC*AI2AE-Nv1~{oBk3G7>O`P6uZPYJzNDSr-pyZw;x1xMg}eo1XB2ms*}K21qyA z_Ni|DA@>Kp+GDW4qQ-N(A<$-UGjO-Ql3Ze&$=(xyQj#X45Swv#=7c2e2zO*hu}ZTso(KwP`ImD zr7-a}2^Z}IZoExNT1%>;ZdUiFquxDv9VdQ7jLh;#=~Z=k;vJU;tO(UrU-vsfZL=48 z5ly$yR(`^7nkI>K+CZwmdIRc*_v8|j-GO1a3QI8)8%GoV72kkU2j^ltR5^dBwGfET zd+Z$Wu9XTDnHX&qbT34=MT|vI^QkK!i_v`#?YS9qK9IU4uAYk{q7SMcj?D*+*a(N*2N`JK+EGg+jT*~!@w;4 zD+{h6CF(54pKIq5*A%H+Pak=!=)>7!jH(sI+?C2G)zbn631=)EfII`s!+mWX|9<-M zc^AIjNQ06J~OvL16hRA8I#G7#WRd^N)FDVha&+ z#S|oexuO^)SmR?^p(&i+d}BB88};RM#W#EYjx8j6sOWGgsh?4tE&-=@I()ID*BVd% zvFU^x7Oly9Lrf{G-%-Q}%w7@^NcykXLBzjv5u$$ef%08L6&CI%oHR#k8P#r{(oR^X z{z>n7rKt;iDdJPv9MkoaBjd7`b`Wn^%lTxrEx&Tv#PjU}%awdw(JIT~rsXMPmkW^? zH;ll-a2s=aS<)x+z!DF9lNG!D|Li*>V`n#hJ-02;rHM#z60blX~BLe9%30$hk6N68+V zYnALKp`{%UX8{kJ{G_z}qhc~`1KDEVw4*kmxmTQVHPVB3#XtzFSrk~oD}@_ibbm^Q zT)_-j(8T^>h&(u-Bld$*nQE4XS{$*(R|3(CK%G3+9d(_p%kPc>bf5Hug)g3(Vhb0N zrD`?E5(!j<-(J|WrT)M1uJDO^-hquMq6s#G1saRs;1yO@k1r`*-Z z_uf2y#Hm{){p)j_);Zp+i2)y&-;y{BXzXti=kms_Jp}lRw5+km8cOrQDuD6Hb?s_FC5I!{n*qsLi_7allrK-PbPL2?T(NcZeJ3HFhG4r1g)D@I-|>pu8%x1- zLQd`dcz7Yh<^#MBZRfT?p8`Hgv?{-?Ih~$t|5z)rj_z=FNv~prTEjZ?wo#(`@7FE}0c?kf!jueWblB~LdTE7P@O z%+LAPWQzg=EDT8vCWLsB+!ns5n8X}$?9uL5Y#gs!?yIuw*eAuw)kCtC3w<3B;*TH7 zTz~o$NMs_`W}Z@; z6BHzmc%=_))EnDq!ikb*rS4_Ag?uI-*O8W3de)a3Q1)q$T-(ydD&lDdxNxWRk}rr1 zXY>p%>tV$|`VAGRN&}rT$azha%S*AR0SH$rbr2G(GdglrTX(3cJl6y5cZBu*WOi<| z<0G`asUmF^{73ZnZxNtHILS1VbGPx{WE!nfWtiIi8Iuz?!4)5Y3@29`wanxiA*zL{ z?rZDD^ADStgXwz!zxpm|sf7^hbxX8gv;XuJM0;avK1J@-C6nO|E1Rf%LCFQTp@D=n zUndU_%*HIt$m5{sl60@-@4g|-hwUW9Ma(m!o_)M~I(D&!H}=CG+YMysM1DN)m=e|+ z$#)&Y!|TVOtKb{H`j;{bt=gV=Ml@DjKtNO${r31w7v4u~bMsZ3*oJptdG?@Z>qqNt zd2@Y?K$9EC9&)vYmG2Vk%uO==8z^ef0J@wz#U{x{8;Slx22A>L(9(odDy_So-FCXy z{NCrkr_6L^Ak|E7a?Vhv;*`jhKQxOO!JD&%(_&tZ1}L6iYYBiBUJsG~c5K%6jObL# zbZKzZJ%ET$&FAy`cLG_YR+pK~uN63y7ao{{rUzbJ^seNC0e_+$w+9XU5cPxAiG_pZ z1(|Ce;>aF_5{-oXc@DpU#*?r}AAYq5(gqPRoahLvi-WsVq z5;aJiKA3)`xV1=2A86}E)?D@k@=(`>Y8lz;<$JL$7>r$0ab{t_- zx&-_%S41bK=c)ge`%1}YVQq{6j5XFmYO}_we#pM4UwiZ)0gmyNG^4M+%^rpLdxV-; z<1Q0%yL$epM(iF++|x5!;s=ydvIB-qbbLR1$%Q~g3y^8eC_4Yqgj8~uML;{~XUcv5GV?NK@km%_bf+I1mFR$6q zC^|(PUGeh;nDDcuIYoHB(J%Wnh^V3fH_Zxh;dDkXQEKV(ZLC{r#{=@-+>Da*0fD-| z@)DIGR`2~LFQkLO>UrCV-A;pfI^BysqPO@DrrV&@a`r4Jfa>){Fybg z)5!N%IDXLZGrMpLZst;}*$KHI+Y~iPjdI_`sYBha*vNmZu+ca4uXn)9-=NlR?yM~o z(N|Fx`(vfI9On83#@NI;~x|aKOfM{W|Z_ATe z70JuqpFV0k?7g;exn1H#RzXHTyDX(s7U>HIq27g_tujfU}vdRGFATiO}K zp7V&!*meB#iK+GK%TfZ&Lms2MTTN7|WM3GN9aUDJh72Kb-}A%$w+Ft`A-9m_3Gh~` zjtL?XJ?0*(SKb}$pdNJhqrmNJXJZn4nT5kc+czzgZtIQ%Xio30hoBzU6MBV;aP9- zET@iG9`(-cPOUB%FtYO&+$zs~G^!PbgN8MVAUqVeoc8}qC-@t1-G`(5ca1Q0w~!v7 MqNsr^m$wN19}0?EYybcN diff --git a/dist/json/2019-10-30_ecs_test.json b/dist/json/2019-10-30_ecs_test.json deleted file mode 100644 index 94887a7..0000000 --- a/dist/json/2019-10-30_ecs_test.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_CMS_GRAFANA SERVICE", - "label": "CMS Grafana Service", - "description": "", - "type": "datasource", - "pluginId": "aliyun_cms_grafana_datasource", - "pluginName": "CMS Grafana Service" - } - ], - "__requires": [ - { - "type": "datasource", - "id": "aliyun_cms_grafana_datasource", - "name": "CMS Grafana Service", - "version": "1.0.1" - }, - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "6.4.3" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "iteration": 1573095675036, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "describe": "", - "dimensions": [ - "$dimension" - ], - "group": "", - "metric": "$metric", - "period": "", - "project": "$namespace", - "refId": "A", - "target": [ - "Average" - ], - "type": "timeserie", - "xcol": "timestamp", - "ycol": [ - "Average" - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Panel Title", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "schemaVersion": 20, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "namespace(ecs)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [], - "query": "namespace(ecs)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "metric($namespace,null)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "metric", - "options": [], - "query": "metric($namespace,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "tagFilter(ecs,cn-shanghai,value,null)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": true, - "name": "tagFilter", - "options": [], - "query": "tagFilter(ecs,cn-shanghai,value,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "tagFilter(ecs,cn-shanghai,value,$tag)", - "tags": [ - "acs:autoscaling:scalingGroupId", - "acs:ros:stackId", - "app", - "cs.cluster.id", - "cs.cluster.name", - "cs.scaling.group.id", - "GotoAliyun", - "k8s.aliyun.com", - "k8s.io/cluster-autoscaler", - "k8s.io/cluster-autoscaler/node-template/label/policy", - "k8s.io/cluster-autoscaler/node-template/label/workload_type", - "ros-aliyun-created", - "SMC" - ], - "tagsQuery": "tagFilter(ecs,cn-shanghai,key,null)", - "type": "query", - "useTags": true - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "tag(ecs,cn-shanghai,instance,null,$tagFilter)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "tag", - "options": [], - "query": "tag(ecs,cn-shanghai,instance,null,$tagFilter)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "dimension($namespace,$metric,$tag,null)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "dimension", - "options": [], - "query": "dimension($namespace,$metric,$tag,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "2019-10-30_ecs_test", - "uid": "KVzmuAAWz", - "version": 22 -} \ No newline at end of file diff --git a/dist/json/2019-10-30_rds_test.json b/dist/json/2019-10-30_rds_test.json deleted file mode 100644 index 0efed8c..0000000 --- a/dist/json/2019-10-30_rds_test.json +++ /dev/null @@ -1,309 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_CMS_GRAFANA SERVICE", - "label": "CMS Grafana Service", - "description": "", - "type": "datasource", - "pluginId": "aliyun_cms_grafana_datasource", - "pluginName": "CMS Grafana Service" - } - ], - "__requires": [ - { - "type": "datasource", - "id": "aliyun_cms_grafana_datasource", - "name": "CMS Grafana Service", - "version": "1.0.1" - }, - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "6.4.3" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "iteration": 1573095655188, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "describe": "", - "dimensions": [ - "$dimension" - ], - "group": "", - "metric": "$metric", - "period": "60", - "project": "$namespace", - "refId": "A", - "target": [ - "Average" - ], - "type": "timeserie", - "xcol": "timestamp", - "ycol": [ - "Average" - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Rds", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "schemaVersion": 20, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "namespace(_rds_)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [], - "query": "namespace(_rds_)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "metric", - "options": [], - "query": "metric($namespace,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": true, - "name": "tagsFilter", - "options": [], - "query": "tagsFilter(rds,cn-shanghai,value,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "tagsFilter(rds,cn-shanghai,value,$tag)", - "tags": [ - "name01", - "name", - "test", - "team" - ], - "tagsQuery": "tagsFilter(rds,cn-shanghai,key,null)", - "type": "query", - "useTags": true - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "tags", - "options": [], - "query": "tag(rds,cn-shanghai,INSTANCE,null,$tagsFilter)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_CMS_GRAFANA SERVICE}", - "definition": "", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "dimension", - "options": [], - "query": "dimension($namespace,$metric,$tags,null)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "2019-10-30_rds_test", - "uid": "FYKKT0AZz", - "version": 8 -} \ No newline at end of file diff --git a/dist/module.js b/dist/module.js deleted file mode 100644 index 8592cf2..0000000 --- a/dist/module.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -System.register(['./datasource', './query_ctrl'], function (_export, _context) { - "use strict"; - - var GenericDatasource, GenericDatasourceQueryCtrl, GenericConfigCtrl, GenericQueryOptionsCtrl, GenericAnnotationsQueryCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - return { - setters: [function (_datasource) { - GenericDatasource = _datasource.GenericDatasource; - }, function (_query_ctrl) { - GenericDatasourceQueryCtrl = _query_ctrl.GenericDatasourceQueryCtrl; - }], - execute: function () { - _export('ConfigCtrl', GenericConfigCtrl = function GenericConfigCtrl() { - _classCallCheck(this, GenericConfigCtrl); - }); - - GenericConfigCtrl.templateUrl = 'partials/config.html'; - - _export('QueryOptionsCtrl', GenericQueryOptionsCtrl = function GenericQueryOptionsCtrl() { - _classCallCheck(this, GenericQueryOptionsCtrl); - }); - - GenericQueryOptionsCtrl.templateUrl = 'partials/query.options.html'; - - _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl = function GenericAnnotationsQueryCtrl() { - _classCallCheck(this, GenericAnnotationsQueryCtrl); - }); - - GenericAnnotationsQueryCtrl.templateUrl = 'partials/annotations.editor.html'; - - _export('Datasource', GenericDatasource); - - _export('QueryCtrl', GenericDatasourceQueryCtrl); - - _export('ConfigCtrl', GenericConfigCtrl); - - _export('QueryOptionsCtrl', GenericQueryOptionsCtrl); - - _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl); - } - }; -}); -//# sourceMappingURL=module.js.map diff --git a/dist/module.js.map b/dist/module.js.map deleted file mode 100644 index 0e55e6d..0000000 --- a/dist/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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"]} \ No newline at end of file diff --git a/dist/partials/annotations.editor.html b/dist/partials/annotations.editor.html deleted file mode 100644 index f4422ca..0000000 --- a/dist/partials/annotations.editor.html +++ /dev/null @@ -1,9 +0,0 @@ - -
Query
-
-
- -
-
- - diff --git a/dist/partials/config.html b/dist/partials/config.html deleted file mode 100644 index 4af11e5..0000000 --- a/dist/partials/config.html +++ /dev/null @@ -1,11 +0,0 @@ - - -

cloudmonitor service details

-
-
-
AccessKeyId
-
AccessKey
-
-
diff --git a/dist/partials/query.editor.html b/dist/partials/query.editor.html deleted file mode 100644 index c50cf59..0000000 --- a/dist/partials/query.editor.html +++ /dev/null @@ -1,147 +0,0 @@ - -
-
- -
-
- - -
-
- -   Namespace - - 名字空间,表明监控数据所属产品,如"acs_ecs_dashboard","acs_rds_dashboard";支持自定义监控指标:acs_custom_$uid;日志监控指标:acs_logMonitor_$uid. - - - - -
- -
- - Metric - - 监控项名称,例如cpu_total、cpu_other. - - - - -
- -
- - Period - - 时间间隔,统一用秒数来计算,例如60,300,900.如果不填写,则按照注册监控项时申明的上报周期来查询原始数据.如果填写统计周期,则查询对应的统计数据. - - - - -
- -
- - Group - - 云监控应用分组. - - - - - -
-
- -
-
- -   Dimensions - - 监控数据维度.样例:{"instanceId":"xx-xxxx";"device":"/xx/xx"},{"instanceId":"xx-xxxx";"state":"xxx"},{"instanceId":"xx-xxxx";"port":"xx";"vip":"0.0.0.0"} - - - - -
- -
- -
-
- -
-
- -   Y - column - - 统计目标,例如Average、Maximum. - - - - -
- -
-
- {{ycol}} - -
-
-
- - X - column - - 时间轴,默认timestamp. - - - -
-
- - Y - column describe - - 相同统计目标区分标识. - - - -
-
-
diff --git a/dist/partials/query.options.html b/dist/partials/query.options.html deleted file mode 100644 index b460011..0000000 --- a/dist/partials/query.options.html +++ /dev/null @@ -1,4 +0,0 @@ -
-
-
-
diff --git a/dist/plugin.json b/dist/plugin.json deleted file mode 100644 index 3356e7c..0000000 --- a/dist/plugin.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "CMS Grafana Service", - "id": "aliyun_cms_grafana_datasource", - "type": "datasource", - - "partials": { - "config": "public/app/plugins/datasource/aliyun-cms-grafana/partials/config.html" - }, - - "metrics": true, - "annotations": true, - - "info": { - "description": "plugin for aliyun CMS", - "author": { - "name": "aliyun CMS Team", - "url": "https://aliyun.com/product/jiankong" - }, - "logos": { - "small": "img/yunjiankong.png", - "large": "img/yunjiankong.png" - }, - "links": [ - {"name": "GitHub", "url": "https://github.com/aliyun/aliyun-cms-grafana.git"}, - {"name": "MIT License", "url": "https://github.com/aliyun/aliyun-cms-grafana.git"} - ], - - "version": "1.0.1", - "created": "2018-10-10", - "modify":"2019-04-11", - "cms open api version":"20180308" - }, - - "dependencies": { - "grafanaVersion": "5.x.x", - "plugins": [ ] - } -} diff --git a/dist/query_ctrl.js b/dist/query_ctrl.js deleted file mode 100644 index 15cf599..0000000 --- a/dist/query_ctrl.js +++ /dev/null @@ -1,254 +0,0 @@ -'use strict'; - -System.register(['app/plugins/sdk', './util.js', './css/query-editor.css!'], function (_export, _context) { - "use strict"; - - var QueryCtrl, Util, _createClass, GenericDatasourceQueryCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - return { - setters: [function (_appPluginsSdk) { - QueryCtrl = _appPluginsSdk.QueryCtrl; - }, function (_utilJs) { - Util = _utilJs.Util; - }, function (_cssQueryEditorCss) {}], - execute: function () { - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl = function (_QueryCtrl) { - _inherits(GenericDatasourceQueryCtrl, _QueryCtrl); - - function GenericDatasourceQueryCtrl($scope, $injector, templateSrv) { - _classCallCheck(this, GenericDatasourceQueryCtrl); - - var _this = _possibleConstructorReturn(this, (GenericDatasourceQueryCtrl.__proto__ || Object.getPrototypeOf(GenericDatasourceQueryCtrl)).call(this, $scope, $injector, templateSrv)); - - _this.scope = $scope; - _this.util = new Util(templateSrv); - _this.target.type = _this.target.type || 'timeserie'; - _this.target.target = _this.target.ycol; - _this.target.describe = _this.target.describe; - _this.target.xcol = _this.target.xcol || 'timestamp'; - _this.target.project = _this.target.project || 'acs_ecs_dashboard'; - _this.target.metric = _this.target.metric; - _this.target.period = _this.target.period; - _this.target.group = _this.target.group; - _this.target.dimensions = _this.target.dimensions || []; - _this.dimensions; - _this.target.ycol = _this.target.ycol || []; - _this.statistics; - - return _this; - } - - _createClass(GenericDatasourceQueryCtrl, [{ - key: 'getOptions', - value: function getOptions(query) { - this.checkIsNull(); - return this.datasource.metricFindQuery(query || ''); - } - }, { - key: 'getProjects', - value: function getProjects() { - this.checkIsNull(); - return this.datasource.getProject(); - } - }, { - key: 'getMetrics', - value: function getMetrics() { - this.checkIsNull(); - if (this.target.project) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - return this.datasource.getMetrics(project); - } - } - }, { - key: 'getPeriod', - value: function getPeriod() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - return this.datasource.getPeriod(project, metric); - } - } - }, { - key: 'getStatistics', - value: function getStatistics() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - return this.datasource.getStatistics(project, metric); - } - } - }, { - key: 'ycolPush', - value: function ycolPush(ycol) { - this.checkIsNull(); - if (!ycol || _.includes(this.target.ycol, ycol)) { - return; - } - this.target.ycol.push(ycol); - this.statistics = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'ycolSplice', - value: function ycolSplice(ycol) { - this.checkIsNull(); - if (!ycol || !_.includes(this.target.ycol, ycol)) { - return; - } - var i = this.target.ycol.indexOf(ycol); - this.target.ycol.splice(i, 1); - this.statistics = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'getGroups', - value: function getGroups() { - this.checkIsNull(); - return this.datasource.getGroups(); - } - }, { - key: 'getDimensions', - value: function getDimensions() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - var period = this.util.exists(this.target.period) == true ? this.util.resolve(this.target.period, {}) : this.target.period; - var dimensions = this.target.dimensions; - if (this.target.dimensions.indexOf("$") != -1) { - dimensions = this.util.resolve(this.target.dimensions, {}); - }; - return this.datasource.getDimensions(project, metric, period, dimensions); - } - } - }, { - key: 'dimensionsPush', - value: function dimensionsPush(dimension) { - this.checkIsNull(); - if (!dimension || _.includes(this.target.dimensions, dimension)) { - return; - } - this.target.dimensions.push(dimension); - this.dimensions = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'dimensionsSplice', - value: function dimensionsSplice(dimension) { - this.checkIsNull(); - if (!dimension || !_.includes(this.target.dimensions, dimension)) { - return; - } - var i = this.target.dimensions.indexOf(dimension); - this.target.dimensions.splice(i, 1); - this.dimensions = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'toggleEditorMode', - value: function toggleEditorMode() { - this.target.rawQuery = !this.target.rawQuery; - } - }, { - key: 'onChangeInternal', - value: function onChangeInternal() { - this.checkIsNull(); - this.panelCtrl.refresh(); // Asks the panel to refresh data. - } - }, { - key: 'checkIsNull', - value: function checkIsNull() { - var re = new RegExp("^[ ]+$"); - if (!this.target.project || this.target.project == "null" || this.target.project == " " || this.target.project == '""' || re.test(this.target.project)) { - this.target.project = ""; - } - if (!this.target.metric || this.target.metric == "null" || this.target.metric == " " || this.target.metric == '""' || re.test(this.target.metric)) { - this.target.metric = ""; - } - if (!this.target.period || this.target.period == "null" || this.target.period == " " || this.target.period == '""' || re.test(this.target.period)) { - this.target.period = ""; - } - if (!this.target.group || this.target.group == "null" || this.target.group == " " || this.target.group == '""' || re.test(this.target.group)) { - this.target.group = ""; - }; - if (this.target.dimensions.length < 1) { - this.target.dimensions = []; - } - if (!this.dimensions || this.dimensions == "null" || this.dimensions == " " || this.dimensions == '""' || re.test(this.dimensions)) { - this.dimensions = ""; - } - if (!this.target.ycol || this.target.ycol == "null" || this.target.ycol == " " || this.target.ycol == '""' || re.test(this.target.ycol)) { - this.target.ycol = ""; - } - if (!this.statistics || this.statistics == "null" || this.statistics == " " || this.statistics == '""' || re.test(this.statistics)) { - this.statistics = ""; - } - if (!this.target.xcol || this.target.xcol == "null" || this.target.xcol == " " || this.target.xcol == '""' || re.test(this.target.xcol)) { - this.target.xcol = ""; - } - if (!this.target.describe || this.target.describe == "null" || this.target.describe == " " || this.target.describe == '""' || re.test(this.target.describe)) { - this.target.describe = ""; - } - } - }]); - - return GenericDatasourceQueryCtrl; - }(QueryCtrl)); - - _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl); - - GenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html'; - } - }; -}); -//# sourceMappingURL=query_ctrl.js.map diff --git a/dist/query_ctrl.js.map b/dist/query_ctrl.js.map deleted file mode 100644 index c575e7c..0000000 --- a/dist/query_ctrl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/query_ctrl.js"],"names":["QueryCtrl","Util","GenericDatasourceQueryCtrl","$scope","$injector","templateSrv","scope","util","target","type","ycol","describe","xcol","project","metric","period","group","dimensions","statistics","query","checkIsNull","datasource","metricFindQuery","getProject","exists","resolve","getMetrics","getPeriod","getStatistics","_","includes","push","panelCtrl","refresh","i","indexOf","splice","getGroups","getDimensions","dimension","rawQuery","re","RegExp","test","length","templateUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAQA,e,kBAAAA,S;;AACAC,U,WAAAA,I;;;;;;;;;;;;;;;;;;;;;4CAGKC,0B;;;AAEX,4CAAYC,MAAZ,EAAoBC,SAApB,EAA+BC,WAA/B,EAA6C;AAAA;;AAAA,8JACrCF,MADqC,EAC7BC,SAD6B,EACnBC,WADmB;;AAE3C,gBAAKC,KAAL,GAAaH,MAAb;AACA,gBAAKI,IAAL,GAAY,IAAIN,IAAJ,CAASI,WAAT,CAAZ;AACA,gBAAKG,MAAL,CAAYC,IAAZ,GAAmB,MAAKD,MAAL,CAAYC,IAAZ,IAAoB,WAAvC;AACA,gBAAKD,MAAL,CAAYA,MAAZ,GAAqB,MAAKA,MAAL,CAAYE,IAAjC;AACA,gBAAKF,MAAL,CAAYG,QAAZ,GAAuB,MAAKH,MAAL,CAAYG,QAAnC;AACA,gBAAKH,MAAL,CAAYI,IAAZ,GAAmB,MAAKJ,MAAL,CAAYI,IAAZ,IAAoB,WAAvC;AACA,gBAAKJ,MAAL,CAAYK,OAAZ,GAAsB,MAAKL,MAAL,CAAYK,OAAZ,IAAuB,mBAA7C;AACA,gBAAKL,MAAL,CAAYM,MAAZ,GAAqB,MAAKN,MAAL,CAAYM,MAAjC;AACA,gBAAKN,MAAL,CAAYO,MAAZ,GAAqB,MAAKP,MAAL,CAAYO,MAAjC;AACA,gBAAKP,MAAL,CAAYQ,KAAZ,GAAoB,MAAKR,MAAL,CAAYQ,KAAhC;AACA,gBAAKR,MAAL,CAAYS,UAAZ,GAAyB,MAAKT,MAAL,CAAYS,UAAZ,IAA0B,EAAnD;AACA,gBAAKA,UAAL;AACA,gBAAKT,MAAL,CAAYE,IAAZ,GAAmB,MAAKF,MAAL,CAAYE,IAAZ,IAAoB,EAAvC;AACA,gBAAKQ,UAAL;;AAf2C;AAiB5C;;;;qCAEUC,K,EAAO;AAChB,iBAAKC,WAAL;AACA,mBAAO,KAAKC,UAAL,CAAgBC,eAAhB,CAAgCH,SAAS,EAAzC,CAAP;AACD;;;wCAEa;AACZ,iBAAKC,WAAL;AACA,mBAAO,KAAKC,UAAL,CAAgBE,UAAhB,EAAP;AACD;;;uCAEY;AACX,iBAAKH,WAAL;AACA,gBAAG,KAAKZ,MAAL,CAAYK,OAAf,EAAuB;AACrB,kBAAIA,UAAU,KAAKN,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYK,OAA7B,KAAyC,IAAzC,GAA8C,KAAKN,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYK,OAA9B,EAAuC,EAAvC,CAA9C,GAAyF,KAAKL,MAAL,CAAYK,OAAnH;AACA,qBAAO,KAAKQ,UAAL,CAAgBK,UAAhB,CAA2Bb,OAA3B,CAAP;AACD;AACF;;;sCAEW;AACV,iBAAKO,WAAL;AACA,gBAAG,KAAKZ,MAAL,CAAYK,OAAZ,IAAuB,KAAKL,MAAL,CAAYM,MAAtC,EAA6C;AAC3C,kBAAID,UAAU,KAAKN,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYK,OAA7B,KAAyC,IAAzC,GAA8C,KAAKN,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYK,OAA9B,EAAuC,EAAvC,CAA9C,GAAyF,KAAKL,MAAL,CAAYK,OAAnH;AACA,kBAAIC,SAAS,KAAKP,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYM,MAA7B,KAAwC,IAAxC,GAA6C,KAAKP,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYM,MAA9B,EAAsC,EAAtC,CAA7C,GAAuF,KAAKN,MAAL,CAAYM,MAAhH;AACA,qBAAO,KAAKO,UAAL,CAAgBM,SAAhB,CAA0Bd,OAA1B,EAAkCC,MAAlC,CAAP;AACD;AACF;;;0CAEe;AACd,iBAAKM,WAAL;AACA,gBAAG,KAAKZ,MAAL,CAAYK,OAAZ,IAAuB,KAAKL,MAAL,CAAYM,MAAtC,EAA6C;AAC3C,kBAAID,UAAU,KAAKN,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYK,OAA7B,KAAyC,IAAzC,GAA8C,KAAKN,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYK,OAA9B,EAAuC,EAAvC,CAA9C,GAAyF,KAAKL,MAAL,CAAYK,OAAnH;AACA,kBAAIC,SAAS,KAAKP,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYM,MAA7B,KAAwC,IAAxC,GAA6C,KAAKP,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYM,MAA9B,EAAsC,EAAtC,CAA7C,GAAuF,KAAKN,MAAL,CAAYM,MAAhH;AACA,qBAAO,KAAKO,UAAL,CAAgBO,aAAhB,CAA8Bf,OAA9B,EAAsCC,MAAtC,CAAP;AACD;AACF;;;mCAEQJ,I,EAAK;AACZ,iBAAKU,WAAL;AACA,gBAAG,CAACV,IAAD,IAASmB,EAAEC,QAAF,CAAW,KAAKtB,MAAL,CAAYE,IAAvB,EAA6BA,IAA7B,CAAZ,EAAgD;AAC5C;AACH;AACD,iBAAKF,MAAL,CAAYE,IAAZ,CAAiBqB,IAAjB,CAAsBrB,IAAtB;AACA,iBAAKQ,UAAL,GAAkB,EAAlB;AACA,iBAAKc,SAAL,CAAeC,OAAf;AACD;;;qCAEUvB,I,EAAK;AACd,iBAAKU,WAAL;AACA,gBAAG,CAACV,IAAD,IAAS,CAACmB,EAAEC,QAAF,CAAW,KAAKtB,MAAL,CAAYE,IAAvB,EAA6BA,IAA7B,CAAb,EAAiD;AAC7C;AACH;AACD,gBAAIwB,IAAI,KAAK1B,MAAL,CAAYE,IAAZ,CAAiByB,OAAjB,CAAyBzB,IAAzB,CAAR;AACA,iBAAKF,MAAL,CAAYE,IAAZ,CAAiB0B,MAAjB,CAAwBF,CAAxB,EAA0B,CAA1B;AACA,iBAAKhB,UAAL,GAAkB,EAAlB;AACA,iBAAKc,SAAL,CAAeC,OAAf;AACD;;;sCAEW;AACV,iBAAKb,WAAL;AACA,mBAAO,KAAKC,UAAL,CAAgBgB,SAAhB,EAAP;AACD;;;0CAEe;AACd,iBAAKjB,WAAL;AACA,gBAAG,KAAKZ,MAAL,CAAYK,OAAZ,IAAuB,KAAKL,MAAL,CAAYM,MAAtC,EAA6C;AAC3C,kBAAID,UAAU,KAAKN,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYK,OAA7B,KAAyC,IAAzC,GAA8C,KAAKN,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYK,OAA9B,EAAuC,EAAvC,CAA9C,GAAyF,KAAKL,MAAL,CAAYK,OAAnH;AACA,kBAAIC,SAAS,KAAKP,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYM,MAA7B,KAAwC,IAAxC,GAA6C,KAAKP,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYM,MAA9B,EAAsC,EAAtC,CAA7C,GAAuF,KAAKN,MAAL,CAAYM,MAAhH;AACA,kBAAIC,SAAS,KAAKR,IAAL,CAAUiB,MAAV,CAAiB,KAAKhB,MAAL,CAAYO,MAA7B,KAAwC,IAAxC,GAA6C,KAAKR,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYO,MAA9B,EAAsC,EAAtC,CAA7C,GAAuF,KAAKP,MAAL,CAAYO,MAAhH;AACA,kBAAIE,aAAa,KAAKT,MAAL,CAAYS,UAA7B;AACA,kBAAG,KAAKT,MAAL,CAAYS,UAAZ,CAAuBkB,OAAvB,CAA+B,GAA/B,KAAuC,CAAC,CAA3C,EAA6C;AAC3ClB,6BAAW,KAAKV,IAAL,CAAUkB,OAAV,CAAkB,KAAKjB,MAAL,CAAYS,UAA9B,EAA0C,EAA1C,CAAX;AACD;AACD,qBAAO,KAAKI,UAAL,CAAgBiB,aAAhB,CAA8BzB,OAA9B,EAAsCC,MAAtC,EAA6CC,MAA7C,EAAoDE,UAApD,CAAP;AACD;AACF;;;yCAEcsB,S,EAAU;AACvB,iBAAKnB,WAAL;AACA,gBAAG,CAACmB,SAAD,IAAcV,EAAEC,QAAF,CAAW,KAAKtB,MAAL,CAAYS,UAAvB,EAAmCsB,SAAnC,CAAjB,EAAgE;AAC5D;AACH;AACD,iBAAK/B,MAAL,CAAYS,UAAZ,CAAuBc,IAAvB,CAA4BQ,SAA5B;AACA,iBAAKtB,UAAL,GAAkB,EAAlB;AACA,iBAAKe,SAAL,CAAeC,OAAf;AACD;;;2CAEgBM,S,EAAU;AACzB,iBAAKnB,WAAL;AACA,gBAAG,CAACmB,SAAD,IAAc,CAACV,EAAEC,QAAF,CAAW,KAAKtB,MAAL,CAAYS,UAAvB,EAAmCsB,SAAnC,CAAlB,EAAiE;AAC7D;AACH;AACD,gBAAIL,IAAI,KAAK1B,MAAL,CAAYS,UAAZ,CAAuBkB,OAAvB,CAA+BI,SAA/B,CAAR;AACA,iBAAK/B,MAAL,CAAYS,UAAZ,CAAuBmB,MAAvB,CAA8BF,CAA9B,EAAgC,CAAhC;AACA,iBAAKjB,UAAL,GAAkB,EAAlB;AACA,iBAAKe,SAAL,CAAeC,OAAf;AACD;;;6CAEkB;AACjB,iBAAKzB,MAAL,CAAYgC,QAAZ,GAAuB,CAAC,KAAKhC,MAAL,CAAYgC,QAApC;AACD;;;6CAEkB;AACjB,iBAAKpB,WAAL;AACA,iBAAKY,SAAL,CAAeC,OAAf,GAFiB,CAES;AAC3B;;;wCAGY;AACX,gBAAIQ,KAAK,IAAIC,MAAJ,CAAW,QAAX,CAAT;AACA,gBAAG,CAAC,KAAKlC,MAAL,CAAYK,OAAb,IAAwB,KAAKL,MAAL,CAAYK,OAAZ,IAAuB,MAA/C,IACE,KAAKL,MAAL,CAAYK,OAAZ,IAAuB,GADzB,IACgC,KAAKL,MAAL,CAAYK,OAAZ,IAAuB,IADvD,IAEE4B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYK,OAApB,CAFL,EAEkC;AAChC,mBAAKL,MAAL,CAAYK,OAAZ,GAAsB,EAAtB;AACD;AACD,gBAAG,CAAC,KAAKL,MAAL,CAAYM,MAAb,IAAuB,KAAKN,MAAL,CAAYM,MAAZ,IAAsB,MAA7C,IACE,KAAKN,MAAL,CAAYM,MAAZ,IAAsB,GADxB,IAC+B,KAAKN,MAAL,CAAYM,MAAZ,IAAsB,IADrD,IAEE2B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYM,MAApB,CAFL,EAEiC;AAC/B,mBAAKN,MAAL,CAAYM,MAAZ,GAAqB,EAArB;AACD;AACD,gBAAG,CAAC,KAAKN,MAAL,CAAYO,MAAb,IAAuB,KAAKP,MAAL,CAAYO,MAAZ,IAAsB,MAA7C,IACE,KAAKP,MAAL,CAAYO,MAAZ,IAAsB,GADxB,IAC+B,KAAKP,MAAL,CAAYO,MAAZ,IAAsB,IADrD,IAEE0B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYO,MAApB,CAFL,EAEiC;AAC/B,mBAAKP,MAAL,CAAYO,MAAZ,GAAqB,EAArB;AACD;AACD,gBAAG,CAAC,KAAKP,MAAL,CAAYQ,KAAb,IAAsB,KAAKR,MAAL,CAAYQ,KAAZ,IAAqB,MAA3C,IACE,KAAKR,MAAL,CAAYQ,KAAZ,IAAqB,GADvB,IAC8B,KAAKR,MAAL,CAAYQ,KAAZ,IAAqB,IADnD,IAEEyB,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYQ,KAApB,CAFL,EAEgC;AAC9B,mBAAKR,MAAL,CAAYQ,KAAZ,GAAoB,EAApB;AACD;AACD,gBAAG,KAAKR,MAAL,CAAYS,UAAZ,CAAuB2B,MAAvB,GAAgC,CAAnC,EAAqC;AACnC,mBAAKpC,MAAL,CAAYS,UAAZ,GAAyB,EAAzB;AACD;AACD,gBAAG,CAAC,KAAKA,UAAN,IAAoB,KAAKA,UAAL,IAAmB,MAAvC,IACE,KAAKA,UAAL,IAAmB,GADrB,IAC4B,KAAKA,UAAL,IAAmB,IAD/C,IAEEwB,GAAGE,IAAH,CAAQ,KAAK1B,UAAb,CAFL,EAE8B;AAC5B,mBAAKA,UAAL,GAAkB,EAAlB;AACD;AACD,gBAAG,CAAC,KAAKT,MAAL,CAAYE,IAAb,IAAqB,KAAKF,MAAL,CAAYE,IAAZ,IAAoB,MAAzC,IACE,KAAKF,MAAL,CAAYE,IAAZ,IAAoB,GADtB,IAC6B,KAAKF,MAAL,CAAYE,IAAZ,IAAoB,IADjD,IAEE+B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYE,IAApB,CAFL,EAE+B;AAC7B,mBAAKF,MAAL,CAAYE,IAAZ,GAAmB,EAAnB;AACD;AACD,gBAAG,CAAC,KAAKQ,UAAN,IAAoB,KAAKA,UAAL,IAAmB,MAAvC,IACE,KAAKA,UAAL,IAAmB,GADrB,IAC4B,KAAKA,UAAL,IAAmB,IAD/C,IAEEuB,GAAGE,IAAH,CAAQ,KAAKzB,UAAb,CAFL,EAE8B;AAC5B,mBAAKA,UAAL,GAAkB,EAAlB;AACD;AACD,gBAAG,CAAC,KAAKV,MAAL,CAAYI,IAAb,IAAqB,KAAKJ,MAAL,CAAYI,IAAZ,IAAoB,MAAzC,IACE,KAAKJ,MAAL,CAAYI,IAAZ,IAAoB,GADtB,IAC6B,KAAKJ,MAAL,CAAYI,IAAZ,IAAoB,IADjD,IAEE6B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYI,IAApB,CAFL,EAE+B;AAC7B,mBAAKJ,MAAL,CAAYI,IAAZ,GAAmB,EAAnB;AACD;AACD,gBAAG,CAAC,KAAKJ,MAAL,CAAYG,QAAb,IAAyB,KAAKH,MAAL,CAAYG,QAAZ,IAAwB,MAAjD,IACE,KAAKH,MAAL,CAAYG,QAAZ,IAAwB,GAD1B,IACiC,KAAKH,MAAL,CAAYG,QAAZ,IAAwB,IADzD,IAEE8B,GAAGE,IAAH,CAAQ,KAAKnC,MAAL,CAAYG,QAApB,CAFL,EAEmC;AACjC,mBAAKH,MAAL,CAAYG,QAAZ,GAAuB,EAAvB;AACD;AACF;;;;QAlL6CX,S;;;;AAqLhDE,iCAA2B2C,WAA3B,GAAyC,4BAAzC","file":"query_ctrl.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport {Util} from './util.js';\nimport './css/query-editor.css!'\n\nexport class GenericDatasourceQueryCtrl extends QueryCtrl {\n\n constructor($scope, $injector, templateSrv) {\n super($scope, $injector,templateSrv);\n this.scope = $scope;\n this.util = new Util(templateSrv);\n this.target.type = this.target.type || 'timeserie';\n this.target.target = this.target.ycol;\n this.target.describe = this.target.describe;\n this.target.xcol = this.target.xcol || 'timestamp';\n this.target.project = this.target.project || 'acs_ecs_dashboard';\n this.target.metric = this.target.metric;\n this.target.period = this.target.period;\n this.target.group = this.target.group;\n this.target.dimensions = this.target.dimensions || [];\n this.dimensions;\n this.target.ycol = this.target.ycol || [];\n this.statistics;\n\n }\n\n getOptions(query) {\n this.checkIsNull();\n return this.datasource.metricFindQuery(query || '');\n }\n\n getProjects() {\n this.checkIsNull();\n return this.datasource.getProject();\n }\n\n getMetrics() {\n this.checkIsNull();\n if(this.target.project){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n return this.datasource.getMetrics(project);\n }\n }\n\n getPeriod() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n return this.datasource.getPeriod(project,metric);\n }\n }\n\n getStatistics() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n return this.datasource.getStatistics(project,metric);\n }\n }\n\n ycolPush(ycol){\n this.checkIsNull();\n if(!ycol || _.includes(this.target.ycol, ycol)) {\n return;\n }\n this.target.ycol.push(ycol);\n this.statistics = \"\";\n this.panelCtrl.refresh();\n }\n\n ycolSplice(ycol){\n this.checkIsNull();\n if(!ycol || !_.includes(this.target.ycol, ycol)) {\n return;\n }\n let i = this.target.ycol.indexOf(ycol)\n this.target.ycol.splice(i,1);\n this.statistics = \"\";\n this.panelCtrl.refresh(); \n }\n\n getGroups() {\n this.checkIsNull();\n return this.datasource.getGroups();\n }\n\n getDimensions() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n var period = this.util.exists(this.target.period) == true?this.util.resolve(this.target.period, {}):this.target.period;\n var dimensions = this.target.dimensions;\n if(this.target.dimensions.indexOf(\"$\") != -1){\n dimensions=this.util.resolve(this.target.dimensions, {});\n };\n return this.datasource.getDimensions(project,metric,period,dimensions);\n }\n }\n\n dimensionsPush(dimension){\n this.checkIsNull();\n if(!dimension || _.includes(this.target.dimensions, dimension)) {\n return;\n }\n this.target.dimensions.push(dimension);\n this.dimensions = \"\";\n this.panelCtrl.refresh();\n }\n\n dimensionsSplice(dimension){\n this.checkIsNull();\n if(!dimension || !_.includes(this.target.dimensions, dimension)) {\n return;\n }\n let i = this.target.dimensions.indexOf(dimension)\n this.target.dimensions.splice(i,1);\n this.dimensions = \"\";\n this.panelCtrl.refresh(); \n }\n\n toggleEditorMode() {\n this.target.rawQuery = !this.target.rawQuery;\n }\n\n onChangeInternal() {\n this.checkIsNull();\n this.panelCtrl.refresh(); // Asks the panel to refresh data.\n }\n \n // 校验页面可输入参数,防止脏乱\n checkIsNull(){\n var re = new RegExp(\"^[ ]+$\");\n if(!this.target.project || this.target.project == \"null\" \n || this.target.project == \" \" || this.target.project == '\"\"' \n || re.test(this.target.project)){\n this.target.project = \"\";\n }\n if(!this.target.metric || this.target.metric == \"null\" \n || this.target.metric == \" \" || this.target.metric == '\"\"' \n || re.test(this.target.metric)){\n this.target.metric = \"\";\n }\n if(!this.target.period || this.target.period == \"null\" \n || this.target.period == \" \" || this.target.period == '\"\"' \n || re.test(this.target.period)){\n this.target.period = \"\";\n }\n if(!this.target.group || this.target.group == \"null\" \n || this.target.group == \" \" || this.target.group == '\"\"' \n || re.test(this.target.group)){\n this.target.group = \"\";\n };\n if(this.target.dimensions.length < 1){\n this.target.dimensions = [];\n }\n if(!this.dimensions || this.dimensions == \"null\" \n || this.dimensions == \" \" || this.dimensions == '\"\"' \n || re.test(this.dimensions)){\n this.dimensions = \"\";\n }\n if(!this.target.ycol || this.target.ycol == \"null\" \n || this.target.ycol == \" \" || this.target.ycol == '\"\"' \n || re.test(this.target.ycol)){\n this.target.ycol = \"\";\n }\n if(!this.statistics || this.statistics == \"null\" \n || this.statistics == \" \" || this.statistics == '\"\"' \n || re.test(this.statistics)){\n this.statistics = \"\";\n }\n if(!this.target.xcol || this.target.xcol == \"null\" \n || this.target.xcol == \" \" || this.target.xcol == '\"\"' \n || re.test(this.target.xcol)){\n this.target.xcol = \"\";\n }\n if(!this.target.describe || this.target.describe == \"null\" \n || this.target.describe == \" \" || this.target.describe == '\"\"' \n || re.test(this.target.describe)){\n this.target.describe = \"\";\n }\n }\n}\n\nGenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html';\n\n"]} \ No newline at end of file diff --git a/dist/sha1.js b/dist/sha1.js deleted file mode 100644 index 1206c7b..0000000 --- a/dist/sha1.js +++ /dev/null @@ -1,239 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - /* - A JavaScript implementation of the SHA family of hashes, as - defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding - HMAC implementation as defined in FIPS PUB 198a - - Copyright Brian Turek 2008-2017 - Distributed under the BSD License - See http://caligatio.github.com/jsSHA/ for more information - - Several functions taken from Paul Johnston - */ - function SHA() { - function r(d, b, c) { - var h = 0, - a = [], - f = 0, - g, - m, - k, - e, - l, - p, - q, - t, - w = !1, - n = [], - u = [], - v, - r = !1;c = c || {};g = c.encoding || "UTF8";v = c.numRounds || 1;if (v !== parseInt(v, 10) || 1 > v) throw Error("numRounds must a integer >= 1");if ("SHA-1" === d) l = 512, p = z, q = H, e = 160, t = function t(a) { - return a.slice(); - };else throw Error("Chosen SHA variant is not supported");k = A(b, g);m = x(d);this.setHMACKey = function (a, f, b) { - var c;if (!0 === w) throw Error("HMAC key already set");if (!0 === r) throw Error("Cannot set HMAC key after calling update"); - g = (b || {}).encoding || "UTF8";f = A(f, g)(a);a = f.binLen;f = f.value;c = l >>> 3;b = c / 4 - 1;if (c < a / 8) { - for (f = q(f, a, 0, x(d), e); f.length <= b;) { - f.push(0); - }f[b] &= 4294967040; - } else if (c > a / 8) { - for (; f.length <= b;) { - f.push(0); - }f[b] &= 4294967040; - }for (a = 0; a <= b; a += 1) { - n[a] = f[a] ^ 909522486, u[a] = f[a] ^ 1549556828; - }m = p(n, m);h = l;w = !0; - };this.update = function (b) { - var e, - g, - c, - d = 0, - q = l >>> 5;e = k(b, a, f);b = e.binLen;g = e.value;e = b >>> 5;for (c = 0; c < e; c += q) { - d + l <= b && (m = p(g.slice(c, c + q), m), d += l); - }h += d;a = g.slice(d >>> 5);f = b % l;r = !0; - };this.getHash = function (b, g) { - var c, k, l, p;if (!0 === w) throw Error("Cannot call getHash after setting HMAC key");l = B(g);switch (b) {case "HEX": - c = function c(a) { - return C(a, e, l); - };break;case "B64": - c = function c(a) { - return D(a, e, l); - };break;case "BYTES": - c = function c(a) { - return E(a, e); - };break;case "ARRAYBUFFER": - try { - k = new ArrayBuffer(0); - } catch (I) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(a) { - return F(a, e); - };break;default: - throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER");}p = q(a.slice(), f, h, t(m), e);for (k = 1; k < v; k += 1) { - p = q(p, e, 0, x(d), e); - }return c(p); - };this.getHMAC = function (b, g) { - var c, k, n, r;if (!1 === w) throw Error("Cannot call getHMAC without first setting HMAC key");n = B(g);switch (b) {case "HEX": - c = function c(a) { - return C(a, e, n); - };break;case "B64": - c = function c(a) { - return D(a, e, n); - };break;case "BYTES": - c = function c(a) { - return E(a, e); - };break;case "ARRAYBUFFER": - try { - c = new ArrayBuffer(0); - } catch (I) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(a) { - return F(a, e); - };break;default: - throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER"); - }k = q(a.slice(), f, h, t(m), e);r = p(u, x(d));r = q(k, e, l, r, e);return c(r); - }; - }function C(d, b, c) { - var h = "";b /= 8;var a, f;for (a = 0; a < b; a += 1) { - f = d[a >>> 2] >>> 8 * (3 + a % 4 * -1), h += "0123456789abcdef".charAt(f >>> 4 & 15) + "0123456789abcdef".charAt(f & 15); - }return c.outputUpper ? h.toUpperCase() : h; - }function D(d, b, c) { - var h = "", - a = b / 8, - f, - g, - m;for (f = 0; f < a; f += 3) { - for (g = f + 1 < a ? d[f + 1 >>> 2] : 0, m = f + 2 < a ? d[f + 2 >>> 2] : 0, m = (d[f >>> 2] >>> 8 * (3 + f % 4 * -1) & 255) << 16 | (g >>> 8 * (3 + (f + 1) % 4 * -1) & 255) << 8 | m >>> 8 * (3 + (f + 2) % 4 * -1) & 255, g = 0; 4 > g; g += 1) { - 8 * f + 6 * g <= b ? h += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m >>> 6 * (3 - g) & 63) : h += c.b64Pad; - } - }return h; - }function E(d, b) { - var c = "", - h = b / 8, - a, - f;for (a = 0; a < h; a += 1) { - f = d[a >>> 2] >>> 8 * (3 + a % 4 * -1) & 255, c += String.fromCharCode(f); - }return c; - }function F(d, b) { - var c = b / 8, - h, - a = new ArrayBuffer(c), - f;f = new Uint8Array(a);for (h = 0; h < c; h += 1) { - f[h] = d[h >>> 2] >>> 8 * (3 + h % 4 * -1) & 255; - }return a; - }function B(d) { - var b = { outputUpper: !1, b64Pad: "=", shakeLen: -1 };d = d || {};b.outputUpper = d.outputUpper || !1;!0 === d.hasOwnProperty("b64Pad") && (b.b64Pad = d.b64Pad);if ("boolean" !== typeof b.outputUpper) throw Error("Invalid outputUpper formatting option"); - if ("string" !== typeof b.b64Pad) throw Error("Invalid b64Pad formatting option");return b; - }function A(d, b) { - var c;switch (b) {case "UTF8":case "UTF16BE":case "UTF16LE": - break;default: - throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch (d) {case "HEX": - c = function c(b, a, f) { - var g = b.length, - c, - d, - e, - l, - p;if (0 !== g % 2) throw Error("String of HEX type must be in byte increments");a = a || [0];f = f || 0;p = f >>> 3;for (c = 0; c < g; c += 2) { - d = parseInt(b.substr(c, 2), 16);if (isNaN(d)) throw Error("String of HEX type contains invalid characters"); - l = (c >>> 1) + p;for (e = l >>> 2; a.length <= e;) { - a.push(0); - }a[e] |= d << 8 * (3 + l % 4 * -1); - }return { value: a, binLen: 4 * g + f }; - };break;case "TEXT": - c = function c(_c, a, f) { - var g, - d, - k = 0, - e, - l, - p, - q, - t, - n;a = a || [0];f = f || 0;p = f >>> 3;if ("UTF8" === b) for (n = 3, e = 0; e < _c.length; e += 1) { - for (g = _c.charCodeAt(e), d = [], 128 > g ? d.push(g) : 2048 > g ? (d.push(192 | g >>> 6), d.push(128 | g & 63)) : 55296 > g || 57344 <= g ? d.push(224 | g >>> 12, 128 | g >>> 6 & 63, 128 | g & 63) : (e += 1, g = 65536 + ((g & 1023) << 10 | _c.charCodeAt(e) & 1023), d.push(240 | g >>> 18, 128 | g >>> 12 & 63, 128 | g >>> 6 & 63, 128 | g & 63)), l = 0; l < d.length; l += 1) { - t = k + p;for (q = t >>> 2; a.length <= q;) { - a.push(0); - }a[q] |= d[l] << 8 * (n + t % 4 * -1);k += 1; - } - } else if ("UTF16BE" === b || "UTF16LE" === b) for (n = 2, d = "UTF16LE" === b && !0 || "UTF16LE" !== b && !1, e = 0; e < _c.length; e += 1) { - g = _c.charCodeAt(e);!0 === d && (l = g & 255, g = l << 8 | g >>> 8);t = k + p;for (q = t >>> 2; a.length <= q;) { - a.push(0); - }a[q] |= g << 8 * (n + t % 4 * -1);k += 2; - }return { value: a, binLen: 8 * k + f }; - };break;case "B64": - c = function c(b, a, f) { - var c = 0, - d, - k, - e, - l, - p, - q, - n;if (-1 === b.search(/^[a-zA-Z0-9=+\/]+$/)) throw Error("Invalid character in base-64 string");k = b.indexOf("=");b = b.replace(/\=/g, "");if (-1 !== k && k < b.length) throw Error("Invalid '=' found in base-64 string");a = a || [0];f = f || 0;q = f >>> 3;for (k = 0; k < b.length; k += 4) { - p = b.substr(k, 4);for (e = l = 0; e < p.length; e += 1) { - d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(p[e]), l |= d << 18 - 6 * e; - }for (e = 0; e < p.length - 1; e += 1) { - n = c + q;for (d = n >>> 2; a.length <= d;) { - a.push(0); - }a[d] |= (l >>> 16 - 8 * e & 255) << 8 * (3 + n % 4 * -1);c += 1; - } - }return { value: a, binLen: 8 * c + f }; - };break;case "BYTES": - c = function c(b, a, _c2) { - var d, m, k, e, l;a = a || [0];_c2 = _c2 || 0;k = _c2 >>> 3;for (m = 0; m < b.length; m += 1) { - d = b.charCodeAt(m), l = m + k, e = l >>> 2, a.length <= e && a.push(0), a[e] |= d << 8 * (3 + l % 4 * -1); - }return { value: a, binLen: 8 * b.length + _c2 }; - };break;case "ARRAYBUFFER": - try { - c = new ArrayBuffer(0); - } catch (h) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(b, a, _c3) { - var d, m, k, e, l;a = a || [0];_c3 = _c3 || 0;m = _c3 >>> 3;l = new Uint8Array(b);for (d = 0; d < b.byteLength; d += 1) { - e = d + m, k = e >>> 2, a.length <= k && a.push(0), a[k] |= l[d] << 8 * (3 + e % 4 * -1); - }return { value: a, binLen: 8 * b.byteLength + _c3 }; - };break;default: - throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER"); - }return c; - }function n(d, b) { - return d << b | d >>> 32 - b; - }function u(d, b) { - var c = (d & 65535) + (b & 65535);return ((d >>> 16) + (b >>> 16) + (c >>> 16) & 65535) << 16 | c & 65535; - }function y(d, b, c, h, a) { - var f = (d & 65535) + (b & 65535) + (c & 65535) + (h & 65535) + (a & 65535);return ((d >>> 16) + (b >>> 16) + (c >>> 16) + (h >>> 16) + (a >>> 16) + (f >>> 16) & 65535) << 16 | f & 65535; - }function x(d) { - var b = [];if ("SHA-1" === d) b = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];else throw Error("No SHA variants supported");return b; - }function z(d, b) { - var c = [], - h, - a, - f, - g, - m, - k, - e;h = b[0];a = b[1]; - f = b[2];g = b[3];m = b[4];for (e = 0; 80 > e; e += 1) { - c[e] = 16 > e ? d[e] : n(c[e - 3] ^ c[e - 8] ^ c[e - 14] ^ c[e - 16], 1), k = 20 > e ? y(n(h, 5), a & f ^ ~a & g, m, 1518500249, c[e]) : 40 > e ? y(n(h, 5), a ^ f ^ g, m, 1859775393, c[e]) : 60 > e ? y(n(h, 5), a & f ^ a & g ^ f & g, m, 2400959708, c[e]) : y(n(h, 5), a ^ f ^ g, m, 3395469782, c[e]), m = g, g = f, f = n(a, 30), a = h, h = k; - }b[0] = u(h, b[0]);b[1] = u(a, b[1]);b[2] = u(f, b[2]);b[3] = u(g, b[3]);b[4] = u(m, b[4]);return b; - }function H(d, b, c, h) { - var a;for (a = (b + 65 >>> 9 << 4) + 15; d.length <= a;) { - d.push(0); - }d[b >>> 5] |= 128 << 24 - b % 32;b += c;d[a] = b & 4294967295;d[a - 1] = b / 4294967296 | 0; - b = d.length;for (a = 0; a < b; a += 16) { - h = z(d.slice(a, a + 16), h); - }return h; - }return r; - } - - _export("SHA", SHA); - - return { - setters: [], - execute: function () {} - }; -}); -//# sourceMappingURL=sha1.js.map diff --git a/dist/sha1.js.map b/dist/sha1.js.map deleted file mode 100644 index 46aa751..0000000 --- a/dist/sha1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/sha1.js"],"names":["SHA","r","d","b","c","h","a","f","g","m","k","e","l","p","q","t","w","n","u","v","encoding","numRounds","parseInt","Error","z","H","slice","A","x","setHMACKey","binLen","value","length","push","update","getHash","B","C","D","E","ArrayBuffer","I","F","getHMAC","charAt","outputUpper","toUpperCase","b64Pad","String","fromCharCode","Uint8Array","shakeLen","hasOwnProperty","substr","isNaN","charCodeAt","search","indexOf","replace","byteLength","y"],"mappings":"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","file":"sha1.js","sourcesContent":["/*\n A JavaScript implementation of the SHA family of hashes, as\n defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding\n HMAC implementation as defined in FIPS PUB 198a\n\n Copyright Brian Turek 2008-2017\n Distributed under the BSD License\n See http://caligatio.github.com/jsSHA/ for more information\n\n Several functions taken from Paul Johnston\n*/\nexport function SHA() {function r(d,b,c){var h=0,a=[],f=0,g,m,k,e,l,p,q,t,w=!1,n=[],u=[],v,r=!1;c=c||{};g=c.encoding||\"UTF8\";v=c.numRounds||1;if(v!==parseInt(v,10)||1>v)throw Error(\"numRounds must a integer >= 1\");if(\"SHA-1\"===d)l=512,p=z,q=H,e=160,t=function(a){return a.slice()};else throw Error(\"Chosen SHA variant is not supported\");k=A(b,g);m=x(d);this.setHMACKey=function(a,f,b){var c;if(!0===w)throw Error(\"HMAC key already set\");if(!0===r)throw Error(\"Cannot set HMAC key after calling update\");\ng=(b||{}).encoding||\"UTF8\";f=A(f,g)(a);a=f.binLen;f=f.value;c=l>>>3;b=c/4-1;if(ca/8){for(;f.length<=b;)f.push(0);f[b]&=4294967040}for(a=0;a<=b;a+=1)n[a]=f[a]^909522486,u[a]=f[a]^1549556828;m=p(n,m);h=l;w=!0};this.update=function(b){var e,g,c,d=0,q=l>>>5;e=k(b,a,f);b=e.binLen;g=e.value;e=b>>>5;for(c=0;c>>5);f=b%l;r=!0};this.getHash=function(b,g){var c,k,l,p;if(!0===\nw)throw Error(\"Cannot call getHash after setting HMAC key\");l=B(g);switch(b){case \"HEX\":c=function(a){return C(a,e,l)};break;case \"B64\":c=function(a){return D(a,e,l)};break;case \"BYTES\":c=function(a){return E(a,e)};break;case \"ARRAYBUFFER\":try{k=new ArrayBuffer(0)}catch(I){throw Error(\"ARRAYBUFFER not supported by this environment\");}c=function(a){return F(a,e)};break;default:throw Error(\"format must be HEX, B64, BYTES, or ARRAYBUFFER\");}p=q(a.slice(),f,h,t(m),e);for(k=1;k>>2]>>>8*(3+a%4*-1),h+=\"0123456789abcdef\".charAt(f>>>4&15)+\"0123456789abcdef\".charAt(f&15);return c.outputUpper?h.toUpperCase():h}function D(d,b,c){var h=\"\",a=b/8,f,g,m;for(f=0;f>>2]:0,m=f+2>>2]:0,m=(d[f>>>2]>>>8*(3+f%4*-1)&255)<<16|(g>>>8*(3+(f+1)%4*-1)&255)<<8|m>>>8*(3+(f+2)%4*-1)&255,g=0;4>g;g+=1)8*f+6*g<=b?h+=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".charAt(m>>>\n6*(3-g)&63):h+=c.b64Pad;return h}function E(d,b){var c=\"\",h=b/8,a,f;for(a=0;a>>2]>>>8*(3+a%4*-1)&255,c+=String.fromCharCode(f);return c}function F(d,b){var c=b/8,h,a=new ArrayBuffer(c),f;f=new Uint8Array(a);for(h=0;h>>2]>>>8*(3+h%4*-1)&255;return a}function B(d){var b={outputUpper:!1,b64Pad:\"=\",shakeLen:-1};d=d||{};b.outputUpper=d.outputUpper||!1;!0===d.hasOwnProperty(\"b64Pad\")&&(b.b64Pad=d.b64Pad);if(\"boolean\"!==typeof b.outputUpper)throw Error(\"Invalid outputUpper formatting option\");\nif(\"string\"!==typeof b.b64Pad)throw Error(\"Invalid b64Pad formatting option\");return b}function A(d,b){var c;switch(b){case \"UTF8\":case \"UTF16BE\":case \"UTF16LE\":break;default:throw Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\");}switch(d){case \"HEX\":c=function(b,a,f){var g=b.length,c,d,e,l,p;if(0!==g%2)throw Error(\"String of HEX type must be in byte increments\");a=a||[0];f=f||0;p=f>>>3;for(c=0;c>>1)+p;for(e=l>>>2;a.length<=e;)a.push(0);a[e]|=d<<8*(3+l%4*-1)}return{value:a,binLen:4*g+f}};break;case \"TEXT\":c=function(c,a,f){var g,d,k=0,e,l,p,q,t,n;a=a||[0];f=f||0;p=f>>>3;if(\"UTF8\"===b)for(n=3,e=0;eg?d.push(g):2048>g?(d.push(192|g>>>6),d.push(128|g&63)):55296>g||57344<=g?d.push(224|g>>>12,128|g>>>6&63,128|g&63):(e+=1,g=65536+((g&1023)<<10|c.charCodeAt(e)&1023),d.push(240|g>>>18,128|g>>>12&63,128|g>>>6&63,128|g&63)),l=0;l>>2;a.length<=q;)a.push(0);a[q]|=d[l]<<8*(n+t%4*-1);k+=1}else if(\"UTF16BE\"===b||\"UTF16LE\"===b)for(n=2,d=\"UTF16LE\"===b&&!0||\"UTF16LE\"!==b&&!1,e=0;e>>8);t=k+p;for(q=t>>>2;a.length<=q;)a.push(0);a[q]|=g<<8*(n+t%4*-1);k+=2}return{value:a,binLen:8*k+f}};break;case \"B64\":c=function(b,a,f){var c=0,d,k,e,l,p,q,n;if(-1===b.search(/^[a-zA-Z0-9=+\\/]+$/))throw Error(\"Invalid character in base-64 string\");k=b.indexOf(\"=\");b=b.replace(/\\=/g,\n\"\");if(-1!==k&&k 0 ? ycol_variables : ycol; - - //自定义监控(acs_custom)、日志监控(acs_logMonitor)处理,只取下标为0的数据 - if (project.indexOf("acs_custom") != -1 || project.indexOf("acs_logMonitor") != -1) { - var dimensionAcsJson = target.dimensions[0]; - var dimensionAcsObj = { - groupId: group.toString(), - dimension: dimensionAcsJson.replace(/\&/gi, "%26").replace(/\{/gi, "%7B").replace(/\}/gi, "%7D") - }; - dimensions = JSON.stringify(dimensionAcsObj); - } else { - //正常数据 - dimensions = ""; - dimensions_variables.forEach(function (dimension, i) { - if (typeof dimension == "string") { - dimension = dimension.includes("{") ? dimension : "{" + dimension; - dimension = dimension.includes("}") ? dimension : dimension + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; - - dimensions += dimension + ","; - } else { - dimension.forEach(function (dimension_i) { - dimension_i = dimension_i.includes("{") ? dimension_i : "{" + dimension_i; - dimension_i = dimension_i.includes("}") ? dimension_i : dimension_i + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; - - dimensions += dimension_i + ","; - }); - } - }); - dimensions = dimensions.substring(0, dimensions.length - 1); - dimensions = "[" + dimensions + "]"; - dimensions = dimensions.replace(/\&/gi, "%26").replace(/\{/gi, "%7B").replace(/\}/gi, "%7D"); - } - //拼接url参数 - var queryConcat = "/?Action=QueryMetricList&Length=1000&Project=" + project + "&Metric=" + metric + "&Period=" + period + "&Dimensions=" + dimensions + "&StartTime=" + parseInt(options.range.from._d.getTime()) + "&EndTime=" + parseInt(options.range.to._d.getTime()); - - //定义Promise元数据、根据URL发起请求 - var request = _this.doNextToken(queryConcat, "", 0).then(function (response) { - var dataDatapoints = response; - var resResult = []; - //处理数据分类 - var target_datapoints = []; - if (dimensions.includes("instanceId")) { - for (var i in dataDatapoints) { - if (!target_datapoints[dataDatapoints[i].instanceId]) { - var arr = []; - arr.push(dataDatapoints[i]); - target_datapoints[dataDatapoints[i].instanceId] = arr; - } else { - target_datapoints[dataDatapoints[i].instanceId].push(dataDatapoints[i]); - } - } - } - // 处理Grafana所需的target值、Target组的所需返回结果集 - ycol.map(function (ycolTarget) { - if (dimensions.includes("instanceId")) { - for (var i in target_datapoints) { - var datapoints = []; - target_datapoints[i].forEach(function (Datapoint) { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 - resResult.push({ - target: describe + i + "." + ycolTarget, - datapoints: datapoints - }); - } - } else { - var datapoints = []; - dataDatapoints.forEach(function (Datapoint) { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 - resResult.push({ - target: describe + ycolTarget, - datapoints: datapoints - }); - } - }); - // 转对象封装 - result = result.concat(typeof resResult == "string" ? JSON.parse(resResult) : resResult); - }); - requests.push(request); - }); - // 统一单独处理返回值 - return Promise.all(requests.map(function (p) { - return p.catch(function (e) { - return e; - }); - })).then(function () { - return { data: result }; - }); - } - }, { - key: "wait", - value: function wait(ms) { - return new Promise(function (resolve) { - return setTimeout(resolve, ms); - }); - } - }, { - key: "doNextToken", - value: async function doNextToken(queryConcat, cursor, count) { - var _this2 = this; - - var path = ""; - if (this.isEmpty(cursor)) { - path = queryConcat; - } else { - path = queryConcat + "&Cursor=" + cursor; - } - var param = { - path: path, - method: "GET" - }; - // 签名已拼接的待查询URL - var query = this.buildRealUrl(param); - if (_.isEmpty(query)) { - var d = this.q.defer(); - d.resolve({ data: [] }); - return d.promise; - } - await this.wait(1000); - //定义Promise元数据、根据URL发起请求 - return this.backendSrv.datasourceRequest({ - url: query, - method: "GET", - headers: this.headers - }).then(function (response) { - var result = []; - if (response.status == "200" && response.data.Code == "200") { - result = angular.fromJson(response.data.Datapoints); - if (count > 20) { - return result; - } - count++; - var nextToken = response.data.Cursor; - if (_this2.isEmpty(response.data.Cursor)) { - return result; - } else { - return _this2.doNextToken(queryConcat, nextToken, count).then(function (data) { - return result.concat(data); - }); - } - } - return result; - }).catch(function () { - return []; - }); - } - }, { - key: "testDatasource", - value: function testDatasource() { - var param = { - path: "/?Action=AccessKeyGet", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - return { - status: "success", - message: "Data source is working", - title: "Success" - }; - } - }); - } - }, { - key: "annotationQuery", - value: function annotationQuery(options) {} - }, { - key: "metricFindQuery", - value: function metricFindQuery(options) { - var _this3 = this; - - var result = []; - //接受一个参数 - var namespacesQuery = options.match(/^namespaces\(([^\)]+?)(,\s?([^,]+?))?\)/); - namespacesQuery = namespacesQuery == null ? options.match(/^namespace\(([^\)]+?)(,\s?([^,]+?))?\)/) : namespacesQuery; - if (namespacesQuery != null) { - var filter = this.util.templateToStr(namespacesQuery[1]); - return this.getProject().then(function (namespaces) { - result = namespaces; - if (!_this3.isEmpty(filter)) { - result = []; - namespaces.map(function (namespace) { - if (namespace.text.includes(filter)) { - result.push(namespace); - } - }); - } - return result; - }); - } - - //接受二个参数 - var metricsQuery = options.match(/^metrics\(([^,]+?),\s?([^,]+?)\)/); - metricsQuery = metricsQuery == null ? options.match(/^metric\(([^,]+?),\s?([^,]+?)\)/) : metricsQuery; - if (metricsQuery != null) { - var namespace = this.util.templateToStr(metricsQuery[1]); - var filter = this.util.templateToStr(metricsQuery[2]); - - result = []; - return this.getMetrics(namespace).then(function (metrics) { - result = metrics; - if (!_this3.isEmpty(filter)) { - result = []; - metrics.map(function (metric) { - if (metric.text.includes(filter)) { - result.push(metric); - } - }); - } - return result; - }); - } - - //接受四个参数,过滤Tag提供key、value选择 - var tagFilterQuery = options.match(/^tagFilter\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - tagFilterQuery = tagFilterQuery == null ? options.match(/^tagsFilter\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : tagFilterQuery; - if (tagFilterQuery != null) { - var type = this.util.templateToStr(tagFilterQuery[1]); - var regionId = this.util.templateToStr(tagFilterQuery[2]); - var tagType = this.isEmpty(tagFilterQuery[3]) ? "" : tagFilterQuery[3]; - var tagKey = this.isEmpty(tagFilterQuery[4]) ? "" : tagFilterQuery[4]; - var path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId; - var tagKeyFilter = []; - if (tagKey) { - path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&Tag.1.key=" + tagKey; - if (tagKey.indexOf("&Tag.2.key=") != -1) { - var tagKeyArry = tagKey.split("&"); - tagKeyArry.forEach(function (tagKeyInd) { - tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf("key=") == -1 ? 0 : tagKeyInd.indexOf("key=") + 4)); - }); - } else { - tagKeyFilter.push(tagKey); - } - - if (tagKey.indexOf("Tag.1.key=") != -1) { - path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&" + tagKey; - } - if (tagKey.indexOf("PageNumber=") != -1) { - path = "/?Action=DescribeTags&PageSize=100&RegionId=" + regionId + "&" + tagKey; - } - if (tagKey.indexOf("&") == 0) { - path = "/?Action=DescribeTags&PageSize=100&RegionId=" + regionId + tagKey; - } - } - var nextToken = ""; - result = []; - return this.tagsFilter(type.toUpperCase(), nextToken, path, tagType, tagKeyFilter).then(function (tagsList) { - return _this3.util.arrayToMap(tagsList); - }); - } - - //接受四个参数,暂不支持数组,提供dimensions选择 - var dimensionsQuery = options.match(/^dimension\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - dimensionsQuery = dimensionsQuery == null ? options.match(/^dimensions\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : dimensionsQuery; - if (dimensionsQuery != null) { - var namespace = this.util.templateToStr(dimensionsQuery[1]); - var metric = this.util.templateToStr(dimensionsQuery[2]); - - var instanceId = dimensionsQuery[3]; - var instanceId_array = this.util.exists(instanceId) ? this.util.resolve(instanceId, {}) : []; - if (instanceId_array.length == 0) { - if (this.isEmpty(instanceId)) { - instanceId_array = []; - } else { - instanceId_array = this.util.strToArray(instanceId); - } - } - var filter = dimensionsQuery[4]; - var filter_array = this.util.exists(filter) ? this.util.resolve(filter, {}) : []; - if (filter_array.length == 0) { - if (this.isEmpty(filter)) { - filter_array = []; - } else { - filter_array = this.util.strToArray(filter); - } - } - result = []; - return this.getDimensions(namespace, metric, "", []).then(function (dimensions) { - var is_instanceId_bool = _this3.isEmpty(instanceId); - var is_filter_bool = _this3.isEmpty(filter); - if (is_instanceId_bool) { - result = dimensions; - } else { - var instanceId_result = []; - dimensions.map(function (dimension) { - instanceId_array.forEach(function (i) { - if (dimension.text.includes(i)) { - instanceId_result.push(dimension); - } - }); - }); - if (is_filter_bool) { - result = instanceId_result; - } else { - instanceId_result.map(function (dimension) { - filter_array.forEach(function (i) { - if (dimension.text.includes(i)) { - result.push(dimension); - } - }); - }); - } - } - return result; - }); - } - - //接受5个参数,暂不支持数组,提供tag选择 - var tagQuery = options.match(/^tag\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/); - tagQuery = tagQuery == null ? options.match(/^tags\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)(,\s?(.+))?\)/) : tagQuery; - if (tagQuery != null) { - var resourceId = tagQuery[4]; - var resourceId_array = this.util.exists(resourceId) ? this.util.resolve(resourceId, {}) : []; - if (resourceId_array.length == 0) { - if (this.isEmpty(resourceId)) { - resourceId_array = []; - } else { - resourceId_array = []; - resourceId_array = this.util.strToArray(resourceId); - } - } - var tag = tagQuery[5]; - var tag_array = this.util.exists(tag) ? this.util.resolve(tag, {}) : []; - if (tag_array.length == 0) { - if (this.isEmpty(tag)) { - tag_array = []; - } else { - tag_array = []; - tag_array = this.util.strToArray(tag); - } - } - return this.listTagResources(tagQuery[1].toUpperCase(), tagQuery[2], tagQuery[3], resourceId_array, tag_array); - } - return []; - } - }, { - key: "getProject", - value: function getProject() { - var _this4 = this; - - var param = { - path: "/?Action=QueryProjectMeta&PageNumber=1&PageSize=1000", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - data.Resources.Resource.map(function (resource) { - if (!_this4.isEmpty(resource.Project)) { - result.push(resource.Project); - } - }); - } - //增加自定义监控、日志监控选项 - var acs_param = { - path: "/?Action=AccessKeyGet", - method: "GET" - }; - return _this4.backendSrv.datasourceRequest({ - url: _this4.buildRealUrl(acs_param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - result.push("acs_logMonitor_" + data.UserId); - result.push("acs_customMetric_" + data.UserId); - } - return _this4.util.arrayToMap(result); - }); - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getMetrics", - value: function getMetrics(project) { - var _this5 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=" + project, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var result = []; - data.Resources.Resource.map(function (resource) { - if (!_this5.isEmpty(resource.Metric)) { - result.push(resource.Metric); - } - }); - return _this5.util.arrayToMap(result); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getPeriod", - value: function getPeriod(project, metric) { - var _this6 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var period = []; - var resource = data.Resources.Resource; - if (resource.length > 0 && !_this6.isEmpty(resource[0].Periods)) { - period = resource[0].Periods.split(","); - } - return _this6.util.arrayToMap(period); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getStatistics", - value: function getStatistics(project, metric) { - var _this7 = this; - - var param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var statistics = []; - var resource = data.Resources.Resource; - if (resource.length > 0 && !_this7.isEmpty(resource[0].Statistics)) { - statistics = resource[0].Statistics.split(","); - } - return _this7.util.arrayToMap(statistics); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getGroups", - value: function getGroups() { - var _this8 = this; - - var param = { - path: "/?Action=ListMyGroups&PageNumber=1&PageSize=9000", - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - var result = []; - var resource = data.Resources.Resource; - var i = resource.length; - while (i--) { - var group = resource[i]; - var groupInfo = []; - var groupId = group.GroupId; - var groupName = group.GroupName; - if (_this8.isEmpty(groupId) || _this8.isEmpty(groupName)) { - continue; - } - groupInfo.push(groupId, groupName + " / " + groupId); - result.push(groupInfo); - } - return _.map(result, function (d, i) { - return { text: d[1], value: d[0] }; - }); - } - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "getDimensions", - value: function getDimensions(project, metric, period, dimensions) { - var _this9 = this; - - if (project.indexOf("acs_customMetric") != -1 || project.indexOf("acs_logMonitor") != -1) { - return; - } - var result = []; - var endTime = new Date().getTime(); - var startTime = endTime - 1 * 60 * 60 * 1000; - var param = { - path: "/?Action=QueryMetricLast&Page=1&Length=90000&Period=" + period + "&Project=" + project + "&Metric=" + metric + "&StartTime=" + startTime + "&EndTime=" + endTime, - method: "GET" - }; - return this.backendSrv.datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET" - }).then(function (response) { - var data = response.data; - if (data.Success == false) { - return; - } - // 构建可选参数dimensions - param = { - path: "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, - method: "GET" - }; - return _this9.backendSrv.datasourceRequest({ - url: _this9.buildRealUrl(param), - method: "GET" - }).then(function (response_meta) { - var data_meta = response_meta.data; - if (data_meta.ErrorCode == 200 && data_meta.Success == true) { - var resource = data_meta.Resources.Resource; - if (resource.length == 0 || _this9.isEmpty(resource[0].Dimensions)) { - return; - } - var dimension = resource[0].Dimensions.split(","); - var datapoints = JSON.parse(data.Datapoints); - datapoints.map(function (datapoint) { - var datapointInfo = '{"'; - dimension.forEach(function (value, index) { - value = value.replace(/"/g, ""); - if (value != "userId") { - if (datapoint[value].indexOf(":\\") != -1) { - datapointInfo += value + '":"' + datapoint[value] + '\\"'; - } else { - datapointInfo += value + '":"' + datapoint[value] + '"'; - } - if (index == dimension.length - 1) { - datapointInfo += "}"; - } else { - datapointInfo += ';"'; - } - } - }); - //去重 - if (result.length == 0) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { - result.push(datapointInfo); - } - } else if (result.length > 0 && !result.includes(datapointInfo)) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { - result.push(datapointInfo); - } - } - }); - return _this9.util.arrayToMap(result); - } - }); - }).catch(function (error) { - console.log(error); - return; - }); - } - }, { - key: "tagsFilter", - value: function tagsFilter(type, nextToken, path, tagType, tagKeyFilter) { - var reqUrl = path; - if (!this.isEmpty(nextToken)) { - reqUrl += "&NextToken=" + nextToken; - } - var param = { - path: reqUrl, - method: "GET" - }; - var realUrl = ""; - if ("ECS" == type) { - realUrl = this.buildECSRealUrl(param); - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tags = data.Tags.Tag; - if (tags.length > 0) { - tags.forEach(function (tag) { - if ("key" == tagType) { - if (!result.includes(tag.TagKey)) { - result.push(tag.TagKey); - } - } else if ("value" == tagType) { - if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) { - var value = tag.TagKey + ":/:" + tag.TagValue; - if (!result.includes(value)) { - result.push(value); - } - } - } - }); - } - return result; - }); - } else if ("RDS" == type) { - realUrl = this.buildRDSRealUrl(param); - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tags = data.Items.TagInfos; - if (tags.length > 0) { - tags.forEach(function (tag) { - if ("key" == tagType) { - if (!result.includes(tag.TagKey)) { - result.push(tag.TagKey); - } - } else if ("value" == tagType) { - if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) { - var value = tag.TagKey + ":/:" + tag.TagValue; - if (!result.includes(value)) { - result.push(value); - } - } - } - }); - } - return result; - }); - } - } - }, { - key: "listTagResources", - value: function listTagResources(type, regionId, resourceType, resourceId, tag) { - var _this10 = this; - - type = this.isEmpty(type) ? "ECS" : type; - regionId = this.isEmpty(regionId) ? "cn-hangzhou" : regionId; - if ("ECS" == type) { - resourceType = this.isEmpty(resourceType) ? "instance" : resourceType; - } else if ("RDS" == type) { - resourceType = this.isEmpty(resourceType) ? "INSTANCE" : resourceType; - } - var path = "/?Action=ListTagResources&RegionId=" + regionId + "&ResourceType=" + resourceType; - for (var i = 0; i < resourceId.length; i++) { - if (50 > i) { - var v = resourceId[i]; - if (!this.isEmpty(v)) { - path += "&ResourceId." + (parseInt(i) + 1).toString() + "=" + v; - } - } - } - var tag_key_array = []; - var tag_value_array = []; - tag.forEach(function (t) { - if (!_this10.isEmpty(t)) { - if (t.indexOf(":/:") != -1) { - var t_split = t.split(":/:"); - if (!tag_key_array.includes(t_split[0])) { - tag_key_array.push(t_split[0]); - } - if (!tag_value_array.includes(t_split[1])) { - tag_value_array.push(t_split[1]); - } - } - } - }); - if (tag_key_array.length > 0) { - for (var i = 0; i < tag_key_array.length; i++) { - var key = tag_key_array[i]; - path += "&Tag." + (parseInt(i) + 1).toString() + ".Key=" + key; - } - } else if (tag_key_array.length == 0 && tag.length > 0) { - for (var i = 0; i < tag.length; i++) { - var key = tag[i]; - path += "&Tag." + (parseInt(i) + 1).toString() + ".Key=" + key; - } - } - var nextToken = ""; - return this.tagList(type, nextToken, path, tag_value_array).then(function (rep) { - var distinct_result = []; - rep.forEach(function (instanceId) { - if (!distinct_result.includes(instanceId)) { - distinct_result.push(instanceId); - } - }); - return _this10.util.arrayToMap(distinct_result); - }); - } - }, { - key: "tagList", - value: function tagList(type, nextToken, path, tag_value_array) { - var _this11 = this; - - var reqUrl = path; - if (!this.isEmpty(nextToken)) { - reqUrl += "&NextToken=" + nextToken; - } - var param = { - path: reqUrl, - method: "GET" - }; - var realUrl = ""; - if ("ECS" == type) { - realUrl = this.buildECSRealUrl(param); - } else if ("RDS" == type) { - realUrl = this.buildRDSRealUrl(param); - } - return this.backendSrv.datasourceRequest({ - url: realUrl, - method: "GET" - }).then(function (response) { - var result = []; - var data = response.data; - var tagResource = data.TagResources.TagResource; - if (tagResource.length > 0) { - tagResource.forEach(function (resource) { - if (tag_value_array.length > 0) { - if (tag_value_array.includes(resource.TagValue)) { - result.push(resource.ResourceId); - } - } else { - result.push(resource.ResourceId); - } - }); - } - if (_this11.isEmpty(data.NextToken)) { - return result; - } else { - return _this11.tagList(type, data.NextToken, path, tag_value_array).then(function (nextList) { - return result.concat(nextList); - }); - } - }); - } - }, { - key: "buildRealUrl", - value: function buildRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.cmsVersion - }, param); - signer.addAuthorization(); - return this.basePath + signer.request.path; - } - }, { - key: "buildECSRealUrl", - value: function buildECSRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.ecsVersion - }, param); - signer.addAuthorization(); - return this.ecsBasePath + signer.request.path; - } - }, { - key: "buildRDSRealUrl", - value: function buildRDSRealUrl(param) { - var signer = new CmsSigner({ - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.rdsVersion - }, param); - signer.addAuthorization(); - return this.rdsBasePath + signer.request.path; - } - }, { - key: "isEmpty", - value: function isEmpty(obj) { - var re = new RegExp("^[ ]+$"); - if (!obj || obj == "null" || obj == null || obj == " " || obj == "" || obj == '""' || re.test(obj) || typeof obj == "undefined") { - return true; - } // 为空 - return false; // 不为空 - } - }]); - - return GenericDatasource; - }()); - - _export("GenericDatasource", GenericDatasource); - } - }; -}); -//# sourceMappingURL=datasource.js.map diff --git a/dist/test/datasource.js.map b/dist/test/datasource.js.map deleted file mode 100644 index 5c3df8d..0000000 --- a/dist/test/datasource.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/datasource.js"],"names":["_","Util","CmsSigner","GenericDatasource","instanceSettings","$q","backendSrv","templateSrv","type","basePath","url","name","jsonData","q","util","headers","cmsVersion","ecsVersion","ecsBasePath","rdsVersion","rdsBasePath","options","requests","result","targets","forEach","target","project","metric","ycol","xcol","describe","exists","resolve","period","group","dimensions","dimensions_variables","dimension","push","ycol_variables","y_col","indexOf","length","dimensionAcsJson","dimensionAcsObj","groupId","toString","replace","JSON","stringify","i","includes","dimension_i","substring","queryConcat","parseInt","range","from","_d","getTime","to","request","doNextToken","then","response","dataDatapoints","resResult","target_datapoints","instanceId","arr","map","ycolTarget","datapoints","Datapoint","datapoint","concat","parse","Promise","all","p","catch","e","data","ms","setTimeout","cursor","count","path","isEmpty","param","method","query","buildRealUrl","d","defer","promise","wait","datasourceRequest","status","Code","angular","fromJson","Datapoints","nextToken","Cursor","ErrorCode","Success","message","title","namespacesQuery","match","filter","templateToStr","getProject","namespaces","namespace","text","metricsQuery","getMetrics","metrics","tagFilterQuery","regionId","tagType","tagKey","tagKeyFilter","tagKeyArry","split","tagKeyInd","tagsFilter","toUpperCase","tagsList","arrayToMap","dimensionsQuery","instanceId_array","strToArray","filter_array","getDimensions","is_instanceId_bool","is_filter_bool","instanceId_result","tagQuery","resourceId","resourceId_array","tag","tag_array","listTagResources","Resources","Resource","resource","Project","acs_param","UserId","error","console","log","Metric","Periods","statistics","Statistics","groupInfo","GroupId","groupName","GroupName","value","endTime","Date","startTime","response_meta","data_meta","Dimensions","datapointInfo","index","reqUrl","realUrl","buildECSRealUrl","tags","Tags","Tag","TagKey","TagValue","buildRDSRealUrl","Items","TagInfos","resourceType","v","tag_key_array","tag_value_array","t","t_split","key","tagList","rep","distinct_result","tagResource","TagResources","TagResource","ResourceId","NextToken","nextList","signer","accessKeyId","cmsAccessKey","secretAccessKey","cmsSecretKey","version","addAuthorization","obj","re","RegExp","test"],"mappings":"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","file":"datasource.js","sourcesContent":["import _ from \"lodash\";\nimport { Util } from \"./util.js\";\nimport { CmsSigner } from \"./signer.js\";\n\nexport class GenericDatasource {\n constructor(instanceSettings, $q, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.basePath = instanceSettings.url;\n this.name = instanceSettings.name;\n this.jsonData = instanceSettings.jsonData;\n this.q = $q;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.util = new Util(templateSrv);\n this.headers = { \"Content-Type\": \"application/json\" };\n this.cmsVersion = \"2018-03-08\";\n this.ecsVersion = \"2014-05-26\";\n this.ecsBasePath = \"https://ecs.aliyuncs.com\";\n this.rdsVersion = \"2014-08-15\";\n this.rdsBasePath = \"https://rds.aliyuncs.com\";\n }\n\n query(options) {\n var requests = [];\n var result = [];\n options.targets.forEach((target) => {\n //非空参数判空处理\n if (!target.project || !target.metric || !target.ycol || !target.xcol) {\n return;\n }\n //默认数据\n var ycol = target.ycol;\n var xcol = target.xcol;\n var describe = !target.describe ? target.describe : target.describe + \".\";\n //处理模版\n var project = this.util.exists(target.project) ? this.util.resolve(target.project, {}) : target.project;\n var metric = this.util.exists(target.metric) ? this.util.resolve(target.metric, {}) : target.metric;\n var period = this.util.exists(target.period) ? this.util.resolve(target.period, {}) : target.period;\n var group = this.util.exists(target.group) ? this.util.resolve(target.group, {}) : target.group;\n //处理数组模版\n var dimensions = \"\";\n\n var dimensions_variables = [];\n\n target.dimensions.forEach((dimension) => {\n this.util.exists(dimension) ? dimensions_variables.push(this.util.resolve(dimension, {})) : dimensions_variables.push(dimension);\n });\n var ycol_variables = [];\n ycol.forEach((y_col) => {\n y_col.indexOf(\"$\") != -1 ? ycol_variables.push(this.util.resolve(y_col, {})) : ycol_variables.push(y_col);\n });\n ycol = ycol_variables.length > 0 ? ycol_variables : ycol;\n\n //自定义监控(acs_custom)、日志监控(acs_logMonitor)处理,只取下标为0的数据\n if (project.indexOf(\"acs_custom\") != -1 || project.indexOf(\"acs_logMonitor\") != -1) {\n var dimensionAcsJson = target.dimensions[0];\n var dimensionAcsObj = {\n groupId: group.toString(),\n dimension: dimensionAcsJson.replace(/\\&/gi, \"%26\").replace(/\\{/gi, \"%7B\").replace(/\\}/gi, \"%7D\"),\n };\n dimensions = JSON.stringify(dimensionAcsObj);\n } else {\n //正常数据\n dimensions = \"\";\n dimensions_variables.forEach((dimension, i) => {\n if (typeof dimension == \"string\") {\n dimension = dimension.includes(\"{\") ? dimension : \"{\" + dimension;\n dimension = dimension.includes(\"}\") ? dimension : dimension + \"}\";\n dimension = dimension.includes(\"\\\\\") ? dimension.replace(\"\\\\\", \"\\\\\\\\\") : dimension;\n \n dimensions += dimension + \",\";\n } else {\n dimension.forEach((dimension_i) => {\n dimension_i = dimension_i.includes(\"{\") ? dimension_i : \"{\" + dimension_i;\n dimension_i = dimension_i.includes(\"}\") ? dimension_i : dimension_i + \"}\";\n dimension = dimension.includes(\"\\\\\") ? dimension.replace(\"\\\\\", \"\\\\\\\\\") : dimension;\n\n dimensions += dimension_i + \",\";\n });\n }\n });\n dimensions = dimensions.substring(0, dimensions.length - 1);\n dimensions = \"[\" + dimensions + \"]\";\n dimensions = dimensions.replace(/\\&/gi, \"%26\").replace(/\\{/gi, \"%7B\").replace(/\\}/gi, \"%7D\");\n }\n //拼接url参数\n var queryConcat = \"/?Action=QueryMetricList&Length=1000&Project=\" + project + \"&Metric=\" + metric + \"&Period=\" + period\n + \"&Dimensions=\" + dimensions + \"&StartTime=\" + parseInt(options.range.from._d.getTime()) + \"&EndTime=\" + parseInt(options.range.to._d.getTime());\n\n //定义Promise元数据、根据URL发起请求\n var request = this.doNextToken(queryConcat, \"\", 0).then((response) => {\n var dataDatapoints = response;\n var resResult = [];\n //处理数据分类\n var target_datapoints = [];\n if (dimensions.includes(\"instanceId\")) {\n for (var i in dataDatapoints) {\n if (!target_datapoints[dataDatapoints[i].instanceId]) {\n var arr = [];\n arr.push(dataDatapoints[i]);\n target_datapoints[dataDatapoints[i].instanceId] = arr;\n } else {\n target_datapoints[dataDatapoints[i].instanceId].push(\n dataDatapoints[i]\n );\n }\n }\n }\n // 处理Grafana所需的target值、Target组的所需返回结果集\n ycol.map((ycolTarget) => {\n if (dimensions.includes(\"instanceId\")) {\n for (var i in target_datapoints) {\n var datapoints = [];\n target_datapoints[i].forEach((Datapoint) => {\n var datapoint = [];\n datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]);\n // 封装返回目标的第二层数组值\n datapoints.push(datapoint);\n });\n // 封装返回目标的第三层数组值\n resResult.push({\n target: describe + i + \".\" + ycolTarget,\n datapoints: datapoints,\n });\n }\n } else {\n var datapoints = [];\n dataDatapoints.forEach((Datapoint) => {\n var datapoint = [];\n datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]);\n // 封装返回目标的第二层数组值\n datapoints.push(datapoint);\n });\n // 封装返回目标的第三层数组值\n resResult.push({\n target: describe + ycolTarget,\n datapoints: datapoints,\n });\n }\n });\n // 转对象封装\n result = result.concat(\n typeof resResult == \"string\" ? JSON.parse(resResult) : resResult\n );\n });\n requests.push(request);\n });\n // 统一单独处理返回值\n return Promise.all(requests.map((p) => p.catch((e) => e))).then(() => {\n return { data: result };\n });\n }\n wait(ms) {\n return new Promise(resolve => setTimeout(resolve, ms))\n }\n\n async doNextToken(queryConcat, cursor, count) {\n var path = \"\";\n if (this.isEmpty(cursor)) {\n path = queryConcat;\n } else {\n path = queryConcat + \"&Cursor=\" + cursor;\n }\n var param = {\n path: path,\n method: \"GET\",\n };\n // 签名已拼接的待查询URL\n var query = this.buildRealUrl(param);\n if (_.isEmpty(query)) {\n var d = this.q.defer();\n d.resolve({ data: [] });\n return d.promise;\n }\n await this.wait(1000);\n //定义Promise元数据、根据URL发起请求\n return this.backendSrv\n .datasourceRequest({\n url: query,\n method: \"GET\",\n headers: this.headers,\n })\n .then((response) => {\n var result = [];\n if (response.status == \"200\" && response.data.Code == \"200\") {\n result = angular.fromJson(response.data.Datapoints);\n if(count > 20){\n return result;\n }\n count++;\n var nextToken = response.data.Cursor;\n if (this.isEmpty(response.data.Cursor)) {\n return result;\n } else {\n return this.doNextToken(queryConcat, nextToken, count).then((data) => {\n return result.concat(data); \n });\n }\n }\n return result;\n }).catch(() => {\n return [];\n });\n }\n\n // 测试连接数据源接口\n testDatasource() {\n var param = {\n path: \"/?Action=AccessKeyGet\",\n method: \"GET\",\n };\n return this.backendSrv.datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n }).then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n return {\n status: \"success\",\n message: \"Data source is working\",\n title: \"Success\",\n };\n }\n });\n }\n\n annotationQuery(options) {}\n\n metricFindQuery(options) {\n var result = [];\n //接受一个参数\n var namespacesQuery = options.match(/^namespaces\\(([^\\)]+?)(,\\s?([^,]+?))?\\)/);\n namespacesQuery =\n namespacesQuery == null ? options.match(/^namespace\\(([^\\)]+?)(,\\s?([^,]+?))?\\)/) : namespacesQuery;\n if (namespacesQuery != null) {\n var filter = this.util.templateToStr(namespacesQuery[1]);\n return this.getProject().then((namespaces) => {\n result = namespaces;\n if (!this.isEmpty(filter)) {\n result = [];\n namespaces.map((namespace) => {\n if (namespace.text.includes(filter)) {\n result.push(namespace);\n }\n });\n }\n return result;\n });\n }\n\n //接受二个参数\n var metricsQuery = options.match(/^metrics\\(([^,]+?),\\s?([^,]+?)\\)/);\n metricsQuery =\n metricsQuery == null ? options.match(/^metric\\(([^,]+?),\\s?([^,]+?)\\)/) : metricsQuery;\n if (metricsQuery != null) {\n var namespace = this.util.templateToStr(metricsQuery[1]);\n var filter = this.util.templateToStr(metricsQuery[2]);\n\n result = [];\n return this.getMetrics(namespace).then((metrics) => {\n result = metrics;\n if (!this.isEmpty(filter)) {\n result = [];\n metrics.map((metric) => {\n if (metric.text.includes(filter)) {\n result.push(metric);\n }\n });\n }\n return result;\n });\n }\n\n //接受四个参数,过滤Tag提供key、value选择\n var tagFilterQuery = options.match(/^tagFilter\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n tagFilterQuery =\n tagFilterQuery == null ? options.match(/^tagsFilter\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : tagFilterQuery;\n if (tagFilterQuery != null) {\n var type = this.util.templateToStr(tagFilterQuery[1]);\n var regionId = this.util.templateToStr(tagFilterQuery[2]);\n var tagType = this.isEmpty(tagFilterQuery[3]) ? \"\" : tagFilterQuery[3];\n var tagKey = this.isEmpty(tagFilterQuery[4]) ? \"\" : tagFilterQuery[4];\n var path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId;\n var tagKeyFilter = [];\n if(tagKey){\n path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId + \"&Tag.1.key=\" + tagKey;\n if(tagKey.indexOf(\"&Tag.2.key=\") != -1){\n var tagKeyArry = tagKey.split(\"&\");\n tagKeyArry.forEach(tagKeyInd => {\n tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf(\"key=\") == -1 ? 0 : tagKeyInd.indexOf(\"key=\") + 4));\n })\n }else{\n tagKeyFilter.push(tagKey);\n }\n\n if(tagKey.indexOf(\"Tag.1.key=\") != -1){\n path = \"/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=\" + regionId + \"&\" + tagKey;\n }\n if(tagKey.indexOf(\"PageNumber=\") != -1){\n path = \"/?Action=DescribeTags&PageSize=100&RegionId=\" + regionId + \"&\" + tagKey;\n }\n if(tagKey.indexOf(\"&\") == 0){\n path = \"/?Action=DescribeTags&PageSize=100&RegionId=\" + regionId + tagKey;\n }\n }\n var nextToken = \"\";\n result = [];\n return this.tagsFilter(type.toUpperCase(), nextToken, path, tagType, tagKeyFilter).then((tagsList) => {\n return this.util.arrayToMap(tagsList);\n });\n }\n\n //接受四个参数,暂不支持数组,提供dimensions选择\n var dimensionsQuery = options.match(/^dimension\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n dimensionsQuery =\n dimensionsQuery == null ? options.match(/^dimensions\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : dimensionsQuery;\n if (dimensionsQuery != null) {\n var namespace = this.util.templateToStr(dimensionsQuery[1]);\n var metric = this.util.templateToStr(dimensionsQuery[2]);\n\n var instanceId = dimensionsQuery[3];\n var instanceId_array = this.util.exists(instanceId) ? this.util.resolve(instanceId, {}) : [];\n if (instanceId_array.length == 0) {\n if (this.isEmpty(instanceId)) {\n instanceId_array = [];\n } else {\n instanceId_array = this.util.strToArray(instanceId);\n }\n }\n var filter = dimensionsQuery[4];\n var filter_array = this.util.exists(filter) ? this.util.resolve(filter, {}) : [];\n if (filter_array.length == 0) {\n if (this.isEmpty(filter)) {\n filter_array = [];\n } else {\n filter_array = this.util.strToArray(filter);\n }\n }\n result = [];\n return this.getDimensions(namespace, metric, \"\", []).then(\n (dimensions) => {\n var is_instanceId_bool = this.isEmpty(instanceId);\n var is_filter_bool = this.isEmpty(filter);\n if (is_instanceId_bool) {\n result = dimensions;\n } else {\n var instanceId_result = [];\n dimensions.map((dimension) => {\n instanceId_array.forEach((i) => {\n if (dimension.text.includes(i)) {\n instanceId_result.push(dimension);\n }\n });\n });\n if (is_filter_bool) {\n result = instanceId_result;\n } else {\n instanceId_result.map((dimension) => {\n filter_array.forEach((i) => {\n if (dimension.text.includes(i)) {\n result.push(dimension);\n }\n });\n });\n }\n }\n return result;\n }\n );\n }\n\n //接受5个参数,暂不支持数组,提供tag选择\n var tagQuery = options.match(/^tag\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/);\n tagQuery =\n tagQuery == null ? options.match(/^tags\\(([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?),\\s?([^,]+?)(,\\s?(.+))?\\)/) : tagQuery;\n if (tagQuery != null) {\n var resourceId = tagQuery[4];\n var resourceId_array = this.util.exists(resourceId) ? this.util.resolve(resourceId, {}) : [];\n if (resourceId_array.length == 0) {\n if (this.isEmpty(resourceId)) {\n resourceId_array = [];\n } else {\n resourceId_array = [];\n resourceId_array = this.util.strToArray(resourceId);\n }\n }\n var tag = tagQuery[5];\n var tag_array = this.util.exists(tag) ? this.util.resolve(tag, {}) : [];\n if (tag_array.length == 0) {\n if (this.isEmpty(tag)) {\n tag_array = [];\n } else {\n tag_array = [];\n tag_array = this.util.strToArray(tag);\n }\n }\n return this.listTagResources(\n tagQuery[1].toUpperCase(),\n tagQuery[2],\n tagQuery[3],\n resourceId_array,\n tag_array\n );\n }\n return [];\n }\n\n //返回所有的Project,QueryProjectMeta的API无自定义监控project、日志监控project,已拼接\n getProject() {\n var param = {\n path: \"/?Action=QueryProjectMeta&PageNumber=1&PageSize=1000\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var result = [];\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n data.Resources.Resource.map((resource) => {\n if (!this.isEmpty(resource.Project)) {\n result.push(resource.Project);\n }\n });\n }\n //增加自定义监控、日志监控选项\n var acs_param = {\n path: \"/?Action=AccessKeyGet\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(acs_param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n result.push(\"acs_logMonitor_\" + data.UserId);\n result.push(\"acs_customMetric_\" + data.UserId);\n }\n return this.util.arrayToMap(result);\n });\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project返回对应的所有的Metrics,无自定义监控、日志监控project对应的Metrics\n getMetrics(project) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=\" +\n project,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var result = [];\n data.Resources.Resource.map((resource) => {\n if (!this.isEmpty(resource.Metric)) {\n result.push(resource.Metric);\n }\n });\n return this.util.arrayToMap(result);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project及Metrics返回对应的所有的Period,无自定义监控、日志监控project对应的Period\n getPeriod(project, metric) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var period = [];\n var resource = data.Resources.Resource;\n if (resource.length > 0 && !this.isEmpty(resource[0].Periods)) {\n period = resource[0].Periods.split(\",\");\n }\n return this.util.arrayToMap(period);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //根据Project及Metrics返回对应的所有的Statistics,未去除已选项,无自定义监控、日志监控project对应的Period\n getStatistics(project, metric) {\n var param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var statistics = [];\n var resource = data.Resources.Resource;\n if (resource.length > 0 && !this.isEmpty(resource[0].Statistics)) {\n statistics = resource[0].Statistics.split(\",\");\n }\n return this.util.arrayToMap(statistics);\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n //返回所有的Groups,自定义监控、日志使用\n getGroups() {\n var param = {\n path: \"/?Action=ListMyGroups&PageNumber=1&PageSize=9000\",\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.ErrorCode == 200 && data.Success == true) {\n var result = [];\n var resource = data.Resources.Resource;\n var i = resource.length;\n while (i--) {\n var group = resource[i];\n var groupInfo = [];\n var groupId = group.GroupId;\n var groupName = group.GroupName;\n if (this.isEmpty(groupId) || this.isEmpty(groupName)) {\n continue;\n }\n groupInfo.push(groupId, groupName + \" / \" + groupId);\n result.push(groupInfo);\n }\n return _.map(result, (d, i) => {\n return { text: d[1], value: d[0] };\n });\n }\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n getDimensions(project, metric, period, dimensions) {\n if (\n project.indexOf(\"acs_customMetric\") != -1 ||\n project.indexOf(\"acs_logMonitor\") != -1\n ) {\n return;\n }\n var result = [];\n var endTime = new Date().getTime();\n var startTime = endTime - 1 * 60 * 60 * 1000;\n var param = {\n path:\n \"/?Action=QueryMetricLast&Page=1&Length=90000&Period=\" +\n period +\n \"&Project=\" +\n project +\n \"&Metric=\" +\n metric +\n \"&StartTime=\" +\n startTime +\n \"&EndTime=\" +\n endTime,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response) => {\n var data = response.data;\n if (data.Success == false) {\n return;\n }\n // 构建可选参数dimensions\n param = {\n path:\n \"/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=\" +\n project +\n \"&Metric=\" +\n metric,\n method: \"GET\",\n };\n return this.backendSrv\n .datasourceRequest({\n url: this.buildRealUrl(param),\n method: \"GET\",\n })\n .then((response_meta) => {\n var data_meta = response_meta.data;\n if (data_meta.ErrorCode == 200 && data_meta.Success == true) {\n var resource = data_meta.Resources.Resource;\n if (\n resource.length == 0 ||\n this.isEmpty(resource[0].Dimensions)\n ) {\n return;\n }\n var dimension = resource[0].Dimensions.split(\",\");\n var datapoints = JSON.parse(data.Datapoints);\n datapoints.map((datapoint) => {\n var datapointInfo = '{\"';\n dimension.forEach(function (value, index) {\n value = value.replace(/\"/g, \"\");\n if (value != \"userId\") {\n if (datapoint[value].indexOf(\":\\\\\") != -1) {\n datapointInfo += value + '\":\"' + datapoint[value] + '\\\\\"';\n } else {\n datapointInfo += value + '\":\"' + datapoint[value] + '\"';\n }\n if (index == dimension.length - 1) {\n datapointInfo += \"}\";\n } else {\n datapointInfo += ';\"';\n }\n }\n });\n //去重\n if (result.length == 0) {\n if (dimensions.length == 0) {\n result.push(datapointInfo);\n } else if (\n dimensions.length > 0 &&\n !dimensions.includes(datapointInfo)\n ) {\n result.push(datapointInfo);\n }\n } else if (\n result.length > 0 &&\n !result.includes(datapointInfo)\n ) {\n if (dimensions.length == 0) {\n result.push(datapointInfo);\n } else if (\n dimensions.length > 0 &&\n !dimensions.includes(datapointInfo)\n ) {\n result.push(datapointInfo);\n }\n }\n });\n return this.util.arrayToMap(result);\n }\n });\n })\n .catch(function (error) {\n console.log(error);\n return;\n });\n }\n\n // 暂时无翻页功能,无nextToken字段返回\n tagsFilter(type, nextToken, path, tagType, tagKeyFilter) {\n var reqUrl = path;\n if (!this.isEmpty(nextToken)) {\n reqUrl += \"&NextToken=\" + nextToken;\n }\n var param = {\n path: reqUrl,\n method: \"GET\",\n };\n var realUrl = \"\";\n if (\"ECS\" == type) {\n realUrl = this.buildECSRealUrl(param);\n return this.backendSrv.datasourceRequest({\n url: realUrl,\n method: \"GET\",\n }).then((response) => {\n var result = [];\n var data = response.data;\n var tags = data.Tags.Tag;\n if (tags.length > 0) {\n tags.forEach((tag) => {\n if (\"key\" == tagType) {\n if (!result.includes(tag.TagKey)) {\n result.push(tag.TagKey);\n }\n } else if (\"value\" == tagType) {\n if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) {\n var value = tag.TagKey + \":/:\" + tag.TagValue;\n if (!result.includes(value)) {\n result.push(value);\n }\n }\n }\n });\n }\n return result;\n });\n } else if (\"RDS\" == type) {\n realUrl = this.buildRDSRealUrl(param);\n return this.backendSrv\n .datasourceRequest({\n url: realUrl,\n method: \"GET\",\n })\n .then((response) => {\n var result = [];\n var data = response.data;\n var tags = data.Items.TagInfos;\n if (tags.length > 0) {\n tags.forEach((tag) => {\n if (\"key\" == tagType) {\n if (!result.includes(tag.TagKey)) {\n result.push(tag.TagKey);\n }\n } else if (\"value\" == tagType) {\n if (tagKeyFilter.includes(tag.TagKey) || tagKeyFilter.length == 0) {\n var value = tag.TagKey + \":/:\" + tag.TagValue;\n if (!result.includes(value)) {\n result.push(value);\n }\n }\n }\n });\n }\n return result;\n });\n }\n }\n\n listTagResources(type, regionId, resourceType, resourceId, tag) {\n type = this.isEmpty(type) ? \"ECS\" : type;\n regionId = this.isEmpty(regionId) ? \"cn-hangzhou\" : regionId;\n if (\"ECS\" == type) {\n resourceType = this.isEmpty(resourceType) ? \"instance\" : resourceType;\n } else if (\"RDS\" == type) {\n resourceType = this.isEmpty(resourceType) ? \"INSTANCE\" : resourceType;\n }\n var path = \"/?Action=ListTagResources&RegionId=\" + regionId + \"&ResourceType=\" + resourceType;\n for (var i = 0; i < resourceId.length; i++) {\n if (50 > i) {\n var v = resourceId[i];\n if (!this.isEmpty(v)) {\n path += \"&ResourceId.\" + (parseInt(i) + 1).toString() + \"=\" + v;\n }\n }\n }\n var tag_key_array = [];\n var tag_value_array = [];\n tag.forEach((t) => {\n if (!this.isEmpty(t)) {\n if (t.indexOf(\":/:\") != -1) {\n var t_split = t.split(\":/:\");\n if (!tag_key_array.includes(t_split[0])) {\n tag_key_array.push(t_split[0]);\n }\n if (!tag_value_array.includes(t_split[1])) {\n tag_value_array.push(t_split[1]);\n }\n }\n }\n });\n if (tag_key_array.length > 0) {\n for (var i = 0; i < tag_key_array.length; i++) {\n var key = tag_key_array[i];\n path += \"&Tag.\" + (parseInt(i) + 1).toString() + \".Key=\" + key;\n }\n } else if (tag_key_array.length == 0 && tag.length > 0) {\n for (var i = 0; i < tag.length; i++) {\n var key = tag[i];\n path += \"&Tag.\" + (parseInt(i) + 1).toString() + \".Key=\" + key;\n }\n }\n var nextToken = \"\";\n return this.tagList(type, nextToken, path, tag_value_array).then((rep) => {\n var distinct_result = [];\n rep.forEach((instanceId) => {\n if (!distinct_result.includes(instanceId)) {\n distinct_result.push(instanceId);\n }\n });\n return this.util.arrayToMap(distinct_result);\n });\n }\n // 处理nextToken问题\n tagList(type, nextToken, path, tag_value_array) {\n var reqUrl = path;\n if (!this.isEmpty(nextToken)) {\n reqUrl += \"&NextToken=\" + nextToken;\n }\n var param = {\n path: reqUrl,\n method: \"GET\",\n };\n var realUrl = \"\";\n if (\"ECS\" == type) {\n realUrl = this.buildECSRealUrl(param);\n } else if (\"RDS\" == type) {\n realUrl = this.buildRDSRealUrl(param);\n }\n return this.backendSrv.datasourceRequest({\n url: realUrl,\n method: \"GET\",\n }).then((response) => {\n var result = [];\n var data = response.data;\n var tagResource = data.TagResources.TagResource;\n if (tagResource.length > 0) {\n tagResource.forEach((resource) => {\n if (tag_value_array.length > 0) {\n if (tag_value_array.includes(resource.TagValue)) {\n result.push(resource.ResourceId);\n }\n } else {\n result.push(resource.ResourceId);\n }\n });\n }\n if (this.isEmpty(data.NextToken)) {\n return result;\n } else {\n return this.tagList(type, data.NextToken, path, tag_value_array).then(\n (nextList) => {\n return result.concat(nextList);\n }\n );\n }\n });\n }\n\n // 根据云监控API文档处理URL签名,做封装调用接口用\n buildRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.cmsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.basePath + signer.request.path;\n }\n\n // 根据ECS API文档处理URL签名,做封装调用接口用\n buildECSRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.ecsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.ecsBasePath + signer.request.path;\n }\n\n // 根据RDS API文档处理URL签名,做封装调用接口用\n buildRDSRealUrl(param) {\n var signer = new CmsSigner(\n {\n accessKeyId: this.jsonData.cmsAccessKey,\n secretAccessKey: this.jsonData.cmsSecretKey,\n version: this.rdsVersion,\n },\n param\n );\n signer.addAuthorization();\n return this.rdsBasePath + signer.request.path;\n }\n\n // 判断对象是否为空对象 true 空\n isEmpty(obj) {\n var re = new RegExp(\"^[ ]+$\");\n if (\n !obj ||\n obj == \"null\" ||\n obj == null ||\n obj == \" \" ||\n obj == \"\" ||\n obj == '\"\"' ||\n re.test(obj) ||\n typeof obj == \"undefined\"\n ) {\n return true;\n } // 为空\n return false; // 不为空\n }\n}\n"]} \ No newline at end of file diff --git a/dist/test/module.js b/dist/test/module.js deleted file mode 100644 index 8592cf2..0000000 --- a/dist/test/module.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -System.register(['./datasource', './query_ctrl'], function (_export, _context) { - "use strict"; - - var GenericDatasource, GenericDatasourceQueryCtrl, GenericConfigCtrl, GenericQueryOptionsCtrl, GenericAnnotationsQueryCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - return { - setters: [function (_datasource) { - GenericDatasource = _datasource.GenericDatasource; - }, function (_query_ctrl) { - GenericDatasourceQueryCtrl = _query_ctrl.GenericDatasourceQueryCtrl; - }], - execute: function () { - _export('ConfigCtrl', GenericConfigCtrl = function GenericConfigCtrl() { - _classCallCheck(this, GenericConfigCtrl); - }); - - GenericConfigCtrl.templateUrl = 'partials/config.html'; - - _export('QueryOptionsCtrl', GenericQueryOptionsCtrl = function GenericQueryOptionsCtrl() { - _classCallCheck(this, GenericQueryOptionsCtrl); - }); - - GenericQueryOptionsCtrl.templateUrl = 'partials/query.options.html'; - - _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl = function GenericAnnotationsQueryCtrl() { - _classCallCheck(this, GenericAnnotationsQueryCtrl); - }); - - GenericAnnotationsQueryCtrl.templateUrl = 'partials/annotations.editor.html'; - - _export('Datasource', GenericDatasource); - - _export('QueryCtrl', GenericDatasourceQueryCtrl); - - _export('ConfigCtrl', GenericConfigCtrl); - - _export('QueryOptionsCtrl', GenericQueryOptionsCtrl); - - _export('AnnotationsQueryCtrl', GenericAnnotationsQueryCtrl); - } - }; -}); -//# sourceMappingURL=module.js.map diff --git a/dist/test/module.js.map b/dist/test/module.js.map deleted file mode 100644 index 4a6876c..0000000 --- a/dist/test/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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"]} \ No newline at end of file diff --git a/dist/test/query_ctrl.js b/dist/test/query_ctrl.js deleted file mode 100644 index 15cf599..0000000 --- a/dist/test/query_ctrl.js +++ /dev/null @@ -1,254 +0,0 @@ -'use strict'; - -System.register(['app/plugins/sdk', './util.js', './css/query-editor.css!'], function (_export, _context) { - "use strict"; - - var QueryCtrl, Util, _createClass, GenericDatasourceQueryCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - return { - setters: [function (_appPluginsSdk) { - QueryCtrl = _appPluginsSdk.QueryCtrl; - }, function (_utilJs) { - Util = _utilJs.Util; - }, function (_cssQueryEditorCss) {}], - execute: function () { - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl = function (_QueryCtrl) { - _inherits(GenericDatasourceQueryCtrl, _QueryCtrl); - - function GenericDatasourceQueryCtrl($scope, $injector, templateSrv) { - _classCallCheck(this, GenericDatasourceQueryCtrl); - - var _this = _possibleConstructorReturn(this, (GenericDatasourceQueryCtrl.__proto__ || Object.getPrototypeOf(GenericDatasourceQueryCtrl)).call(this, $scope, $injector, templateSrv)); - - _this.scope = $scope; - _this.util = new Util(templateSrv); - _this.target.type = _this.target.type || 'timeserie'; - _this.target.target = _this.target.ycol; - _this.target.describe = _this.target.describe; - _this.target.xcol = _this.target.xcol || 'timestamp'; - _this.target.project = _this.target.project || 'acs_ecs_dashboard'; - _this.target.metric = _this.target.metric; - _this.target.period = _this.target.period; - _this.target.group = _this.target.group; - _this.target.dimensions = _this.target.dimensions || []; - _this.dimensions; - _this.target.ycol = _this.target.ycol || []; - _this.statistics; - - return _this; - } - - _createClass(GenericDatasourceQueryCtrl, [{ - key: 'getOptions', - value: function getOptions(query) { - this.checkIsNull(); - return this.datasource.metricFindQuery(query || ''); - } - }, { - key: 'getProjects', - value: function getProjects() { - this.checkIsNull(); - return this.datasource.getProject(); - } - }, { - key: 'getMetrics', - value: function getMetrics() { - this.checkIsNull(); - if (this.target.project) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - return this.datasource.getMetrics(project); - } - } - }, { - key: 'getPeriod', - value: function getPeriod() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - return this.datasource.getPeriod(project, metric); - } - } - }, { - key: 'getStatistics', - value: function getStatistics() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - return this.datasource.getStatistics(project, metric); - } - } - }, { - key: 'ycolPush', - value: function ycolPush(ycol) { - this.checkIsNull(); - if (!ycol || _.includes(this.target.ycol, ycol)) { - return; - } - this.target.ycol.push(ycol); - this.statistics = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'ycolSplice', - value: function ycolSplice(ycol) { - this.checkIsNull(); - if (!ycol || !_.includes(this.target.ycol, ycol)) { - return; - } - var i = this.target.ycol.indexOf(ycol); - this.target.ycol.splice(i, 1); - this.statistics = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'getGroups', - value: function getGroups() { - this.checkIsNull(); - return this.datasource.getGroups(); - } - }, { - key: 'getDimensions', - value: function getDimensions() { - this.checkIsNull(); - if (this.target.project && this.target.metric) { - var project = this.util.exists(this.target.project) == true ? this.util.resolve(this.target.project, {}) : this.target.project; - var metric = this.util.exists(this.target.metric) == true ? this.util.resolve(this.target.metric, {}) : this.target.metric; - var period = this.util.exists(this.target.period) == true ? this.util.resolve(this.target.period, {}) : this.target.period; - var dimensions = this.target.dimensions; - if (this.target.dimensions.indexOf("$") != -1) { - dimensions = this.util.resolve(this.target.dimensions, {}); - }; - return this.datasource.getDimensions(project, metric, period, dimensions); - } - } - }, { - key: 'dimensionsPush', - value: function dimensionsPush(dimension) { - this.checkIsNull(); - if (!dimension || _.includes(this.target.dimensions, dimension)) { - return; - } - this.target.dimensions.push(dimension); - this.dimensions = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'dimensionsSplice', - value: function dimensionsSplice(dimension) { - this.checkIsNull(); - if (!dimension || !_.includes(this.target.dimensions, dimension)) { - return; - } - var i = this.target.dimensions.indexOf(dimension); - this.target.dimensions.splice(i, 1); - this.dimensions = ""; - this.panelCtrl.refresh(); - } - }, { - key: 'toggleEditorMode', - value: function toggleEditorMode() { - this.target.rawQuery = !this.target.rawQuery; - } - }, { - key: 'onChangeInternal', - value: function onChangeInternal() { - this.checkIsNull(); - this.panelCtrl.refresh(); // Asks the panel to refresh data. - } - }, { - key: 'checkIsNull', - value: function checkIsNull() { - var re = new RegExp("^[ ]+$"); - if (!this.target.project || this.target.project == "null" || this.target.project == " " || this.target.project == '""' || re.test(this.target.project)) { - this.target.project = ""; - } - if (!this.target.metric || this.target.metric == "null" || this.target.metric == " " || this.target.metric == '""' || re.test(this.target.metric)) { - this.target.metric = ""; - } - if (!this.target.period || this.target.period == "null" || this.target.period == " " || this.target.period == '""' || re.test(this.target.period)) { - this.target.period = ""; - } - if (!this.target.group || this.target.group == "null" || this.target.group == " " || this.target.group == '""' || re.test(this.target.group)) { - this.target.group = ""; - }; - if (this.target.dimensions.length < 1) { - this.target.dimensions = []; - } - if (!this.dimensions || this.dimensions == "null" || this.dimensions == " " || this.dimensions == '""' || re.test(this.dimensions)) { - this.dimensions = ""; - } - if (!this.target.ycol || this.target.ycol == "null" || this.target.ycol == " " || this.target.ycol == '""' || re.test(this.target.ycol)) { - this.target.ycol = ""; - } - if (!this.statistics || this.statistics == "null" || this.statistics == " " || this.statistics == '""' || re.test(this.statistics)) { - this.statistics = ""; - } - if (!this.target.xcol || this.target.xcol == "null" || this.target.xcol == " " || this.target.xcol == '""' || re.test(this.target.xcol)) { - this.target.xcol = ""; - } - if (!this.target.describe || this.target.describe == "null" || this.target.describe == " " || this.target.describe == '""' || re.test(this.target.describe)) { - this.target.describe = ""; - } - } - }]); - - return GenericDatasourceQueryCtrl; - }(QueryCtrl)); - - _export('GenericDatasourceQueryCtrl', GenericDatasourceQueryCtrl); - - GenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html'; - } - }; -}); -//# sourceMappingURL=query_ctrl.js.map diff --git a/dist/test/query_ctrl.js.map b/dist/test/query_ctrl.js.map deleted file mode 100644 index 1bb384f..0000000 --- a/dist/test/query_ctrl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/query_ctrl.js"],"names":["QueryCtrl","Util","GenericDatasourceQueryCtrl","$scope","$injector","templateSrv","scope","util","target","type","ycol","describe","xcol","project","metric","period","group","dimensions","statistics","query","checkIsNull","datasource","metricFindQuery","getProject","exists","resolve","getMetrics","getPeriod","getStatistics","_","includes","push","panelCtrl","refresh","i","indexOf","splice","getGroups","getDimensions","dimension","rawQuery","re","RegExp","test","length","templateUrl"],"mappings":"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","file":"query_ctrl.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport {Util} from './util.js';\nimport './css/query-editor.css!'\n\nexport class GenericDatasourceQueryCtrl extends QueryCtrl {\n\n constructor($scope, $injector, templateSrv) {\n super($scope, $injector,templateSrv);\n this.scope = $scope;\n this.util = new Util(templateSrv);\n this.target.type = this.target.type || 'timeserie';\n this.target.target = this.target.ycol;\n this.target.describe = this.target.describe;\n this.target.xcol = this.target.xcol || 'timestamp';\n this.target.project = this.target.project || 'acs_ecs_dashboard';\n this.target.metric = this.target.metric;\n this.target.period = this.target.period;\n this.target.group = this.target.group;\n this.target.dimensions = this.target.dimensions || [];\n this.dimensions;\n this.target.ycol = this.target.ycol || [];\n this.statistics;\n\n }\n\n getOptions(query) {\n this.checkIsNull();\n return this.datasource.metricFindQuery(query || '');\n }\n\n getProjects() {\n this.checkIsNull();\n return this.datasource.getProject();\n }\n\n getMetrics() {\n this.checkIsNull();\n if(this.target.project){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n return this.datasource.getMetrics(project);\n }\n }\n\n getPeriod() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n return this.datasource.getPeriod(project,metric);\n }\n }\n\n getStatistics() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n return this.datasource.getStatistics(project,metric);\n }\n }\n\n ycolPush(ycol){\n this.checkIsNull();\n if(!ycol || _.includes(this.target.ycol, ycol)) {\n return;\n }\n this.target.ycol.push(ycol);\n this.statistics = \"\";\n this.panelCtrl.refresh();\n }\n\n ycolSplice(ycol){\n this.checkIsNull();\n if(!ycol || !_.includes(this.target.ycol, ycol)) {\n return;\n }\n let i = this.target.ycol.indexOf(ycol)\n this.target.ycol.splice(i,1);\n this.statistics = \"\";\n this.panelCtrl.refresh(); \n }\n\n getGroups() {\n this.checkIsNull();\n return this.datasource.getGroups();\n }\n\n getDimensions() {\n this.checkIsNull();\n if(this.target.project && this.target.metric){\n var project = this.util.exists(this.target.project) == true?this.util.resolve(this.target.project, {}):this.target.project;\n var metric = this.util.exists(this.target.metric) == true?this.util.resolve(this.target.metric, {}):this.target.metric;\n var period = this.util.exists(this.target.period) == true?this.util.resolve(this.target.period, {}):this.target.period;\n var dimensions = this.target.dimensions;\n if(this.target.dimensions.indexOf(\"$\") != -1){\n dimensions=this.util.resolve(this.target.dimensions, {});\n };\n return this.datasource.getDimensions(project,metric,period,dimensions);\n }\n }\n\n dimensionsPush(dimension){\n this.checkIsNull();\n if(!dimension || _.includes(this.target.dimensions, dimension)) {\n return;\n }\n this.target.dimensions.push(dimension);\n this.dimensions = \"\";\n this.panelCtrl.refresh();\n }\n\n dimensionsSplice(dimension){\n this.checkIsNull();\n if(!dimension || !_.includes(this.target.dimensions, dimension)) {\n return;\n }\n let i = this.target.dimensions.indexOf(dimension)\n this.target.dimensions.splice(i,1);\n this.dimensions = \"\";\n this.panelCtrl.refresh(); \n }\n\n toggleEditorMode() {\n this.target.rawQuery = !this.target.rawQuery;\n }\n\n onChangeInternal() {\n this.checkIsNull();\n this.panelCtrl.refresh(); // Asks the panel to refresh data.\n }\n \n // 校验页面可输入参数,防止脏乱\n checkIsNull(){\n var re = new RegExp(\"^[ ]+$\");\n if(!this.target.project || this.target.project == \"null\" \n || this.target.project == \" \" || this.target.project == '\"\"' \n || re.test(this.target.project)){\n this.target.project = \"\";\n }\n if(!this.target.metric || this.target.metric == \"null\" \n || this.target.metric == \" \" || this.target.metric == '\"\"' \n || re.test(this.target.metric)){\n this.target.metric = \"\";\n }\n if(!this.target.period || this.target.period == \"null\" \n || this.target.period == \" \" || this.target.period == '\"\"' \n || re.test(this.target.period)){\n this.target.period = \"\";\n }\n if(!this.target.group || this.target.group == \"null\" \n || this.target.group == \" \" || this.target.group == '\"\"' \n || re.test(this.target.group)){\n this.target.group = \"\";\n };\n if(this.target.dimensions.length < 1){\n this.target.dimensions = [];\n }\n if(!this.dimensions || this.dimensions == \"null\" \n || this.dimensions == \" \" || this.dimensions == '\"\"' \n || re.test(this.dimensions)){\n this.dimensions = \"\";\n }\n if(!this.target.ycol || this.target.ycol == \"null\" \n || this.target.ycol == \" \" || this.target.ycol == '\"\"' \n || re.test(this.target.ycol)){\n this.target.ycol = \"\";\n }\n if(!this.statistics || this.statistics == \"null\" \n || this.statistics == \" \" || this.statistics == '\"\"' \n || re.test(this.statistics)){\n this.statistics = \"\";\n }\n if(!this.target.xcol || this.target.xcol == \"null\" \n || this.target.xcol == \" \" || this.target.xcol == '\"\"' \n || re.test(this.target.xcol)){\n this.target.xcol = \"\";\n }\n if(!this.target.describe || this.target.describe == \"null\" \n || this.target.describe == \" \" || this.target.describe == '\"\"' \n || re.test(this.target.describe)){\n this.target.describe = \"\";\n }\n }\n}\n\nGenericDatasourceQueryCtrl.templateUrl = 'partials/query.editor.html';\n\n"]} \ No newline at end of file diff --git a/dist/test/sha1.js b/dist/test/sha1.js deleted file mode 100644 index 1206c7b..0000000 --- a/dist/test/sha1.js +++ /dev/null @@ -1,239 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - /* - A JavaScript implementation of the SHA family of hashes, as - defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding - HMAC implementation as defined in FIPS PUB 198a - - Copyright Brian Turek 2008-2017 - Distributed under the BSD License - See http://caligatio.github.com/jsSHA/ for more information - - Several functions taken from Paul Johnston - */ - function SHA() { - function r(d, b, c) { - var h = 0, - a = [], - f = 0, - g, - m, - k, - e, - l, - p, - q, - t, - w = !1, - n = [], - u = [], - v, - r = !1;c = c || {};g = c.encoding || "UTF8";v = c.numRounds || 1;if (v !== parseInt(v, 10) || 1 > v) throw Error("numRounds must a integer >= 1");if ("SHA-1" === d) l = 512, p = z, q = H, e = 160, t = function t(a) { - return a.slice(); - };else throw Error("Chosen SHA variant is not supported");k = A(b, g);m = x(d);this.setHMACKey = function (a, f, b) { - var c;if (!0 === w) throw Error("HMAC key already set");if (!0 === r) throw Error("Cannot set HMAC key after calling update"); - g = (b || {}).encoding || "UTF8";f = A(f, g)(a);a = f.binLen;f = f.value;c = l >>> 3;b = c / 4 - 1;if (c < a / 8) { - for (f = q(f, a, 0, x(d), e); f.length <= b;) { - f.push(0); - }f[b] &= 4294967040; - } else if (c > a / 8) { - for (; f.length <= b;) { - f.push(0); - }f[b] &= 4294967040; - }for (a = 0; a <= b; a += 1) { - n[a] = f[a] ^ 909522486, u[a] = f[a] ^ 1549556828; - }m = p(n, m);h = l;w = !0; - };this.update = function (b) { - var e, - g, - c, - d = 0, - q = l >>> 5;e = k(b, a, f);b = e.binLen;g = e.value;e = b >>> 5;for (c = 0; c < e; c += q) { - d + l <= b && (m = p(g.slice(c, c + q), m), d += l); - }h += d;a = g.slice(d >>> 5);f = b % l;r = !0; - };this.getHash = function (b, g) { - var c, k, l, p;if (!0 === w) throw Error("Cannot call getHash after setting HMAC key");l = B(g);switch (b) {case "HEX": - c = function c(a) { - return C(a, e, l); - };break;case "B64": - c = function c(a) { - return D(a, e, l); - };break;case "BYTES": - c = function c(a) { - return E(a, e); - };break;case "ARRAYBUFFER": - try { - k = new ArrayBuffer(0); - } catch (I) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(a) { - return F(a, e); - };break;default: - throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER");}p = q(a.slice(), f, h, t(m), e);for (k = 1; k < v; k += 1) { - p = q(p, e, 0, x(d), e); - }return c(p); - };this.getHMAC = function (b, g) { - var c, k, n, r;if (!1 === w) throw Error("Cannot call getHMAC without first setting HMAC key");n = B(g);switch (b) {case "HEX": - c = function c(a) { - return C(a, e, n); - };break;case "B64": - c = function c(a) { - return D(a, e, n); - };break;case "BYTES": - c = function c(a) { - return E(a, e); - };break;case "ARRAYBUFFER": - try { - c = new ArrayBuffer(0); - } catch (I) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(a) { - return F(a, e); - };break;default: - throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER"); - }k = q(a.slice(), f, h, t(m), e);r = p(u, x(d));r = q(k, e, l, r, e);return c(r); - }; - }function C(d, b, c) { - var h = "";b /= 8;var a, f;for (a = 0; a < b; a += 1) { - f = d[a >>> 2] >>> 8 * (3 + a % 4 * -1), h += "0123456789abcdef".charAt(f >>> 4 & 15) + "0123456789abcdef".charAt(f & 15); - }return c.outputUpper ? h.toUpperCase() : h; - }function D(d, b, c) { - var h = "", - a = b / 8, - f, - g, - m;for (f = 0; f < a; f += 3) { - for (g = f + 1 < a ? d[f + 1 >>> 2] : 0, m = f + 2 < a ? d[f + 2 >>> 2] : 0, m = (d[f >>> 2] >>> 8 * (3 + f % 4 * -1) & 255) << 16 | (g >>> 8 * (3 + (f + 1) % 4 * -1) & 255) << 8 | m >>> 8 * (3 + (f + 2) % 4 * -1) & 255, g = 0; 4 > g; g += 1) { - 8 * f + 6 * g <= b ? h += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m >>> 6 * (3 - g) & 63) : h += c.b64Pad; - } - }return h; - }function E(d, b) { - var c = "", - h = b / 8, - a, - f;for (a = 0; a < h; a += 1) { - f = d[a >>> 2] >>> 8 * (3 + a % 4 * -1) & 255, c += String.fromCharCode(f); - }return c; - }function F(d, b) { - var c = b / 8, - h, - a = new ArrayBuffer(c), - f;f = new Uint8Array(a);for (h = 0; h < c; h += 1) { - f[h] = d[h >>> 2] >>> 8 * (3 + h % 4 * -1) & 255; - }return a; - }function B(d) { - var b = { outputUpper: !1, b64Pad: "=", shakeLen: -1 };d = d || {};b.outputUpper = d.outputUpper || !1;!0 === d.hasOwnProperty("b64Pad") && (b.b64Pad = d.b64Pad);if ("boolean" !== typeof b.outputUpper) throw Error("Invalid outputUpper formatting option"); - if ("string" !== typeof b.b64Pad) throw Error("Invalid b64Pad formatting option");return b; - }function A(d, b) { - var c;switch (b) {case "UTF8":case "UTF16BE":case "UTF16LE": - break;default: - throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch (d) {case "HEX": - c = function c(b, a, f) { - var g = b.length, - c, - d, - e, - l, - p;if (0 !== g % 2) throw Error("String of HEX type must be in byte increments");a = a || [0];f = f || 0;p = f >>> 3;for (c = 0; c < g; c += 2) { - d = parseInt(b.substr(c, 2), 16);if (isNaN(d)) throw Error("String of HEX type contains invalid characters"); - l = (c >>> 1) + p;for (e = l >>> 2; a.length <= e;) { - a.push(0); - }a[e] |= d << 8 * (3 + l % 4 * -1); - }return { value: a, binLen: 4 * g + f }; - };break;case "TEXT": - c = function c(_c, a, f) { - var g, - d, - k = 0, - e, - l, - p, - q, - t, - n;a = a || [0];f = f || 0;p = f >>> 3;if ("UTF8" === b) for (n = 3, e = 0; e < _c.length; e += 1) { - for (g = _c.charCodeAt(e), d = [], 128 > g ? d.push(g) : 2048 > g ? (d.push(192 | g >>> 6), d.push(128 | g & 63)) : 55296 > g || 57344 <= g ? d.push(224 | g >>> 12, 128 | g >>> 6 & 63, 128 | g & 63) : (e += 1, g = 65536 + ((g & 1023) << 10 | _c.charCodeAt(e) & 1023), d.push(240 | g >>> 18, 128 | g >>> 12 & 63, 128 | g >>> 6 & 63, 128 | g & 63)), l = 0; l < d.length; l += 1) { - t = k + p;for (q = t >>> 2; a.length <= q;) { - a.push(0); - }a[q] |= d[l] << 8 * (n + t % 4 * -1);k += 1; - } - } else if ("UTF16BE" === b || "UTF16LE" === b) for (n = 2, d = "UTF16LE" === b && !0 || "UTF16LE" !== b && !1, e = 0; e < _c.length; e += 1) { - g = _c.charCodeAt(e);!0 === d && (l = g & 255, g = l << 8 | g >>> 8);t = k + p;for (q = t >>> 2; a.length <= q;) { - a.push(0); - }a[q] |= g << 8 * (n + t % 4 * -1);k += 2; - }return { value: a, binLen: 8 * k + f }; - };break;case "B64": - c = function c(b, a, f) { - var c = 0, - d, - k, - e, - l, - p, - q, - n;if (-1 === b.search(/^[a-zA-Z0-9=+\/]+$/)) throw Error("Invalid character in base-64 string");k = b.indexOf("=");b = b.replace(/\=/g, "");if (-1 !== k && k < b.length) throw Error("Invalid '=' found in base-64 string");a = a || [0];f = f || 0;q = f >>> 3;for (k = 0; k < b.length; k += 4) { - p = b.substr(k, 4);for (e = l = 0; e < p.length; e += 1) { - d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(p[e]), l |= d << 18 - 6 * e; - }for (e = 0; e < p.length - 1; e += 1) { - n = c + q;for (d = n >>> 2; a.length <= d;) { - a.push(0); - }a[d] |= (l >>> 16 - 8 * e & 255) << 8 * (3 + n % 4 * -1);c += 1; - } - }return { value: a, binLen: 8 * c + f }; - };break;case "BYTES": - c = function c(b, a, _c2) { - var d, m, k, e, l;a = a || [0];_c2 = _c2 || 0;k = _c2 >>> 3;for (m = 0; m < b.length; m += 1) { - d = b.charCodeAt(m), l = m + k, e = l >>> 2, a.length <= e && a.push(0), a[e] |= d << 8 * (3 + l % 4 * -1); - }return { value: a, binLen: 8 * b.length + _c2 }; - };break;case "ARRAYBUFFER": - try { - c = new ArrayBuffer(0); - } catch (h) { - throw Error("ARRAYBUFFER not supported by this environment"); - }c = function c(b, a, _c3) { - var d, m, k, e, l;a = a || [0];_c3 = _c3 || 0;m = _c3 >>> 3;l = new Uint8Array(b);for (d = 0; d < b.byteLength; d += 1) { - e = d + m, k = e >>> 2, a.length <= k && a.push(0), a[k] |= l[d] << 8 * (3 + e % 4 * -1); - }return { value: a, binLen: 8 * b.byteLength + _c3 }; - };break;default: - throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER"); - }return c; - }function n(d, b) { - return d << b | d >>> 32 - b; - }function u(d, b) { - var c = (d & 65535) + (b & 65535);return ((d >>> 16) + (b >>> 16) + (c >>> 16) & 65535) << 16 | c & 65535; - }function y(d, b, c, h, a) { - var f = (d & 65535) + (b & 65535) + (c & 65535) + (h & 65535) + (a & 65535);return ((d >>> 16) + (b >>> 16) + (c >>> 16) + (h >>> 16) + (a >>> 16) + (f >>> 16) & 65535) << 16 | f & 65535; - }function x(d) { - var b = [];if ("SHA-1" === d) b = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];else throw Error("No SHA variants supported");return b; - }function z(d, b) { - var c = [], - h, - a, - f, - g, - m, - k, - e;h = b[0];a = b[1]; - f = b[2];g = b[3];m = b[4];for (e = 0; 80 > e; e += 1) { - c[e] = 16 > e ? d[e] : n(c[e - 3] ^ c[e - 8] ^ c[e - 14] ^ c[e - 16], 1), k = 20 > e ? y(n(h, 5), a & f ^ ~a & g, m, 1518500249, c[e]) : 40 > e ? y(n(h, 5), a ^ f ^ g, m, 1859775393, c[e]) : 60 > e ? y(n(h, 5), a & f ^ a & g ^ f & g, m, 2400959708, c[e]) : y(n(h, 5), a ^ f ^ g, m, 3395469782, c[e]), m = g, g = f, f = n(a, 30), a = h, h = k; - }b[0] = u(h, b[0]);b[1] = u(a, b[1]);b[2] = u(f, b[2]);b[3] = u(g, b[3]);b[4] = u(m, b[4]);return b; - }function H(d, b, c, h) { - var a;for (a = (b + 65 >>> 9 << 4) + 15; d.length <= a;) { - d.push(0); - }d[b >>> 5] |= 128 << 24 - b % 32;b += c;d[a] = b & 4294967295;d[a - 1] = b / 4294967296 | 0; - b = d.length;for (a = 0; a < b; a += 16) { - h = z(d.slice(a, a + 16), h); - }return h; - }return r; - } - - _export("SHA", SHA); - - return { - setters: [], - execute: function () {} - }; -}); -//# sourceMappingURL=sha1.js.map diff --git a/dist/test/sha1.js.map b/dist/test/sha1.js.map deleted file mode 100644 index 1964dd9..0000000 --- a/dist/test/sha1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/sha1.js"],"names":["SHA","r","d","b","c","h","a","f","g","m","k","e","l","p","q","t","w","n","u","v","encoding","numRounds","parseInt","Error","z","H","slice","A","x","setHMACKey","binLen","value","length","push","update","getHash","B","C","D","E","ArrayBuffer","I","F","getHMAC","charAt","outputUpper","toUpperCase","b64Pad","String","fromCharCode","Uint8Array","shakeLen","hasOwnProperty","substr","isNaN","charCodeAt","search","indexOf","replace","byteLength","y"],"mappings":"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","file":"sha1.js","sourcesContent":["/*\n A JavaScript implementation of the SHA family of hashes, as\n defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding\n HMAC implementation as defined in FIPS PUB 198a\n\n Copyright Brian Turek 2008-2017\n Distributed under the BSD License\n See http://caligatio.github.com/jsSHA/ for more information\n\n Several functions taken from Paul Johnston\n*/\nexport function SHA() {function r(d,b,c){var h=0,a=[],f=0,g,m,k,e,l,p,q,t,w=!1,n=[],u=[],v,r=!1;c=c||{};g=c.encoding||\"UTF8\";v=c.numRounds||1;if(v!==parseInt(v,10)||1>v)throw Error(\"numRounds must a integer >= 1\");if(\"SHA-1\"===d)l=512,p=z,q=H,e=160,t=function(a){return a.slice()};else throw Error(\"Chosen SHA variant is not supported\");k=A(b,g);m=x(d);this.setHMACKey=function(a,f,b){var c;if(!0===w)throw Error(\"HMAC key already set\");if(!0===r)throw Error(\"Cannot set HMAC key after calling update\");\ng=(b||{}).encoding||\"UTF8\";f=A(f,g)(a);a=f.binLen;f=f.value;c=l>>>3;b=c/4-1;if(ca/8){for(;f.length<=b;)f.push(0);f[b]&=4294967040}for(a=0;a<=b;a+=1)n[a]=f[a]^909522486,u[a]=f[a]^1549556828;m=p(n,m);h=l;w=!0};this.update=function(b){var e,g,c,d=0,q=l>>>5;e=k(b,a,f);b=e.binLen;g=e.value;e=b>>>5;for(c=0;c>>5);f=b%l;r=!0};this.getHash=function(b,g){var c,k,l,p;if(!0===\nw)throw Error(\"Cannot call getHash after setting HMAC key\");l=B(g);switch(b){case \"HEX\":c=function(a){return C(a,e,l)};break;case \"B64\":c=function(a){return D(a,e,l)};break;case \"BYTES\":c=function(a){return E(a,e)};break;case \"ARRAYBUFFER\":try{k=new ArrayBuffer(0)}catch(I){throw Error(\"ARRAYBUFFER not supported by this environment\");}c=function(a){return F(a,e)};break;default:throw Error(\"format must be HEX, B64, BYTES, or ARRAYBUFFER\");}p=q(a.slice(),f,h,t(m),e);for(k=1;k>>2]>>>8*(3+a%4*-1),h+=\"0123456789abcdef\".charAt(f>>>4&15)+\"0123456789abcdef\".charAt(f&15);return c.outputUpper?h.toUpperCase():h}function D(d,b,c){var h=\"\",a=b/8,f,g,m;for(f=0;f>>2]:0,m=f+2>>2]:0,m=(d[f>>>2]>>>8*(3+f%4*-1)&255)<<16|(g>>>8*(3+(f+1)%4*-1)&255)<<8|m>>>8*(3+(f+2)%4*-1)&255,g=0;4>g;g+=1)8*f+6*g<=b?h+=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".charAt(m>>>\n6*(3-g)&63):h+=c.b64Pad;return h}function E(d,b){var c=\"\",h=b/8,a,f;for(a=0;a>>2]>>>8*(3+a%4*-1)&255,c+=String.fromCharCode(f);return c}function F(d,b){var c=b/8,h,a=new ArrayBuffer(c),f;f=new Uint8Array(a);for(h=0;h>>2]>>>8*(3+h%4*-1)&255;return a}function B(d){var b={outputUpper:!1,b64Pad:\"=\",shakeLen:-1};d=d||{};b.outputUpper=d.outputUpper||!1;!0===d.hasOwnProperty(\"b64Pad\")&&(b.b64Pad=d.b64Pad);if(\"boolean\"!==typeof b.outputUpper)throw Error(\"Invalid outputUpper formatting option\");\nif(\"string\"!==typeof b.b64Pad)throw Error(\"Invalid b64Pad formatting option\");return b}function A(d,b){var c;switch(b){case \"UTF8\":case \"UTF16BE\":case \"UTF16LE\":break;default:throw Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\");}switch(d){case \"HEX\":c=function(b,a,f){var g=b.length,c,d,e,l,p;if(0!==g%2)throw Error(\"String of HEX type must be in byte increments\");a=a||[0];f=f||0;p=f>>>3;for(c=0;c>>1)+p;for(e=l>>>2;a.length<=e;)a.push(0);a[e]|=d<<8*(3+l%4*-1)}return{value:a,binLen:4*g+f}};break;case \"TEXT\":c=function(c,a,f){var g,d,k=0,e,l,p,q,t,n;a=a||[0];f=f||0;p=f>>>3;if(\"UTF8\"===b)for(n=3,e=0;eg?d.push(g):2048>g?(d.push(192|g>>>6),d.push(128|g&63)):55296>g||57344<=g?d.push(224|g>>>12,128|g>>>6&63,128|g&63):(e+=1,g=65536+((g&1023)<<10|c.charCodeAt(e)&1023),d.push(240|g>>>18,128|g>>>12&63,128|g>>>6&63,128|g&63)),l=0;l>>2;a.length<=q;)a.push(0);a[q]|=d[l]<<8*(n+t%4*-1);k+=1}else if(\"UTF16BE\"===b||\"UTF16LE\"===b)for(n=2,d=\"UTF16LE\"===b&&!0||\"UTF16LE\"!==b&&!1,e=0;e>>8);t=k+p;for(q=t>>>2;a.length<=q;)a.push(0);a[q]|=g<<8*(n+t%4*-1);k+=2}return{value:a,binLen:8*k+f}};break;case \"B64\":c=function(b,a,f){var c=0,d,k,e,l,p,q,n;if(-1===b.search(/^[a-zA-Z0-9=+\\/]+$/))throw Error(\"Invalid character in base-64 string\");k=b.indexOf(\"=\");b=b.replace(/\\=/g,\n\"\");if(-1!==k&&k'); - global.window = global.document.parentWindow; - - // Setup Chai - chai.should(); - global.assert = chai.assert; - global.expect = chai.expect; - } - }; -}); -//# sourceMappingURL=test-main.js.map diff --git a/dist/test/spec/test-main.js.map b/dist/test/spec/test-main.js.map deleted file mode 100644 index 2ceb76a..0000000 --- a/dist/test/spec/test-main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../spec/test-main.js"],"names":["prunk","jsdom","chai","mock","QueryCtrl","global","document","window","parentWindow","should","assert","expect"],"mappings":";;;;;;;;AAAOA,iB;;AACCC,iB,UAAAA,K;;AACDC,gB;;;;AAEP;AACA;AACAF,kBAAMG,IAAN,CAAW,yBAAX,EAAsC,eAAtC;AACAH,kBAAMG,IAAN,CAAW,iBAAX,EAA8B;AAC1BC,2BAAW;AADe,aAA9B;;AAIA;AACA;AACAC,mBAAOC,QAAP,GAAkBL,MAAM,0DAAN,CAAlB;AACAI,mBAAOE,MAAP,GAAgBF,OAAOC,QAAP,CAAgBE,YAAhC;;AAEA;AACAN,iBAAKO,MAAL;AACAJ,mBAAOK,MAAP,GAAgBR,KAAKQ,MAArB;AACAL,mBAAOM,MAAP,GAAgBT,KAAKS,MAArB","file":"test-main.js","sourcesContent":["import prunk from 'prunk';\nimport {jsdom} from 'jsdom';\nimport chai from 'chai';\n\n// Mock Grafana modules that are not available outside of the core project\n// Required for loading module.js\nprunk.mock('./css/query-editor.css!', 'no css, dude.');\nprunk.mock('app/plugins/sdk', {\n QueryCtrl: null\n});\n\n// Setup jsdom\n// Required for loading angularjs\nglobal.document = jsdom('');\nglobal.window = global.document.parentWindow;\n\n// Setup Chai\nchai.should();\nglobal.assert = chai.assert;\nglobal.expect = chai.expect;\n"]} \ No newline at end of file diff --git a/dist/test/util.js b/dist/test/util.js deleted file mode 100644 index 32b0f4e..0000000 --- a/dist/test/util.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -System.register(['lodash'], function (_export, _context) { - "use strict"; - - var _, _typeof, _createClass, Util; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - return { - setters: [function (_lodash) { - _ = _lodash.default; - }], - execute: function () { - _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - _export('Util', Util = function () { - function Util(templateSrv) { - _classCallCheck(this, Util); - - this.templateSrv = templateSrv; - } - - _createClass(Util, [{ - key: 'resolve', - value: function resolve(target, options) { - var _this = this; - - var variableNames = (this.templateSrv.variables || []).map(function (v) { - return '$' + v.name; - }); - // For each variable in target, and each values of a given variable, build a resolved target string - var resolved = [target]; - if (variableNames) { - variableNames.forEach(function (name) { - if (target.indexOf(name) >= 0) { - var values = _this.getVarValues(name, options.scopedVars); - var newResolved = []; - var regex = new RegExp('\\' + name, 'g'); - values.forEach(function (val) { - resolved.forEach(function (newTarget) { - newResolved.push(newTarget.replace(regex, val)); - }); - }); - resolved = newResolved; - } - }); - } - return resolved; - } - }, { - key: 'resolveForQL', - value: function resolveForQL(target, options) { - return this.templateSrv.replace(target, options.scopedVars, function (values) { - if (_.isArray(values)) { - return values.map(function (v) { - return '\'' + v + '\''; - }).join(','); - } - return '\'' + values + '\''; - }); - } - }, { - key: 'getVarValues', - value: function getVarValues(name, scopedVars) { - var values = this.templateSrv.replace(name, scopedVars); - // result might be in like "{id1,id2,id3}" (as string) - if (values.charAt(0) === '{') { - return values.substring(1, values.length - 1).split(','); - } - return [values]; - } - }, { - key: 'exists', - value: function exists(name) { - return this.templateSrv.variableExists(name); - } - }, { - key: 'isEmpty', - value: function isEmpty(obj) { - var re = new RegExp("^[ ]+$"); - if (!obj || obj == "null" || obj == null || obj == " " || obj == "" || obj == '""' || re.test(obj) || typeof obj == "undefined") { - return true; - } // 为空 - return false; // 不为空 - } - }, { - key: 'arrayToMap', - value: function arrayToMap(result) { - return _.map(result, function (d, i) { - return { text: d, value: d }; - }); - } - }, { - key: 'templateToStr', - value: function templateToStr(tmp_str) { - if (this.isEmpty(tmp_str)) { - return []; - } - tmp_str = this.exists(tmp_str) ? this.resolve(tmp_str, {}) : tmp_str; - if ("object" == (typeof tmp_str === 'undefined' ? 'undefined' : _typeof(tmp_str)) && Object.keys(tmp_str).length) { - tmp_str = tmp_str[0]; - } - return tmp_str; - } - }, { - key: 'strToArray', - value: function strToArray(str_var) { - var _this2 = this; - - str_var = this.templateToStr(str_var); - - if (str_var.includes("[") || str_var.includes("]")) { - str_var = str_var.replace("[", "").replace("]", ""); - } - - var str_var_array = []; - if (str_var.includes(";")) { - str_var_array = str_var.split(";"); - } else if (str_var.includes(",")) { - str_var_array = str_var.split(","); - } else { - str_var_array.push(str_var); - } - var result_array = []; - str_var_array.forEach(function (i) { - i = _this2.exists(i) ? _this2.resolve(i, {}) : i; - result_array.push(i); - }); - - return result_array; - } - }]); - - return Util; - }()); - - _export('Util', Util); - } - }; -}); -//# sourceMappingURL=util.js.map diff --git a/dist/test/util.js.map b/dist/test/util.js.map deleted file mode 100644 index d5e140b..0000000 --- a/dist/test/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/util.js"],"names":["_","Util","templateSrv","target","options","variableNames","variables","map","v","name","resolved","forEach","indexOf","values","getVarValues","scopedVars","newResolved","regex","RegExp","push","newTarget","replace","val","isArray","join","charAt","substring","length","split","variableExists","obj","re","test","result","d","i","text","value","tmp_str","isEmpty","exists","resolve","Object","keys","str_var","templateToStr","includes","str_var_array","result_array"],"mappings":"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","file":"util.js","sourcesContent":["import _ from 'lodash';\n\nexport class Util {\n\n constructor(templateSrv) {\n this.templateSrv = templateSrv;\n }\n\n resolve(target, options) {\n const variableNames = (this.templateSrv.variables || []).map(v => '$' + v.name);\n // For each variable in target, and each values of a given variable, build a resolved target string\n let resolved = [target];\n if (variableNames) {\n variableNames.forEach(name => {\n if (target.indexOf(name) >= 0) {\n const values = this.getVarValues(name, options.scopedVars);\n const newResolved = [];\n const regex = new RegExp('\\\\' + name, 'g');\n values.forEach(val => {\n resolved.forEach(newTarget => {\n newResolved.push(newTarget.replace(regex, val));\n });\n });\n resolved = newResolved;\n }\n });\n }\n return resolved;\n }\n\n resolveForQL(target, options) {\n return this.templateSrv.replace(target, options.scopedVars, values => {\n if (_.isArray(values)) {\n return values.map(v => `'${v}'`).join(',');\n }\n return `'${values}'`;\n });\n }\n\n getVarValues(name, scopedVars) {\n const values = this.templateSrv.replace(name, scopedVars);\n // result might be in like \"{id1,id2,id3}\" (as string)\n if (values.charAt(0) === '{') {\n return values.substring(1, values.length-1).split(',');\n }\n return [values];\n }\n\n exists(name) {\n return this.templateSrv.variableExists(name);\n }\n\n isEmpty(obj) { \n var re = new RegExp(\"^[ ]+$\");\n if(!obj || obj == \"null\" || obj == null || obj == \" \" || obj == \"\" \n || obj == '\"\"' || re.test(obj) || typeof(obj) == \"undefined\"){\n return true\n }// 为空\n return false; // 不为空\n }\n\n //将数组处理成Map对象集 \n arrayToMap(result) {\n return _.map(result, (d, i) => {\n return { text: d, value: d };\n });\n }\n\n //处理str模板变量数据\n templateToStr(tmp_str){\n if(this.isEmpty(tmp_str)){\n return [];\n }\n tmp_str = this.exists(tmp_str) ? this.resolve(tmp_str, {}) : tmp_str;\n if(\"object\" == typeof tmp_str && Object.keys(tmp_str).length){\n tmp_str = tmp_str[0];\n }\n return tmp_str;\n }\n\n // 处理str类型字符串数组成[]类型\n strToArray(str_var){\n str_var = this.templateToStr(str_var);\n\n if(str_var.includes(\"[\") || str_var.includes(\"]\")){\n str_var = str_var.replace(\"[\", \"\").replace(\"]\", \"\");\n }\n\n var str_var_array = []\n if(str_var.includes(\";\")){\n str_var_array = str_var.split(\";\");\n }else if(str_var.includes(\",\")){\n str_var_array = str_var.split(\",\");\n }else{\n str_var_array.push(str_var);\n }\n var result_array = [];\n str_var_array.forEach(i => {\n i = this.exists(i) ? this.resolve(i, {}) : i;\n result_array.push(i);\n })\n\n return result_array;\n }\n}"]} \ No newline at end of file diff --git a/dist/util.js b/dist/util.js deleted file mode 100644 index 32b0f4e..0000000 --- a/dist/util.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -System.register(['lodash'], function (_export, _context) { - "use strict"; - - var _, _typeof, _createClass, Util; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - return { - setters: [function (_lodash) { - _ = _lodash.default; - }], - execute: function () { - _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - _export('Util', Util = function () { - function Util(templateSrv) { - _classCallCheck(this, Util); - - this.templateSrv = templateSrv; - } - - _createClass(Util, [{ - key: 'resolve', - value: function resolve(target, options) { - var _this = this; - - var variableNames = (this.templateSrv.variables || []).map(function (v) { - return '$' + v.name; - }); - // For each variable in target, and each values of a given variable, build a resolved target string - var resolved = [target]; - if (variableNames) { - variableNames.forEach(function (name) { - if (target.indexOf(name) >= 0) { - var values = _this.getVarValues(name, options.scopedVars); - var newResolved = []; - var regex = new RegExp('\\' + name, 'g'); - values.forEach(function (val) { - resolved.forEach(function (newTarget) { - newResolved.push(newTarget.replace(regex, val)); - }); - }); - resolved = newResolved; - } - }); - } - return resolved; - } - }, { - key: 'resolveForQL', - value: function resolveForQL(target, options) { - return this.templateSrv.replace(target, options.scopedVars, function (values) { - if (_.isArray(values)) { - return values.map(function (v) { - return '\'' + v + '\''; - }).join(','); - } - return '\'' + values + '\''; - }); - } - }, { - key: 'getVarValues', - value: function getVarValues(name, scopedVars) { - var values = this.templateSrv.replace(name, scopedVars); - // result might be in like "{id1,id2,id3}" (as string) - if (values.charAt(0) === '{') { - return values.substring(1, values.length - 1).split(','); - } - return [values]; - } - }, { - key: 'exists', - value: function exists(name) { - return this.templateSrv.variableExists(name); - } - }, { - key: 'isEmpty', - value: function isEmpty(obj) { - var re = new RegExp("^[ ]+$"); - if (!obj || obj == "null" || obj == null || obj == " " || obj == "" || obj == '""' || re.test(obj) || typeof obj == "undefined") { - return true; - } // 为空 - return false; // 不为空 - } - }, { - key: 'arrayToMap', - value: function arrayToMap(result) { - return _.map(result, function (d, i) { - return { text: d, value: d }; - }); - } - }, { - key: 'templateToStr', - value: function templateToStr(tmp_str) { - if (this.isEmpty(tmp_str)) { - return []; - } - tmp_str = this.exists(tmp_str) ? this.resolve(tmp_str, {}) : tmp_str; - if ("object" == (typeof tmp_str === 'undefined' ? 'undefined' : _typeof(tmp_str)) && Object.keys(tmp_str).length) { - tmp_str = tmp_str[0]; - } - return tmp_str; - } - }, { - key: 'strToArray', - value: function strToArray(str_var) { - var _this2 = this; - - str_var = this.templateToStr(str_var); - - if (str_var.includes("[") || str_var.includes("]")) { - str_var = str_var.replace("[", "").replace("]", ""); - } - - var str_var_array = []; - if (str_var.includes(";")) { - str_var_array = str_var.split(";"); - } else if (str_var.includes(",")) { - str_var_array = str_var.split(","); - } else { - str_var_array.push(str_var); - } - var result_array = []; - str_var_array.forEach(function (i) { - i = _this2.exists(i) ? _this2.resolve(i, {}) : i; - result_array.push(i); - }); - - return result_array; - } - }]); - - return Util; - }()); - - _export('Util', Util); - } - }; -}); -//# sourceMappingURL=util.js.map diff --git a/dist/util.js.map b/dist/util.js.map deleted file mode 100644 index 6eaaf73..0000000 --- a/dist/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/util.js"],"names":["_","Util","templateSrv","target","options","variableNames","variables","map","v","name","resolved","forEach","indexOf","values","getVarValues","scopedVars","newResolved","regex","RegExp","push","newTarget","replace","val","isArray","join","charAt","substring","length","split","variableExists","obj","re","test","result","d","i","text","value","tmp_str","isEmpty","exists","resolve","Object","keys","str_var","templateToStr","includes","str_var_array","result_array"],"mappings":"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","file":"util.js","sourcesContent":["import _ from 'lodash';\n\nexport class Util {\n\n constructor(templateSrv) {\n this.templateSrv = templateSrv;\n }\n\n resolve(target, options) {\n const variableNames = (this.templateSrv.variables || []).map(v => '$' + v.name);\n // For each variable in target, and each values of a given variable, build a resolved target string\n let resolved = [target];\n if (variableNames) {\n variableNames.forEach(name => {\n if (target.indexOf(name) >= 0) {\n const values = this.getVarValues(name, options.scopedVars);\n const newResolved = [];\n const regex = new RegExp('\\\\' + name, 'g');\n values.forEach(val => {\n resolved.forEach(newTarget => {\n newResolved.push(newTarget.replace(regex, val));\n });\n });\n resolved = newResolved;\n }\n });\n }\n return resolved;\n }\n\n resolveForQL(target, options) {\n return this.templateSrv.replace(target, options.scopedVars, values => {\n if (_.isArray(values)) {\n return values.map(v => `'${v}'`).join(',');\n }\n return `'${values}'`;\n });\n }\n\n getVarValues(name, scopedVars) {\n const values = this.templateSrv.replace(name, scopedVars);\n // result might be in like \"{id1,id2,id3}\" (as string)\n if (values.charAt(0) === '{') {\n return values.substring(1, values.length-1).split(',');\n }\n return [values];\n }\n\n exists(name) {\n return this.templateSrv.variableExists(name);\n }\n\n isEmpty(obj) { \n var re = new RegExp(\"^[ ]+$\");\n if(!obj || obj == \"null\" || obj == null || obj == \" \" || obj == \"\" \n || obj == '\"\"' || re.test(obj) || typeof(obj) == \"undefined\"){\n return true\n }// 为空\n return false; // 不为空\n }\n\n //将数组处理成Map对象集 \n arrayToMap(result) {\n return _.map(result, (d, i) => {\n return { text: d, value: d };\n });\n }\n\n //处理str模板变量数据\n templateToStr(tmp_str){\n if(this.isEmpty(tmp_str)){\n return [];\n }\n tmp_str = this.exists(tmp_str) ? this.resolve(tmp_str, {}) : tmp_str;\n if(\"object\" == typeof tmp_str && Object.keys(tmp_str).length){\n tmp_str = tmp_str[0];\n }\n return tmp_str;\n }\n\n // 处理str类型字符串数组成[]类型\n strToArray(str_var){\n str_var = this.templateToStr(str_var);\n\n if(str_var.includes(\"[\") || str_var.includes(\"]\")){\n str_var = str_var.replace(\"[\", \"\").replace(\"]\", \"\");\n }\n\n var str_var_array = []\n if(str_var.includes(\";\")){\n str_var_array = str_var.split(\";\");\n }else if(str_var.includes(\",\")){\n str_var_array = str_var.split(\",\");\n }else{\n str_var_array.push(str_var);\n }\n var result_array = [];\n str_var_array.forEach(i => {\n i = this.exists(i) ? this.resolve(i, {}) : i;\n result_array.push(i);\n })\n\n return result_array;\n }\n}"]} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f1626a1 --- /dev/null +++ b/go.mod @@ -0,0 +1,12 @@ +module gitlab.alibaba-inc.com/cms/metricstore4grafana + +go 1.14 + +require ( + github.com/aliyun/alibaba-cloud-sdk-go v1.61.752 + github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 + github.com/gocql/gocql v0.0.0-20200815110948-5378c8f664e9 + github.com/grafana/grafana-plugin-sdk-go v0.77.0 + github.com/magefile/mage v1.10.0 // indirect + gopkg.in/inf.v0 v0.9.1 +) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b060ddf..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5616 +0,0 @@ -{ - "name": "aliyun-cms-grafana-datasource", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/estree": { - "version": "0.0.38", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.38.tgz", - "integrity": "sha512-F/v7t1LwS4vnXuPooJQGBRKRGIoxWUTmA4VHfqjOccFsNDThD5bfUNpITive6s352O7o384wcpEaDV8rHCehDA==", - "dev": true - }, - "@types/node": { - "version": "14.0.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", - "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==", - "dev": true - }, - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "abs": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/abs/-/abs-1.3.13.tgz", - "integrity": "sha512-VgsJF4AZDoxLwTRx+TlZ6gpHfSaRUcg1Vhyruqxzpr6lTmh3JMO9667AHAVUGHUD3Li9QqjX2WaTXR6pkGFU+Q==", - "requires": { - "ul": "^5.0.0" - } - }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, - "requires": { - "acorn": "^4.0.4" - } - }, - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-transform-amd-system-wrapper": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-amd-system-wrapper/-/babel-plugin-transform-amd-system-wrapper-0.3.7.tgz", - "integrity": "sha1-Uhx4LTVkRJHJeepoPopeHK/wukI=", - "dev": true, - "requires": { - "babel-template": "^6.9.0" - } - }, - "babel-plugin-transform-cjs-system-wrapper": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.6.2.tgz", - "integrity": "sha1-vXSUd1KJQk/0k7btRV3klb1xuh0=", - "dev": true, - "requires": { - "babel-template": "^6.9.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-global-system-wrapper": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.3.4.tgz", - "integrity": "sha1-lI3X0p/CFEfjm9NEfy3rx/L3Oqw=", - "dev": true, - "requires": { - "babel-template": "^6.9.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-system-register": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz", - "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=", - "dev": true - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "~0.2.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz", - "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=", - "dev": true - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deffy": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deffy/-/deffy-2.2.3.tgz", - "integrity": "sha512-c5JD8Z6V1aBWVzn1+aELL97R1pHCwEjXeU3hZXdigkZkxb9vhgFP162kAxGXl992TtAg0btwQyx7d54CqcQaXQ==", - "requires": { - "typpy": "^2.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "err": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/err/-/err-1.1.1.tgz", - "integrity": "sha1-65KOLhGjFmSPeCgz0PlyWLpDwvg=", - "requires": { - "typpy": "^2.2.0" - } - }, - "error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-template-strings": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz", - "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=", - "dev": true, - "requires": { - "es5-ext": "^0.10.12", - "esniff": "^1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", - "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "esniff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz", - "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.12" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true - }, - "exec-limiter": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/exec-limiter/-/exec-limiter-3.2.12.tgz", - "integrity": "sha512-2Bj2X3UmPQHIPtYkDW5epEHn1aTtGxP30x8Be6IzXzQzyuavlOdKI4wT56iEt9UUfvI421AHAHHnV+lBIvCcVA==", - "requires": { - "limit-it": "^3.0.0", - "typpy": "^2.1.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.name": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/function.name/-/function.name-1.0.12.tgz", - "integrity": "sha512-C7Tu+rAFrWW5RjXqtKtXp2xOdCujq+4i8ZH3w0uz/xrYHBwXZrPt96x8cDAEHrIjeyEv/Jm6iDGyqupbaVQTlw==", - "requires": { - "noop6": "^1.0.1" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "git-package-json": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/git-package-json/-/git-package-json-1.4.9.tgz", - "integrity": "sha512-F88a40RBqCS6S7layrE4LIhX5TIVYyUJRYxZjAPPLfCZu9zf0R5B3l3wIY8A7hFb3xAU6Df/AHVMoBQ9SaR1Jw==", - "requires": { - "deffy": "^2.2.1", - "err": "^1.1.1", - "gry": "^5.0.0", - "normalize-package-data": "^2.3.5", - "oargv": "^3.4.1", - "one-by-one": "^3.1.0", - "r-json": "^1.2.1", - "r-package-json": "^1.0.0", - "tmp": "0.0.28" - } - }, - "git-source": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/git-source/-/git-source-1.1.9.tgz", - "integrity": "sha512-LRWKxFrt1lIrEAdRMrCk9sGbEYQdf3TwDe9pEwR8DMau+2dljQjqqwITJqhYIbA0TkFaxatOXzLhBWW89ZMO7w==", - "requires": { - "git-url-parse": "^5.0.1" - } - }, - "git-up": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-1.2.1.tgz", - "integrity": "sha1-JkSAoAax2EJhrB/gmjpRacV+oZ0=", - "requires": { - "is-ssh": "^1.0.0", - "parse-url": "^1.0.0" - } - }, - "git-url-parse": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-5.0.1.tgz", - "integrity": "sha1-/j15xnRq4FBIz6UIyB553du6OEM=", - "requires": { - "git-up": "^1.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - }, - "dependencies": { - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - } - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "requires": { - "create-error-class": "^3.0.1", - "duplexer2": "^0.1.4", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "node-status-codes": "^1.0.0", - "object-assign": "^4.0.1", - "parse-json": "^2.1.0", - "pinkie-promise": "^2.0.0", - "read-all-stream": "^3.0.0", - "readable-stream": "^2.0.5", - "timed-out": "^3.0.0", - "unzip-response": "^1.0.2", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" - }, - "grunt": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.1.0.tgz", - "integrity": "sha512-+NGod0grmviZ7Nzdi9am7vuRS/h76PcWDsV635mEXF0PEQMUV6Kb+OjTdsVxbi0PZmfQOjCMKb3w8CVZcqsn1g==", - "dev": true, - "requires": { - "coffeescript": "~1.10.0", - "dateformat": "~1.0.12", - "eventemitter2": "~0.4.13", - "exit": "~0.1.1", - "findup-sync": "~0.3.0", - "glob": "~7.0.0", - "grunt-cli": "~1.2.0", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.13.1", - "minimatch": "~3.0.2", - "mkdirp": "~1.0.3", - "nopt": "~3.0.6", - "path-is-absolute": "~1.0.0", - "rimraf": "~2.6.2" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", - "dev": true, - "requires": { - "findup-sync": "~0.3.0", - "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "grunt-babel": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-6.0.0.tgz", - "integrity": "sha1-N4GJtIfeEWjExKn8iN1gBbNd+WA=", - "dev": true, - "requires": { - "babel-core": "^6.0.12" - } - }, - "grunt-cli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", - "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", - "dev": true, - "requires": { - "grunt-known-options": "~1.1.0", - "interpret": "~1.1.0", - "liftoff": "~2.5.0", - "nopt": "~4.0.1", - "v8flags": "~3.1.1" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "grunt-contrib-clean": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", - "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", - "dev": true, - "requires": { - "async": "^1.5.2", - "rimraf": "^2.5.1" - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - } - }, - "grunt-contrib-requirejs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-requirejs/-/grunt-contrib-requirejs-1.0.0.tgz", - "integrity": "sha1-7BZwyvwycTkC7lNWlFRxWy48utU=", - "dev": true, - "requires": { - "requirejs": "^2.1.0" - } - }, - "grunt-contrib-uglify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.3.0.tgz", - "integrity": "sha1-s9AmDr3WzvoS/y+Onh4ln33kIW8=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "maxmin": "^1.1.0", - "object.assign": "^4.0.4", - "uglify-js": "~2.8.21", - "uri-path": "^1.0.0" - } - }, - "grunt-contrib-watch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", - "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", - "dev": true, - "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "grunt-execute": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/grunt-execute/-/grunt-execute-0.2.2.tgz", - "integrity": "sha1-TpRf5XlZzA3neZCDtrQq7ZYWNQo=", - "dev": true - }, - "grunt-known-options": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", - "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", - "dev": true - }, - "grunt-legacy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", - "dev": true, - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.5" - } - }, - "grunt-legacy-log-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", - "dev": true, - "requires": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", - "dev": true, - "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" - } - }, - "grunt-mocha-test": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", - "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", - "dev": true, - "requires": { - "hooker": "^0.2.3", - "mkdirp": "^0.5.0" - } - }, - "grunt-systemjs-builder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-systemjs-builder/-/grunt-systemjs-builder-1.0.0.tgz", - "integrity": "sha1-XY58vspbNeK3tr0ALpqdfgPX3s0=", - "dev": true, - "requires": { - "systemjs-builder": "0.14.11 - 0.16.x" - } - }, - "gry": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/gry/-/gry-5.0.8.tgz", - "integrity": "sha512-meq9ZjYVpLzZh3ojhTg7IMad9grGsx6rUUKHLqPnhLXzJkRQvEL2U3tQpS5/WentYTtHtxkT3Ew/mb10D6F6/g==", - "requires": { - "abs": "^1.2.1", - "exec-limiter": "^3.0.0", - "one-by-one": "^3.0.0", - "ul": "^5.0.0" - } - }, - "gzip-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", - "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", - "dev": true, - "requires": { - "browserify-zlib": "^0.1.4", - "concat-stream": "^1.4.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", - "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==" - }, - "is-ssh": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz", - "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==", - "requires": { - "protocols": "^1.1.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" - }, - "iterate-object": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.3.tgz", - "integrity": "sha512-DximWbkke36cnrSfNJv6bgcB2QOMV9PRD2FiowwzCoMsh8RupFLdbNIzWe+cVDWT+NIMNJgGlB1dGxP6kpzGtA==" - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "dev": true, - "requires": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - } - } - }, - "limit-it": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/limit-it/-/limit-it-3.2.9.tgz", - "integrity": "sha512-3cAf+D47VdMrrzLpV3wIyEHoAACc7FonHMz+I8onocXdnWD2zBeicse851NZ9TUeCEyuBM35Cx82mpdx1WLm2A==", - "requires": { - "typpy": "^2.0.0" - } - }, - "livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true - }, - "load-grunt-tasks": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz", - "integrity": "sha1-ByhWEYD9IP+KaSdQWFL8WKrqDIg=", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "multimatch": "^2.0.0", - "pkg-up": "^1.0.0", - "resolve-pkg": "^0.1.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "maxmin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", - "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "figures": "^1.0.1", - "gzip-size": "^1.0.0", - "pretty-bytes": "^1.0.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", - "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" - }, - "noop6": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/noop6/-/noop6-1.0.8.tgz", - "integrity": "sha512-+Al5csMVc40I8xRfJsyBcN1IbpyvebOuQmMfxdw+AL6ECELey12ANgNTRhMfTwNIDU4W9W0g8EHLcsb3+3qPFA==" - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true - }, - "oargv": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/oargv/-/oargv-3.4.9.tgz", - "integrity": "sha512-24Eatdf7OGezTAU0Yw3HaoO9x+GTFnmBkuFHfWEQtVsIKbD7VMHhyIlDMtxxUxfZKPBPHYsTo8UgGwKr4ySewA==", - "requires": { - "iterate-object": "^1.1.0", - "ul": "^5.0.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "obj-def": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/obj-def/-/obj-def-1.0.7.tgz", - "integrity": "sha512-ahx1PnGDpovRglgczxsKtoYhPhrhYEG1rs3WklAHMTk29DyStqsrGDVISOIGZLF+ewK4m5CFZNuZXIXRQwZUMg==", - "requires": { - "deffy": "^2.2.2" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "one-by-one": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/one-by-one/-/one-by-one-3.2.7.tgz", - "integrity": "sha512-EFE5hyHMGPcesACi1tT6HRmMK23Q74ujX2gjhfGD9qMkz7CxD1AJd5TmBHIEEzuL7h7hKwWh9n9hJ5ClQJnO/Q==", - "requires": { - "obj-def": "^1.0.0", - "sliced": "^1.0.1" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "requires": { - "got": "^5.0.0", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "package-json-path": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/package-json-path/-/package-json-path-1.0.8.tgz", - "integrity": "sha512-8OCXvm2TmEYoWC7e9AswLC0eoKY3RGbkupbiWa2vaTFaH4vEE3Kr+oeefLVm/7N4me2gYh5SjQYsdwAZLkL87g==", - "requires": { - "abs": "^1.2.1" - } - }, - "package.json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/package.json/-/package.json-2.0.1.tgz", - "integrity": "sha1-+IYFnSpJ7QduZIg2ldc7K0bSHW0=", - "requires": { - "git-package-json": "^1.4.0", - "git-source": "^1.1.0", - "package-json": "^2.3.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse-url": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-1.3.11.tgz", - "integrity": "sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ=", - "requires": { - "is-ssh": "^1.3.0", - "protocols": "^1.4.0" - } - }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, - "protocols": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", - "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" - }, - "prunk": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prunk/-/prunk-1.3.1.tgz", - "integrity": "sha512-nLpTxQCqaKzdpzA344aK8u1wpVcnT0OD9oruH281TeqkqnxCWW4dD8Vn65mQWlfwPO8yWFyeK2h2qcw2N7hveA==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", - "dev": true - }, - "r-json": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/r-json/-/r-json-1.2.9.tgz", - "integrity": "sha512-E5u25XBE7PpZmH5XwtthAmNvSLMTygDQMpcPtCTUBdvwPaqgIYJrxlRQJhG55Sgz7uC0Tuyh5nqNrsDT3uiefA==" - }, - "r-package-json": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/r-package-json/-/r-package-json-1.0.8.tgz", - "integrity": "sha512-y+dKPLBYKcNMY8pNy+m8YLUqeGsEhhOu0wrqfu1yr8yGX+08CzMq2uUV5GSkGA21GcaIyt6lQAiSoD+DFf3/ag==", - "requires": { - "package-json-path": "^1.0.0", - "r-json": "^1.2.1" - } - }, - "raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", - "dev": true, - "requires": { - "bytes": "1", - "string_decoder": "0.10" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "requires": { - "pinkie-promise": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "requires": { - "picomatch": "^2.0.7" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true - }, - "resolve-pkg": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz", - "integrity": "sha1-AsyZNBDik2livZcWahsHfalyVTE=", - "dev": true, - "requires": { - "resolve-from": "^2.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "rollup": { - "version": "0.58.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.58.2.tgz", - "integrity": "sha512-RZVvCWm9BHOYloaE6LLiE/ibpjv1CmI8F8k0B0Cp+q1eezo3cswszJH1DN0djgzSlo0hjuuCmyeI+1XOYLl4wg==", - "dev": true, - "requires": { - "@types/estree": "0.0.38", - "@types/node": "*" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "systemjs": { - "version": "0.19.47", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.47.tgz", - "integrity": "sha1-yMk5NxgPP1SBx2nNJyB2P7SjHG8=", - "dev": true, - "requires": { - "when": "^3.7.5" - } - }, - "systemjs-builder": { - "version": "0.16.15", - "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.16.15.tgz", - "integrity": "sha512-C18G//KWWwQpstAVBUDt0YbbqvSFVVtr0MFqtf2zB4U/cePOA00Btcja++mzlFLMnepVpDv0GdtfE/6A8lrxeA==", - "dev": true, - "requires": { - "babel-core": "^6.24.1", - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-amd-system-wrapper": "^0.3.7", - "babel-plugin-transform-cjs-system-wrapper": "^0.6.2", - "babel-plugin-transform-es2015-modules-systemjs": "^6.6.5", - "babel-plugin-transform-global-system-wrapper": "^0.3.4", - "babel-plugin-transform-system-register": "^0.0.1", - "bluebird": "^3.3.4", - "data-uri-to-buffer": "0.0.4", - "es6-template-strings": "^2.0.0", - "glob": "^7.0.3", - "mkdirp": "^0.5.1", - "rollup": "^0.58.2", - "source-map": "^0.5.3", - "systemjs": "^0.19.46", - "terser": "3.8.1", - "traceur": "0.0.105" - } - }, - "terser": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.8.1.tgz", - "integrity": "sha512-FRin3gKQ0vm0xPPLuxw1FqpVgv1b2pBpYCaFb5qe6A7sD749Fnq1VbDiX3CEFM0BV0fqDzFtBfgmxhxCdzKQIg==", - "dev": true, - "requires": { - "commander": "~2.16.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.6" - }, - "dependencies": { - "commander": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", - "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" - }, - "tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "tmp": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", - "requires": { - "os-tmpdir": "~1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "traceur": { - "version": "0.0.105", - "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz", - "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=", - "dev": true, - "requires": { - "commander": "2.9.x", - "glob": "5.0.x", - "rsvp": "^3.0.13", - "semver": "^4.3.3", - "source-map-support": "~0.2.8" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "source-map-support": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", - "dev": true, - "requires": { - "source-map": "0.1.32" - } - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typpy": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/typpy/-/typpy-2.3.11.tgz", - "integrity": "sha512-Jh/fykZSaxeKO0ceMAs6agki9T5TNA9kiIR6fzKbvafKpIw8UlNlHhzuqKyi5lfJJ5VojJOx9tooIbyy7vHV/g==", - "requires": { - "function.name": "^1.0.3" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "ul": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/ul/-/ul-5.2.14.tgz", - "integrity": "sha512-VaIRQZ5nkEd8VtI3OYo5qNbhHQuBtPtu5k5GrYaKCmcP1H+FkuWtS+XFTSU1oz5GiuAg2FJL5ka8ufr9zdm8eg==", - "requires": { - "deffy": "^2.2.2", - "typpy": "^2.3.4" - } - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "dev": true, - "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "uri-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", - "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - } - } - }, - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==" - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - } - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - } - } - } - } -} diff --git a/pkg/datasource.go b/pkg/datasource.go new file mode 100644 index 0000000..5f41890 --- /dev/null +++ b/pkg/datasource.go @@ -0,0 +1,683 @@ +package main + +import ( + "context" + "encoding/json" + "errors" + "net/http" + "strconv" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/services/cms" + "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" + "github.com/aliyun/alibaba-cloud-sdk-go/services/rds" + "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/datasource" + "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" + "github.com/grafana/grafana-plugin-sdk-go/backend/log" + "github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter" +) + +// newDatasource returns datasource.ServeOpts. +func newDatasource() *CmsDatasource { + log.DefaultLogger.Debug("new_cms_datasource") + im := datasource.NewInstanceManager(newDataSourceInstance) + ds := &CmsDatasource{ + im: im, + logger: log.New(), + } + return ds +} + +type CmsSetting struct { + CmsAccessKey string `json:"cmsAccessKey"` + CmsAcessSecret string `json:"cmsSecretKey"` +} + +// CmsDatasource is an example datasource used to scaffold +// new datasource plugins with an backend. +type CmsDatasource struct { + im instancemgmt.InstanceManager + logger log.Logger +} + +// QueryData 非直接proxy代码,目前无须实现 +func (td *CmsDatasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) { + return nil, nil +} + +// 参数都是唯一的,转换为map +func parseRequestParams(req *http.Request) (map[string]string, error) { + result := map[string]string{} + for k, values := range req.URL.Query() { + if len(values) > 0 { + result[k] = values[0] + } + } + data, _ := json.Marshal(result) + log.DefaultLogger.Debug("request_params: ", string(data)) + _, hasAction := result["Action"] + if !hasAction { + return result, errors.New("Action parameter is missing") + } + return result, nil +} + +func (ds *CmsDatasource) getDataSourceSetting(req *http.Request) (*instanceSettings, error) { + pluginCxt := httpadapter.PluginConfigFromContext(req.Context()) + + instance, err := ds.im.Get(pluginCxt) + if err != nil { + log.DefaultLogger.Info("Failed getting connection", "error", err) + return nil, errors.New("Failed getting connection") + } + // create response struct + instSetting, ok := instance.(*instanceSettings) + log.DefaultLogger.Debug("setting", instSetting) + + if !ok { + log.DefaultLogger.Info("Failed load setting connection !", "error", err) + return nil, errors.New("Failed getting connection") + } + return instSetting, nil +} + +func proxyListMetricMeta(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeMetricMetaListRequest() + request.Scheme = "https" + if project, ok := params["Project"]; ok { + request.Namespace = project + } + if metric, ok := params["Metric"]; ok { + request.MetricName = metric + } + if pageSize, ok := params["PageSize"]; ok { + size, err := strconv.ParseInt(pageSize, 10, 32) + if err != nil { + request.PageSize = requests.NewInteger(int(size)) + } else { + request.PageSize = requests.NewInteger(1000) + } + } else { + request.PageSize = requests.NewInteger(1000) + } + + response, err := client.DescribeMetricMetaList(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyListProjectMeta(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeProjectMetaRequest() + request.Scheme = "https" + if pageSize, ok := params["PageSize"]; ok { + size, err := strconv.ParseInt(pageSize, 10, 32) + if err != nil { + request.PageSize = requests.NewInteger(int(size)) + } else { + request.PageSize = requests.NewInteger(1000) + } + } else { + request.PageSize = requests.NewInteger(1000) + } + + response, err := client.DescribeProjectMeta(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyListMyGroups(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeMonitorGroupsRequest() + request.Scheme = "https" + if pageSize, ok := params["PageSize"]; ok { + size, err := strconv.ParseInt(pageSize, 10, 32) + if err != nil { + request.PageSize = requests.NewInteger(int(size)) + } else { + request.PageSize = requests.NewInteger(1000) + } + } else { + request.PageSize = requests.NewInteger(1000) + } + if pageNumber, ok := params["PageNumber"]; ok { + num, err := strconv.ParseInt(pageNumber, 10, 32) + if err != nil { + request.PageNumber = requests.NewInteger(int(num)) + } else { + request.PageNumber = requests.NewInteger(1) + } + } else { + request.PageNumber = requests.NewInteger(1) + } + + response, err := client.DescribeMonitorGroups(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyAccessKeyGet(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeMonitoringAgentAccessKeyRequest() + request.Scheme = "https" + + response, err := client.DescribeMonitoringAgentAccessKey(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyQueryMetricData(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeMetricListRequest() + request.Scheme = "https" + if project, ok := params["Project"]; ok { + request.Namespace = project + } + if metric, ok := params["Metric"]; ok { + request.MetricName = metric + } + if dims, ok := params["Dimensions"]; ok { + request.Dimensions = dims + } else { + request.Dimensions = "{}" + } + if period, ok := params["Period"]; ok { + request.Period = period + } else { + request.Period = "60" + } + if size, ok := params["Length"]; ok { + request.Length = size + } else { + request.Length = "1000" + } + if startTime, ok := params["StartTime"]; ok { + request.StartTime = startTime + } else { + request.StartTime = "60" + } + if endTime, ok := params["EndTime"]; ok { + request.EndTime = endTime + } else { + request.EndTime = "60" + } + + response, err := client.DescribeMetricList(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyQueryMetricLast(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := cms.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + request := cms.CreateDescribeMetricLastRequest() + request.Scheme = "https" + + if project, ok := params["Project"]; ok { + request.Namespace = project + } + if metric, ok := params["Metric"]; ok { + request.MetricName = metric + } + if dims, ok := params["Dimensions"]; ok { + request.Dimensions = dims + } else { + request.Dimensions = "{}" + } + if period, ok := params["Period"]; ok { + request.Period = period + } else { + request.Period = "60" + } + if size, ok := params["Length"]; ok { + request.Length = size + } else { + request.Length = "1000" + } + if startTime, ok := params["StartTime"]; ok { + request.StartTime = startTime + } else { + request.StartTime = "60" + } + if endTime, ok := params["EndTime"]; ok { + request.EndTime = endTime + } else { + request.EndTime = "60" + } + + response, err := client.DescribeMetricLast(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyRdsDescribeTags(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := rds.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + + request := rds.CreateDescribeTagsRequest() + request.Scheme = "https" + + if regionID, ok := params["RegionId"]; ok { + request.RegionId = regionID + } + + if tags, ok := params["Tags"]; ok { + request.Tags = tags + } + + if tags, ok := params["Tags"]; ok { + request.Tags = tags + } + + if instanceID, ok := params["DBInstanceId"]; ok { + request.DBInstanceId = instanceID + } + + response, err := client.DescribeTags(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyRdsListTagResources(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := rds.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + + request := rds.CreateListTagResourcesRequest() + request.Scheme = "https" + if regionID, ok := params["RegionId"]; ok { + request.RegionId = regionID + } else { + request.RegionId = "cn-hangzhou" + } + + if resourceType, ok := params["ResourceType"]; ok { + request.ResourceType = resourceType + } else { + request.ResourceType = "INSTANCE" + } + + tags := []rds.ListTagResourcesTag{} + // only support 20 tags at most + for i := 1; i < 21; i++ { + tagkey := "Tag." + strconv.Itoa(i) + ".Key" + tagValue := "Tag." + strconv.Itoa(i) + ".Value" + tagObj := rds.ListTagResourcesTag{} + if val, ok := params[tagkey]; ok { + tagObj.Key = val + } else { + continue + } + if val, ok := params[tagValue]; ok { + tagObj.Value = val + } + tags = append(tags, tagObj) + } + if len(tags) > 0 { + request.Tag = &tags + } + + resourceIDs := []string{} + // only support 50 tags at most + for i := 1; i < 51; i++ { + tagkey := "ResourceId." + strconv.Itoa(i) + if val, ok := params[tagkey]; ok { + resourceIDs = append(resourceIDs, val) + } else { + continue + } + } + if len(resourceIDs) > 0 { + request.ResourceId = &resourceIDs + } + + if nextToken, ok := params["NextToken"]; ok { + request.NextToken = nextToken + } + + response, err := client.ListTagResources(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyEcsDescribeTags(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := ecs.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + + request := ecs.CreateDescribeTagsRequest() + request.Scheme = "https" + if pageSize, ok := params["PageSize"]; ok { + size, err := strconv.ParseInt(pageSize, 10, 32) + if err != nil { + request.PageSize = requests.NewInteger(int(size)) + } else { + request.PageSize = requests.NewInteger(100) + } + } else { + request.PageSize = requests.NewInteger(100) + } + + if pageNumber, ok := params["PageNumber"]; ok { + num, err := strconv.ParseInt(pageNumber, 10, 32) + if err != nil { + request.PageNumber = requests.NewInteger(int(num)) + } else { + request.PageNumber = requests.NewInteger(1) + } + } else { + request.PageNumber = requests.NewInteger(1) + } + + if resourceType, ok := params["ResourceType"]; ok { + request.ResourceType = resourceType + } + + if resourceID, ok := params["ResourceId"]; ok { + request.ResourceId = resourceID + } + + if category, ok := params["Category"]; ok { + request.Category = category + } + + tags := []ecs.DescribeTagsTag{} + // only support 5 tags at most + for i := 1; i < 6; i++ { + tagkey := "Tag." + strconv.Itoa(i) + ".Key" + tagValue := "Tag." + strconv.Itoa(i) + ".Value" + tagObj := ecs.DescribeTagsTag{} + if val, ok := params[tagkey]; ok { + tagObj.Key = val + } else { + continue + } + if val, ok := params[tagValue]; ok { + tagObj.Value = val + } + tags = append(tags, tagObj) + } + log.DefaultLogger.Debug("tags_length:" + strconv.Itoa(len(tags))) + if len(tags) > 0 { + log.DefaultLogger.Debug("tags_key:" + tags[0].Key) + request.Tag = &tags + } + + response, err := client.DescribeTags(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func proxyEcsListTagResources(instSetting *instanceSettings, params map[string]string, rw http.ResponseWriter) { + client, err := ecs.NewClientWithAccessKey("cn-hangzhou", instSetting.accessKey, instSetting.accessSecret) + + request := ecs.CreateListTagResourcesRequest() + request.Scheme = "https" + + if regionID, ok := params["RegionId"]; ok { + request.RegionId = regionID + } + + if regionID, ok := params["RegionId"]; ok { + request.RegionId = regionID + } else { + request.RegionId = "cn-hangzhou" + } + + if resourceType, ok := params["ResourceType"]; ok { + request.ResourceType = resourceType + } else { + request.ResourceType = "instance" + } + + if nextToken, ok := params["NextToken"]; ok { + request.NextToken = nextToken + } + + tags := []ecs.ListTagResourcesTag{} + // only support 5 tags at most + for i := 1; i < 6; i++ { + tagkey := "Tag." + strconv.Itoa(i) + ".Key" + tagValue := "Tag." + strconv.Itoa(i) + ".Value" + tagObj := ecs.ListTagResourcesTag{} + if val, ok := params[tagkey]; ok { + tagObj.Key = val + } else { + continue + } + if val, ok := params[tagValue]; ok { + tagObj.Value = val + } + tags = append(tags, tagObj) + } + if len(tags) > 0 { + request.Tag = &tags + } + + tagFilters := []ecs.ListTagResourcesTagFilter{} + // only support 5 tags at most + for i := 1; i < 6; i++ { + tagObj := ecs.ListTagResourcesTagFilter{} + tagkey := "TagFilter." + strconv.Itoa(i) + ".TagKey" + if val, ok := params[tagkey]; ok { + tagObj.TagKey = val + } else { + continue + } + tagFilterValues := []string{} + for ii := 1; ii < 6; ii++ { + tagValue := "TagFilter." + strconv.Itoa(i) + ".TagValues." + strconv.Itoa(ii) + if val, ok := params[tagValue]; ok { + tagFilterValues = append(tagFilterValues, val) + } + } + if len(tagFilterValues) > 0 { + tagObj.TagValues = &tagFilterValues + } + tagFilters = append(tagFilters, tagObj) + } + if len(tagFilters) > 0 { + request.TagFilter = &tagFilters + } + + response, err := client.ListTagResources(request) + if err != nil { + log.DefaultLogger.Error(err.Error()) + handleResponse(rw, nil, err) + } else { + data, err := json.Marshal(response) + log.DefaultLogger.Debug(string(data)) + handleResponse(rw, data, err) + } +} + +func handleResponse(rw http.ResponseWriter, data []byte, err error) { + if err != nil { + rw.Write([]byte(err.Error())) + rw.WriteHeader(http.StatusInternalServerError) + } else { + rw.Header().Add("Content-Type", "application/json") + rw.WriteHeader(http.StatusOK) + rw.Write(data) + } +} + +func (ds *CmsDatasource) ProxyCmsPopApi(rw http.ResponseWriter, req *http.Request) { + //parse param map + params, err := parseRequestParams(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // 获取AK 配置 + instSetting, err := ds.getDataSourceSetting(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // redirect by action + switch params["Action"] { + case "QueryMetricLast": + proxyQueryMetricLast(instSetting, params, rw) + break + case "QueryMetricList": + proxyQueryMetricData(instSetting, params, rw) + break + case "QueryMetricMeta": + proxyListMetricMeta(instSetting, params, rw) + break + case "QueryProjectMeta": + proxyListProjectMeta(instSetting, params, rw) + break + case "ListMyGroups": + proxyListMyGroups(instSetting, params, rw) + break + //disable for security reason + // case "AccessKeyGet": + // proxyAccessKeyGet(instSetting, params, rw) + // break + } +} + +func (ds *CmsDatasource) ProxyEcsPopApi(rw http.ResponseWriter, req *http.Request) { + //parse param map + params, err := parseRequestParams(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // 获取AK 配置 + instSetting, err := ds.getDataSourceSetting(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // redirect by action + switch params["Action"] { + case "DescribeTags": + proxyEcsDescribeTags(instSetting, params, rw) + break + case "ListTagResources": + proxyEcsListTagResources(instSetting, params, rw) + break + } +} + +func (ds *CmsDatasource) ProxyRdsPopApi(rw http.ResponseWriter, req *http.Request) { + //parse param map + params, err := parseRequestParams(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // 获取AK 配置 + instSetting, err := ds.getDataSourceSetting(req) + if err != nil { + handleResponse(rw, nil, err) + return + } + // redirect by action + switch params["Action"] { + case "DescribeTags": + proxyRdsDescribeTags(instSetting, params, rw) + break + case "ListTagResources": + proxyRdsListTagResources(instSetting, params, rw) + break + } +} + +// 保存datasource时检查datasource是否工作正常 +func (td *CmsDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) { + var status = backend.HealthStatusOk + var message = "Data source is working" + + return &backend.CheckHealthResult{ + Status: status, + Message: message, + }, nil +} + +type instanceSettings struct { + endpoint string + name string + accessKey string + accessSecret string +} + +func newDataSourceInstance(setting backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) { + type editModel struct { + Host string `json:"host"` + } + + log.DefaultLogger.Debug("newDataSourceInstance ak: ", setting.DecryptedSecureJSONData["cmsAccessKey"]+"/"+setting.DecryptedSecureJSONData["cmsSecretKey"]) + + cmsConfigObj := &CmsSetting{} + + if accessKey, hasIt := setting.DecryptedSecureJSONData["cmsAccessKey"]; hasIt { + cmsConfigObj.CmsAccessKey = accessKey + cmsConfigObj.CmsAcessSecret = setting.DecryptedSecureJSONData["cmsSecretKey"] + } else { + json.Unmarshal(setting.JSONData, &cmsConfigObj) + } + + log.DefaultLogger.Debug("newDataSourceInstance" + "/" + cmsConfigObj.CmsAccessKey + "/" + cmsConfigObj.CmsAcessSecret) + + return &instanceSettings{ + // cluster: newCluster, + // authenticator: authenticator, + endpoint: setting.URL, + accessKey: cmsConfigObj.CmsAccessKey, + accessSecret: cmsConfigObj.CmsAcessSecret, + }, nil +} diff --git a/pkg/plugin.go b/pkg/plugin.go new file mode 100644 index 0000000..3706f48 --- /dev/null +++ b/pkg/plugin.go @@ -0,0 +1,38 @@ +package main + +import ( + "net/http" + "os" + + "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/log" + "github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter" +) + +func main() { + + logger := log.New() + + mux := http.NewServeMux() + + ds := newDatasource() + + mux.HandleFunc("/proxy_aliyun_cms_pop", ds.ProxyCmsPopApi) + mux.HandleFunc("/proxy_aliyun_ecs_pop", ds.ProxyEcsPopApi) + mux.HandleFunc("/proxy_aliyun_rds_pop", ds.ProxyRdsPopApi) + + httpResourceHandler := httpadapter.New(mux) + + logger.Debug("Aliyun_CloudMonitor_Datasource") + + err := backend.Serve(backend.ServeOpts{ + CallResourceHandler: httpResourceHandler, + // QueryDataHandler: ds, + CheckHealthHandler: ds, + }) + + if err != nil { + logger.Error(err.Error()) + os.Exit(1) + } +} diff --git a/src/datasource.js b/src/datasource.js index 8f88d33..16fa288 100644 --- a/src/datasource.js +++ b/src/datasource.js @@ -4,7 +4,9 @@ import { CmsSigner } from "./signer.js"; export class GenericDatasource { constructor(instanceSettings, $q, backendSrv, templateSrv) { - this.type = instanceSettings.type; + this.type = instanceSettings.type; + this.datasourceId = instanceSettings.id; + this.aliyunUserId = instanceSettings.jsonData.userId; this.basePath = instanceSettings.url; this.name = instanceSettings.name; this.jsonData = instanceSettings.jsonData; @@ -18,6 +20,7 @@ export class GenericDatasource { this.ecsBasePath = "https://ecs.aliyuncs.com"; this.rdsVersion = "2014-08-15"; this.rdsBasePath = "https://rds.aliyuncs.com"; + this.cacheMeta = new Map(); } query(options) { @@ -66,14 +69,13 @@ export class GenericDatasource { if (typeof dimension == "string") { dimension = dimension.includes("{") ? dimension : "{" + dimension; dimension = dimension.includes("}") ? dimension : dimension + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; - + // dimension = dimension.includes("\\") ? dimension.replace("\\/gi", "\\\\") : dimension; dimensions += dimension + ","; } else { dimension.forEach((dimension_i) => { dimension_i = dimension_i.includes("{") ? dimension_i : "{" + dimension_i; dimension_i = dimension_i.includes("}") ? dimension_i : dimension_i + "}"; - dimension = dimension.includes("\\") ? dimension.replace("\\", "\\\\") : dimension; + // dimension = dimension.includes("\\") ? dimension.replace("\\/gi", "\\\\") : dimension; dimensions += dimension_i + ","; }); @@ -83,78 +85,100 @@ export class GenericDatasource { dimensions = "[" + dimensions + "]"; dimensions = dimensions.replace(/\&/gi, "%26").replace(/\{/gi, "%7B").replace(/\}/gi, "%7D"); } + var target_keys = []; + var resource = ""; + if(this.isEmpty(project) || this.isEmpty(metric) || this.isEmpty(xcol) || ycol.length == 0){ + return; + } + this.queryMetricMeta(project, metric).then(response => { + resource = response; + if (resource.length == 0 || this.isEmpty(resource[0].Dimensions)) { + return; + } + var target_key_arr = resource[0].Dimensions.split(","); + target_key_arr.forEach(value =>{ + if(target_key_arr.length == 1){ + target_keys.push(value); + }else{ + if(value != "userId"){ + target_keys.push(value); + } + } + }) + }); + //拼接url参数 var queryConcat = "/?Action=QueryMetricList&Length=1000&Project=" + project + "&Metric=" + metric + "&Period=" + period + "&Dimensions=" + dimensions + "&StartTime=" + parseInt(options.range.from._d.getTime()) + "&EndTime=" + parseInt(options.range.to._d.getTime()); //定义Promise元数据、根据URL发起请求 - var request = this.doNextToken(queryConcat, "", 0).then((response) => { - var dataDatapoints = response; + var request = this.doNextToken(queryConcat, "", 0, "list").then((response) => { var resResult = []; - //处理数据分类 - var target_datapoints = []; - if (dimensions.includes("instanceId")) { - for (var i in dataDatapoints) { - if (!target_datapoints[dataDatapoints[i].instanceId]) { - var arr = []; - arr.push(dataDatapoints[i]); - target_datapoints[dataDatapoints[i].instanceId] = arr; - } else { - target_datapoints[dataDatapoints[i].instanceId].push( - dataDatapoints[i] - ); - } - } - } - // 处理Grafana所需的target值、Target组的所需返回结果集 - ycol.map((ycolTarget) => { - if (dimensions.includes("instanceId")) { - for (var i in target_datapoints) { - var datapoints = []; - target_datapoints[i].forEach((Datapoint) => { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 + this.dataGroupByKeys(response, target_keys).then(dataMap => { + dataMap.forEach((value, key) => { + + ycol.map((ycolTarget) => { + var dataPoints = []; + + value.forEach(valueObj =>{ + var dataPoint = []; + dataPoint.push(valueObj[ycolTarget], valueObj[xcol]); + // 封装返回目标的第二层数组值 + dataPoints.push(dataPoint); + // 封装返回目标的第三层数组值 + }) + resResult.push({ - target: describe + i + "." + ycolTarget, - datapoints: datapoints, + target: describe + key + "." + ycolTarget, + datapoints: dataPoints, }); - } - } else { - var datapoints = []; - dataDatapoints.forEach((Datapoint) => { - var datapoint = []; - datapoint.push(Datapoint[ycolTarget], Datapoint[xcol]); - // 封装返回目标的第二层数组值 - datapoints.push(datapoint); - }); - // 封装返回目标的第三层数组值 - resResult.push({ - target: describe + ycolTarget, - datapoints: datapoints, }); - } + }); + + result = result.concat(typeof resResult == "string" ? JSON.parse(resResult) : resResult); }); - // 转对象封装 - result = result.concat( - typeof resResult == "string" ? JSON.parse(resResult) : resResult - ); }); requests.push(request); }); + // 统一单独处理返回值 return Promise.all(requests.map((p) => p.catch((e) => e))).then(() => { return { data: result }; }); } + + async dataGroupByKeys(list, keys) { + let tmpMap = new Map(); + for(let i = 0; i < list.length; i++){ + let dataPoint = list[i]; + + let key_obj = {}; + let key_target = dataPoint[keys[0]]; + for(let j = 0; j < keys.length; j++){ + let key = keys[j]; + let value = dataPoint[key]; + key_obj[key] = value; + + if(j > 0){ + key_target += "_" + value; + } + } + let value_arr = []; + if(tmpMap.has(key_target)){ + value_arr = tmpMap.get(key_target); + } + + value_arr.push(dataPoint); + tmpMap.set(key_target, value_arr); + } + return tmpMap; + } + wait(ms) { return new Promise(resolve => setTimeout(resolve, ms)) } - async doNextToken(queryConcat, cursor, count) { + async doNextToken(queryConcat, cursor, count, type) { var path = ""; if (this.isEmpty(cursor)) { path = queryConcat; @@ -172,15 +196,17 @@ export class GenericDatasource { d.resolve({ data: [] }); return d.promise; } - await this.wait(1000); + if("list" == type){ + await this.wait(1000); + }else if("last" == type){ + await this.wait(100); + } //定义Promise元数据、根据URL发起请求 - return this.backendSrv - .datasourceRequest({ + return this.backendSrv.datasourceRequest({ url: query, method: "GET", headers: this.headers, - }) - .then((response) => { + }).then((response) => { var result = []; if (response.status == "200" && response.data.Code == "200") { result = angular.fromJson(response.data.Datapoints); @@ -192,7 +218,7 @@ export class GenericDatasource { if (this.isEmpty(response.data.Cursor)) { return result; } else { - return this.doNextToken(queryConcat, nextToken, count).then((data) => { + return this.doNextToken(queryConcat, nextToken, count, type).then((data) => { return result.concat(data); }); } @@ -206,7 +232,7 @@ export class GenericDatasource { // 测试连接数据源接口 testDatasource() { var param = { - path: "/?Action=AccessKeyGet", + path: "?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=acs_ecs_dashboard", method: "GET", }; return this.backendSrv.datasourceRequest({ @@ -214,13 +240,19 @@ export class GenericDatasource { method: "GET", }).then((response) => { var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { return { status: "success", message: "Data source is working", title: "Success", }; - } + }else{ + return { + status: "failure", + message: "Data source is not working", + title: "Failure", + }; + } }); } @@ -283,17 +315,17 @@ export class GenericDatasource { var path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId; var tagKeyFilter = []; if(tagKey){ - path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&Tag.1.key=" + tagKey; - if(tagKey.indexOf("&Tag.2.key=") != -1){ + path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&Tag.1.Key=" + tagKey; + if(tagKey.indexOf("&Tag.2.Key=") != -1){ var tagKeyArry = tagKey.split("&"); tagKeyArry.forEach(tagKeyInd => { - tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf("key=") == -1 ? 0 : tagKeyInd.indexOf("key=") + 4)); + tagKeyFilter.push(tagKeyInd.substring(tagKeyInd.indexOf("Key=") == -1 ? 0 : tagKeyInd.indexOf("Key=") + 4)); }) }else{ tagKeyFilter.push(tagKey); } - if(tagKey.indexOf("Tag.1.key=") != -1){ + if(tagKey.indexOf("Tag.1.Key=") != -1){ path = "/?Action=DescribeTags&PageNumber=1&PageSize=100&RegionId=" + regionId + "&" + tagKey; } if(tagKey.indexOf("PageNumber=") != -1){ @@ -337,7 +369,7 @@ export class GenericDatasource { } } result = []; - return this.getDimensions(namespace, metric, "", []).then( + return this.getDimensions(namespace, metric, "", "", []).then( (dimensions) => { var is_instanceId_bool = this.isEmpty(instanceId); var is_filter_bool = this.isEmpty(filter); @@ -408,7 +440,7 @@ export class GenericDatasource { //返回所有的Project,QueryProjectMeta的API无自定义监控project、日志监控project,已拼接 getProject() { var param = { - path: "/?Action=QueryProjectMeta&PageNumber=1&PageSize=1000", + path: "?Action=QueryProjectMeta&PageNumber=1&PageSize=1000", method: "GET", }; return this.backendSrv @@ -419,31 +451,17 @@ export class GenericDatasource { .then((response) => { var result = []; var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { data.Resources.Resource.map((resource) => { - if (!this.isEmpty(resource.Project)) { - result.push(resource.Project); + if (!this.isEmpty(resource.Namespace)) { + result.push(resource.Namespace); } }); - } + } //增加自定义监控、日志监控选项 - var acs_param = { - path: "/?Action=AccessKeyGet", - method: "GET", - }; - return this.backendSrv - .datasourceRequest({ - url: this.buildRealUrl(acs_param), - method: "GET", - }) - .then((response) => { - var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { - result.push("acs_logMonitor_" + data.UserId); - result.push("acs_customMetric_" + data.UserId); - } - return this.util.arrayToMap(result); - }); + result.push("acs_logMonitor_" + this.aliyunUserId); + result.push("acs_customMetric_" + this.aliyunUserId); + return this.util.arrayToMap(result); }) .catch(function (error) { console.log(error); @@ -455,7 +473,7 @@ export class GenericDatasource { getMetrics(project) { var param = { path: - "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=" + + "?Action=QueryMetricMeta&PageNumber=1&PageSize=1000&Project=" + project, method: "GET", }; @@ -466,11 +484,11 @@ export class GenericDatasource { }) .then((response) => { var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { var result = []; data.Resources.Resource.map((resource) => { - if (!this.isEmpty(resource.Metric)) { - result.push(resource.Metric); + if (!this.isEmpty(resource.MetricName)) { + result.push(resource.MetricName); } }); return this.util.arrayToMap(result); @@ -485,21 +503,15 @@ export class GenericDatasource { //根据Project及Metrics返回对应的所有的Period,无自定义监控、日志监控project对应的Period getPeriod(project, metric) { var param = { - path: - "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + - project + - "&Metric=" + - metric, + path: "?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, method: "GET", }; - return this.backendSrv - .datasourceRequest({ + return this.backendSrv.datasourceRequest({ url: this.buildRealUrl(param), method: "GET", - }) - .then((response) => { + }).then((response) => { var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { var period = []; var resource = data.Resources.Resource; if (resource.length > 0 && !this.isEmpty(resource[0].Periods)) { @@ -507,8 +519,7 @@ export class GenericDatasource { } return this.util.arrayToMap(period); } - }) - .catch(function (error) { + }).catch(function (error) { console.log(error); return; }); @@ -517,21 +528,15 @@ export class GenericDatasource { //根据Project及Metrics返回对应的所有的Statistics,未去除已选项,无自定义监控、日志监控project对应的Period getStatistics(project, metric) { var param = { - path: - "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + - project + - "&Metric=" + - metric, + path: "?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, method: "GET", }; - return this.backendSrv - .datasourceRequest({ + return this.backendSrv.datasourceRequest({ url: this.buildRealUrl(param), method: "GET", - }) - .then((response) => { + }).then((response) => { var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { var statistics = []; var resource = data.Resources.Resource; if (resource.length > 0 && !this.isEmpty(resource[0].Statistics)) { @@ -539,8 +544,7 @@ export class GenericDatasource { } return this.util.arrayToMap(statistics); } - }) - .catch(function (error) { + }).catch(function (error) { console.log(error); return; }); @@ -549,17 +553,15 @@ export class GenericDatasource { //返回所有的Groups,自定义监控、日志使用 getGroups() { var param = { - path: "/?Action=ListMyGroups&PageNumber=1&PageSize=9000", + path: "?Action=ListMyGroups&PageNumber=1&PageSize=9000", method: "GET", }; - return this.backendSrv - .datasourceRequest({ + return this.backendSrv.datasourceRequest({ url: this.buildRealUrl(param), method: "GET", - }) - .then((response) => { + }).then((response) => { var data = response.data; - if (data.ErrorCode == 200 && data.Success == true) { + if (data.Code == "200" && data.Success == true) { var result = []; var resource = data.Resources.Resource; var i = resource.length; @@ -585,115 +587,100 @@ export class GenericDatasource { }); } - getDimensions(project, metric, period, dimensions) { - if ( - project.indexOf("acs_customMetric") != -1 || - project.indexOf("acs_logMonitor") != -1 - ) { + getDimensions(project, metric, period, dimensions, resource) { + if (project.indexOf("acs_customMetric") != -1 || project.indexOf("acs_logMonitor") != -1) { return; } - var result = []; var endTime = new Date().getTime(); - var startTime = endTime - 1 * 60 * 60 * 1000; - var param = { - path: - "/?Action=QueryMetricLast&Page=1&Length=90000&Period=" + - period + - "&Project=" + - project + - "&Metric=" + - metric + - "&StartTime=" + - startTime + - "&EndTime=" + - endTime, - method: "GET", - }; - return this.backendSrv - .datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET", - }) - .then((response) => { - var data = response.data; - if (data.Success == false) { - return; + var startTime = endTime - 15 * 60 * 1000; + // TODO + var queryConcat = "?Action=QueryMetricLast&Period=" + period + "&Project=" + project + "&Metric=" + metric + "&StartTime=" + startTime + "&EndTime=" + endTime; + return this.doNextToken(queryConcat, "", 0, "last").then((data) => { + if (data.length == 0) { + return[]; } // 构建可选参数dimensions - param = { - path: - "/?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + - project + - "&Metric=" + - metric, - method: "GET", - }; - return this.backendSrv - .datasourceRequest({ - url: this.buildRealUrl(param), - method: "GET", - }) - .then((response_meta) => { - var data_meta = response_meta.data; - if (data_meta.ErrorCode == 200 && data_meta.Success == true) { - var resource = data_meta.Resources.Resource; - if ( - resource.length == 0 || - this.isEmpty(resource[0].Dimensions) - ) { - return; - } - var dimension = resource[0].Dimensions.split(","); - var datapoints = JSON.parse(data.Datapoints); - datapoints.map((datapoint) => { - var datapointInfo = '{"'; - dimension.forEach(function (value, index) { - value = value.replace(/"/g, ""); - if (value != "userId") { - if (datapoint[value].indexOf(":\\") != -1) { - datapointInfo += value + '":"' + datapoint[value] + '\\"'; - } else { - datapointInfo += value + '":"' + datapoint[value] + '"'; - } - if (index == dimension.length - 1) { - datapointInfo += "}"; - } else { - datapointInfo += ';"'; - } - } - }); - //去重 - if (result.length == 0) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if ( - dimensions.length > 0 && - !dimensions.includes(datapointInfo) - ) { - result.push(datapointInfo); - } - } else if ( - result.length > 0 && - !result.includes(datapointInfo) - ) { - if (dimensions.length == 0) { - result.push(datapointInfo); - } else if ( - dimensions.length > 0 && - !dimensions.includes(datapointInfo) - ) { - result.push(datapointInfo); - } - } - }); - return this.util.arrayToMap(result); + if(!this.isEmpty(resource)){ + return this.dimensionData(data, resource, dimensions); + }else{ + return this.queryMetricMeta(project, metric).then(response => { + resource = response; + if (this.isEmpty(resource) || this.isEmpty(resource[0].Dimensions)) { + return[]; } + return this.dimensionData(data, resource, dimensions); }); - }) - .catch(function (error) { + } + }).catch(function (error) { console.log(error); - return; + return[]; + }); + } + + async dimensionData(data, resource, dimensions){ + var result = []; + var dimension = resource[0].Dimensions.split(","); + + // var datapoints = JSON.parse(data.Datapoints); + data.map((datapoint) => { + var datapointInfo = '{"'; + dimension.forEach(function (value, index) { + value = value.replace(/"/g, ""); + if (value != "userId" || (value == "userId" && dimension.length == 1)) { + if (datapoint[value].indexOf(":\\") != -1) { + datapointInfo += value + '":"' + datapoint[value] + '\\"'; + } else { + datapointInfo += value + '":"' + datapoint[value] + '"'; + } + if (index == dimension.length - 1) { + datapointInfo += "}"; + } else { + datapointInfo += ';"'; + } + } }); + //去重 + if (result.length == 0) { + if (dimensions.length == 0) { + result.push(datapointInfo); + } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { + result.push(datapointInfo); + } + } else if (result.length > 0 && !result.includes(datapointInfo)) { + if (dimensions.length == 0) { + result.push(datapointInfo); + } else if (dimensions.length > 0 && !dimensions.includes(datapointInfo)) { + result.push(datapointInfo); + } + } + }); + return this.util.arrayToMap(result); + } + + async queryMetricMeta(project, metric){ + let rand = Math.floor(Math.random() * 4) + 5; + await this.wait(100 * rand); + + let resource = this.cacheMeta.get(project + "_" + metric); + if(this.isEmpty(resource)){ + var param = { + path: "?Action=QueryMetricMeta&PageNumber=1&PageSize=1&Project=" + project + "&Metric=" + metric, + method: "GET", + }; + return this.backendSrv.datasourceRequest({ + url: this.buildRealUrl(param), + method: "GET", + }).then((response_meta) => { + var data_meta = response_meta.data; + if (data_meta.Code == "200" && data_meta.Success == true) { + resource = data_meta.Resources.Resource; + this.cacheMeta.set(project + "_" + metric, resource); + return resource; + } + }); + }else{ + return resource; + } } // 暂时无翻页功能,无nextToken字段返回 @@ -868,59 +855,23 @@ export class GenericDatasource { // 根据云监控API文档处理URL签名,做封装调用接口用 buildRealUrl(param) { - var signer = new CmsSigner( - { - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.cmsVersion, - }, - param - ); - signer.addAuthorization(); - return this.basePath + signer.request.path; + return "/api/datasources/"+this.datasourceId+"/resources/proxy_aliyun_cms_pop" + param.path; } // 根据ECS API文档处理URL签名,做封装调用接口用 buildECSRealUrl(param) { - var signer = new CmsSigner( - { - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.ecsVersion, - }, - param - ); - signer.addAuthorization(); - return this.ecsBasePath + signer.request.path; + return "/api/datasources/"+this.datasourceId+"/resources/proxy_aliyun_ecs_pop" + param.path; } // 根据RDS API文档处理URL签名,做封装调用接口用 buildRDSRealUrl(param) { - var signer = new CmsSigner( - { - accessKeyId: this.jsonData.cmsAccessKey, - secretAccessKey: this.jsonData.cmsSecretKey, - version: this.rdsVersion, - }, - param - ); - signer.addAuthorization(); - return this.rdsBasePath + signer.request.path; + return "/api/datasources/"+this.datasourceId+"/resources/proxy_aliyun_rds_pop" + param.path; } // 判断对象是否为空对象 true 空 isEmpty(obj) { var re = new RegExp("^[ ]+$"); - if ( - !obj || - obj == "null" || - obj == null || - obj == " " || - obj == "" || - obj == '""' || - re.test(obj) || - typeof obj == "undefined" - ) { + if (!obj || obj == "null" || obj == null || obj == " " || obj == "" || obj == '""' || re.test(obj) || typeof obj == "undefined") { return true; } // 为空 return false; // 不为空 diff --git a/src/module.js b/src/module.js index 8ab46f4..1b7b4b6 100755 --- a/src/module.js +++ b/src/module.js @@ -1,7 +1,13 @@ import {GenericDatasource} from './datasource'; import {GenericDatasourceQueryCtrl} from './query_ctrl'; -class GenericConfigCtrl {} +class GenericConfigCtrl { + constructor() { + this.current.url = this.current.url || "http://metrics.cn-hangzhou.aliyuncs.com"; + this.current.secureJsonData = {}; + this.current.jsonData = {}; +} +} GenericConfigCtrl.templateUrl = 'partials/config.html'; class GenericQueryOptionsCtrl {} diff --git a/src/partials/config.html b/src/partials/config.html index 4af11e5..548e1f6 100755 --- a/src/partials/config.html +++ b/src/partials/config.html @@ -1,11 +1,13 @@ - -

cloudmonitor service details

-
-
AccessKeyId +
Aliyun UserId
+
+
+
AccessKeyId
-
AccessKey AccessKey
diff --git a/src/partials/query.editor.html b/src/partials/query.editor.html index c50cf59..59068d5 100755 --- a/src/partials/query.editor.html +++ b/src/partials/query.editor.html @@ -18,7 +18,7 @@ allow-custom="true" lookup-text="true" get-options="ctrl.getProjects(true)" - on-change="ctrl.onChangeInternal()" + on-change="ctrl.changeValue()" css-class="gf-size-auto">
@@ -34,7 +34,7 @@ allow-custom="true" lookup-text="true" get-options="ctrl.getMetrics(true)" - on-change="ctrl.onChangeInternal()" + on-change="ctrl.changeValue()" css-class="gf-size-auto"> @@ -50,10 +50,11 @@ allow-custom="true" lookup-text="true" get-options="ctrl.getPeriod()" - on-change="ctrl.onChangeInternal()" + on-change="ctrl.changeValue()" css-class="gf-size-auto"> +
@@ -66,7 +67,6 @@ allow-custom="true" lookup-text="true" get-options="ctrl.getGroups()" - on-change="ctrl.onChangeInternal()" css-class="gf-size-auto"> @@ -131,7 +131,7 @@ + spellcheck="false" placeholder="x column name">
diff --git a/src/plugin.json b/src/plugin.json index 3356e7c..a5f1735 100755 --- a/src/plugin.json +++ b/src/plugin.json @@ -9,6 +9,9 @@ "metrics": true, "annotations": true, + "backend": true, + "executable": "cms-datasource", + "info": { "description": "plugin for aliyun CMS", @@ -25,9 +28,9 @@ {"name": "MIT License", "url": "https://github.com/aliyun/aliyun-cms-grafana.git"} ], - "version": "1.0.1", + "version": "1.0.3", "created": "2018-10-10", - "modify":"2019-04-11", + "modify":"2020-08-27", "cms open api version":"20180308" }, diff --git a/src/query_ctrl.js b/src/query_ctrl.js index f79fe0b..1a34d19 100755 --- a/src/query_ctrl.js +++ b/src/query_ctrl.js @@ -20,6 +20,7 @@ export class GenericDatasourceQueryCtrl extends QueryCtrl { this.dimensions; this.target.ycol = this.target.ycol || []; this.statistics; + this.dimensionsCache = []; } @@ -49,6 +50,11 @@ export class GenericDatasourceQueryCtrl extends QueryCtrl { return this.datasource.getPeriod(project,metric); } } + + changeValue() { + this.checkIsNull(); + this.dimensionsCache = []; + } getStatistics() { this.checkIsNull(); @@ -95,7 +101,10 @@ export class GenericDatasourceQueryCtrl extends QueryCtrl { if(this.target.dimensions.indexOf("$") != -1){ dimensions=this.util.resolve(this.target.dimensions, {}); }; - return this.datasource.getDimensions(project,metric,period,dimensions); + if(this.dimensionsCache.length == 0){ + this.dimensionsCache = this.datasource.getDimensions(project,metric,period,dimensions, ""); + } + return this.dimensionsCache; } } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index be3c54d..0000000 --- a/yarn.lock +++ /dev/null @@ -1,2635 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/estree@0.0.38": - version "0.0.38" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" - -"@types/node@*": - version "10.3.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.6.tgz#ea8aab9439b59f40d19ec5f13b44642344872b11" - -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - dependencies: - acorn "^4.0.4" - -acorn@^4.0.4: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -ajv@^5.1.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -argparse@^1.0.2: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - dependencies: - sprintf-js "~1.0.2" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" - -async@^1.5.2, async@~1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - dependencies: - lodash "^4.17.10" - -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.12, babel-core@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.23.0" - babel-helpers "^6.23.0" - babel-messages "^6.23.0" - babel-register "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-core@^6.24.1, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-amd-system-wrapper@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-amd-system-wrapper/-/babel-plugin-transform-amd-system-wrapper-0.3.7.tgz#521c782d35644491c979ea683e8a5e1caff0ba42" - dependencies: - babel-template "^6.9.0" - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-cjs-system-wrapper@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.6.2.tgz#bd7494775289424ff493b6ed455de495bd71ba1d" - dependencies: - babel-template "^6.9.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-systemjs@^6.6.5: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0" - dependencies: - babel-helper-hoist-variables "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-global-system-wrapper@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.3.4.tgz#948dd7d29fc21447e39bd3447f2debc7f2f73aac" - dependencies: - babel-template "^6.9.0" - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-system-register@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz#9dff40390c2763ac518f0b2ad7c5ea4f65a5be25" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-register@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3" - dependencies: - babel-core "^6.23.0" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.23.0, babel-template@^6.9.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.23.0, babel-traverse@^6.23.1: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babel@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel/-/babel-6.23.0.tgz#d0d1e7d803e974765beea3232d4e153c0efb90f4" - -babylon@^6.11.0, babylon@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -bluebird@^3.3.4: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - -body@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" - dependencies: - continuable-cache "^0.3.1" - error "^7.0.0" - raw-body "~1.1.0" - safe-json-parse "~1.0.1" - -brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -buffer-from@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -bytes@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -caniuse-lite@^1.0.30000844: - version "1.0.30000859" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000859.tgz#da974adc5348fffe94724877a7ef8cb5d6d3d777" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chai@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" - dependencies: - assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" - -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -coffeescript@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" - -color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" - dependencies: - color-name "1.1.1" - -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -combined-stream@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0, commander@2.9.x: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.4.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - -continuable-cache@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" - -convert-source-map@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3" - -convert-source-map@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - -core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-js@^2.5.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - dependencies: - cssom "0.3.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -d@^0.1.1, d@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" - dependencies: - es5-ext "~0.10.2" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz#46e13ab9da8e309745c8d01ce547213ebdb2fe3f" - -dateformat@~1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@^2.1.1, debug@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - dependencies: - type-detect "0.1.1" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -electron-to-chromium@^1.3.47: - version "1.3.50" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz#7438b76f92b41b919f3fbdd350fbd0757dacddf7" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -error@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" - dependencies: - string-template "~0.2.1" - xtend "~4.0.0" - -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: - version "0.10.12" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" - dependencies: - d "^0.1.1" - es5-ext "^0.10.7" - es6-symbol "3" - -es6-symbol@3, es6-symbol@~3.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" - dependencies: - d "~0.1.1" - es5-ext "~0.10.11" - -es6-template-strings@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-template-strings/-/es6-template-strings-2.0.1.tgz#b166c6a62562f478bb7775f6ca96103a599b4b2c" - dependencies: - es5-ext "^0.10.12" - esniff "^1.1" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.6.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -esniff@^1.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-1.1.0.tgz#c66849229f91464dede2e0d40201ed6abf65f2ac" - dependencies: - d "1" - es5-ext "^0.10.12" - -esprima@^2.6.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -eventemitter2@~0.4.13: - version "0.4.14" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - -exit@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -faye-websocket@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -figures@^1.0.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-sync-cmp@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - dependencies: - glob "~5.0.0" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -gaze@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - dependencies: - globule "^1.0.0" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -getobject@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" - -getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" - dependencies: - assert-plus "^1.0.0" - -glob@5.0.x, glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.1, glob@^7.0.3: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.5, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.0.0: - version "9.16.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -grunt-babel@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/grunt-babel/-/grunt-babel-6.0.0.tgz#378189b487de1168c4c4a9fc88dd6005b35df960" - dependencies: - babel-core "^6.0.12" - -grunt-cli@^1.2.0, grunt-cli@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" - dependencies: - findup-sync "~0.3.0" - grunt-known-options "~1.1.0" - nopt "~3.0.6" - resolve "~1.1.0" - -grunt-contrib-clean@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz#564abf2d0378a983a15b9e3f30ee75b738c40638" - dependencies: - async "^1.5.2" - rimraf "^2.5.1" - -grunt-contrib-copy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573" - dependencies: - chalk "^1.1.1" - file-sync-cmp "^0.1.0" - -grunt-contrib-uglify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-2.3.0.tgz#b3d0260ebdd6cefa12ff2f8e9e1e259f7de4216f" - dependencies: - chalk "^1.0.0" - maxmin "^1.1.0" - object.assign "^4.0.4" - uglify-js "~2.8.21" - uri-path "^1.0.0" - -grunt-contrib-watch@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4" - dependencies: - async "^2.6.0" - gaze "^1.1.0" - lodash "^4.17.10" - tiny-lr "^1.1.1" - -grunt-execute@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/grunt-execute/-/grunt-execute-0.2.2.tgz#4e945fe57959cc0de7799083b6b42aed9616350a" - -grunt-known-options@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.0.tgz#a4274eeb32fa765da5a7a3b1712617ce3b144149" - -grunt-legacy-log-utils@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" - dependencies: - chalk "~2.4.1" - lodash "~4.17.10" - -grunt-legacy-log@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" - dependencies: - colors "~1.1.2" - grunt-legacy-log-utils "~2.0.0" - hooker "~0.2.3" - lodash "~4.17.5" - -grunt-legacy-util@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" - dependencies: - async "~1.5.2" - exit "~0.1.1" - getobject "~0.1.0" - hooker "~0.2.3" - lodash "~4.17.10" - underscore.string "~3.3.4" - which "~1.3.0" - -grunt-mocha-test@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz#9028472b615bda6ddeaa7b30a5a164e9805de005" - dependencies: - hooker "^0.2.3" - mkdirp "^0.5.0" - -grunt-systemjs-builder@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/grunt-systemjs-builder/-/grunt-systemjs-builder-1.0.0.tgz#5d8e7cbeca5b35e2b7b6bd002e9a9d7e03d7decd" - dependencies: - systemjs-builder "0.14.11 - 0.16.x" - -grunt@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.3.tgz#b3c99260c51d1b42835766e796527b60f7bba374" - dependencies: - coffeescript "~1.10.0" - dateformat "~1.0.12" - eventemitter2 "~0.4.13" - exit "~0.1.1" - findup-sync "~0.3.0" - glob "~7.0.0" - grunt-cli "~1.2.0" - grunt-known-options "~1.1.0" - grunt-legacy-log "~2.0.0" - grunt-legacy-util "~1.1.1" - iconv-lite "~0.4.13" - js-yaml "~3.5.2" - minimatch "~3.0.2" - mkdirp "~0.5.1" - nopt "~3.0.6" - path-is-absolute "~1.0.0" - rimraf "~2.6.2" - -gzip-size@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-1.0.0.tgz#66cf8b101047227b95bace6ea1da0c177ed5c22f" - dependencies: - browserify-zlib "^0.1.4" - concat-stream "^1.4.1" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hooker@^0.2.3, hooker@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" - -hosted-git-info@^2.1.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" - -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - dependencies: - whatwg-encoding "^1.0.1" - -http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -iconv-lite@~0.4.13: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - dependencies: - loose-envify "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-buffer@^1.0.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@~3.5.2: - version "3.5.5" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" - dependencies: - argparse "^1.0.2" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsdom@~9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsprim@^1.2.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" - dependencies: - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -kind-of@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" - dependencies: - is-buffer "^1.0.2" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -livereload-js@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.3.0.tgz#c3ab22e8aaf5bf3505d80d098cbad67726548c9a" - -load-grunt-tasks@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz#0728561180fd20ff8a6927505852fc58aaea0c88" - dependencies: - arrify "^1.0.0" - multimatch "^2.0.0" - pkg-up "^1.0.0" - resolve-pkg "^0.1.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash@^4.17.10, lodash@^4.17.4, lodash@~4.17.10, lodash@~4.17.5: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -lodash@^4.2.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -maxmin@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-1.1.0.tgz#71365e84a99dd8f8b3f7d5fde2f00d1e7f73be61" - dependencies: - chalk "^1.0.0" - figures "^1.0.1" - gzip-size "^1.0.0" - pretty-bytes "^1.0.0" - -meow@^3.1.0, meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -mime-db@~1.26.0: - version "1.26.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - -mime-types@^2.1.12: - version "2.1.14" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" - dependencies: - mime-db "~1.26.0" - -mime-types@~2.1.17: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - dependencies: - mime-db "~1.33.0" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - -minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha@^3.2.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-keys@^1.0.11, object-keys@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - -object.assign@^4.0.4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1, path-is-absolute@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-up@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" - dependencies: - find-up "^1.0.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -pretty-bytes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" - dependencies: - get-stdin "^4.0.1" - meow "^3.1.0" - -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -prunk@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prunk/-/prunk-1.3.1.tgz#5c1f5615c218ac76621b4d8a97ec13717807756a" - -psl@^1.1.24: - version "1.1.28" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -qs@^6.4.0, qs@~6.5.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -raw-body@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" - dependencies: - bytes "1" - string_decoder "0.10" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -readable-stream@^2.2.2: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@^2.79.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - -resolve-pkg@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-0.1.0.tgz#02cc993410e2936962bd97166a1b077da9725531" - dependencies: - resolve-from "^2.0.0" - -resolve@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@^2.5.1, rimraf@~2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rollup@^0.58.2: - version "0.58.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.58.2.tgz#2feddea8c0c022f3e74b35c48e3c21b3433803ce" - dependencies: - "@types/estree" "0.0.38" - "@types/node" "*" - -rsvp@^3.0.13: - version "3.3.3" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813" - -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -safe-json-parse@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sax@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -semver@^4.3.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map-support@^0.4.2: - version "0.4.11" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322" - dependencies: - source-map "^0.5.3" - -source-map-support@~0.2.8: - version "0.2.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.2.10.tgz#ea5a3900a1c1cb25096a0ae8cc5c2b4b10ded3dc" - dependencies: - source-map "0.1.32" - -source-map@0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" - -sprintf-js@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - -string_decoder@0.10: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - -"systemjs-builder@0.14.11 - 0.16.x": - version "0.16.13" - resolved "https://registry.yarnpkg.com/systemjs-builder/-/systemjs-builder-0.16.13.tgz#02b47d03afd1e2f29562b11ec8bc13457e785c76" - dependencies: - babel-core "^6.24.1" - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-amd-system-wrapper "^0.3.7" - babel-plugin-transform-cjs-system-wrapper "^0.6.2" - babel-plugin-transform-es2015-modules-systemjs "^6.6.5" - babel-plugin-transform-global-system-wrapper "^0.3.4" - babel-plugin-transform-system-register "^0.0.1" - bluebird "^3.3.4" - data-uri-to-buffer "0.0.4" - es6-template-strings "^2.0.0" - glob "^7.0.3" - mkdirp "^0.5.1" - rollup "^0.58.2" - source-map "^0.5.3" - systemjs "^0.19.46" - traceur "0.0.105" - uglify-js "^2.6.1" - -systemjs@^0.19.46: - version "0.19.47" - resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.47.tgz#c8c93937180f3f5481c769cd2720763fb4a31c6f" - dependencies: - when "^3.7.5" - -tiny-lr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" - dependencies: - body "^5.1.0" - debug "^3.1.0" - faye-websocket "~0.10.0" - livereload-js "^2.3.0" - object-assign "^4.1.0" - qs "^6.4.0" - -to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -tough-cookie@^2.3.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - -traceur@0.0.105: - version "0.0.105" - resolved "https://registry.yarnpkg.com/traceur/-/traceur-0.0.105.tgz#5cf9dee83d6b77861c3d6c44d53859aed7ab0479" - dependencies: - commander "2.9.x" - glob "5.0.x" - rsvp "^3.0.13" - semver "^4.3.3" - source-map-support "~0.2.8" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -uglify-js@^2.6.1: - version "2.6.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - -uglify-js@~2.8.21: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -underscore.string@~3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" - dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" - -uri-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" - -util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.0.tgz#b237147804881d7b86f40a7ff8f590f15c37de32" - -validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - -whatwg-encoding@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" - dependencies: - iconv-lite "0.4.19" - -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -when@^3.7.5: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - -which@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - -xtend@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0"