You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by ha...@apache.org on 2018/04/27 11:44:58 UTC

[incubator-skywalking-ui] branch 5.0.0/beta updated: Fix #150 Support topology layout options

This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch 5.0.0/beta
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking-ui.git


The following commit(s) were added to refs/heads/5.0.0/beta by this push:
     new d191d17  Fix #150 Support topology layout options
d191d17 is described below

commit d191d17a427039acbb0fdd7e66054c81e5d55953
Author: hanahmily <ha...@gmail.com>
AuthorDate: Fri Apr 27 19:39:57 2018 +0800

    Fix #150 Support topology layout options
---
 mock/topology.js                |   8 +
 package-lock.json               | 422 ++++++++++++++++++++++------------------
 package.json                    |   2 +-
 src/components/Topology/Base.js |  18 +-
 src/routes/Topology/Topology.js |  38 +++-
 5 files changed, 285 insertions(+), 203 deletions(-)

diff --git a/mock/topology.js b/mock/topology.js
index f608196..57e8a09 100644
--- a/mock/topology.js
+++ b/mock/topology.js
@@ -79,6 +79,14 @@ export default {
                   'avgResponseTime|500-5000': 1,
                 },
                 {
+                  source: 2,
+                  target: 1,
+                  'isAlert|1': true,
+                  'callType|1': ['rpc', 'http', 'dubbo'],
+                  'callsPerSec|100-2000': 1,
+                  'avgResponseTime|500-5000': 1,
+                },
+                {
                   source: 1,
                   target: 200,
                   'isAlert|1': true,
diff --git a/package-lock.json b/package-lock.json
index c9cfca0..5d5b4fb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -41,7 +41,7 @@
       "dependencies": {
         "gl-matrix": {
           "version": "2.3.2",
-          "resolved": "http://registry.npm.taobao.org/gl-matrix/download/gl-matrix-2.3.2.tgz",
+          "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-2.3.2.tgz",
           "integrity": "sha1-qsgIx0r31dsF/gTLYMoaD8sXTXQ="
         }
       }
@@ -127,7 +127,7 @@
       "dependencies": {
         "jsesc": {
           "version": "2.5.1",
-          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-2.5.1.tgz",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
           "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
           "dev": true
         }
@@ -1272,7 +1272,7 @@
         },
         "jsx-ast-utils": {
           "version": "1.4.1",
-          "resolved": "http://registry.npm.taobao.org/jsx-ast-utils/download/jsx-ast-utils-1.4.1.tgz",
+          "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
           "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=",
           "dev": true
         },
@@ -1425,7 +1425,7 @@
       "dependencies": {
         "normalize-path": {
           "version": "2.1.1",
-          "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
           "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
           "dev": true,
           "requires": {
@@ -1736,13 +1736,13 @@
         },
         "arr-diff": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
           "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
           "dev": true
         },
         "array-unique": {
           "version": "0.3.2",
-          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
           "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
           "dev": true
         },
@@ -1768,7 +1768,7 @@
           "dependencies": {
             "define-property": {
               "version": "1.0.0",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
               "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
               "requires": {
@@ -1777,7 +1777,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -1799,7 +1799,7 @@
         },
         "expand-brackets": {
           "version": "2.1.4",
-          "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
           "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
           "dev": true,
           "requires": {
@@ -1814,7 +1814,7 @@
           "dependencies": {
             "define-property": {
               "version": "0.2.5",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
               "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
               "dev": true,
               "requires": {
@@ -1823,7 +1823,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -1867,7 +1867,7 @@
           "dependencies": {
             "define-property": {
               "version": "1.0.0",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
               "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
               "requires": {
@@ -1876,7 +1876,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -1887,7 +1887,7 @@
         },
         "fill-range": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
           "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
           "dev": true,
           "requires": {
@@ -1899,7 +1899,7 @@
           "dependencies": {
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -1910,7 +1910,7 @@
         },
         "is-accessor-descriptor": {
           "version": "0.1.6",
-          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
           "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
           "dev": true,
           "requires": {
@@ -1919,7 +1919,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -1930,7 +1930,7 @@
         },
         "is-data-descriptor": {
           "version": "0.1.4",
-          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
           "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
           "dev": true,
           "requires": {
@@ -1939,7 +1939,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -1950,7 +1950,7 @@
         },
         "is-number": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
           "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
           "requires": {
@@ -1959,7 +1959,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -2089,7 +2089,7 @@
       "dependencies": {
         "jsesc": {
           "version": "1.3.0",
-          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-1.3.0.tgz",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
           "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
           "dev": true
         }
@@ -2504,7 +2504,7 @@
       "dependencies": {
         "define-property": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
@@ -2679,7 +2679,7 @@
         },
         "camelcase": {
           "version": "4.1.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
           "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
           "dev": true
         },
@@ -3196,7 +3196,7 @@
       "dependencies": {
         "define-property": {
           "version": "0.2.5",
-          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
@@ -3205,7 +3205,7 @@
         },
         "is-accessor-descriptor": {
           "version": "0.1.6",
-          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
           "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
           "dev": true,
           "requires": {
@@ -3214,7 +3214,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -3225,7 +3225,7 @@
         },
         "is-data-descriptor": {
           "version": "0.1.4",
-          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
           "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
           "dev": true,
           "requires": {
@@ -3234,7 +3234,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -3703,7 +3703,7 @@
       "dependencies": {
         "globby": {
           "version": "7.1.1",
-          "resolved": "http://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
           "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
           "dev": true,
           "requires": {
@@ -3729,7 +3729,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         }
@@ -3759,7 +3759,7 @@
       "dependencies": {
         "parse-json": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
           "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
           "dev": true,
           "requires": {
@@ -3952,7 +3952,7 @@
       "dependencies": {
         "has-flag": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
           "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
           "dev": true
         },
@@ -3970,7 +3970,7 @@
         },
         "supports-color": {
           "version": "3.2.3",
-          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
           "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
           "dev": true,
           "requires": {
@@ -4188,10 +4188,13 @@
       "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.0.0.tgz",
       "integrity": "sha1-Xwr75cVaegJkQrdWyjiM53wmKWc="
     },
-    "cytoscape-node-html-label": {
-      "version": "1.0.5",
-      "resolved": "http://registry.npm.taobao.org/cytoscape-node-html-label/download/cytoscape-node-html-label-1.0.5.tgz",
-      "integrity": "sha1-ByfaAest38e1EsdPRPWsGYbE6c4="
+    "cytoscape-dagre": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/cytoscape-dagre/-/cytoscape-dagre-2.2.1.tgz",
+      "integrity": "sha512-8HK1lCCRi5Jxt4spMTksYy/lZTCidu7FX2jovGbC2GCGum0Qd4HInOkn5ofMVdpWYE7FmynSbZDlDfbNtnglwA==",
+      "requires": {
+        "dagre": "0.7.4"
+      }
     },
     "d": {
       "version": "1.0.0",
@@ -4514,6 +4517,22 @@
         "d3-transition": "1.1.1"
       }
     },
+    "dagre": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.7.4.tgz",
+      "integrity": "sha1-3nLw50pVDOEc5jjwoTb+1xI5gCI=",
+      "requires": {
+        "graphlib": "1.0.7",
+        "lodash": "3.10.1"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+        }
+      }
+    },
     "damerau-levenshtein": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz",
@@ -4788,7 +4807,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         }
@@ -4991,7 +5010,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
@@ -5430,7 +5449,7 @@
       "dependencies": {
         "esprima": {
           "version": "3.1.3",
-          "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
           "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
           "dev": true
         },
@@ -5502,7 +5521,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -5537,7 +5556,7 @@
         },
         "strip-ansi": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
@@ -5669,7 +5688,7 @@
       "dependencies": {
         "doctrine": {
           "version": "1.5.0",
-          "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz",
+          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
           "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
           "dev": true,
           "requires": {
@@ -5679,7 +5698,7 @@
         },
         "find-up": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
@@ -5688,13 +5707,13 @@
         },
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
         "load-json-file": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
           "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
           "dev": true,
           "requires": {
@@ -5706,7 +5725,7 @@
         },
         "path-type": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
           "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
           "dev": true,
           "requires": {
@@ -5715,7 +5734,7 @@
         },
         "read-pkg": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
           "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
           "dev": true,
           "requires": {
@@ -5726,7 +5745,7 @@
         },
         "read-pkg-up": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
           "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
           "dev": true,
           "requires": {
@@ -5736,7 +5755,7 @@
         },
         "strip-bom": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
           "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         }
@@ -6048,7 +6067,7 @@
       "dependencies": {
         "path-to-regexp": {
           "version": "0.1.7",
-          "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
           "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
           "dev": true
         }
@@ -6449,7 +6468,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
@@ -7627,7 +7646,7 @@
         },
         "globby": {
           "version": "6.1.0",
-          "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
           "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
           "dev": true,
           "requires": {
@@ -7640,7 +7659,7 @@
         },
         "jsonfile": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
           "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
           "dev": true,
           "requires": {
@@ -7808,7 +7827,7 @@
       "dependencies": {
         "minimist": {
           "version": "1.1.3",
-          "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.1.3.tgz",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
           "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=",
           "dev": true
         }
@@ -7844,6 +7863,21 @@
       "integrity": "sha1-cr19AsDPbz8phnFn7dDcIurWYPo=",
       "dev": true
     },
+    "graphlib": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-1.0.7.tgz",
+      "integrity": "sha1-DKst8P/mq+BwsmJb+h7bbslnuLE=",
+      "requires": {
+        "lodash": "3.10.1"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+        }
+      }
+    },
     "growly": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
@@ -8396,7 +8430,7 @@
       "dependencies": {
         "strip-indent": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
           "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
           "dev": true
         }
@@ -8470,7 +8504,7 @@
       "dependencies": {
         "find-up": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
@@ -8479,7 +8513,7 @@
         },
         "pkg-dir": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
           "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
           "dev": true,
           "requires": {
@@ -9153,13 +9187,13 @@
       "dependencies": {
         "has-flag": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
           "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
           "dev": true
         },
         "supports-color": {
           "version": "3.2.3",
-          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
           "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
           "dev": true,
           "requires": {
@@ -9260,7 +9294,7 @@
         },
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9275,7 +9309,7 @@
         },
         "camelcase": {
           "version": "4.1.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
           "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
           "dev": true
         },
@@ -9303,7 +9337,7 @@
         },
         "find-up": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
@@ -9341,7 +9375,7 @@
         },
         "strip-ansi": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
@@ -9359,7 +9393,7 @@
         },
         "y18n": {
           "version": "3.2.1",
-          "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
           "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
           "dev": true
         },
@@ -9415,7 +9449,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9493,7 +9527,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9671,7 +9705,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9709,7 +9743,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9915,7 +9949,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -9930,7 +9964,7 @@
         },
         "babel-core": {
           "version": "6.26.0",
-          "resolved": "http://registry.npm.taobao.org/babel-core/download/babel-core-6.26.0.tgz",
+          "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
           "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
           "dev": true,
           "requires": {
@@ -9963,7 +9997,7 @@
         },
         "camelcase": {
           "version": "4.1.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
           "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
           "dev": true
         },
@@ -9991,7 +10025,7 @@
         },
         "find-up": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
@@ -10029,7 +10063,7 @@
         },
         "strip-ansi": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
@@ -10038,7 +10072,7 @@
         },
         "strip-bom": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
           "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         },
@@ -10053,7 +10087,7 @@
         },
         "y18n": {
           "version": "3.2.1",
-          "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
           "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
           "dev": true
         },
@@ -10110,7 +10144,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -10181,7 +10215,7 @@
         },
         "callsites": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
           "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
           "dev": true
         },
@@ -10521,7 +10555,7 @@
       "dependencies": {
         "ajv": {
           "version": "4.11.8",
-          "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-4.11.8.tgz",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
           "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
           "dev": true,
           "optional": true,
@@ -10532,21 +10566,21 @@
         },
         "assert-plus": {
           "version": "0.2.0",
-          "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-0.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
           "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
           "dev": true,
           "optional": true
         },
         "aws-sign2": {
           "version": "0.6.0",
-          "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.6.0.tgz",
+          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
           "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
           "dev": true,
           "optional": true
         },
         "boom": {
           "version": "2.10.1",
-          "resolved": "http://registry.npm.taobao.org/boom/download/boom-2.10.1.tgz",
+          "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
           "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
           "dev": true,
           "requires": {
@@ -10555,7 +10589,7 @@
         },
         "cryptiles": {
           "version": "2.0.5",
-          "resolved": "http://registry.npm.taobao.org/cryptiles/download/cryptiles-2.0.5.tgz",
+          "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
           "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
           "dev": true,
           "optional": true,
@@ -10565,7 +10599,7 @@
         },
         "form-data": {
           "version": "2.1.4",
-          "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
           "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
           "dev": true,
           "optional": true,
@@ -10577,14 +10611,14 @@
         },
         "har-schema": {
           "version": "1.0.5",
-          "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-1.0.5.tgz",
+          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
           "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
           "dev": true,
           "optional": true
         },
         "har-validator": {
           "version": "4.2.1",
-          "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-4.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
           "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
           "dev": true,
           "optional": true,
@@ -10595,7 +10629,7 @@
         },
         "hawk": {
           "version": "3.1.3",
-          "resolved": "http://registry.npm.taobao.org/hawk/download/hawk-3.1.3.tgz",
+          "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
           "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
           "dev": true,
           "optional": true,
@@ -10608,13 +10642,13 @@
         },
         "hoek": {
           "version": "2.16.3",
-          "resolved": "http://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz",
+          "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
           "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
           "dev": true
         },
         "http-signature": {
           "version": "1.1.1",
-          "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
           "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
           "dev": true,
           "optional": true,
@@ -10626,21 +10660,21 @@
         },
         "performance-now": {
           "version": "0.2.0",
-          "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-0.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
           "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
           "dev": true,
           "optional": true
         },
         "qs": {
           "version": "6.4.0",
-          "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.4.0.tgz",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
           "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
           "dev": true,
           "optional": true
         },
         "request": {
           "version": "2.81.0",
-          "resolved": "http://registry.npm.taobao.org/request/download/request-2.81.0.tgz",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
           "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
           "dev": true,
           "optional": true,
@@ -10671,7 +10705,7 @@
         },
         "sntp": {
           "version": "1.0.9",
-          "resolved": "http://registry.npm.taobao.org/sntp/download/sntp-1.0.9.tgz",
+          "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
           "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
           "dev": true,
           "optional": true,
@@ -10700,7 +10734,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         }
@@ -10781,7 +10815,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         },
@@ -11316,7 +11350,7 @@
       "dependencies": {
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         }
@@ -11723,7 +11757,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
@@ -11753,7 +11787,7 @@
         },
         "through2": {
           "version": "2.0.3",
-          "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
           "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
           "dev": true,
           "requires": {
@@ -11763,7 +11797,7 @@
         },
         "xtend": {
           "version": "4.0.1",
-          "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
           "dev": true
         }
@@ -11888,13 +11922,13 @@
       "dependencies": {
         "arr-diff": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
           "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
           "dev": true
         },
         "array-unique": {
           "version": "0.3.2",
-          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
           "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
           "dev": true
         },
@@ -12023,13 +12057,13 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
         "process": {
           "version": "0.11.10",
-          "resolved": "http://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
+          "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
           "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
           "dev": true
         },
@@ -12319,7 +12353,7 @@
       "dependencies": {
         "object-keys": {
           "version": "1.0.11",
-          "resolved": "http://registry.npm.taobao.org/object-keys/download/object-keys-1.0.11.tgz",
+          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
           "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
           "dev": true
         }
@@ -12585,7 +12619,7 @@
       "dependencies": {
         "execa": {
           "version": "0.7.0",
-          "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
           "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
           "dev": true,
           "requires": {
@@ -13430,7 +13464,7 @@
       "dependencies": {
         "has-flag": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
           "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
           "dev": true
         },
@@ -13448,7 +13482,7 @@
         },
         "supports-color": {
           "version": "3.2.3",
-          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
           "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
           "dev": true,
           "requires": {
@@ -14435,7 +14469,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
@@ -14655,7 +14689,7 @@
       "dependencies": {
         "is-number": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
           "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
           "requires": {
@@ -14664,7 +14698,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -14675,7 +14709,7 @@
         },
         "kind-of": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
           "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
           "dev": true,
           "requires": {
@@ -14781,7 +14815,7 @@
       "dependencies": {
         "array-tree-filter": {
           "version": "1.0.1",
-          "resolved": "http://registry.npm.taobao.org/array-tree-filter/download/array-tree-filter-1.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-1.0.1.tgz",
           "integrity": "sha1-CorR7v04zoiFhjL5zAQj12NOTV0="
         }
       }
@@ -15113,7 +15147,7 @@
       "dependencies": {
         "warning": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/warning/download/warning-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz",
           "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=",
           "requires": {
             "loose-envify": "1.3.1"
@@ -15134,7 +15168,7 @@
       "dependencies": {
         "shallowequal": {
           "version": "0.2.2",
-          "resolved": "http://registry.npm.taobao.org/shallowequal/download/shallowequal-0.2.2.tgz",
+          "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz",
           "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=",
           "requires": {
             "lodash.keys": "3.1.2"
@@ -15382,7 +15416,7 @@
       "dependencies": {
         "path-to-regexp": {
           "version": "1.7.0",
-          "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
           "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
           "requires": {
             "isarray": "0.0.1"
@@ -15775,7 +15809,7 @@
         },
         "xtend": {
           "version": "4.0.1",
-          "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
           "dev": true
         }
@@ -15837,7 +15871,7 @@
       "dependencies": {
         "xtend": {
           "version": "4.0.1",
-          "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
           "dev": true
         }
@@ -16252,7 +16286,7 @@
         },
         "jsonfile": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
           "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
           "dev": true,
           "requires": {
@@ -16290,13 +16324,13 @@
       "dependencies": {
         "async": {
           "version": "1.2.1",
-          "resolved": "http://registry.npm.taobao.org/async/download/async-1.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz",
           "integrity": "sha1-pIFqF81f9RbfosdpikUzabl5DeA=",
           "dev": true
         },
         "error-stack-parser": {
           "version": "1.3.3",
-          "resolved": "http://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-1.3.3.tgz",
+          "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.3.tgz",
           "integrity": "sha1-+tpuOpzSsOCA5tb8dRQYZJc081w=",
           "dev": true,
           "requires": {
@@ -16305,19 +16339,19 @@
         },
         "extend": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
           "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=",
           "dev": true
         },
         "lru-cache": {
           "version": "2.2.4",
-          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-2.2.4.tgz",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
           "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
           "dev": true
         },
         "uuid": {
           "version": "3.0.1",
-          "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
           "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
           "dev": true
         }
@@ -16386,7 +16420,7 @@
       "dependencies": {
         "symbol-observable": {
           "version": "1.0.1",
-          "resolved": "http://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
           "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
           "dev": true
         }
@@ -16569,7 +16603,7 @@
       "dependencies": {
         "extend-shallow": {
           "version": "2.0.1",
-          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
@@ -16733,7 +16767,7 @@
       "dependencies": {
         "define-property": {
           "version": "0.2.5",
-          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
@@ -16742,7 +16776,7 @@
         },
         "extend-shallow": {
           "version": "2.0.1",
-          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
@@ -16751,7 +16785,7 @@
         },
         "is-accessor-descriptor": {
           "version": "0.1.6",
-          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
           "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
           "dev": true,
           "requires": {
@@ -16760,7 +16794,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -16771,7 +16805,7 @@
         },
         "is-data-descriptor": {
           "version": "0.1.4",
-          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
           "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
           "dev": true,
           "requires": {
@@ -16780,7 +16814,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -16821,7 +16855,7 @@
       "dependencies": {
         "define-property": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
@@ -16859,7 +16893,7 @@
       "dependencies": {
         "faye-websocket": {
           "version": "0.10.0",
-          "resolved": "http://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
           "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
           "dev": true,
           "requires": {
@@ -16942,7 +16976,7 @@
       "dependencies": {
         "source-map": {
           "version": "0.5.6",
-          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.6.tgz",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
           "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
           "dev": true
         }
@@ -17007,7 +17041,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
@@ -17069,7 +17103,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "optional": true
         },
@@ -17099,7 +17133,7 @@
         },
         "through2": {
           "version": "2.0.3",
-          "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
           "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
           "optional": true,
           "requires": {
@@ -17109,7 +17143,7 @@
         },
         "xtend": {
           "version": "4.0.1",
-          "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
           "optional": true
         }
@@ -17326,7 +17360,7 @@
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
@@ -17356,7 +17390,7 @@
         },
         "xtend": {
           "version": "4.0.1",
-          "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
           "dev": true
         }
@@ -17581,13 +17615,13 @@
         },
         "camelcase": {
           "version": "4.1.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
           "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
           "dev": true
         },
         "camelcase-keys": {
           "version": "4.2.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-4.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
           "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
           "dev": true,
           "requires": {
@@ -17630,7 +17664,7 @@
         },
         "find-up": {
           "version": "2.1.0",
-          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
@@ -17639,13 +17673,13 @@
         },
         "get-stdin": {
           "version": "5.0.1",
-          "resolved": "http://registry.npm.taobao.org/get-stdin/download/get-stdin-5.0.1.tgz",
+          "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
           "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
           "dev": true
         },
         "globby": {
           "version": "7.1.1",
-          "resolved": "http://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
           "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
           "dev": true,
           "requires": {
@@ -17659,13 +17693,13 @@
         },
         "indent-string": {
           "version": "3.2.0",
-          "resolved": "http://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
           "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
           "dev": true
         },
         "load-json-file": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
           "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
           "dev": true,
           "requires": {
@@ -17677,7 +17711,7 @@
           "dependencies": {
             "parse-json": {
               "version": "4.0.0",
-              "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
+              "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
               "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
               "dev": true,
               "requires": {
@@ -17689,7 +17723,7 @@
         },
         "map-obj": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/map-obj/download/map-obj-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
           "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
           "dev": true
         },
@@ -17712,7 +17746,7 @@
         },
         "parse-json": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-3.0.0.tgz",
           "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=",
           "dev": true,
           "requires": {
@@ -17730,13 +17764,13 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         },
         "postcss-selector-parser": {
           "version": "3.1.1",
-          "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
           "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
           "dev": true,
           "requires": {
@@ -17747,7 +17781,7 @@
         },
         "read-pkg": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
           "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
           "dev": true,
           "requires": {
@@ -17758,7 +17792,7 @@
         },
         "read-pkg-up": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
           "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
           "dev": true,
           "requires": {
@@ -17768,7 +17802,7 @@
         },
         "redent": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/redent/download/redent-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
           "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
           "dev": true,
           "requires": {
@@ -17784,13 +17818,13 @@
         },
         "strip-bom": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
           "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         },
         "strip-indent": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
           "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
           "dev": true
         },
@@ -17805,7 +17839,7 @@
         },
         "trim-newlines": {
           "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/trim-newlines/download/trim-newlines-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
           "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
           "dev": true
         }
@@ -17924,7 +17958,7 @@
       "dependencies": {
         "pretty-bytes": {
           "version": "4.0.2",
-          "resolved": "http://registry.npm.taobao.org/pretty-bytes/download/pretty-bytes-4.0.2.tgz",
+          "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
           "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
           "dev": true
         }
@@ -19055,7 +19089,7 @@
       "dependencies": {
         "querystringify": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/querystringify/download/querystringify-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
           "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
           "dev": true
         }
@@ -19449,7 +19483,7 @@
         },
         "gzip-size": {
           "version": "4.1.0",
-          "resolved": "http://registry.npm.taobao.org/gzip-size/download/gzip-size-4.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz",
           "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=",
           "dev": true,
           "requires": {
@@ -19459,7 +19493,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         },
@@ -19534,13 +19568,13 @@
         },
         "arr-diff": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
           "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
           "dev": true
         },
         "array-unique": {
           "version": "0.3.2",
-          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
           "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
           "dev": true
         },
@@ -19566,7 +19600,7 @@
           "dependencies": {
             "define-property": {
               "version": "1.0.0",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
               "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
               "requires": {
@@ -19575,7 +19609,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -19586,7 +19620,7 @@
         },
         "camelcase": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
           "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
           "dev": true
         },
@@ -19612,7 +19646,7 @@
         },
         "cliui": {
           "version": "3.2.0",
-          "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
           "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
           "dev": true,
           "requires": {
@@ -19632,7 +19666,7 @@
         },
         "del": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/del/download/del-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
           "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
           "dev": true,
           "requires": {
@@ -19646,7 +19680,7 @@
         },
         "expand-brackets": {
           "version": "2.1.4",
-          "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
           "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
           "dev": true,
           "requires": {
@@ -19670,7 +19704,7 @@
             },
             "define-property": {
               "version": "0.2.5",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
               "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
               "dev": true,
               "requires": {
@@ -19679,7 +19713,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -19723,7 +19757,7 @@
           "dependencies": {
             "define-property": {
               "version": "1.0.0",
-              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
               "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
               "requires": {
@@ -19732,7 +19766,7 @@
             },
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -19743,7 +19777,7 @@
         },
         "fill-range": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
           "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
           "dev": true,
           "requires": {
@@ -19755,7 +19789,7 @@
           "dependencies": {
             "extend-shallow": {
               "version": "2.0.1",
-              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
               "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
               "requires": {
@@ -19766,7 +19800,7 @@
         },
         "glob-parent": {
           "version": "3.1.0",
-          "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
           "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
           "dev": true,
           "requires": {
@@ -19776,7 +19810,7 @@
           "dependencies": {
             "is-glob": {
               "version": "3.1.0",
-              "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
               "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
               "requires": {
@@ -19787,7 +19821,7 @@
         },
         "globby": {
           "version": "6.1.0",
-          "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
           "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
           "dev": true,
           "requires": {
@@ -19800,7 +19834,7 @@
           "dependencies": {
             "pify": {
               "version": "2.3.0",
-              "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
               "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
               "dev": true
             }
@@ -19808,7 +19842,7 @@
         },
         "is-accessor-descriptor": {
           "version": "0.1.6",
-          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
           "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
           "dev": true,
           "requires": {
@@ -19817,7 +19851,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -19828,7 +19862,7 @@
         },
         "is-data-descriptor": {
           "version": "0.1.4",
-          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
           "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
           "dev": true,
           "requires": {
@@ -19837,7 +19871,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -19857,7 +19891,7 @@
         },
         "is-number": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
           "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
           "requires": {
@@ -19866,7 +19900,7 @@
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
-              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
@@ -19904,7 +19938,7 @@
         },
         "normalize-path": {
           "version": "2.1.1",
-          "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
           "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
           "dev": true,
           "requires": {
@@ -19922,7 +19956,7 @@
         },
         "os-locale": {
           "version": "1.4.0",
-          "resolved": "http://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
           "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
           "dev": true,
           "requires": {
@@ -19931,7 +19965,7 @@
         },
         "pify": {
           "version": "3.0.0",
-          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
           "dev": true
         },
@@ -19957,19 +19991,19 @@
         },
         "which-module": {
           "version": "1.0.0",
-          "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
           "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
           "dev": true
         },
         "y18n": {
           "version": "3.2.1",
-          "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
           "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
           "dev": true
         },
         "yargs": {
           "version": "6.6.0",
-          "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-6.6.0.tgz",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
           "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
           "dev": true,
           "requires": {
@@ -19990,7 +20024,7 @@
         },
         "yargs-parser": {
           "version": "4.2.1",
-          "resolved": "http://registry.npm.taobao.org/yargs-parser/download/yargs-parser-4.2.1.tgz",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
           "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
           "dev": true,
           "requires": {
diff --git a/package.json b/package.json
index 62a3866..70cd8f8 100755
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "classnames": "^2.2.5",
     "cytoscape": "^3.2.7",
     "cytoscape-cose-bilkent": "^4.0.0",
-    "cytoscape-node-html-label": "^1.0.3",
+    "cytoscape-dagre": "^2.2.1",
     "d3": "^4.12.2",
     "dva": "^2.1.0",
     "dva-loading": "^1.0.4",
diff --git a/src/components/Topology/Base.js b/src/components/Topology/Base.js
index 4f3a676..70dab96 100644
--- a/src/components/Topology/Base.js
+++ b/src/components/Topology/Base.js
@@ -19,13 +19,15 @@
 import React, { Component } from 'react';
 import cytoscape from 'cytoscape';
 import coseBilkent from 'cytoscape-cose-bilkent';
+import dagre from 'cytoscape-dagre';
 
 cytoscape.use(coseBilkent);
+cytoscape.use(dagre);
 
 const config = {
   layout: {
     name: 'cose-bilkent',
-    animate: false,
+    animate: true,
     idealEdgeLength: 200,
     edgeElasticity: 0.1,
   },
@@ -36,7 +38,8 @@ export default class Base extends Component {
     display: 'block',
   }
   componentDidMount() {
-    const { elements } = this.props;
+    const { elements, layout = config.layout } = this.props;
+    this.layout = layout;
     let nextElements = this.transform(elements);
     if (this.setUp) {
       nextElements = this.setUp(nextElements);
@@ -47,7 +50,7 @@ export default class Base extends Component {
       maxZoom: 1,
       boxSelectionEnabled: true,
       wheelSensitivity: 0.2,
-      layout: config.layout,
+      layout,
       elements: nextElements,
       style: this.getStyle(),
     });
@@ -56,20 +59,21 @@ export default class Base extends Component {
     }
   }
   componentWillReceiveProps(nextProps) {
-    if (nextProps.elements === this.elements) {
+    if (nextProps.elements === this.elements && nextProps.layout === this.layout) {
       return;
     }
-    const { elements } = nextProps;
+    const { elements, layout: nextLayout } = nextProps;
     const nodes = this.cy.nodes();
     let nextElements = this.transform(elements);
     if (this.setUp) {
       nextElements = this.setUp(nextElements);
     }
     this.cy.json({ elements: nextElements, style: this.getStyle() });
-    if (this.isSame(nodes, this.cy.nodes())) {
+    if (nextLayout === this.layout && this.isSame(nodes, this.cy.nodes())) {
       return;
     }
-    const layout = this.cy.layout(config.layout);
+    this.layout = nextLayout;
+    const layout = this.cy.layout(nextLayout);
     layout.pon('layoutstop').then(() => {
       this.cy.minZoom(this.cy.zoom() - 0.3);
     });
diff --git a/src/routes/Topology/Topology.js b/src/routes/Topology/Topology.js
index d0b2866..2b2fcd7 100644
--- a/src/routes/Topology/Topology.js
+++ b/src/routes/Topology/Topology.js
@@ -18,7 +18,7 @@
 
 import React, { PureComponent } from 'react';
 import { connect } from 'dva';
-import { Row, Col, Card, Icon } from 'antd';
+import { Row, Col, Card, Icon, Radio, Avatar } from 'antd';
 import { ChartCard } from '../../components/Charts';
 import { AppTopology } from '../../components/Topology';
 import { Panel } from '../../components/Page';
@@ -36,6 +36,26 @@ const colResponsiveProps = {
   xl: 12,
   style: { marginTop: 8 },
 };
+
+const layouts = {
+  'cose-bilkent': {
+    name: 'cose-bilkent',
+    idealEdgeLength: 200,
+    edgeElasticity: 0.1,
+  },
+  dagre: {
+    name: 'dagre',
+    rankDir: 'LR',
+    minLen: 4,
+    animate: true,
+  },
+  concentric: {
+    name: 'concentric',
+    minNodeSpacing: 10,
+    animate: true,
+  },
+};
+
 @connect(state => ({
   topology: state.topology,
   duration: state.global.duration,
@@ -51,6 +71,12 @@ export default class Topology extends PureComponent {
       payload: { variables },
     });
   }
+  handleLayoutChange = ({ target: { value } }) => {
+    this.props.dispatch({
+      type: 'topology/saveData',
+      payload: { layout: layouts[value] },
+    });
+  }
   handleSelectedApplication = (appInfo) => {
     if (appInfo) {
       this.props.dispatch({
@@ -74,18 +100,28 @@ export default class Topology extends PureComponent {
   }
   render() {
     const { data } = this.props.topology;
+    const { layout = layouts['cose-bilkent'] } = data;
     return (
       <Panel globalVariables={this.props.globalVariables} onChange={this.handleChange}>
         <Row gutter={8}>
           <Col {...{ ...colResponsiveProps, xl: 18, lg: 16 }}>
             <ChartCard
               title="Topology Map"
+              avatar={<Avatar icon="fork" style={{ color: '#1890ff', backgroundColor: '#ffffff' }} />}
+              action={(
+                <Radio.Group value={layout.name} onChange={this.handleLayoutChange} size="small">
+                  <Radio.Button value="cose-bilkent">Cose</Radio.Button>
+                  <Radio.Button value="dagre">Dagre</Radio.Button>
+                  <Radio.Button value="concentric">concentric</Radio.Button>
+                </Radio.Group>
+              )}
             >
               {data.getClusterTopology.nodes.length > 0 ? (
                 <AppTopology
                   height={this.props.graphHeight}
                   elements={data.getClusterTopology}
                   onSelectedApplication={this.handleSelectedApplication}
+                  layout={layout}
                 />
               ) : null}
             </ChartCard>

-- 
To stop receiving notification emails like this one, please contact
hanahmily@apache.org.