From ed97663c6a08695c51cdd99864fa428c432a7777 Mon Sep 17 00:00:00 2001 From: clay <20932067@zju.edu.cn> Date: Wed, 16 Feb 2022 17:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 2 + .eslintrc.js | 18 + .gitignore | 21 + .npmignore | 9 + README.md | 149 + babel.config.js | 3 + examples/App.vue | 11 + examples/assets/iconfont/iconfont.css | 33 + examples/assets/iconfont/iconfont.eot | Bin 0 -> 2716 bytes examples/assets/iconfont/iconfont.js | 1 + examples/assets/iconfont/iconfont.svg | 38 + examples/assets/iconfont/iconfont.ttf | Bin 0 -> 2548 bytes examples/assets/iconfont/iconfont.woff | Bin 0 -> 1800 bytes examples/assets/iconfont/iconfont.woff2 | Bin 0 -> 1340 bytes .../assets/images/404-images/404-cloud.png | Bin 0 -> 4766 bytes examples/assets/images/404-images/404.png | Bin 0 -> 98071 bytes examples/assets/images/blue.svg | 29 + examples/assets/images/demo-topology.png | Bin 0 -> 71092 bytes examples/assets/images/demo_topology.gif | Bin 0 -> 71384 bytes examples/assets/images/green.svg | 29 + examples/assets/images/purple.svg | 29 + examples/assets/logo.png | Bin 0 -> 8960 bytes examples/components/FooterBar.vue | 97 + examples/components/HeaderBar.vue | 95 + examples/components/HelloWorld.vue | 117 + examples/main.js | 36 + examples/router.js | 43 + examples/store.js | 10 + examples/styles/index.scss | 61 + .../packages/assets/iconfont/iconfont.css | 109 + .../packages/assets/iconfont/iconfont.eot | Bin 0 -> 6896 bytes .../packages/assets/iconfont/iconfont.js | 1 + .../packages/assets/iconfont/iconfont.svg | 95 + .../packages/assets/iconfont/iconfont.ttf | Bin 0 -> 6728 bytes .../packages/assets/iconfont/iconfont.woff | Bin 0 -> 4180 bytes .../packages/assets/iconfont/iconfont.woff2 | Bin 0 -> 3404 bytes .../demos/packages/assets/images/client.png | Bin 0 -> 2141 bytes .../demos/packages/assets/images/database.png | Bin 0 -> 3577 bytes .../demos/packages/assets/images/firewall.png | Bin 0 -> 7316 bytes .../demos/packages/assets/images/server.png | Bin 0 -> 1555 bytes examples/views/demos/packages/assets/logo.png | Bin 0 -> 5691 bytes .../views/demos/packages/elements/button.vue | 93 + .../demos/packages/elements/checkbox.vue | 79 + .../demos/packages/elements/dropdown.vue | 228 + .../views/demos/packages/elements/index.js | 17 + .../views/demos/packages/elements/loading.vue | 92 + .../topology/src/behavior/dice-er-node.js | 238 + .../topology/src/behavior/drag-add-edge.js | 180 + .../topology/src/behavior/drag-event-edit.js | 53 + .../topology/src/behavior/hover-event-edit.js | 65 + .../packages/topology/src/behavior/index.js | 28 + .../topology/src/behavior/keyup-event-edit.js | 63 + .../packages/topology/src/config/edge.js | 13 + .../packages/topology/src/config/index.js | 11 + .../demos/packages/topology/src/edge/base.js | 30 + .../demos/packages/topology/src/edge/index.js | 18 + .../packages/topology/src/edge/top-cubic.js | 14 + .../packages/topology/src/graph/index.js | 160 + .../packages/topology/src/node/dice-er-box.js | 285 + .../demos/packages/topology/src/node/index.js | 20 + .../topology/src/plugins/d3-installer.js | 9 + .../packages/topology/src/theme/dark-style.js | 177 + .../topology/src/theme/default-style.js | 179 + .../packages/topology/src/theme/index.js | 15 + .../topology/src/theme/office-style.js | 177 + .../packages/topology/src/toolbar-edit.vue | 162 + .../packages/topology/src/toolbar-preview.vue | 171 + .../demos/packages/topology/src/topology.vue | 1447 ++ .../topology/src/utils/anchor/draw.js | 60 + .../topology/src/utils/anchor/draw_mark.js | 59 + .../topology/src/utils/anchor/er-draw-left.js | 44 + .../topology/src/utils/anchor/index.js | 17 + .../topology/src/utils/anchor/set-state.js | 28 + .../topology/src/utils/anchor/update.js | 31 + .../topology/src/utils/collapse/index.js | 11 + .../topology/src/utils/collapse/move.js | 57 + .../topology/src/utils/collapse/set-state.js | 33 + .../packages/topology/src/utils/edge/index.js | 11 + .../topology/src/utils/edge/set-state.js | 26 + .../packages/topology/src/utils/index.js | 66 + .../packages/topology/src/utils/node/index.js | 11 + .../topology/src/utils/node/set-state.js | 27 + examples/views/demos/topology.vue | 100 + examples/views/demos/utils/index.js | 47 + examples/views/error-pages/404.vue | 270 + package-lock.json | 12095 ++++++++++++++++ package.json | 43 + .../assets/iconfont/iconfont.css | 127 + .../assets/iconfont/iconfont.eot | Bin 0 -> 6896 bytes .../assets/iconfont/iconfont.js | 1 + .../assets/iconfont/iconfont.svg | 95 + .../assets/iconfont/iconfont.ttf | Bin 0 -> 6728 bytes .../assets/iconfont/iconfont.woff | Bin 0 -> 4180 bytes .../assets/iconfont/iconfont.woff2 | Bin 0 -> 3404 bytes .../assets/images/client.png | Bin 0 -> 2141 bytes .../assets/images/database.png | Bin 0 -> 3577 bytes .../assets/images/firewall.png | Bin 0 -> 7316 bytes .../assets/images/icon/pc_icon_bc.png | Bin 0 -> 305 bytes .../assets/images/icon/pc_icon_cxx.png | Bin 0 -> 138 bytes .../assets/images/icon/pc_icon_fh.png | Bin 0 -> 202 bytes .../assets/images/icon/pc_icon_sx.png | Bin 0 -> 159 bytes .../assets/images/icon/pc_icon_xx.png | Bin 0 -> 178 bytes .../assets/images/icon/pc_icon_zdbj.png | Bin 0 -> 268 bytes .../assets/images/server.png | Bin 0 -> 1555 bytes packages-含有注释代码/assets/logo.png | Bin 0 -> 5691 bytes packages-含有注释代码/cc-elements/button.vue | 93 + .../cc-elements/checkbox.vue | 79 + .../cc-elements/dropdown.vue | 228 + packages-含有注释代码/cc-elements/index.js | 18 + packages-含有注释代码/cc-elements/loading.vue | 92 + packages-含有注释代码/cc-topology/index.js | 17 + .../cc-topology/src/behavior/click-add-edge.js | 96 + .../cc-topology/src/behavior/click-event-edit.js | 161 + .../cc-topology/src/behavior/drag-add-edge.js | 221 + .../cc-topology/src/behavior/drag-event-edit.js | 54 + .../cc-topology/src/behavior/hover-event-edit.js | 26 + .../cc-topology/src/behavior/index.js | 29 + .../cc-topology/src/behavior/keyup-event-edit.js | 64 + .../cc-topology/src/cc-topology.vue | 1412 ++ .../cc-topology/src/config/edge.js | 18 + .../cc-topology/src/config/index.js | 12 + .../cc-topology/src/edge/base.js | 30 + .../cc-topology/src/edge/cc-cubic.js | 16 + .../cc-topology/src/edge/crudedottedline.js | 53 + .../cc-topology/src/edge/dottedline.js | 53 + .../cc-topology/src/edge/index.js | 24 + .../cc-topology/src/edge/polyline-finding.js | 275 + .../cc-topology/src/edge/solidline.js | 53 + .../cc-topology/src/edge/top-table.js | 9 + .../cc-topology/src/graph/index.js | 160 + .../cc-topology/src/node/base.js | 22 + .../cc-topology/src/node/cc-image.js | 127 + .../cc-topology/src/node/cc-rect.js | 31 + .../cc-topology/src/node/index.js | 23 + .../cc-topology/src/plugins/d3-installer.js | 10 + .../cc-topology/src/theme/dark-style.js | 178 + .../cc-topology/src/theme/default-style.js | 220 + .../cc-topology/src/theme/index.js | 16 + .../cc-topology/src/theme/office-style.js | 178 + .../cc-topology/src/toolbar-edit.vue | 207 + .../cc-topology/src/utils/anchor/draw.js | 60 + .../cc-topology/src/utils/anchor/index.js | 16 + .../cc-topology/src/utils/anchor/set-state.js | 27 + .../cc-topology/src/utils/anchor/update.js | 32 + .../cc-topology/src/utils/edge/index.js | 12 + .../cc-topology/src/utils/edge/set-state.js | 27 + .../cc-topology/src/utils/index.js | 65 + .../cc-topology/src/utils/node/index.js | 12 + .../cc-topology/src/utils/node/set-state.js | 27 + packages-含有注释代码/index.js | 40 + packages-含有注释代码/top/Review.vue | 24 + packages-含有注释代码/top/ViewTop.vue | 23 + packages-含有注释代码/top/index.vue | 24 + packages-含有注释代码/top/topology.vue | 176 + packages-含有注释代码/topology.vue | 175 + postcss.config.js | 5 + prettier.config.js | 9 + public/favicon.ico | Bin 0 -> 8960 bytes public/index.html | 17 + vue.config.js | 54 + 160 files changed, 23449 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 examples/App.vue create mode 100644 examples/assets/iconfont/iconfont.css create mode 100644 examples/assets/iconfont/iconfont.eot create mode 100644 examples/assets/iconfont/iconfont.js create mode 100644 examples/assets/iconfont/iconfont.svg create mode 100644 examples/assets/iconfont/iconfont.ttf create mode 100644 examples/assets/iconfont/iconfont.woff create mode 100644 examples/assets/iconfont/iconfont.woff2 create mode 100644 examples/assets/images/404-images/404-cloud.png create mode 100644 examples/assets/images/404-images/404.png create mode 100644 examples/assets/images/blue.svg create mode 100644 examples/assets/images/demo-topology.png create mode 100644 examples/assets/images/demo_topology.gif create mode 100644 examples/assets/images/green.svg create mode 100644 examples/assets/images/purple.svg create mode 100644 examples/assets/logo.png create mode 100644 examples/components/FooterBar.vue create mode 100644 examples/components/HeaderBar.vue create mode 100644 examples/components/HelloWorld.vue create mode 100644 examples/main.js create mode 100644 examples/router.js create mode 100644 examples/store.js create mode 100644 examples/styles/index.scss create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.css create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.eot create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.js create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.svg create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.ttf create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.woff create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.woff2 create mode 100644 examples/views/demos/packages/assets/images/client.png create mode 100644 examples/views/demos/packages/assets/images/database.png create mode 100644 examples/views/demos/packages/assets/images/firewall.png create mode 100644 examples/views/demos/packages/assets/images/server.png create mode 100644 examples/views/demos/packages/assets/logo.png create mode 100644 examples/views/demos/packages/elements/button.vue create mode 100644 examples/views/demos/packages/elements/checkbox.vue create mode 100644 examples/views/demos/packages/elements/dropdown.vue create mode 100644 examples/views/demos/packages/elements/index.js create mode 100644 examples/views/demos/packages/elements/loading.vue create mode 100644 examples/views/demos/packages/topology/src/behavior/dice-er-node.js create mode 100644 examples/views/demos/packages/topology/src/behavior/drag-add-edge.js create mode 100644 examples/views/demos/packages/topology/src/behavior/drag-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/behavior/hover-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/behavior/index.js create mode 100644 examples/views/demos/packages/topology/src/behavior/keyup-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/config/edge.js create mode 100644 examples/views/demos/packages/topology/src/config/index.js create mode 100644 examples/views/demos/packages/topology/src/edge/base.js create mode 100644 examples/views/demos/packages/topology/src/edge/index.js create mode 100644 examples/views/demos/packages/topology/src/edge/top-cubic.js create mode 100644 examples/views/demos/packages/topology/src/graph/index.js create mode 100644 examples/views/demos/packages/topology/src/node/dice-er-box.js create mode 100644 examples/views/demos/packages/topology/src/node/index.js create mode 100644 examples/views/demos/packages/topology/src/plugins/d3-installer.js create mode 100644 examples/views/demos/packages/topology/src/theme/dark-style.js create mode 100644 examples/views/demos/packages/topology/src/theme/default-style.js create mode 100644 examples/views/demos/packages/topology/src/theme/index.js create mode 100644 examples/views/demos/packages/topology/src/theme/office-style.js create mode 100644 examples/views/demos/packages/topology/src/toolbar-edit.vue create mode 100644 examples/views/demos/packages/topology/src/toolbar-preview.vue create mode 100644 examples/views/demos/packages/topology/src/topology.vue create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/draw.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/draw_mark.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/er-draw-left.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/update.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/move.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/edge/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/edge/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/node/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/node/set-state.js create mode 100644 examples/views/demos/topology.vue create mode 100644 examples/views/demos/utils/index.js create mode 100644 examples/views/error-pages/404.vue create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.css create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.eot create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.js create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.svg create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.ttf create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.woff create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.woff2 create mode 100644 packages-含有注释代码/assets/images/client.png create mode 100644 packages-含有注释代码/assets/images/database.png create mode 100644 packages-含有注释代码/assets/images/firewall.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_bc.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_cxx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_fh.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_sx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_xx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_zdbj.png create mode 100644 packages-含有注释代码/assets/images/server.png create mode 100644 packages-含有注释代码/assets/logo.png create mode 100644 packages-含有注释代码/cc-elements/button.vue create mode 100644 packages-含有注释代码/cc-elements/checkbox.vue create mode 100644 packages-含有注释代码/cc-elements/dropdown.vue create mode 100644 packages-含有注释代码/cc-elements/index.js create mode 100644 packages-含有注释代码/cc-elements/loading.vue create mode 100644 packages-含有注释代码/cc-topology/index.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/click-add-edge.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/click-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/drag-add-edge.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/drag-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/hover-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/index.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/keyup-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/cc-topology.vue create mode 100644 packages-含有注释代码/cc-topology/src/config/edge.js create mode 100644 packages-含有注释代码/cc-topology/src/config/index.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/base.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/cc-cubic.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/crudedottedline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/dottedline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/index.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/polyline-finding.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/solidline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/top-table.js create mode 100644 packages-含有注释代码/cc-topology/src/graph/index.js create mode 100644 packages-含有注释代码/cc-topology/src/node/base.js create mode 100644 packages-含有注释代码/cc-topology/src/node/cc-image.js create mode 100644 packages-含有注释代码/cc-topology/src/node/cc-rect.js create mode 100644 packages-含有注释代码/cc-topology/src/node/index.js create mode 100644 packages-含有注释代码/cc-topology/src/plugins/d3-installer.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/dark-style.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/default-style.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/index.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/office-style.js create mode 100644 packages-含有注释代码/cc-topology/src/toolbar-edit.vue create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/draw.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/set-state.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/update.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/edge/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/edge/set-state.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/node/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/node/set-state.js create mode 100644 packages-含有注释代码/index.js create mode 100644 packages-含有注释代码/top/Review.vue create mode 100644 packages-含有注释代码/top/ViewTop.vue create mode 100644 packages-含有注释代码/top/index.vue create mode 100644 packages-含有注释代码/top/topology.vue create mode 100644 packages-含有注释代码/topology.vue create mode 100644 postcss.config.js create mode 100644 prettier.config.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..1d97ca3 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: ["plugin:vue/essential", "@vue/prettier"], + rules: { + "no-console": process.env.NODE_ENV === "production" ? "error" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + // 强制使用单引号 + 'quotes': ['error', 'single'], + // 关闭行末分号提示/报错 + 'semi': 0 + }, + parserOptions: { + parser: "babel-eslint" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0dddc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..a720e85 --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +# 忽略目录 +.idea/ +examples/ +packages/ + +# 忽略指定文件 +vue.config.js +babel.config.js +*.map \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb270d7 --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +# ClayTop + + + +

+ vue + g6 + license + release + + wenyuanblog + + + donate + +

+ +> A visual graph editor component library based on G6 and Vue.js.
+> 基于G6和Vue的可视化图形编辑组件库。 + +## 一、 版本 + +| 开发版本 | +| :-------- | +| [v0.1.0](http://git.hchyun.com/clay/clay-top) | + +## 二、预览 + +[DEMO演示](http://ClayTop.wenyuanblog.com) +![](./docs/preview.png) + +## 三、项目依赖 + +* [Vue.js(2.x)](https://cn.vuejs.org/) +* ~~[Element UI(2.x)](https://element.eleme.cn/2.0/#/zh-CN)~~ +* [AntV G6(3.x)](http://antv.alipay.com/zh-cn/index.html) + +## 四、项目结构 + +``` +. +├── packages // 源码 +├── examples // 用例(开发调试用) +├── 其它 +| +``` + +## 五、开发方式 + +### 1. 调试 + +```bash +npm install +npm run serve +``` + +### 2. 发布 + +```bash +npm run lib +npm pack +``` + +## 六、使用方式 + + + +#### 全局注册 + +在 `main.js` 中写入以下内容: +* 完整引入:引入整个ClayTop: + +```javascript +import Vue from 'vue' +import router from './router' +import store from './store' +import ElementUI from 'element-ui' + +import App from './App.vue' + +Vue.use(ElementUI) + +/* 全局注册:引入整个ClayTop */ +import ClayTop from '@chaincloud/ClayTop' +Vue.use(ClayTop) + +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') +``` +* 按需引入:引入需要的模块,例如Topology: + +```javascript +import Vue from 'vue' +import router from './router' +import store from './store' +import ElementUI from 'element-ui' + +import App from './App.vue' + +Vue.use(ElementUI) + +/* 全局注册:只加载Topology */ +import { Topology } from '@chaincloud/ClayTop' +Vue.use(Topology) + +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') +``` + +#### 局部注册 + +在 `ComponentA.vue` 中进行局部注册: +```vue + +``` + +### 3. 开始使用 + +#### 属性 + +TODO... + +#### 方法 + +TODO... + +## 七、备注 + +* **\[已解决]** 升级 G6 到 3.5.0 后,发现 G6 底层有 [bug](https://github.com/antvis/G6/issues/1613):调用addItem方法报错:`p.getType is not a function`。该 bug 导致编辑(连线)功能不可用,需等待下个小版本的修复。—— 2020.06.02 +* **\[已解决]** 由于 G6 在 3.3.x 版本作了 breaking change,且遗留了一些 bug。本项目先暂停更新。预计 6 月份或 G6 底层这些重要 bug 修复后,继续跟进。—— 2020.03.01 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..3ecebf1 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ["@vue/app"] +}; diff --git a/examples/App.vue b/examples/App.vue new file mode 100644 index 0000000..812eef2 --- /dev/null +++ b/examples/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/examples/assets/iconfont/iconfont.css b/examples/assets/iconfont/iconfont.css new file mode 100644 index 0000000..cc59b1c --- /dev/null +++ b/examples/assets/iconfont/iconfont.css @@ -0,0 +1,33 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1570676544597'); /* IE9 */ + src: url('iconfont.eot?t=1570676544597#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAU8AAsAAAAACfQAAATtAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDMgqHAIV5ATYCJAMUCwwABCAFhG0HXBuZCBHVo4GR/UyIN14+uxup00M/BAkNRvqeiYev/V7P3d0HIVSgopKvMvGANiwskVBlMr5CVqiOZwkkdH76TX3HkYU1NZfQUtFZZCYSNiebE6ZmB3Quf2YJgP3fFum0lIWCRl6Hfta/7IsBY2dHl6YpTQNWx87ispfSqvVGnQIYCnAsVkr5WjWg/8Dy7v8Qb3WZxwl0m9IRqxV1BmAU+rhAnPbp1QWYhFGpYIZWUxcsLRCvQKNNs6gbAF56vx9/IT0YkFQZ9KmbPcu7g/5tzVuCLfZb0N4hgGg4O9hVZHRQiOtC5yngINyRdctB2iKAEmwlaahOF99ef0vsdgDphtTdxj88kpAVogZd2YvURUU5OJGFkfhxESP4cR0j84OIH4yywtHdqIkpEE8JdcKRBF5YL1dFs+w48togvzGq78zK29EbJB/E7/JWVTOvxC9W03liuCZUKQrskb22EJBlo7jDd4NSyp/KljbELT6aJMpmsInRimJqjfcRIATzqs6wygVgaTQIkoSM50Z8saoivuV+0yayxfOSwEnblEhivAMW2bglkJQqVeLGo15Btq1HL+aAd1AseCsPtR6Me7vRdrMt9kbkns+qbQ7bNntt3Ak7rTGrY+ibrS+R1oVIF+sPW7NuX4aVazxPhhFisK30M1hsPrPHyxMIGbdf8XZe3HOTIpBISTGJJE0iRlk2CzuCxCvZx04h6VamsDQvaeteuRIs4gZR52SVNi12+qpdDrJqVpVQPKmRDg2lGw2EuC2Nro333wy3Xx6FFz0y0zO6YSHOnx1TreU8MKutSDpjOQPI/xbsoeWqx/izcViY0c2k2QI5p0bIzH05/ZGLrslx0VxND2eDgz1cyjj2m9qkuefrfV9jIAcFKIEyXWBU7+YnZ8482fyOiVwU/t29N59zWJLBjNDSCPFF24Z6DJncwTypxL9iL+v95crqefM2n6v0PxtQ6aUfZO4wiB/m+XiJwdO9uJ1fz+DcuXKtlVpS1l2Dw1tqmy/OPMXALQDn3xAvXhgV++KGtrS5rq/nncuoc8/Q+8/xUS6uRxCH+zVQ/Z1HVxrfo4rJf3v+nZxNve+R0zuY6t+/nqO3vNTBEXPixejYRRcQjzc8e7gZb8FPH0Lm3PEW3m3DWdwijfrcV6ND3WcKbCwOz7kYVp830GWoT5/59XpEHcbU5NrUEspzbj3OYPVJto5BJwaiNofjmDbauM1t0PGIw5Qeza/36eMyNG8g9AbAjYWGfMsbvYBGeDQA+R6u+xeH2Zb+3OnkUviN0X2Dlk8XzugR70ZCwh9KpbHozyuhgRs7HZxEN1VFqrSEkruyOYAyyfpuqgZ077Dvw6jHGmcTWmMRJI1JyFrTxELtQKXHPNRaC9Bt1sbqHiOuAYvSFJhxn0AY9B6Sfh8gG/SRWKjfoDLuP9QGA0O3feSxZQ87OvyljFAwapB/8GopxrTwxc+9oX0nQXGJx3oh7d4HfdOlYzMWpCFm7B87MBswtGSYyGmY0gIrLQEVN455HdvWFL1Ro5ZcXZQRCkYN5B94tRTjNOdL5udvaN9JUEVVmf+FtPv2Qa/RNSDOytKo6lJ67x87YDbUKENLBhPYMRnhBazFgwIqbrgOwXXUYiPTVNlMr843UMDWod9HExTCiEYa1AScDjy7t6yVJ5XwkFBfc+R0zJIoRQuKVQUAAAA=') format('woff2'), + url('iconfont.woff?t=1570676544597') format('woff'), + url('iconfont.ttf?t=1570676544597') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1570676544597#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-github-circle:before { + content: "\e6c5"; +} + +.icon-github:before { + content: "\e64a"; +} + +.icon-github-rect:before { + content: "\e6cb"; +} + +.icon-github-dark:before { + content: "\e6d4"; +} + diff --git a/examples/assets/iconfont/iconfont.eot b/examples/assets/iconfont/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..b53fb69b1195cc7299ec89fc1bda40b0fca39b88 GIT binary patch literal 2716 zcmd^BS#Mj%6+UO?ZX(4^++>TQNG+skyOct6i4@D0Y0ENF!&@A=MU(~j_q=;UGptbuVbV2&m^d*MW?~<2sqWT|n z$TRml-<(;_nYnk)+cu(qcMvfNGK(NpHUXG7*hHt#we-hzlZJZFdu#SF+eU6$q9Rpk zh31=e9Su&pKqXqBD^#We)xZR38cdDWU~Sq)=qXCl2wI-hAGA5Cof;%*Wa_!+^S|Bx z;7gECgUz3PZa8)L?x{aO{|WTzVx_S9C-<*^1pRN2-z}8a=hy#n(nBQQfixCNg}K1H z_kIf7hmhqda75GEQ;9{kI)dzsS8>oEcYO%l%#e3-cHuTO);p!@TXa?=w&?75_ zO6kbOZH%YyLj)_U)wTNh(|^qnb-ac48FTHjvD2U#1?tX@!cA|0zbR^yf!*va@4c5? zhrc4bX-l+u@9xCo=T1Xm*??|X+l3`SQ|a6{+ec)>57R)*Vz%2TOb3ZioIHIIJzE2} zTDZKlPylCXXfsh(CgTz4hdOQi{>{@tHx}cgnf>$vK+XdUk80 zZk+ z3$rlnT0e8aj4?1Zn?C-(m(FGYCaf?ZDqGLC#5_}5_gi8{e(RH#n7gxuH^Y?X2AW-8 zp?~oV-!=Q-l;XVOZ9UtJupXdbmU1zYS}d1I$Kppg*R11dO^@~KN%m`jpp*S!My+eH zI9g*`FdGPJft){}#giPz02s!}f;P7ws47P{H#w@R+Yg@cy4mOa!F8plTQ$1!Q{#>C zseG5AcK0aPFWEgxaC$I4q=tIMfLBh=v)g;?j?{S1#s=@vXpV0f0oQaKd8d1ok#py$S!JnZ3Gek1N(0@^&b5sv;$47*~Y(-n92t(g}DK^+dhcv_LkV!PX{u zAeIe=*&j&dve4pYm5T*}*;McdSWP!~Sw{!m7s%ldz{H79%Ok3aUtV=N_*a2WZ{ zXVhr7M`tA}_uFDl!pJ6sKHzW+=pvCd5=Sd%)Q*ABvf&Vk``3Q+g`#|6`qum= z$yelQ^P9ri7?y^U*{`7j4B|Y7IoGej102UplJ))oHb~_BKBqVoO(n%RBLIPHE*q1_ z13{U;zxpLf>ct{p=l18QsfIMuC6Vg5&H(Ex6?Bs)M2NuD;my*9V=`zZ20q?!F}S)@>a7l~zi%_Bd-VFQn@A z`N({&T8W&*fTeP|8da&7x$GsCNx=LFw`W-)V)Cl!?iOIBFLUF%p_sxMxd a{a$gYRxFpamS(re8p7SibA{SvqW=PqIhff1 literal 0 HcmV?d00001 diff --git a/examples/assets/iconfont/iconfont.js b/examples/assets/iconfont/iconfont.js new file mode 100644 index 0000000..d45451e --- /dev/null +++ b/examples/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(d){var t,n='',e=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(e&&!d.__iconfont__svg__cssinject__){d.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var e=function(){document.removeEventListener("DOMContentLoaded",e,!1),t()};document.addEventListener("DOMContentLoaded",e,!1)}else document.attachEvent&&(o=t,i=d.document,c=!1,(a=function(){try{i.documentElement.doScroll("left")}catch(t){return void setTimeout(a,50)}n()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,n())});function n(){c||(c=!0,o())}var o,i,c,a}(function(){var t,e;(t=document.createElement("div")).innerHTML=n,n=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",function(t,e){e.firstChild?function(t,e){e.parentNode.insertBefore(t,e)}(t,e.firstChild):e.appendChild(t)}(e,document.body))})}(window); \ No newline at end of file diff --git a/examples/assets/iconfont/iconfont.svg b/examples/assets/iconfont/iconfont.svg new file mode 100644 index 0000000..3c90c9e --- /dev/null +++ b/examples/assets/iconfont/iconfont.svg @@ -0,0 +1,38 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/assets/iconfont/iconfont.ttf b/examples/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3ced53e94e6549105d789478667fa406375b19f GIT binary patch literal 2548 zcmd^BTW?cG5T4mRx7hJ5z6Ihqb}q*ls1uAYBoGn|A&4UGgjR$i<2X0$IC2anQmeX@ zN+2F6QZH1h)Tat~X{+`z6(E)Lg;t^>FA-{?FHtX|Z}bI}bk;r*6!-^SXZC#a?ab`X z?4CUV1OPLXfkQ|CfkUaU7r%W7fE$QS?K#jM-E?!u52U|E`amY1p8VPV`5UDFPV&u2 zZhCn7&+QHXewCy=noSRRuHAZ@Y#)#$Mu|`#@b?LSN76c)FP(M~Am2IaT)9FfjStwD z2s+pAup4z0TV1W5lM!gmf3~d3v)}9`LmcTL_@Nx{=|ZjV$jqma{Rxy+DZX>jWSSG7Is!eoT-J`s)))j z+^&k)odtR`gj6n1(0dE45I&ei##$$SDGbSs2D5j`- zvl>CS;_+J1?MLcWMGw)au6Pq3ui{C%JxVBoAqqfYtjJ(~@xCl$aDEucwvhI(16OZ9h`yZcjhnq1!?ojYuHNZx_gP@C*)WGznKH;i`YCo^2Z6?1dALg6#~ z9SSl3Ovoqex!ruOIZ`VRT?nUEn)+f~i#Qw+jmP>-D^uYMLrP7s-hy$yM#dTsHmz1) zwH-9udF=6(yXaMv#Xs&|c}(@7dM#a|xAipi12|%vS=7(mE~Yj|Fs^rFjH(cig%Tm1 zQWiyEs^V4LF3MR|Lb|H>u?hV=*@#xw9Majo^VjcOKfmw$Pc;p3%~WxNtHGBFSh_BD znj3dC`aH?WlHYWwxhJaDwboeW6~V4HT+`wk*DNeNd*+LK zl5|hxR=Jb-S-wl$DVWe{X>>B173v6j={))|*{o0obR6RmRGU4tK`iNZS=stvG{U-( z3gAg36FT4O@$%GuY&u~+(S-X`-0POR?DdznFdt%PTWc%pY~xa!+qv@CCdJ1!d|l-Y z3iq)sm+I|ZY$keyOHpo76bp|^{74iFQ{%hYs#fl-b#ySf-Ri0f`V)T31e!Dx{ozdO zDz5)$qQ75$y1lff-oghJiWpKN(me{ELBQ@W4X@D_}=%U=s|W)4*oX zam=)}m`#_mLxJPdfw4?sVz@9-GA)Ds*^!gEba7c-ehy@dQ)7jRz`97sGS#1*$QGC5 zOr08umP*5c;bI{l*iHenxm+PISuBiaGo{FAsWjQu-YzB*d?ZuI(`RHWrJaQ|l&Bwq z033&D>c=1h1(<;0N?#(o=b8OvKLRHqN4~`uMxVDHAnPJbk)4PdfOQaoju*W8$!elv z`TTmO;1takrB#+_O#zZ3MamP}Zmcj%E6EWKz+`1?oZ@82Is&5=uSw{FcKR)6v}_-# zWSSS}gzkh&6aRC(tjWlbql7YjYb_&VrO}heU&)LWGr6o%)yxK2q;fCgp>**Cz`qSN Bhq3?w literal 0 HcmV?d00001 diff --git a/examples/assets/iconfont/iconfont.woff b/examples/assets/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..47cad8a88cbdcfb6ce236bdde9b1497f27c13760 GIT binary patch literal 1800 zcmY*Zdo*5h#7IFJY&YI#u7~))j{V- zD!C!L87U^Oyt*P?SqK@Ilye-M>QrOy&pG%0arauE@7|x!+TXpuYp?a)iIl^K0R&*f zCH<_z;gFan*WUOj9s>olwhU>*be z#$o(V^pmm4k#PJ000i6xAxK_2tQo~&MF4>O4Ch(Hu-C2WIu`|t0HDlZZVcl)%nTwY zipx)eH7}T}!_d}-kJvc&X5I-n#BBnaQL5vzlHk55xF#@!VGL;k8jr>0z*;ukn+$*w z*VTXH-08R<_yC{>;T$3in%}WmyQFe9GlI#S3BSaC!D8~`*HlPs;DW*IdiVGoV&; z(Dl&S^2{Ac?@hjPT0Vm65i{-;dVREw%86s^i!c ziiXP-UZSO4VC(I&_^piGe0>#Jub)&z>gvfe!LYN%$`<*oSu<>e3ep+aIA>KixR0Ce z+-`wwnunNM27J}ACM5;_SJrCV))d)Vt3!sS63-*DZ9Al*22qjN*|;|=?Gk#{L}ndx zH9?bq2&da@U|^{cq2sJP&y`jTo|ROD+H0_ts|Cfw!plW#R5GNHA=Ai?Zck$UpN_^E zHbi>(y`OtE{3hxQEvV#hkwI+nslnuWy^lK0v`Gjop*{>+r8&j(c5*0lm~s-bdN0PpL={8D$jX84r}qd8~)|( zqPau)Pl`X*7g6Gw1oiW{6)1S;%~Gq8uBuXR^6uP&giQZcjS&JCAxhha+#~7SOSQoo zqBB!ppf%QX7awdv^X0R1(?)JI#jgtqSrq=YXfbmkd?Qf+aL7{aO8Q*Gx(wdu! zFQnA}Y(d>18TlTOuUMp=rP%jxqJRqLfp zhr~qQ)j%ZHoJTpLBS@HEi!=W^x4`g;|21Da{gq;Jw`OjY(;YX8Bp6xiAS%Kp=y{`- zH*VBMhaIdscCqx~STSjA>U+CwF5`-Kj_jenjC9RR#vCysnAhl@etcI`XZHZZ$)?ay zW?-cfp^w>jpX}tN1Lex; zh3a2>zm)EiKP{Ui>+n=!6Zr4?SyhkR3yUUtwMHGr2&^Qcuwv?-ozqK?Dq2}p|NBS5 zpPmf9bj`dGQj9G~wdHeT5 z=6M+^95Rz@*78pHpZXNWpT6Z&wnt?8?A|Eiv|)i%#X)IOKwR={55QyDR%liX7WBuhD|Q8_!+^Y@XqMqKD$TqFiWuGio9=%A+tx;$UthiZ>1e#n88)`w`+M~x%N zP86XFWBd1K_!hi@>&5%U^yl7MjU@WN9{Q7(AbU3Z3kQ%nFtZpqk)nAOo%sLKD!&K(?dT5 z2@OX2o{5LA{a(-A-3K95prVqmGVy>mEG&^wWiq}(R;Z3=2_$rW`b~Yuk%cuim(Wtt zS!5;>HYb}Cre+6pE`MeTfc@VV>9mxEf<|74e%8P2iveS2N0+84O#@cP&f>C{(yH}F zodOsNa4c3z`C2ug|G@I@{}69=na2rqo6-@h6?Fz+6#BS8oc8I}1(<|UsbGdyQx_~P z5U)U^O|z&Q0A6~(AAcb|7?4yM^r@RY%e#aAZOvPPE%sZ`-XVZ!I6K%?WOPu7>q6%# z;2_+Qb<088B7hQXC26Qm7vElgOYC+4>4wzZ#y>ogkQJf^UD=D&MMXI{k%f`?aS^Sn;AipuH@65{E(HkTm#P9M}RWq-| zFILleVz?$$DGKb7y|xgLWuv&mcY{*OpURdt#4SFWB+6#6iP4H;YK`|1AO!QO&alb_ zU}-c6l7x)sMtrfVBEIE*(+ctY`+zC6aF{@+fo2@UA)`dtH>knJAZeNC#YdlYe z5n`~d^fOp&KC{Qm69^f%U-5Qc+;fv6kVr`}i6l)TMp-rsJA%Y3*~d;H=~kw&G%soE zUbzx1;s#OYWR*58cKWJa4zg-il~6pXkq!-|8x4fGEsd^?_umY+Umk@QJu=fXx?v&C zpB+=Jk@Vaafqq&7|1^Ij2U*%zZiik&CX$anW2&4`+je zJzUB-_M6(Ix##PBUt=H#1t@_sU0_u2<|k*)JlXt?iCh%^-Mu%Tb6AqWjL^~u@kQH) zdJLJ|!91zNzhW=z{pHH)dGj`(tMoq`Q0b)~WbQDCALjXZiNVvoxSe0m;M}=#t(96* z)?I_cTWXsx&OF7yEdb}=5HDUB75n0bwzRpfujif1sB_QI`_J)FF0Mxqhx;{9{hdcw z8sDRe$$xwPot#a*?~&6xnCjoZo};(C)WH#R;>GCLMHdi{H#~c|8E?T)A42Bb@fO}~ z!&%%Sjr!bIqeI@pEuBDs865y^?F1d#?<86)Dp^bZavOm^+~plK_>>H zHizSwHrlw&ZP4+E!;~J)ulMQWGBj@>^aj9} z_>IwhgO*Ph&gc>EMnb|LN~N*r&nuyU8#^7GL^oAMs9wV*+i_#RBai2gK^d6FaA0Qj_kyxnT zpfc`1)CL1Xw|(TXWe+<#{H2UgFlvy0@MwD85xy`g<4L2-%4dLixJ2Yu6}V>1?{ zA!h6!J1`qCv}BmbX_(RiD=h&PH;#E7+tw7lQKObzU6c_DMh)a2c(oMcH0Mj^=Wl4= zNl-;qng4~f`}RSv(KR5>%F?LnQhM(nJ76}{C__sI6WB2s;RUS4g90jUxDLT})M6vk yRM||g&NooN)}h}=6BNRTMjF%voDMv@x2%;XmGF>IUvuPi%#tWY3yM_*0001$qz1^@s6R@{TJ00001b5ch_0Itp) z=>Px{SV=@dRCodHoqLcR#eK)SXLk2aLP!ExlChA4#6y+=^RN{OKVlN7GET+i$PP9^ zR9s2L*v|8hkf(_)D$dKqRm8-V1lyIWxJbn=$|g=hDpjdKsES{RV8G%C=q$?uPKVI@ zbbI@l>3n{tyVKlhc5i35XJ>Y|yXtp4kM3Xp`rF^@?)i03k5(>Zihwa@T{TcUOb~82 zTJOM^>y%N4l~$ulnNg#?eZCwAYG0|Oex$WNovFbIGuH{@yXYMt0GXDQ>*{(`>`vI92rNTSOTED2gOaUqjet*R?SA(5hWGK`(H+RF7z@Pt5R z2=#Q)*B8@$Zdg#H7dU@sR^4YNfGhwY_oonNO(js<8Hhuq>4Eq*uAQH?;acfeeP53j z{pr?fc@ulS&Apq2h)v?8a?25H0jvfVtHZ6#j=_%ddbH1m`1z)`# zL%bG^`4;g$2+4vL<6DU~@B}Lxvrz`(N{0->r(37%A=!`>bS)}@7*)EzCriG51HW6^ zRQ&*YKHg^9wvr7T!647_N~nI>nDA{T&^IS{6SReM`-!wZ%$R*I1NSRYvbudmb18R2 zvU}#vQa%_sf=yP!Z$PS@f-69W#;9=y$glJCcZy3jxr_|s>|CimwI&SBO3u3;ux+H^ z=_7Q5+sNE@i+U&eztoLF4HUs9Yvy-V82)tm+1apsi2oY`s*6Svv6JV*-3u?Wso= zt(|z+WqRk73RTrG3daYwgnKJ^Kv={5HRRhEYdr9DgFh$~^kqa^=w?W0QOnWgpXDZO z{7%a$+KAY=&}}HoYZ5AVb-8MurfXc6iH(e-0D7Ffk3qIc?a?(WJo-j0p&P8sbc0#A zJ&s`0yC9kP%2Ek^PcX>kP1VeQ@XLTcKY>cE4;7~871w8M)dBLq0ei;Mu%lHUN*Z~0 zMdwsC+?_XaNx|`BJxxcNHMzu;jmW=)Q8P!a#A_?`bqhwz^e68eMvAtDyo|K zdKRl07OU)nuV11$eZyk$GP?f}^1a(;-hD~1at&XXnO@Lm6RVDOG49$^@KW_}b!;OF zw%SlKtE2A-Hd!&Z^7#MTvjxo0uO7pJYPIt6Q?|yI^cBHaL3)MO<|~bho6Q}@U4}vZ zadJN|8w;|_wQmT!r$ z%Go4VPwVv}DX3!>2wTL}?n8bcpo@~m(mY#3APgTNQLN2CX z_IsW_Sn}0`@2e7|yNH4HZ3hjdj(3%+M~n!AvTmy+Ouv$5%b1|qloqe!J-9<9<%0ZMLke& zs|WO+wP5-dtzAG%_Y&_Aj?uzZi=JA_IB7j`t*mT7_Y)BLr=xZZ@^N1iEUsc{?ff7x zmj{8mJbIr+fJX|R_v3;Wo@6?QLvJ<2+f4kHmqXKH?q`jc>^1oGX~irztr<65vbYMWQt)=pJ} zwP%u^8QZNszmV4@IBk^BUXq^ogV}?kV@>X#H3mXQuozI>C3^@sg4x5;X^KI>5iAB2 zcgY?Cj$rn%beduia0H71#a*(8fFqbaES;tp1RTL)KyjDsA>asR4@;*h1_4K~7*O0L zdk8p!*~8Llib23lZ^VEy;Fo@ZN&Z(_z~Bku+#&1hn#FYlYlhBX-djSkMHUOU5ka;W z{dlv8u8VAjj=Q%Q0(a8d-P0_RBUm$Z+`U#1_%tN@WTS|VV2zM**OMUdw~*{ZaS0s3 z;!ttdk|H2HlFj~ZT$s=iY#}1V5!3Elskes4y1}ePZJD3%MHHoJ;lCUr&C4ADQ_Er zo?CDTsbn$SFCo8yT)+B^E3aOyt7pqKbF@+mR)&gCwq&t4YunY(zX{pIuQvk3x)e)4 zf&40R;UZR-D>XAxu7@Y8b;I|v^_xlWFOsIC+ic$y`kw0P9-$)u;uF_%O)y9y6?O|E zt=0RGw(Mnx))Rc3^aZ|tTV_MKi;U7&pt~(y*bo~W!D3;_C&8$EX`y}v`E_J-tmz$G ztW8ozxL57QuWGjEa^GbfvYDF;*)t9>kU^>BZ2fmm%C} zr55UHAcQs-C)MEy7K>Q+1cOwvi}S6>Zz4Nl&Fu0;_S@gb1H(Z+uvOrA3pOtL31mmG z*hMR3o%-hiKuJhN0TZp86{nn&k+#5RvKg?h_1R z-AvZf4Za^q^~r9!i1z=~_?pPx$+|fV;Z~SXT?ygNa|DY8x;q4eRLjZ!qlge|OROoq zdvUT-SC5qn>gRYYwfbb*yO7LTo-V;4)>ULBq`CuHHkWPx9K1wPKv}^sJ zvzLKsVEbzw6AWU#8|BhkeGn-&$f(yZOE>r|B3)tE{Bu1F+G%XR54pE(f0JR6X4v_~H7n&nb<@P@ypJiL8*CcA&1S?mAuQBEFVHAZZ`2in; z;-jDH3UrEptJi}7^*v-O;=Vz&cx}oaVP8dd!-oUW=xq^fs&3vF2H~SoMRJUCnL&PL z=JR**ZrsL&adLhhV&8X>OOSpYM^ZGa;TveXo4Ox~)0&uIbd5`=s%9_F#Y^H8&R&}# z+p|J8zM*|788wYRn=ZrO@00gxWK)JV^itOUiLrk~J!Bw zmTereZNdQS%W+yMIC1tOGIn@ti}43Nn&2f};loLQXqjM;%43DWcUX%2Q%N#dEG`D` zogv#LT_W2)Y!bJFyxQ)<;t1>~%4d)VsVf~ z5yNDOw9Rl3Wv?LHk(SGC(|{h+bqISui#$NRoc)w}!a}qJG_BVWvpGs&-u*qt0pEBxqQpwq(QUD5uiu!d5 zv(}>8epdCb6z)^tCa#B6Lqme$^LjfzukX@|<$hVS@9URKzE1omP^!r0Q~7^k)*nMG zah7%^#1c$Mh0p6rd|tAOAlCt~CWec;A6LuT#QjN>39)2)r>i0MvAtZUTkHXH2~tJB zeIHF%k@g8Yr)uu;V&>y-VDlpz>9wha$T5vL(?-*yzgH@{uE-pnqD@Y zYo2Zd@OkaP=k-6dVqWJe)71c=Cvi(GPdAs`YByN+FUX&O!)R`;j2KpcR0UQ_JkSf| z61#Cr3`Oi8q{IKFuy;YMrc0Fb28cIRS9d|KtMg`9oISWDjxhH)Xao~q)(0TgjlD)L zsY8z~{%+)Tpd)b=nx|`kYleJ1NR!yIvf&fR)s+2Pd8&&fw&=0rHMT6()l$Lx-;y6r z`r2bPLjIm4Sut^p?(u>oh3nC{;%4|f@;Qi=E0;q%c%C6xBqfCksmy2akRQX(bQxsZ z5V@VnAvRSQ*!O$aC?5BJL}UPOeO*>26-TD$5Nx3#xCBOq3i?pd_tvv648nCk6boJ% zJC<}m=dR`W2s!;e#CpDKId&an~t)uFZJMQeF~>)zphMu z3IOHF@bT1v%qW9I1dH0pRL$6uqQ~-Oa{(lHOImJ@p`vH#s{74p|6{Pc8~JC*CBCh` z4Q&%FiiqcXM`_t!;H8YEkl`xvtwry*d(7JV6Qx35O=uqji$6#1hgg+%ap|RWRtOd? zFi)WqMc<5+iqKB8L2jGh459);#(p%8QSCi@EGrwnh{)8AkZfRrb%I5agC5nAr=Mq8 zO`UPuR>;=!G9aF0Cvi(Gjq2;cW9k0Bj>ujP`+Ly-j!jOLU{UL&MS?IRxEm&E+2mV6 z4cBrJcZzt!(eyodEK@tbM_HciLEEjF+%3Jf*gJwHLsX`A#habKtBzpv>tx`kcILy;`I#fwSqz`x zP}XJ*^wiE-IP4rbf+_U^Q2qhLa#K5YI5khpAU{QpgTyD1s~oxJal-1!Ahuv`YR4*t znky@?8hL{0nL*egaCU0v)3jJ)&0%qOZ6V;TUE!|<@Lk9wNZVg@uw_t6dLBjZHI(mT zh$B}@AjhelH>-T|q*+xC!w(xB?qb6E9V`l*cRx;n?Q6@1J=W`38ydQ)9orR@P+vm= z9V?rSl}dQKQsM15hptMfx9#Yb2qsfIpF;Znt(~@k?oz^r1dHZBK4IRf>h)cr(zm7k zrgw(~b5lFfip#-qO9Y#>Q@YH<6YAZe32x^Lqqnlu+4?4MZ4%5)?aWqE&VCaSENVMs zD~_KEZee}kF39$NS~e?h03{^Y?9`6z0so_@eeO6P2((SGsQIt)O(SzM*vZFlcA@ZQ z$k+A@8wm&|Q#-OY>-$k#+;P4TutKnCkq(_QYg8D1WcuO2s2$OJtsJ*NFgLZ+3XnO8 zW1V2pa*ZE1n{j#Y6pGu!s5eLNH9BrWFqzufjeMC_tKKNRyPhuuQYBclsE1FR>+7}p z?aUn9#>~OG=)LH148i34kDo_mLpJx;P86&jIPMz3X0c#=<{g@-zefieXRi7XWLr6V zPkti=b5lD}VBB$X1R&ec_{sXtvE%iJ#!l4BvYqFtsesGo5#-9`8eIy9Km!Dh7_4{t6|!cF8-ZvX%Q07*qoM6N<$g4q%^5&!@I literal 0 HcmV?d00001 diff --git a/examples/assets/images/404-images/404.png b/examples/assets/images/404-images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/blue.svg b/examples/assets/images/blue.svg new file mode 100644 index 0000000..7ec1164 --- /dev/null +++ b/examples/assets/images/blue.svg @@ -0,0 +1,29 @@ + + + + Group 16 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/assets/images/demo-topology.png b/examples/assets/images/demo-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..ea34097efc76ae25da19da43c1bed9f24fbbad8b GIT binary patch literal 71092 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

EGgcs@q_CfO8;c)vdJa?FiDk=XL1N{Z*Uj}*< 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/green.svg b/examples/assets/images/green.svg new file mode 100644 index 0000000..c9dcad0 --- /dev/null +++ b/examples/assets/images/green.svg @@ -0,0 +1,29 @@ + + + + Group 17 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/assets/images/purple.svg b/examples/assets/images/purple.svg new file mode 100644 index 0000000..eeb861a --- /dev/null +++ b/examples/assets/images/purple.svg @@ -0,0 +1,29 @@ + + + + Group 18 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/assets/logo.png b/examples/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..28d098daaec2d6ede733c59f12b4419daa221deb GIT binary patch literal 8960 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 XH7Yst_AL=NTL2XWP5EkBtFZq8JJ)H; literal 0 HcmV?d00001 diff --git a/examples/components/FooterBar.vue b/examples/components/FooterBar.vue new file mode 100644 index 0000000..c66b0b8 --- /dev/null +++ b/examples/components/FooterBar.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/examples/components/HeaderBar.vue b/examples/components/HeaderBar.vue new file mode 100644 index 0000000..ff4f82a --- /dev/null +++ b/examples/components/HeaderBar.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/examples/components/HelloWorld.vue b/examples/components/HelloWorld.vue new file mode 100644 index 0000000..342020b --- /dev/null +++ b/examples/components/HelloWorld.vue @@ -0,0 +1,117 @@ + + + + + + diff --git a/examples/main.js b/examples/main.js new file mode 100644 index 0000000..354331d --- /dev/null +++ b/examples/main.js @@ -0,0 +1,36 @@ +import Vue from 'vue' +import router from './router' +import store from './store' +import ElementUI from 'element-ui' + +import '@/styles/index.scss' // global css + +import App from './App.vue' + +Vue.use(ElementUI) + +/* 全局注册 */ + +/* 统一加载: prod */ +// import ClayTop from '@chaincloud/ClayTop' +// Vue.use(ClayTop) + +/* 只加载Topology: prod */ +// import { Topology } from '@chaincloud/ClayTop' +// Vue.use(Topology) + +/* 统一加载: dev */ +// import ClayTop from '../packages/index' +// Vue.use(ClayTop) + +/* 只加载Topology: dev */ +// import { Topology } from '../packages/index'; +// Vue.use(Topology); + +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') diff --git a/examples/router.js b/examples/router.js new file mode 100644 index 0000000..20adbed --- /dev/null +++ b/examples/router.js @@ -0,0 +1,43 @@ +import Vue from 'vue' +import Router from 'vue-router' + +Vue.use(Router) + +const router = new Router({ + mode: 'history', + base: process.env.BASE_URL, + routes: [ + { + path: '/', + name: 'DemoTopology', + component: () => + import(/* webpackChunkName: "demo-topology" */ '@/views/demos/topology.vue') + }, + { + path: '*', + component: () => + import(/* webpackChunkName: "home" */ '@/views/error-pages/404.vue') + }, + ] +}) + +/** + * 验证 + */ +router.beforeEach((to, from, next) => { + if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)) { + if (to.path === '/mobile') { + next() + } else { + next('/mobile') + } + } else { + if (to.path === '/mobile') { + next('/home') + } else { + next() + } + } +}) + +export default router diff --git a/examples/store.js b/examples/store.js new file mode 100644 index 0000000..ef5f0b7 --- /dev/null +++ b/examples/store.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: {}, + mutations: {}, + actions: {} +}) diff --git a/examples/styles/index.scss b/examples/styles/index.scss new file mode 100644 index 0000000..fa0fefd --- /dev/null +++ b/examples/styles/index.scss @@ -0,0 +1,61 @@ +@import '../../node_modules/element-ui/lib/theme-chalk/index.css'; +@import '../assets/iconfont/iconfont.css'; + +/* global css */ +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; + /*overflow-x: hidden;*/ + /*overflow-y: hidden;*/ +} + +* { + padding: 0; + margin: 0; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.css b/examples/views/demos/packages/assets/iconfont/iconfont.css new file mode 100644 index 0000000..142743d --- /dev/null +++ b/examples/views/demos/packages/assets/iconfont/iconfont.css @@ -0,0 +1,109 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1568972645985'); /* IE9 */ + src: url('iconfont.eot?t=1568972645985#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1568972645985') format('woff'), + url('iconfont.ttf?t=1568972645985') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1568972645985#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-download:before { + content: "\e68d"; +} + +.icon-zoom-out:before { + content: "\e69c"; +} + +.icon-image:before { + content: "\e752"; +} + +.icon-iconedit:before { + content: "\e650"; +} + +.icon-actualsize:before { + content: "\e665"; +} + +.icon-copy:before { + content: "\e61c"; +} + +.icon-zoom-in:before { + content: "\e600"; +} + +.icon-clear:before { + content: "\e700"; +} + +.icon-flow-line:before { + content: "\e660"; +} + +.icon-redo:before { + content: "\e716"; +} + +.icon-undo:before { + content: "\e71a"; +} + +.icon-fit:before { + content: "\e7cb"; +} + +.icon-to-front:before { + content: "\e7cc"; +} + +.icon-to-back:before { + content: "\e7cd"; +} + +.icon-roi-select:before { + content: "\e7ce"; +} + +.icon-json:before { + content: "\e623"; +} + +.icon-fullscreen:before { + content: "\e648"; +} + +.icon-broken:before { + content: "\e9ad"; +} + +.icon-curve:before { + content: "\e9b0"; +} + +.icon-paste:before { + content: "\e963"; +} + +.icon-group:before { + content: "\e915"; +} + +.icon-ungroup:before { + content: "\e917"; +} + +.icon-arrow-dropdown:before { + content: "\e601"; +} + diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.eot b/examples/views/demos/packages/assets/iconfont/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..3eda34f5e80e272c158b0ad093896a3703808aac GIT binary patch literal 6896 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 OgI>mF^3y_F#{L)V2<(sm literal 0 HcmV?d00001 diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.js b/examples/views/demos/packages/assets/iconfont/iconfont.js new file mode 100644 index 0000000..9467797 --- /dev/null +++ b/examples/views/demos/packages/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(i){var c,o='',h=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(h&&!i.__iconfont__svg__cssinject__){i.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var h=function(){document.removeEventListener("DOMContentLoaded",h,!1),c()};document.addEventListener("DOMContentLoaded",h,!1)}else document.attachEvent&&(t=c,l=i.document,e=!1,(v=function(){try{l.documentElement.doScroll("left")}catch(c){return void setTimeout(v,50)}o()})(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,o())});function o(){e||(e=!0,t())}var t,l,e,v}(function(){var c,h;(c=document.createElement("div")).innerHTML=o,o=null,(h=c.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",function(c,h){h.firstChild?function(c,h){h.parentNode.insertBefore(c,h)}(c,h.firstChild):h.appendChild(c)}(h,document.body))})}(window); \ No newline at end of file diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.svg b/examples/views/demos/packages/assets/iconfont/iconfont.svg new file mode 100644 index 0000000..f4aa4a7 --- /dev/null +++ b/examples/views/demos/packages/assets/iconfont/iconfont.svg @@ -0,0 +1,95 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.ttf b/examples/views/demos/packages/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5ab0e1e683081abdffb407c1af09caa4fed3d75 GIT binary patch literal 6728 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 LkHC+HRHOd~otURy literal 0 HcmV?d00001 diff --git a/examples/views/demos/packages/assets/iconfont/iconfont.woff2 b/examples/views/demos/packages/assets/iconfont/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..482e53ec52020c23825ea4c31e5ecc3f5315c595 GIT binary patch literal 3404 zcmV-S4YTrhPew8T0RR9101Zq43jhEB02)XD01W>C0RR9100000000000000000000 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 D)Kace literal 0 HcmV?d00001 diff --git a/examples/views/demos/packages/assets/images/database.png b/examples/views/demos/packages/assets/images/database.png new file mode 100644 index 0000000000000000000000000000000000000000..809869eb84f82bd570a12ba3c3ca3a8848e9e188 GIT binary patch literal 3577 zcmZ`+c{r5&+kY^Pk!_rk(u)zz@R zEzC`DTr}c_83fF|*WOQc;{wRf(Ap3Hs*?qGy$*2KFuXa=8UU^<06=6c0Bmzpk+T56 zKmfqJCjelw06-!jr^)^-w*dCGGBe>K_u4XUj^KhofVm5ei?4pg|A6G>xexqw3u`R@ zB#!_eTC4Psx+?%2{Ayuh=os{2A=@oc{z7n9#0>8IsIIzht&YyAq2~I}n)Pwj)rAHm z7~GJfWSS70l4=l{isY4^_`Rb${AR^z`wAs^I|L-p0iK_Yw2!reii&ijOcM+}V|?(h zy<5hPf5~;bG#@zc9#q=)I&r2+r{Usirt8~_jPmVJ_I59`Z7D~3vk-u~1+VHX?x^rW zWMS#1T>_ZOLxW~FzX;O@46tILfTH}Tw6wL7D*BZIWq#Z^ z-}1!7BDcDXPeY+NfM5uT@_E?9XmEe&M-5>&t!-ydZf~}g>Y?%{Qj5^noJgZOKS& zS2C-05k8)sU1#jKeVA6_(cyE^bp4z?-HrQ(L7Yk^N$uw_9lK=`=%9scDDF(~`@!9> zI+xP;JvKV`@H=YguN94Ym6{Zj?muDfg#|v*(92LsBg?B}NfNxWLCH|%6di|if@R^K zTSI!L=WN9$-uJG}6^^&e)Zb_Ct<${LrvxFKYX1GW<72@(qCZwYNY`E#)eoGKtr-&9 zdEAoJAC?)gE1{p%De4|hI5W^Ud>#Z@tHOF-`K<4-i^{`Z3V+pKv-y&Z_kE%f(~eLkrS3fV>~RQnh?+_bC5T0#;8 z$P$dP-$o`nhhw;#y%pbsp|++U9CI?}MfZrsslJxf23JNNc`*{RA_D{N0I zt}G!J<*WXg6kPDSXZ;QR| zmtY=)xmnMTM|U=K`9&i(qu9*{E=cNK+kasU^_$M~qA&5RUkrbvL(d7tL9Vt7$9%U` z(UcsN+z;B2klBAb{lnO#QV(?X{SPhL?tb3QbQ?X`L&@>EUdoeu1DTyq`Zsn*al%FWc6SR!AK<9b8DYtKlXMY)76t}!_ zpW;xDTk{vzbu}A05u4V0$nvpm`*n9p`HlCgkfBGxWga_=;wgdkw{vY%En+XrmzpLf z%Ee~DI@V+6l9zzk$Oe%-H+NUg05A3QX4T@!G)B}>;2TfoF?U~2C)g7s1+g>z-L8r6 z4vLkjbRVq#{l%UcL#uzx?dW4{ zG%TZ9?y1LK}iHjbw=We`CdkBrv+~gKs_LBzBB}2l=#0J~ zr>d@ohEHS1kB(}A`X7V{IMj*Z#Jc1l!D5-8AUUV}`|>o1GoRaGDS&Jc-BE5KC;u(x z$y?n~TpWkkmj|;dvA8_BCO7H1eb`7W8Xvxng+}*JpLEQ2k+7PAf~dqdG9|jq7S|Y; zDwmQ>)cV*Ntvxr(y8}7eu}P9)89L-1G+$(-@`t+Vq*O+qlfcMts@ZmNoVhw1+!QS_ zQR;UjCT>WexpvB3%E0BC#faZ*o$Vy4*V5v7`F#Sh>9w^?(TEL*wPVxZ-%y@ zY#gWkMf{CUm5tGJk>D^A|eT5F-V@x+pd;XQ>y4Rr8O=gt!?V>LS3EzOTC${CH8 zxdkXaQnof7%Dq&t)aZP;MRB3m>rdWClkMLQ)S7BKtyBnu=H(7`-zG(MHm237-%xIP ztljW>?O1m$YDjYa&eejaNl%}Zq(ga&&3gudb2R^~cR?ms5e!Qh8QNuc-X7*AP{VQQ zP^xcF3a+p)i%Vfd0XzXT4y(odjfO4#kYC2T+?XT`O32g z9`Z-b(G?o$1LkER&Evev@&%&ADv#>n;qa*GF!qWNG_)_k3?d?PwtZ)Hc1t0~8EoBm zQtGJ+M{QJ62K@1S{R^+2x5DnA!5MG9crc~oPJ7@iH%5NX1I9gqJc)^$=m23ztcdXMvQ&=#5KX_puBvLs0av1(!KRn)NZ-qj(&E$N zy%DJ}!uIlsbm|)}iBgPIj4FI~>IV{k62j&2K^)t!=?4H$d7h@J6t^U)RFYm!bevrl zTGlCdUbo_CEU#EfRDeB=VJL{=qTz6P`XxcSbBZ|S-K_P2Y954JIZbmn+0`%t7)>)+ zbf)>}a6g4l(y`8TA1^uqgAXKd0XTy|qE!({RRr1*p^nki!f0xqLTF4I=&uoaWCh!hNWC zxW&(`^{=d|7938b_z;5B{OM#;>yzN0{|)$Ga@YJYcq*AppwI!B8G%9w^rBM(F)%|P zsy6{=IGMq)K>^f2I?Rs5@Kd#*z|?*vod|(6B9(%Hq0|rv zm=S|W@_`|gVX$8F6hW@t(VupX{tU7=24h0SGk#iPFm~J-X#lchzZw27&ad$?7;^&A z&z}w;QD?edk{@t6693ToFXsZ$hwcv`H4&*2qDoxKv42pkiDUvjIDi2B+9Y@Y#ZSM+ z$>v`=){a~jS3m=W*3#0@(){|I|1Osz_75Eg;&lR`t*x$Mgs|M>;}*UDQ9O^c0DOrg z0tOC;`%}pTIFrc?q*Cc{3V}%@(toYh2wt>cBA!Z7qY&tDybnc{NcQ{RB%T8QsX&7x e&mevV5}~fH#+?={B{jlz11zvMCY45>(fYDxfrCo=%x7X$#@ze0X{0Duc80B~Rg06ulr1hR>O zj3nUY-}SStDDf3Rah6k(Livk;hDd^b-%hCl0Fa~0Ns4Q@FU@9n{4kJlf%`TdwB3}q zom!XF>(pZT(@MirN{(Wny_IWpUw@c1)oN0i@?HGB3AL_Ff)pg4i9WqT%LmPlPI? z_rG9dN8SxFIqb&2JTh$&^51EsxOp2TAMmjR7?pi|)b3?A3hO!e5t*k`{)3<(?(c&!id!?8%Q6x-s?N*^e~vr?_|`>&Hx zu%*X+T#pWHIHIpd?9Iy>0-`)pyCRp3pjc~nNrtLo!y6y`bo`*=!jq+wjs@>d%3@px z4LReo+Dd`?Lcmj!x%%6yWY3x1 z)77K!Lypf&CmZm=`Mh=?0iu+yYWLIOp|6tk=eFaB&`%^;5w#n+Z`mYvhA?_~q03$P z?`HMhXtK(=glanap@E}bA)#|t^8*S?rRb@&#b73r<&NXat!x?4g*;0*`c;pOwQlHIo-b=`-N-1mJHg$0id^6kLcZ=ZVrl@%DnNQe<_V&T{KMWfjLW~+~f?HThs zH(47Bv~xYTg~%*`tEQyY>G^7>P2myVkn~`=tiw6q2u&)ST^-H$y_3^cbb zXHzbQ9Wyt0mHM7r0(2flSQ7~!w8vU!c@W9joILmpd|V&=W3kNK3@3;+%7|og=ROJB z7xBXqH@arG0>64*2rf>&U{NN^-1uf{bLY3J)!MjtNCnU*z-N9DUxRerp{I)bg`X1Y z^u@b&rB)gV2@oAKs7dmtq2da2&>cZzYGqz2ABEFW+86)PaspTzm*Dh1h14#^Ca$$H z33S_OLC}lo_p)zS^O!FJt$fXj=%dULM{Bs#{RuoT$xxza^z$^Mru`+i+KPB?1NE*D zVx{5{7isui?^MS`;#;k6Q~mLF z<4ry}u^1zrGFOls_BfA#HYC;r8i(~3b4^hME zw*8if4jXs6$8)C7&UwMWghEZz*KRq&!8WNCc0K%>T3a;RW$l9D36#N05Uyv;ai!M4 z)moVHrWydV{wavR;t81F3ce-*ZnkfT77}7}Ob^Hh##|2jsiC7-F_w>JC^`9%PR0U0 z{koVJ@pL9kR%bmu5hQFy(N>(4ziQ@P*4-7Ut%u&;w~}C>mWC8zx96ZpKNG0W))q?( zZ#~L2V6BMjd5T(9O7foMQM=W+oqUtu7`iJ)lixrue4mk8QodVKy`D!}q1)O>8zIAc zkV}3QXGxAbwTAh7i8`O!r6Nk-9An_qSx$N%Wl&=l!un(9A#yR;Ms8N+Pt9T3+!T%7 zA?Y9RsZ?I1E^4@fI@*IJqaC2k+RG11UsNoAag@Cz(AnJ3q@f|??A#*~K&Vg+>e0UQ zCa-u}_zPFDM7Ox{&KlP8&E_2B))H~x#dqk4TBC7K>|Gm!6`ZeO-?mhnNo7{(D8`Xm zQyd#H-}75E#Iy^Z2Jg|Ohp~J-#+k}kAJq1sn5{~w&l2rQx6}cZCi7C=)Hs}cL%+hJ z?7C@Us$y!m^v;UbciTvd8yis|4M(-zxc_ppFIr+MdJ`_muhC$k>wZ~vnhn9wJ;@Yi ziHog(*?P@K=1>j%5R9paho>PQ@8dN)0XH-5jnmnTEYbRkd#NZt*om@MF5(~UCgj3; zxUr&G*gFw~^vrD5*PYDgg)QnAlmA#$w%p{79|?s{3C?%V8|pq*fX)1{XP1=4H~t<| zEW5rK_!bJ>4(Sd)e%hYc)d&_CgwN!WBC7YwdaGfTzB?9z+8* z5Rvy%k;lqEe7TM~HEgct=9Z#$`X~BR7Ka!*qsn60A>_K%#b3o#2a*Oe7z_`dz*L*gv_u=}*XNxmi77c?f*9iuxlnB7$$MGS$_>d;;OG`Cg1T5|qJIz}6-l|GYmP`$XkH$BcLc(|lLi}2u3KwAWMHy|f%*IrUn za=2{z#9H&rsI&`|F=<;<93+gGL^B(y0e-GmfN)?9%5}{tXQv6TE;|kgR|IXPE8Lzl7@hmScA3;7cO85ZmSqy+9!w#m?b!-%vxSfOa!Lbz#A+pDc^d zNi&0FrTxVph}g&znraMQ5UuZV6HLh|B(D zDMzV!s9nv=LsP2P_&Tl$>9~JGQ(yJgsb3UyLK2RtlBG#$d>K59?GmJ23x! zLOdJ12`Ti-iCkp7H*oMw&VJi8BD|dKt--dVCQ=GJ55EYt1=1#&t zA`#-*XDj6L;_t9B==emc&%W-E+Ml~;WpreB@zxa?n(MuM7B?z>5}$Kk2@U(`7?src zb^RY2^~mPeH|q05FKsHG^O~Hf&p3Og@3vHiWNS9k`r0FlfFp}?#-fW?7}QER;Xuq# z?C>UduDGYf&Eq@+^+gky%kGpP*Gf!D}mtmCnp+{UiJ3AcBn$;dP^8o+!=vvd=*wqbl{(iHn+w7Wb?u z$0K*;gzCpp+jHt?dT4eb1IRs_iCD}FQ#ZUdoim`CScxIFnu-hR`*T6E>^2^5HT%F^AJJ(ezQi)my(e6=4D=l0)rx~ zo?mbRLN=pv6qDVIg~!|rzF!x<{S{#66b*kCx%A``h2-Y4U1byZAUQpXU6ToWw_>EM zn4~ARNOa-F-GM)-!uj_|B=3ezFm;?$F#r^D5 z{LcR|Uq6-J^pQ-hp{ePu0JRRO{oH^Rrw?7#6{7FQ0IiIy^V>HTx#Zss^XGuf86=7r zRmjygQjc1+NC`TWZ)6&7w$kZiCO5I0trIVYYcE;|VWz5qyO3QCsZn;Qk{EycDY*T@ zw{hK6@j9@Wm@vyfzhY^jq@ww=95sdgV6ceOO{;B-hVJk4y~1sBYSdWb0wh@MHV z>>3-yT#i#;R*U?SI^^SdQYo!|DDJjTKF<|C~fHwoxo^ zk+haZdyl}!voK)tu`?uKGALMygUCta7w17(v<&NVul6#ePj}w9K%BKLo@mlX8%^#D zpu>NPqBy9{_NYCwOtd!acf2Xf49dxq8^1Y*VVhnW=F0veiF&#MQj&Rkw=8)qIbVov zzKV50+Ox_EhWsX*9Ne*;L7txl2UQMvhLLc{CM{z{+D5yu9HjL5n0BABYnt>IwyMlt z0hx{AxMjaI{+W*O1?KY2ic$q=xO>ClpSGW>!&QI#h^Z&PxBEweI4j*-t4w+4>Um95t5H8A`pzKu=OgboYIV^p*0e)B zECxby)}=$XrJ;k0G%b4b>dGz*=xL5IEXpds^1Hcg-sKcF*5PDGUSQZTg^`cUjB6L$ zr%|#P$d2XMQvXyLmNYw#wUBY}E?aqW3d>-%#DVK^SLyRg{+J%x*RE+QXmu8+T$m^- z5b56u&w&S1E03787jHJIaDlt3Tj-)O?xbzsLBH?p1lHH`Xv8kEv2TZ$B z>lcjVPsSe_#;v1N^(pC#^rDyrpaxcC>TjPh-6@q4HQEtrbe_vl;CJsdh3Wl?5*_f) z<|6VdkfeAcCY$p23|xBKen$}4XunK=)cR*ND>>vI%ZTti{ z?v7fDB4XWhq zSvb0=5#)W5NVUUl5J0yHX2eRg7>mzVFox3TUBsCrD=u_21%;#-`}UI^9j+*v zPG!2l5wu3yf?Po1XO@*QG)qyeaHo!PQdkU z=9lk~_fXQ55eG8fPz%$k5r?0`LO8o#oW6*{8$=r)5SLnP*bWZd7z$;o^x|gX!pZ>q zIt$D~RP-$M(uMd;;^dpXL>pbtDMr=Rz0#~xL`8FS{P_U+AVvvdmKCdSM8f?rz$>Fir1*=LOn7~4x-_+bbnt4?78o0_ zCb&2QnUQAufM3)+$U#i;m&EZifGY7GJus}lZ$HG`u{yq(RCYgqSRh!vc|tKbjs*0P z{+X}njIU@rG}>zQEu@TGxKQ^2Z6FhV#WF}dGs-(IoUMzOz&fr0OXsV-DNsDCN2n>X z`KVs@&RS6F@z|(=KNi0w!P;9)-$j%WCt`2}^7%1a_MaMAKA#CTtrqk9E~ zezS=t^cS;e$ndIoWazY;in{4s0?- zhMsG3wn!qDCK-Rbn-T0R<1aKr!Owh?iDrv;)@=Af+F$7B5~k-yX+0dCDGWiJ*dW11 zay^Vj-i~o%#JNKUKT5G91kr^{$MW;;ANBf&n!mn-7VUT6(E+woAb1!DTti0zyxiLs?T#J|u^9hVU+75GTFq)?=yh);L zcPcQBhwH@8V9B)5fMrUksi(1c4HF%6G>>xXJRkfRWO@(LEy2Yfr9ce?HV-T$zNS-Y z_2nithmtiZVG9_YFzp^p#Ki*MboiIA+KleXj8{7ZNQ_N*Y#Z$Utg9j<;bx>I#bV&D@^uMDJ4)f&?{wA&k>3 zy~l4QVsvqL!fB*sn8eWP8n+l35xp#uW`jl(!66qSxVd4)Y#b!0{v$8>Hu7vATT>8h@BIx!N~>T;)Z}Y**FCtoSbhHFu(pk1$GXm zR^}f6{{olsy3yBykNc77nx%HGt>ox{@E&bF=IA!LsmM(TC5QwA$)Wy!s-WdW>c`b4R zfQnvPfd7m0A3X>}*38Pn(iyTLNh#gmIr@|8mNUlb)P zJ2PhwM>D{GP7QRlw-Bw-QvP2$N*b>$0Em}|56lnZ2XitZi;}!j@c&Ck-OAGpz|GCe zDIft>bXs`Ln*3K*Q%w$FZe?o*0Rn-R4t8chH#fI$4i3&hdowpDE9d{j9A?H&9#&8X zdk%XuXCTznp54mM;{SqBd*HtcPCyVR_+R7a2Xk}09@qMBZpv#nfSi=FWQBxL!2bYL CNZ-r= literal 0 HcmV?d00001 diff --git a/examples/views/demos/packages/assets/images/server.png b/examples/views/demos/packages/assets/images/server.png new file mode 100644 index 0000000000000000000000000000000000000000..0e49219ad8c0958451ec50be2ee49a6c9be55455 GIT binary patch literal 1555 zcmaKsc~BEq9LKkWLqSAQ3@RWVD2HSd5&|qBZcGLuO$^~iMMAP9E997DX$a~_iKrkb z1r*d^qk|j*-W230S|I}rD5&Eo6c0oN6;w*=h*r8`I#cRQJ3GJqz4!fne&6@rAMa)J zxWU$z%Pau^ux5ua`FIX7#vF6}A31g<7*D2Rm;(dAr6X3K1!nl%Ss23S06_X$0La(} z08_Y>F#-UoWB_=T002-401y?r#;^dqV4fHn%mk*5pT4D{5LYZPHiu>L?3=kJE-Raq zmjnPn$YC?#h_wDO-R@ZyZtJ5(|5;2VDl@dT`EJ&z(H%8)H5Ys&b^W{I_fC$SkJdG8Tv7hLM(-3Asi0@Do@_s5 zIF*_Hc$}uNX`qkvttcqIZgTO>0PjS;X713iH4rhujzF zuuG+l|43gHD;}PF-E*AS_*Nr-Ohzb%Y&nyl-kt>!)-I7sMdum z+&~JnYP4uayVLfZgJ6K|8O?aLY<}0ypD)yywe)yYSLNmMN8O^5Y`0^6MSU-yc4>3X z>|R(sXab|XwKdO!Rn&{Rab?KiEna?m<~p+A#1reEy*@;wsp%fw+M1`I?#C%$gFRR0 zB;5Jke%~syE^U9a=67AKygF+_zw+9lqp=RIO9qn7-JElBB2b%y)wC}6{sGSAvhXyX zz5{YBie!fIx38_m+G76Pt$-7<@08daDV{o{Y+n_(smO3|9mpG{>@dtT;bCH4W%#3h zS-0zE%XT;MRZZA}Zk~RRw88YDf?#E52+j8#EvYx~gLWNLU7@xfQ)FI|5x3uC3+@4eQD)X*TW^4)2@J*z* zXVG=L#-MuA`pUB4@XDy_LDNSj15c(UIon#?o_%zT3~0I;eHgzeRrG zeoOuB}$mCW?=JBrvsa%96Y5u$6 zmiT@#-muBIf=Zr*sRc>|08>>;FhwpDq=2YYAV%;&g~^~wf)_!NTnMs_DrZLZ^Z`Ls zCPLCk5=@%XQl~LKVD?742uZ3m5rUXdWO?*WZ^8Ia5Nn!$X*o2zO8O=@nYhvVkDmpB%vt?1cIPME=54KTCJ4J zF;Ir6RVX$yCm{lr1{KO>BpHH%LXpf9m5Tong)-3SpaLlriZQ4(I+=v;cIx#04tzC$ M&Ehi8GZHfY0;Tk7SO5S3 literal 0 HcmV?d00001 diff --git a/examples/views/demos/packages/assets/logo.png b/examples/views/demos/packages/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8384357c5f9fb233e5d7e67263bd08380b54cc GIT binary patch literal 5691 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 + + + + + + diff --git a/examples/views/demos/packages/elements/checkbox.vue b/examples/views/demos/packages/elements/checkbox.vue new file mode 100644 index 0000000..aa36f62 --- /dev/null +++ b/examples/views/demos/packages/elements/checkbox.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/examples/views/demos/packages/elements/dropdown.vue b/examples/views/demos/packages/elements/dropdown.vue new file mode 100644 index 0000000..fc71705 --- /dev/null +++ b/examples/views/demos/packages/elements/dropdown.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/examples/views/demos/packages/elements/index.js b/examples/views/demos/packages/elements/index.js new file mode 100644 index 0000000..81367e7 --- /dev/null +++ b/examples/views/demos/packages/elements/index.js @@ -0,0 +1,17 @@ +/** + * @author: clay + * @data: 2019/11/14 + * @description: ClayTop内部的通用组件 + */ + +import Checkbox from './checkbox' +import Button from './button' +import Dropdown from './dropdown' +import Loading from './loading' + +export { + Checkbox, + Button, + Dropdown, + Loading +} diff --git a/examples/views/demos/packages/elements/loading.vue b/examples/views/demos/packages/elements/loading.vue new file mode 100644 index 0000000..f410a92 --- /dev/null +++ b/examples/views/demos/packages/elements/loading.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/examples/views/demos/packages/topology/src/behavior/dice-er-node.js b/examples/views/demos/packages/topology/src/behavior/dice-er-node.js new file mode 100644 index 0000000..964ed96 --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/dice-er-node.js @@ -0,0 +1,238 @@ +/** + * @author: clay + * @data: 2021/5/14 23:20 + * @email: clay@hchyun.com + * @description: node + */ +const isInBBox = (point, bbox) => { + const { + x, + y + } = point; + const { + minX, + minY, + maxX, + maxY + } = bbox; + + return x < maxX && x > minX && y > minY && y < maxY; +}; + +let vm = null; + +const sendThis = (_this) => { + vm = _this; +}; + +export default { + sendThis, + name: 'dice-er-node', + options: { + getDefaultCfg() { + return { + multiple: true, + }; + }, + getEvents() { + return { + itemHeight: 50, + wheel: "scroll", + "node:click": "onNodeClick", + "edge:click": "onEdgeClick", + "node:contextmenu": "onNodeRightClick", + "edge:contextmenu": "onEdgeRightClick", + "canvas:click": "onCanvasClick", + }; + }, + scroll(e) { + e.preventDefault() + const { + graph + } = this; + const nodes = graph.getNodes().filter((n) => { + const bbox = n.getBBox(); + + return isInBBox(graph.getPointByClient(e.clientX, e.clientY), bbox); + }); + if (nodes) { + nodes.forEach((node) => { + const model = node.getModel(); + if (model.attrs.length < 9) { + return; + } + const idx = model.startIndex || 0; + let startX = model.startX || 0.5; + let startIndex = idx + e.deltaY * 0.02; + startX -= e.deltaX; + if (startIndex < 0) { + startIndex = 0; + } + if (startX > 0) { + startX = 0; + } + if (startIndex > model.attrs.length - 1) { + startIndex = model.attrs.length - 1; + } + graph.update(node, { + startIndex, + startX, + }); + }); + } + + + }, + onNodeClick(event) { + this.shrinkage(event) + vm.currentFocus = "node"; + vm.rightMenuShow = false; + this.updateVmData(event); + }, + /** + * 点击连线 + * @param event + */ + onEdgeClick(event) { + let clickEdge = event.item; + clickEdge.setState("selected", !clickEdge.hasState("selected")); + vm.currentFocus = "edge"; + + this.updateVmData(event); + }, + onNodeRightClick(event) { + let graph = vm.graph; + let clickNode = event.item; + let clickNodeModel = clickNode.getModel(); + let selectedNodes = graph.findAllByState("node", "selected"); + let selectedNodeIds = selectedNodes.map(item => { + return item.getModel().id; + }); + vm.selectedNode = clickNode; + // 如果当前点击节点是之前选中的某个节点,就进行下面的处理 + if (selectedNodes.length > 1 && selectedNodeIds.indexOf(clickNodeModel.id) > -1) { + vm.rightMenuShow = true; + let rightMenu = vm.$refs.rightMenu; + rightMenu.style.left = event.clientX + "px"; + rightMenu.style.top = event.clientY + "px"; + } else { + // 隐藏右键菜单 + vm.rightMenuShow = false; + // 先取消所有节点的选中状态 + selectedNodes.forEach(node => { + node.setState("selected", false); + }); + // 再添加该节点的选中状态 + clickNode.setState("selected", true); + vm.currentFocus = "node"; + this.updateVmData(event); + } + graph.paint(); + }, + /** + * + * @param event + */ + onEdgeRightClick(event) { + let graph = vm.graph; + let clickEdge = event.item; + let clickEdgeModel = clickEdge.getModel(); + let selectedEdges = graph.findAllByState("edge", "selected"); + // 如果当前点击节点不是之前选中的单个节点,才进行下面的处理 + if (!(selectedEdges.length === 1 && clickEdgeModel.id === selectedEdges[0].getModel().id)) { + // 先取消所有节点的选中状态 + graph.findAllByState("edge", "selected").forEach(edge => { + edge.setState("selected", false); + }); + // 再添加该节点的选中状态 + clickEdge.setState("selected", true); + vm.currentFocus = "edge"; + this.updateVmData(event); + } + let point = { x: event.x, y: event.y }; + }, + onCanvasClick() { + vm.currentFocus = "canvas"; + vm.rightMenuShow = false; + }, + updateVmData(event) { + if (event.item._cfg.type === "node") { + let clickNode = event.item; + if (clickNode.hasState("selected")) { + let clickNodeModel = clickNode.getModel(); + vm.selectedNode = clickNode; + let nodeAppConfig = { ...vm.nodeAppConfig }; + Object.keys(nodeAppConfig).forEach(function(key) { + nodeAppConfig[key] = ""; + }); + vm.selectedNodeParams = { + label: clickNodeModel.label || "", + attrs:clickNodeModel.attrs, + appConfig: { ...nodeAppConfig, ...clickNodeModel.appConfig } + }; + } + } else if (event.item._cfg.type === "edge") { + // 更新vm的data: selectedEdge 和 selectedEdgeParams + let clickEdge = event.item; + if (clickEdge.hasState("selected")) { + let clickEdgeModel = clickEdge.getModel(); + vm.selectedEdge = clickEdge; + let edgeAppConfig = { ...vm.edgeAppConfig }; + Object.keys(edgeAppConfig).forEach(function(key) { + edgeAppConfig[key] = ""; + }); + vm.selectedEdgeParams = { + label: clickEdgeModel.label || "", + sourceAttrs:clickEdgeModel.sourceAttrs, + targetAttrs:clickEdgeModel.targetAttrs, + appConfig: { ...edgeAppConfig, ...clickEdgeModel.appConfig } + }; + } + } + }, + shrinkage(e){ + const { + graph + } = this; + const item = e.item; + const shape = e.shape; + if (!item) { + return; + } + if (shape.get("name") === "collapse") { + graph.updateItem(item, { + collapsed: true, + size: [300, 50], + }); + setTimeout(() => graph.layout(), 100); + } else if (shape.get("name") === "expand") { + graph.updateItem(item, { + collapsed: false, + size: [300, 500], + }); + setTimeout(() => graph.layout(), 100); + }else { + // eslint-disable-next-line no-unused-vars + const model = item.getModel(); + // console.log(JSON.stringify(model)); + // console.log(model.style.default.fill = '#4eb922'); + // console.log(model.style.selected.shadowColor = '#4eb922'); + } + }, + moves(e) { + const name = e.shape.get("name"); + const item = e.item; + if (!name.startsWith("marker")){ + if (name && name.startsWith("item")) { + this.graph.updateItem(item, { + selectedIndex: Number(name.split("-")[1]), + }); + } else { + this.graph.updateItem(item, { + selectedIndex: NaN, + }); + } + } + }, + } +} diff --git a/examples/views/demos/packages/topology/src/behavior/drag-add-edge.js b/examples/views/demos/packages/topology/src/behavior/drag-add-edge.js new file mode 100644 index 0000000..c27c0af --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/drag-add-edge.js @@ -0,0 +1,180 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 通过拖拽节点上的锚点添加连线 + */ +import utils from "../utils"; + +// 用来获取调用此js的vue组件实例(this) +let vm = null; + +const sendThis = (_this) => { + vm = _this; +}; + +import G6 from "@antv/g6"; +import theme from "../theme"; + +export default { + sendThis, // 暴露函数 + name: "drag-add-edge", + options: { + getEvents() { + return { + "node:mousedown": "onNodeMousedown", + "node:mouseup": "onNodeMouseup", + "edge:mouseup": "onEdgeMouseup", + "mousemove": "onMousemove" + }; + }, + onNodeMousedown(event) { + let self = this; + // 交互过程中的信息 + self.evtInfo = { + action: null, + node: event.item, + target: event.target + }; + if (self.evtInfo.target && self.evtInfo.target.attrs.name) { + // todo...未来可能针对锚点增加其它功能(例如拖拽调整大小) + switch (self.evtInfo.target.attrs.name) { + case "anchor": + self.evtInfo.action = "drawEdge"; + break; + } + } + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].start.call(self, event); + } + }, + onNodeMouseup(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].stop.call(self, event); + } + }, + onEdgeMouseup(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action === "drawEdge") { + self[self.evtInfo.action].stop.call(self, event); + } + }, + onMousemove(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].move.call(self, event); + } + }, + drawEdge: { + isMoving: false, + currentLine: null, + start: function(event) { + let self = this; + let themeStyle = theme.defaultStyle; // todo...先使用默认主题,后期可能增加其它风格的主体 + + // ************** 暂存【连线】前的数据状态 start ************** + let graph = vm.graph; + self.historyData = JSON.stringify(graph.save()); + // ************** 暂存【连线】前的数据状态 end ************** + + let sourceAnchor = self.evtInfo.node.getAnchorPoints(); + let sourceNodeModel = self.evtInfo.node.getModel(); + console.log("sourceNodeModel",sourceNodeModel) + // 锚点数据 + let anchorPoints = self.evtInfo.node.getAnchorPoints(); + // 处理线条目标点 + if (anchorPoints && anchorPoints.length) { + // 获取距离指定坐标最近的一个锚点 + sourceAnchor = self.evtInfo.node.getLinkPoint({ + x: event.x, + y: event.y + }) + } + self.drawEdge.currentLine = self.graph.addItem("edge", { + // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复 + id: utils.generateUUID(), + // 起始节点 + source: sourceNodeModel.id, + sourceAttrs:sourceNodeModel.attrs, + sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : "", + // 终止节点/位置 + target: { + x: event.x, + y: event.y + }, + type: self.graph.$C.edge.type || "top-cubic", + style: themeStyle.edgeStyle.default|| self.graph.$C.edge.style + }); + self.drawEdge.isMoving = true; + }, + + move(event) { + let self = this; + if (self.drawEdge.isMoving && self.drawEdge.currentLine) { + self.graph.updateItem(self.drawEdge.currentLine, { + target: { + x: event.x, + y: event.y + } + }); + } + }, + stop(event) { + let self = this; + if (self.drawEdge.isMoving) { + if (self.drawEdge.currentLine === event.item) { + // 画线过程中点击则移除当前画线 + self.graph.removeItem(event.item); + } else { + let targetNode = event.item; + let targetNodeModel = targetNode.getModel(); + let targetAnchor = null; + // 锚点数据 + let anchorPoints = targetNode.getAnchorPoints(); + // 处理线条目标点 + if (anchorPoints && anchorPoints.length) { + // 获取距离指定坐标最近的一个锚点 + targetAnchor = targetNode.getLinkPoint({ + x: event.x, + y: event.y + }); + } + self.graph.updateItem(self.drawEdge.currentLine, { + target: targetNodeModel.id, + targetAnchor: targetAnchor ? targetAnchor.anchorIndex : "", + targetAttrs:targetNodeModel.attrs, + }); + + // ************** 记录historyData的逻辑 start ************** + if (this.historyData) { + let graph = this.graph; + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount; // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}`; + vm.removeHistoryData(key); + } + vm.undoCount = 0; + } else { + // 正常顺序执行的情况,记录拖拽前的数据状态 + let key = `graph_history_${vm.historyIndex}`; + vm.addHistoryData(key, this.historyData); + } + // 记录拖拽后的数据状态 + vm.historyIndex += 1; + let key = `graph_history_${vm.historyIndex}`; + let currentData = JSON.stringify(graph.save()); + vm.addHistoryData(key, currentData); + } + // ************** 记录historyData的逻辑 end ************** + } + } + self.drawEdge.currentLine = null; + self.drawEdge.isMoving = false; + self.evtInfo = null; + } + } + } +}; diff --git a/examples/views/demos/packages/topology/src/behavior/drag-event-edit.js b/examples/views/demos/packages/topology/src/behavior/drag-event-edit.js new file mode 100644 index 0000000..08ebc57 --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/drag-event-edit.js @@ -0,0 +1,53 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 鼠标拖动节点的交互(记录拖拽前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'drag-event-edit', + options: { + getEvents() { + return { + 'node:dragstart': 'onNodeDragstart', + 'node:dragend': 'onNodeDragend' + } + }, + onNodeDragstart() { + let graph = vm.graph + this.historyData = JSON.stringify(graph.save()) + }, + onNodeDragend() { + if (this.historyData) { + let graph = this.graph + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}` + vm.removeHistoryData(key) + } + vm.undoCount = 0 + } else { + // 正常顺序执行的情况,记录拖拽前的数据状态 + let key = `graph_history_${vm.historyIndex}` + vm.addHistoryData(key, this.historyData) + } + // 记录拖拽后的数据状态 + vm.historyIndex += 1 + let key = `graph_history_${vm.historyIndex}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + } + } + } +} diff --git a/examples/views/demos/packages/topology/src/behavior/hover-event-edit.js b/examples/views/demos/packages/topology/src/behavior/hover-event-edit.js new file mode 100644 index 0000000..1b83d59 --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/hover-event-edit.js @@ -0,0 +1,65 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 悬浮交互 + */ +// 用来获取调用此js的vue组件实例(this) +let vm = null; +var hourItem = null; +const sendThis = (_this) => { + vm = _this; +}; +export default { + sendThis, // 暴露函数 + name: "hover-event-edit", + options: { + getEvents() { + return { + "node:mouseover": "onNodeHover", + "node:mouseout": "onNodeOut", + "node:mouseleave":"onNodeLeave", + }; + }, + onNodeHover(event) { + let graph = vm.graph; + let hoverNode = event.item; + + const name = event.shape.get("name"); + const item = event.item; + + if (name && name.startsWith("item")) { + graph.updateItem(item, { + selectedIndex: Number(name.split("-")[1]) + }); + } else { + graph.updateItem(item, { + selectedIndex: NaN + }); + } + if (name && name.startsWith("marker")) { + hoverNode.setState("hover", true, graph); + hourItem=hoverNode; + }else { + if (hourItem!=null){ + hourItem.setState("hover", false) + } + } + }, + onNodeOut(event) { + const name = event.shape.get("name"); + let hoverNode = event.item; + if (name && name.startsWith("marker")) { + hoverNode.setState("hover", false); + } + if (hourItem!=null){ + hourItem.setState("hover", false) + } + hoverNode.setState("hover", false); + }, + onNodeLeave(event) { + if (hourItem!=null){ + hourItem.setState("hover", false) + } + } + } +}; diff --git a/examples/views/demos/packages/topology/src/behavior/index.js b/examples/views/demos/packages/topology/src/behavior/index.js new file mode 100644 index 0000000..748e43b --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/index.js @@ -0,0 +1,28 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: register behaviors + */ + +import dragAddEdge from './drag-add-edge' +import hoverEventEdit from './hover-event-edit' +import dragEventEdit from './drag-event-edit' +import keyupEventEdit from './keyup-event-edit' +import diceErNode from './dice-er-node' + +const obj = { + dragAddEdge, + hoverEventEdit, + dragEventEdit, + keyupEventEdit, + diceErNode, +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerBehavior(item.name, item.options) + }) + } +} diff --git a/examples/views/demos/packages/topology/src/behavior/keyup-event-edit.js b/examples/views/demos/packages/topology/src/behavior/keyup-event-edit.js new file mode 100644 index 0000000..cdb6af3 --- /dev/null +++ b/examples/views/demos/packages/topology/src/behavior/keyup-event-edit.js @@ -0,0 +1,63 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 键盘事件的交互,主要是删除节点和连线(记录删除前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'keyup-event-edit', + options: { + getEvents() { + return { + 'keyup': 'onKeyup' + } + }, + onKeyup(event) { + let graph = this.graph + let selectedNodes = graph.findAllByState('node', 'selected') + let selectedEdges = graph.findAllByState('edge', 'selected') + if (event.keyCode === 46 && (selectedNodes.length > 0 || selectedEdges.length > 0)) { + + // ************** 记录【删除】前的数据状态 start ************** + let historyData = JSON.stringify(graph.save()) + let key = `graph_history_${vm.historyIndex}` + vm.addHistoryData(key, historyData) + // ************** 记录【删除】前的数据状态 end ************** + + // 开始删除 + for (let i = 0; i < selectedNodes.length; i++) { + graph.removeItem(selectedNodes[i]) + } + for (let i = 0; i < selectedEdges.length; i++) { + graph.removeItem(selectedEdges[i]) + } + + // ************** 记录【删除】后的数据状态 start ************** + // 如果当前点过【撤销】了,拖拽节点后将取消【重做】功能 + // 重置undoCount,【删除】后的数据状态给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}` + vm.removeHistoryData(key) + } + vm.undoCount = 0 + } + // 记录【删除】后的数据状态 + vm.historyIndex += 1 + key = `graph_history_${vm.historyIndex}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + // ************** 记录【删除】后的数据状态 end ************** + } + } + } +} diff --git a/examples/views/demos/packages/topology/src/config/edge.js b/examples/views/demos/packages/topology/src/config/edge.js new file mode 100644 index 0000000..e908144 --- /dev/null +++ b/examples/views/demos/packages/topology/src/config/edge.js @@ -0,0 +1,13 @@ +/** + * @author: clay + * @data: 2019/08/16 + * @description: 线条的后期设置 + */ + +export default { + type: 'top-cubic', + style: { + startArrow: false, + endArrow: true + } +} diff --git a/examples/views/demos/packages/topology/src/config/index.js b/examples/views/demos/packages/topology/src/config/index.js new file mode 100644 index 0000000..abed973 --- /dev/null +++ b/examples/views/demos/packages/topology/src/config/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/16 + * @description: 配置 + */ + +import edge from './edge' + +export default { + edge +} diff --git a/examples/views/demos/packages/topology/src/edge/base.js b/examples/views/demos/packages/topology/src/edge/base.js new file mode 100644 index 0000000..a694c89 --- /dev/null +++ b/examples/views/demos/packages/topology/src/edge/base.js @@ -0,0 +1,30 @@ +/** + * @author: Clay + * @data: 2019/07/18 + * @description: 线公共方法 + */ + +import utils from '../utils' + +export default { + draw(cfg, group) { + const { startPoint, endPoint } = cfg + const keyShape = group.addShape('path', { + className: 'edge-shape', + attrs: { + ...cfg.style, + path: [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + name: 'edge-shape' + }) + console.log(keyShape.attrs.endArrow = true) + return keyShape + }, + setState(name, value, item) { + // 设置边状态 + utils.edge.setState(name, value, item) + } +} diff --git a/examples/views/demos/packages/topology/src/edge/index.js b/examples/views/demos/packages/topology/src/edge/index.js new file mode 100644 index 0000000..bcbbbe4 --- /dev/null +++ b/examples/views/demos/packages/topology/src/edge/index.js @@ -0,0 +1,18 @@ +/** + * @author: clay + * @data: 2019/07/18 + * @description: register edges + */ + + +import topCubic from './top-cubic' + +const obj = { + topCubic +} + +export default function(G6) { + Object.values(obj).map(item => { + G6.registerEdge(item.name, item.options, item.extendName) + }) +} diff --git a/examples/views/demos/packages/topology/src/edge/top-cubic.js b/examples/views/demos/packages/topology/src/edge/top-cubic.js new file mode 100644 index 0000000..c53d53f --- /dev/null +++ b/examples/views/demos/packages/topology/src/edge/top-cubic.js @@ -0,0 +1,14 @@ +/** + * @author: Clay + * @data: 2019/07/18 + * @description: 曲线 + */ + +import base from './base' +export default { + name: 'top-cubic', + extendName: 'cubic', + options: { + ...base + } +} diff --git a/examples/views/demos/packages/topology/src/graph/index.js b/examples/views/demos/packages/topology/src/graph/index.js new file mode 100644 index 0000000..928ff74 --- /dev/null +++ b/examples/views/demos/packages/topology/src/graph/index.js @@ -0,0 +1,160 @@ +/** + * @author: clay + * @data: 2019/07/05 + * @description: 图的布局方式/图的初始化 + */ + +import d3 from '../plugins/d3-installer' +import theme from '../theme' + +/** + * 图的布局方式/图的初始化 + * @type {{commonGraph: (function(*, *): G6.Graph)}} + */ +const initGraph = { + /** + * 一般布局 + * @param G6 + * @param options + * @returns {G6.Graph} + */ + commonGraph: function(G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + plugins: options.plugins, + container: options.container, + width: options.width, + height: options.height, + // layout: { + // type: 'random', + // width: options.width, + // height: options.height + // }, + defaultNode: { + type: 'dice-er-box', + labelCfg: { + position: 'bottom' + } + }, + defaultEdge: { + type: 'top-cubic', + labelCfg: { + position: 'center', + autoRotate: false + } + }, + nodeStateStyles: themeStyle.nodeStyle, + // nodeStyle: { + // selected: { + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + // } + // }, + edgeStateStyles:{ + edgeStyle: { + default: { + stroke: '#e2e2e2', + lineWidth: 3, + lineAppendWidth: 10 + }, + selected: { + shadowColor: '#626262', + shadowBlur: 3 + } + }, + }, + modes: options.modes + }) + // 将 read 方法分解成 data() 和 render 方法,便于整个生命周期的管理 + graph.read(graphData) + graph.render() + // 返回G6实例 + return graph + }, + /** + * 力导布局 + * @param G6 + * @param options + * @returns {*} + */ + forceLayoutGraph: function(resolve, G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + container: options.container, + width: options.width, + height: options.height, + nodeStateStyles: themeStyle.nodeStyle, + edgeStateStyles: themeStyle.edgeStyle + }) + // 初始化力导布局 + let simulation = d3 + .forceSimulation() + .force( + 'link', + d3 + .forceLink() + .id(function(d) { + return d.id + }) + .distance(linkDistance) + .strength(0.5) + ) + .force('charge', d3.forceManyBody().strength(-500).distanceMax(500).distanceMin(100)) + .force('center', d3.forceCenter(options.width / 2, options.height / 2)) + // 定义节点数据 + simulation.nodes(graphData.nodes).on('tick', ticked) + // 定义连线数据 + let edges = [] + for (let i = 0; i < graphData.edges.length; i++) { + edges.push({ + id: graphData.edges[i].id, + source: graphData.edges[i].source, + target: graphData.edges[i].target + }) + } + simulation.force('link').links(edges) + graph.data(graphData) + graph.render() + + function linkDistance(d) { + return 150 + } + + function ticked() { + // protect: planA: 移除事件监听器 planB: 手动停止力模拟 + if (graph.destroyed) { + // simulation.nodes(graphData.nodes).on('tick', null) + simulation.stop() + return + } + if (!graph.get('data')) { + // 若是第一次渲染,定义数据,渲染 + graph.data(graphData) + graph.render() + } else { + // 后续渲染,直接刷新所有点和边的位置 + graph.refreshPositions() + } + } + + // 控制时间: 只布局10秒 + let t = setTimeout(function() { + simulation.stop() + resolve(graph) + }, 10000) + + // 判断force-layout结束 + simulation.on('end', () => { + clearTimeout(t) + resolve(graph) + }) + } +} + +export default initGraph diff --git a/examples/views/demos/packages/topology/src/node/dice-er-box.js b/examples/views/demos/packages/topology/src/node/dice-er-box.js new file mode 100644 index 0000000..cf4467f --- /dev/null +++ b/examples/views/demos/packages/topology/src/node/dice-er-box.js @@ -0,0 +1,285 @@ +/** + * @author: clay + * @data: 2021/5/15 0:16 + * @email: clay@hchyun.com + * @description: node + */ +import utils from '../utils/index' + +let vm = null; +const sendThis = (_this) => { + vm = _this; +}; +const itemHeight = 30; +export default { + sendThis, + name: 'dice-er-box', + options: { + setState(name, value, item) { + // 设置节点状态 + utils.node.setState(name, value, item) + // 设置锚点状态 + // if (vm.graphMode === 'edit') { + utils.anchor.setState(name, value, item) + // } + }, + draw(cfg, group) { + const width = 250; + const height = 316; + const itemCount = 10; + const boxStyle = { + stroke: "#096DD9", + radius: 4, + }; + + const { + attrs = [], + startIndex = 0, + selectedIndex, + collapsed, + icon, + } = cfg; + const list = attrs; + const afterList = list.slice( + Math.floor(startIndex), + Math.floor(startIndex + itemCount - 1) + ); + const offsetY = (0.5 - (startIndex % 1)) * itemHeight + 30; + + group.addShape("rect", { + attrs: { + fill: boxStyle.stroke, + height: 30, + width, + radius: [boxStyle.radius, boxStyle.radius, 0, 0], + }, + draggable: true, + }); + + let fontLeft = 12; + + if (icon && icon.show !== false) { + group.addShape("image", { + attrs: { + x: 8, + y: 8, + height: 16, + width: 16, + ...icon, + }, + }); + fontLeft += 18; + } + + group.addShape("text", { + attrs: { + y: 22, + x: fontLeft, + fill: "#fff", + text: cfg.label, + fontSize: 12, + fontWeight: 500, + }, + }); + + group.addShape("rect", { + attrs: { + x: 0, + y: collapsed ? 30 : 300, + height: 15, + width, + fill: "#eee", + radius: [0, 0, boxStyle.radius, boxStyle.radius], + cursor: "pointer", + }, + name: collapsed ? "expand" : "collapse", + }); + + group.addShape("text", { + attrs: { + x: width / 2 - 6, + y: (collapsed ? 30 : 300) + 12, + text: collapsed ? "+" : "-", + width, + fill: "#000", + radius: [0, 0, boxStyle.radius, boxStyle.radius], + cursor: "pointer", + }, + name: collapsed ? "expand" : "collapse", + }); + + const keyshape = group.addShape("rect", { + attrs: { + x: 0, + y: 0, + width, + height: collapsed ? 45 : height, + ...boxStyle, + }, + draggable: true, + }); + + if (collapsed) { + return keyshape; + } + + const listContainer = group.addGroup({}); + listContainer.setClip({ + type: "rect", + attrs: { + x: -8, + y: 30, + width: width + 16, + height: 300 - 30, + }, + }); + listContainer.addShape({ + type: "rect", + attrs: { + x: 1, + y: 30, + width: width - 2, + height: 300 - 30, + fill: "#fff", + }, + draggable: true, + }); + + if (list.length > itemCount) { + const barStyle = { + width: 4, + padding: 0, + boxStyle: { + stroke: "#00000022", + }, + innerStyle: { + fill: "#00000022", + }, + }; + + listContainer.addShape("rect", { + attrs: { + y: 30, + x: width - barStyle.padding - barStyle.width, + width: barStyle.width, + height: height - 30, + ...barStyle.boxStyle, + }, + }); + + const indexHeight = + afterList.length > itemCount ? + (afterList.length / list.length) * height : + 10; + + listContainer.addShape("rect", { + attrs: { + y: 30 + + barStyle.padding + + (startIndex / list.length) * (height - 30), + x: width - barStyle.padding - barStyle.width, + width: barStyle.width, + height: Math.min(height, indexHeight), + ...barStyle.innerStyle, + }, + }); + } + if (afterList) { + afterList.forEach((e, i) => { + const isSelected = + Math.floor(startIndex) + i === Number(selectedIndex); + let { + key = "", type + } = e; + if (type) { + key += " - " + type; + } + const label = key.length > 26 ? key.slice(0, 24) + "..." : key; + + listContainer.addShape("rect", { + attrs: { + x: 1, + y: i * itemHeight - itemHeight / 2 + offsetY, + width: width - 4, + height: itemHeight, + radius: 2, + lineWidth: 1, + cursor: "pointer", + }, + name: `item-${Math.floor(startIndex) + i}-content`, + draggable: true, + }); + + if (!cfg.hideDot) { + // utils.anchor.erDrawLeft(group, label, 0, i * itemHeight + offsetY) + // utils.anchor.erDrawLeft(group,label,width,i * itemHeight + offsetY) + // listContainer.addShape("marker", { + // attrs: { + // x: 0, + // y: i * itemHeight + offsetY, + // r: 3, + // stroke: boxStyle.stroke, + // fill: "white", + // radius: 2, + // lineWidth: 1, + // cursor: "crosshair", + // }, + // + // name: 'marker-shape' + // }); + // listContainer.addShape("marker", { + // attrs: { + // x: width, + // y: i * itemHeight + offsetY, + // r: 3, + // stroke: boxStyle.stroke, + // fill: "white", + // radius: 2, + // lineWidth: 1, + // cursor: "crosshair", + // + // + // }, + // name: 'marker-shape' + // }); + + + } + + listContainer.addShape("text", { + attrs: { + x: 12, + y: i * itemHeight + offsetY + 6, + text: label, + fontSize: 12, + fill: "#000", + fontFamily: "Avenir,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol", + full: e, + fontWeight: isSelected ? 500 : 100, + cursor: "pointer", + }, + name: `item-${Math.floor(startIndex) + i}`, + }); + }); + } + return keyshape; + }, + // getAnchorPoints() { + // return [ + // [0, 0], + // [1, 0], + // ]; + // }, + // 绘制后附加锚点 + afterDraw(cfg, group) { + // 绘制锚点 + utils.anchor.drawMark(cfg, group) + }, + + } +} + + + + + diff --git a/examples/views/demos/packages/topology/src/node/index.js b/examples/views/demos/packages/topology/src/node/index.js new file mode 100644 index 0000000..7ed5492 --- /dev/null +++ b/examples/views/demos/packages/topology/src/node/index.js @@ -0,0 +1,20 @@ +/** + * @author: clay + * @data: 2019/07/05 + * @description: register nodes + */ + + +import diceErBox from './dice-er-box' +const obj = { + diceErBox +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerNode(item.name, item.options, item.extendName) + }) + } +} diff --git a/examples/views/demos/packages/topology/src/plugins/d3-installer.js b/examples/views/demos/packages/topology/src/plugins/d3-installer.js new file mode 100644 index 0000000..5991259 --- /dev/null +++ b/examples/views/demos/packages/topology/src/plugins/d3-installer.js @@ -0,0 +1,9 @@ +/** + * @author: clay + * @data: 2019/07/05 + * @description: install 3rd plugins + */ + +import * as d3 from 'd3-force/dist/d3-force' + +export default d3 diff --git a/examples/views/demos/packages/topology/src/theme/dark-style.js b/examples/views/demos/packages/topology/src/theme/dark-style.js new file mode 100644 index 0000000..b7c1832 --- /dev/null +++ b/examples/views/demos/packages/topology/src/theme/dark-style.js @@ -0,0 +1,177 @@ +/** + * @author: clay + * @data: 2019/11/20 + * @description: dark style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#FFF' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#53da3a', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/examples/views/demos/packages/topology/src/theme/default-style.js b/examples/views/demos/packages/topology/src/theme/default-style.js new file mode 100644 index 0000000..7838462 --- /dev/null +++ b/examples/views/demos/packages/topology/src/theme/default-style.js @@ -0,0 +1,179 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: default style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + // shadowOffsetX: 0, + // shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 2, + // shadowOffsetX: 0, + // shadowOffsetY: 0, + // fontSize:'50' + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#A3B1BF', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + r: 3, + symbol: 'circle', + lineWidth: 1, + fill: '#FFFFFF', + fillOpacity: 1, + stroke: '#096DD9', + strokeOpacity: 1, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + r: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/examples/views/demos/packages/topology/src/theme/index.js b/examples/views/demos/packages/topology/src/theme/index.js new file mode 100644 index 0000000..02e514a --- /dev/null +++ b/examples/views/demos/packages/topology/src/theme/index.js @@ -0,0 +1,15 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: 编辑器主题样式 - 节点、连线的预设样式 + */ + +import defaultStyle from './default-style' +import darkStyle from './dark-style' +import officeStyle from './office-style' + +export default { + defaultStyle, + darkStyle, + officeStyle +} diff --git a/examples/views/demos/packages/topology/src/theme/office-style.js b/examples/views/demos/packages/topology/src/theme/office-style.js new file mode 100644 index 0000000..b1e21a7 --- /dev/null +++ b/examples/views/demos/packages/topology/src/theme/office-style.js @@ -0,0 +1,177 @@ +/** + * @author: clay + * @data: 2019/11/21 + * @description: office style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: '#FFFFFF', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 1, + shadowOffsetY: 1 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#41c23a', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/examples/views/demos/packages/topology/src/toolbar-edit.vue b/examples/views/demos/packages/topology/src/toolbar-edit.vue new file mode 100644 index 0000000..10eacef --- /dev/null +++ b/examples/views/demos/packages/topology/src/toolbar-edit.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/examples/views/demos/packages/topology/src/toolbar-preview.vue b/examples/views/demos/packages/topology/src/toolbar-preview.vue new file mode 100644 index 0000000..c0c7a0d --- /dev/null +++ b/examples/views/demos/packages/topology/src/toolbar-preview.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/examples/views/demos/packages/topology/src/topology.vue b/examples/views/demos/packages/topology/src/topology.vue new file mode 100644 index 0000000..54dd640 --- /dev/null +++ b/examples/views/demos/packages/topology/src/topology.vue @@ -0,0 +1,1447 @@ + + + + + + diff --git a/examples/views/demos/packages/topology/src/utils/anchor/draw.js b/examples/views/demos/packages/topology/src/utils/anchor/draw.js new file mode 100644 index 0000000..3913093 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/draw.js @@ -0,0 +1,60 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: draw anchor + */ + +import theme from '../../theme' + +export default function(cfg, group) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX + let anchorY = y * height + originY + // 添加锚点背景 + let anchorBgShape = group.addShape('marker', { + id: id + '_anchor_bg_' + i, + attrs: { + name: 'anchorBg', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorBgStyle.default + }, + draggable: false, + name: 'markerBg-shape' + }) + // 添加锚点Marker形状 + // eslint-disable-next-line no-unused-vars + let anchorShape = group.addShape('marker', { + id: id + '_anchor_' + i, + attrs: { + name: 'anchor', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorStyle.default + }, + draggable: false, + name: 'marker-shape' + }) + + anchorShape.on('mouseenter', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.active + }) + }) + anchorShape.on('mouseleave', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.inactive + }) + }) + } + } +} diff --git a/examples/views/demos/packages/topology/src/utils/anchor/draw_mark.js b/examples/views/demos/packages/topology/src/utils/anchor/draw_mark.js new file mode 100644 index 0000000..6e185cb --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/draw_mark.js @@ -0,0 +1,59 @@ + + + + +import theme from '../../theme' +export default function(cfg, group) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // console.log("cfg",cfg) + let { anchorPoints, width, height, id } = cfg + // console.log("基础信息",anchorPoints,"宽",width,"高",height,"节点id",id) + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX+125 + let anchorY = y * height + originY+158 + // 添加锚点背景 + let anchorBgShape = group.addShape('marker', { + id: id + '_anchor_bg_' + i, + attrs: { + name: 'anchorBg', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorBgStyle.default + }, + draggable: false, + name: 'markerBg-shape' + }) + // 添加锚点Marker形状 + // eslint-disable-next-line no-unused-vars + let anchorShape = group.addShape('marker', { + id: id + '_anchor_' + i, + attrs: { + name: 'anchor', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorStyle.default + }, + draggable: false, + name: 'marker-shape' + }) + + anchorShape.on('mouseenter', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.active + }) + }) + anchorShape.on('mouseleave', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.inactive + }) + }) + } + } +} diff --git a/examples/views/demos/packages/topology/src/utils/anchor/er-draw-left.js b/examples/views/demos/packages/topology/src/utils/anchor/er-draw-left.js new file mode 100644 index 0000000..b56b459 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/er-draw-left.js @@ -0,0 +1,44 @@ +import theme from '../../theme' + + + + +export default function(group,label,x,y,i) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + let anchorBgShape = group.addShape('marker', { + id: label+ '_anchor_bg_lift_' + i, + attrs: { + name: 'anchorBg', + x: x, + y: y, + ...themeStyle.anchorBgStyle.default + }, + draggable: false, + name: 'markerBg-shape' + }) + + let anchorShape = group.addShape('marker', { + id: label+ '_anchor_bg_lift_' + i, + attrs: { + name: 'anchor', + x: x, + y: y, + ...themeStyle.anchorStyle.default + }, + draggable: false, + name: 'marker-shape' + }) + + anchorShape.on('mouseenter', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.active + }) + }) + anchorShape.on('mouseleave', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.inactive + }) + }) + + +} diff --git a/examples/views/demos/packages/topology/src/utils/anchor/index.js b/examples/views/demos/packages/topology/src/utils/anchor/index.js new file mode 100644 index 0000000..875f653 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/index.js @@ -0,0 +1,17 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: anchor + */ + +// import draw from './draw' +import erDrawLeft from './er-draw-left' +import setState from './set-state' +import drawMark from './draw_mark' +// import update from './update' + +export default { + setState, + erDrawLeft, + drawMark, +} diff --git a/examples/views/demos/packages/topology/src/utils/anchor/set-state.js b/examples/views/demos/packages/topology/src/utils/anchor/set-state.js new file mode 100644 index 0000000..fa3fd65 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/set-state.js @@ -0,0 +1,28 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set anchor state + */ +import theme from '../../theme' + +export default function(name, value, item) { + + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'hover') { + // console.log(item) + let group = item.getContainer() + let children = group.get('children') + for (let i = 0, len = children.length; i < len; i++) { + let child = children[i] + // 处理锚点状态 + // console.log(child.attrs.name) + if (child.attrs.name === 'anchorBg') { + if (value) { + child.attr(themeStyle.anchorStyle.hover) + } else { + child.attr(themeStyle.anchorStyle.unhover) + } + } + } + } +} diff --git a/examples/views/demos/packages/topology/src/utils/anchor/update.js b/examples/views/demos/packages/topology/src/utils/anchor/update.js new file mode 100644 index 0000000..1509f05 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/anchor/update.js @@ -0,0 +1,31 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: update anchor + */ + +export default function(cfg, group) { + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX + let anchorY = y * height + originY + // 锚点背景 + let anchorBgShape = group.findById(id + '_anchor_bg_' + i) + // 锚点 + let anchorShape = group.findById(id + '_anchor_' + i) + anchorBgShape.attr({ + x: anchorX, + y: anchorY + }) + anchorShape.attr({ + x: anchorX, + y: anchorY + }) + } + } +} diff --git a/examples/views/demos/packages/topology/src/utils/collapse/index.js b/examples/views/demos/packages/topology/src/utils/collapse/index.js new file mode 100644 index 0000000..d43dc28 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/collapse/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2021/5/11 17:28 + * @email: clay@hchyun.com + * @description: node + */ +import setState from './set-state' + +export default { + setState +} diff --git a/examples/views/demos/packages/topology/src/utils/collapse/move.js b/examples/views/demos/packages/topology/src/utils/collapse/move.js new file mode 100644 index 0000000..139e6d3 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/collapse/move.js @@ -0,0 +1,57 @@ +/** + * @author: clay + * @data: 2021/5/11 17:33 + * @email: clay@hchyun.com + * @description: node + */ +export default function(e){ + e.preventDefault(); + const { + graph + } = this; + const nodes = graph.getNodes().filter((n) => { + const bbox = n.getBBox(); + + return isInBBox(graph.getPointByClient(e.clientX, e.clientY), bbox); + }); + if (nodes) { + nodes.forEach((node) => { + const model = node.getModel(); + if (model.attrs.length < 9) { + return; + } + const idx = model.startIndex || 0; + let startX = model.startX || 0.5; + let startIndex = idx + e.deltaY * 0.02; + startX -= e.deltaX; + if (startIndex < 0) { + startIndex = 0; + } + if (startX > 0) { + startX = 0; + } + if (startIndex > model.attrs.length - 1) { + startIndex = model.attrs.length - 1; + } + graph.update(node, { + startIndex, + startX, + }); + }); + } +} +const isInBBox = (point, bbox) => { + const { + x, + y + } = point; + const { + minX, + minY, + maxX, + maxY + } = bbox; + + return x < maxX && x > minX && y > minY && y < maxY; +}; + diff --git a/examples/views/demos/packages/topology/src/utils/collapse/set-state.js b/examples/views/demos/packages/topology/src/utils/collapse/set-state.js new file mode 100644 index 0000000..c946239 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/collapse/set-state.js @@ -0,0 +1,33 @@ +/** + * @author: clay + * @data: 2021/5/11 17:28 + * @email: clay@hchyun.com + * @description: node + */ +export default function(e){ + const { + graph + } = this; + const { + y + } = e; + const item = e.item; + const shape = e.shape; + if (!item) { + return; + } + + if (shape.get("name") === "collapse") { + graph.updateItem(item, { + collapsed: true, + size: [300, 50], + }); + setTimeout(() => graph.layout(), 100); + } else if (shape.get("name") === "expand") { + graph.updateItem(item, { + collapsed: false, + size: [300, 500], + }); + setTimeout(() => graph.layout(), 100); + } +} diff --git a/examples/views/demos/packages/topology/src/utils/edge/index.js b/examples/views/demos/packages/topology/src/utils/edge/index.js new file mode 100644 index 0000000..8002373 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/edge/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: edge + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/examples/views/demos/packages/topology/src/utils/edge/set-state.js b/examples/views/demos/packages/topology/src/utils/edge/set-state.js new file mode 100644 index 0000000..9090426 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/edge/set-state.js @@ -0,0 +1,26 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set edge state + */ + +import theme from '../../theme' + +export default function(name, value, item) { + const group = item.getContainer() + const shape = group.get('children')[0] // 顺序根据 draw 时确定 + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'active') { + if (value) { + shape.attr(themeStyle.edgeStyle.active) + } else { + shape.attr(themeStyle.edgeStyle.inactive) + } + } else if (name === 'selected') { + if (value) { + shape.attr(themeStyle.edgeStyle.selected) + } else { + shape.attr(themeStyle.edgeStyle.unselected) + } + } +} diff --git a/examples/views/demos/packages/topology/src/utils/index.js b/examples/views/demos/packages/topology/src/utils/index.js new file mode 100644 index 0000000..2b33f54 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/index.js @@ -0,0 +1,66 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: graph utils + */ + +import node from './node' +import anchor from './anchor' +import edge from './edge' +import collapse from './collapse' + +/** + * 比较两个对象的内容是否相同(两个对象的键值都相同) + * @param obj1 + * @param obj2 + * @returns {*} + */ +const isObjectValueEqual = function(obj1, obj2) { + let o1 = obj1 instanceof Object + let o2 = obj2 instanceof Object + // 不是对象的情况 + if (!o1 || !o2) { + return obj1 === obj2 + } + // 对象的属性(key值)个数不相等 + if (Object.keys(obj1).length !== Object.keys(obj2).length) { + return false + } + // 判断每个属性(如果属性值也是对象则需要递归) + for (let attr in obj1) { + let t1 = obj1[attr] instanceof Object + let t2 = obj2[attr] instanceof Object + if (t1 && t2) { + return isObjectValueEqual(obj1[attr], obj2[attr]) + } else if (obj1[attr] !== obj2[attr]) { + return false + } + } + return true +} + + +/** + * 生成uuid算法,碰撞率低于1/2^^122 + * @returns {string} + */ +const generateUUID = function() { + let d = new Date().getTime() + // x 是 0-9 或 a-f 范围内的一个32位十六进制数 + let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + let r = (d + Math.random() * 16) % 16 | 0 + d = Math.floor(d / 16) + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16) + }) + return uuid +} + +export default { + node, + anchor, + edge, + collapse, + // 通用工具类函数 + isObjectValueEqual, + generateUUID +} diff --git a/examples/views/demos/packages/topology/src/utils/node/index.js b/examples/views/demos/packages/topology/src/utils/node/index.js new file mode 100644 index 0000000..61e5741 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/node/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: node + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/examples/views/demos/packages/topology/src/utils/node/set-state.js b/examples/views/demos/packages/topology/src/utils/node/set-state.js new file mode 100644 index 0000000..4b60368 --- /dev/null +++ b/examples/views/demos/packages/topology/src/utils/node/set-state.js @@ -0,0 +1,27 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set node state + */ + +import theme from '../../theme' + +export default function(name, value, item) { + const group = item.getContainer() + const shape = group.get('children')[0] // 顺序根据 draw 时确定 + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'active') { + if (value) { + shape.attr(themeStyle.nodeStyle.active) + } else { + shape.attr(themeStyle.nodeStyle.inactive) + } + } else if (name === 'selected') { + if (value) { + group.attr(themeStyle.nodeStyle.selected) + } else { + group.attr(themeStyle.nodeStyle.default) + } + } + +} diff --git a/examples/views/demos/topology.vue b/examples/views/demos/topology.vue new file mode 100644 index 0000000..f021955 --- /dev/null +++ b/examples/views/demos/topology.vue @@ -0,0 +1,100 @@ + + + + + + + diff --git a/examples/views/demos/utils/index.js b/examples/views/demos/utils/index.js new file mode 100644 index 0000000..21ebc8c --- /dev/null +++ b/examples/views/demos/utils/index.js @@ -0,0 +1,47 @@ +/** + * Created by clay on 2019/10/14 + * Description: common utils + */ + +/** + * This is just a simple version of deep copy + * Has a lot of edge cases bug + * If you want to use a perfect deep copy, use lodash's _.cloneDeep + * @param {Object} source + * @returns {Object} targetObj + */ +export function deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments: deepClone') + } + let targetObj = source.constructor === Array ? [] : {} + Object.keys(source).forEach(key => { + if (source[key] && typeof source[key] === 'object') { + targetObj[key] = deepClone(source[key]) + } else { + targetObj[key] = source[key] + } + }) + return targetObj +} + +/** + * Randomly extract one or more elements from an array + * If you want to use a perfect solution, use lodash's _.sample or _.sampleSize + * @param {Array} arr + * @param {number} count + * @returns {Array} arr + */ +export function getRandomArrayElements(arr, count = 1) { + if (count > arr.length) { + throw new Error('error arguments: count is greater than length of array') + } + let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()) + temp = shuffled[index] + shuffled[index] = shuffled[i] + shuffled[i] = temp + } + return shuffled.slice(min) +} diff --git a/examples/views/error-pages/404.vue b/examples/views/error-pages/404.vue new file mode 100644 index 0000000..0861799 --- /dev/null +++ b/examples/views/error-pages/404.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2d2c6c5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12095 @@ +{ + "name": "@chaincloud/ClayTop", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@antv/dom-util": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/@antv/dom-util/download/@antv/dom-util-2.0.2.tgz", + "integrity": "sha1-THsKGV4CflVXBDWmglzsVt+wtZA=", + "requires": { + "tslib": "^1.10.0" + } + }, + "@antv/event-emitter": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@antv/event-emitter/download/@antv/event-emitter-0.1.2.tgz", + "integrity": "sha1-oXt8uG5tBxiA3Gv7IydW+IYk7Lw=" + }, + "@antv/g-base": { + "version": "0.4.7", + "resolved": "https://registry.npm.taobao.org/@antv/g-base/download/@antv/g-base-0.4.7.tgz", + "integrity": "sha1-dpj8TIyzgfK3iaMPvrJrHojEgZY=", + "requires": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.3", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "@types/d3-timer": "^1.0.9", + "d3-ease": "^1.0.5", + "d3-interpolate": "^1.3.2", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.2", + "resolved": "https://registry.npm.taobao.org/@antv/matrix-util/download/@antv/matrix-util-3.1.0-beta.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40antv%2Fmatrix-util%2Fdownload%2F%40antv%2Fmatrix-util-3.1.0-beta.2.tgz", + "integrity": "sha1-tK+vtw299Sr/yjCNNUbIoJD9I8o=", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^1.10.0" + } + } + } + }, + "@antv/g-canvas": { + "version": "0.4.13", + "resolved": "https://registry.npm.taobao.org/@antv/g-canvas/download/@antv/g-canvas-0.4.13.tgz", + "integrity": "sha1-xl3NUFNd0CjNWYOnBxVr5CxXRJY=", + "requires": { + "@antv/g-base": "^0.4.7", + "@antv/g-math": "^0.1.3", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "@antv/g-math": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/@antv/g-math/download/@antv/g-math-0.1.3.tgz", + "integrity": "sha1-iSL0S+90MUZAtZH1NYPBIXtxXA8=", + "requires": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "@antv/g-svg": { + "version": "0.4.7", + "resolved": "https://registry.npm.taobao.org/@antv/g-svg/download/@antv/g-svg-0.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40antv%2Fg-svg%2Fdownload%2F%40antv%2Fg-svg-0.4.7.tgz", + "integrity": "sha1-DWXh2zTm3+YJqts+3fR0jbAvCwE=", + "requires": { + "@antv/g-base": "^0.4.7", + "@antv/g-math": "^0.1.3", + "@antv/util": "~2.0.0", + "detect-browser": "^4.6.0" + }, + "dependencies": { + "detect-browser": { + "version": "4.8.0", + "resolved": "https://registry.npm.taobao.org/detect-browser/download/detect-browser-4.8.0.tgz?cache=0&sync_timestamp=1592803473542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdetect-browser%2Fdownload%2Fdetect-browser-4.8.0.tgz", + "integrity": "sha1-HXO9iMF76GaQGVDOCqrh7QYJAsY=" + } + } + }, + "@antv/g6": { + "version": "3.5.7", + "resolved": "https://registry.npm.taobao.org/@antv/g6/download/@antv/g6-3.5.7.tgz", + "integrity": "sha1-Xk2s4HjgjWUncCMMKonvUh1wxBM=", + "requires": { + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.4.1", + "@antv/g-canvas": "^0.4.3", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.4.1", + "@antv/hierarchy": "^0.6.2", + "@antv/matrix-util": "^2.0.4", + "@antv/path-util": "^2.0.3", + "@antv/scale": "^0.3.1", + "@antv/util": "~2.0.5", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "lodash": "^4.17.15", + "ml-matrix": "^6.5.0" + } + }, + "@antv/gl-matrix": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/@antv/gl-matrix/download/@antv/gl-matrix-2.7.1.tgz", + "integrity": "sha1-rLjjf3qz3wE0WrpDcteUK+QuuhQ=" + }, + "@antv/hierarchy": { + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/@antv/hierarchy/download/@antv/hierarchy-0.6.4.tgz", + "integrity": "sha1-jLCJo78op/pLP0PzLhEPyDTOohc=", + "requires": { + "@antv/util": "^2.0.7" + } + }, + "@antv/matrix-util": { + "version": "2.0.7", + "resolved": "https://registry.npm.taobao.org/@antv/matrix-util/download/@antv/matrix-util-2.0.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40antv%2Fmatrix-util%2Fdownload%2F%40antv%2Fmatrix-util-2.0.7.tgz", + "integrity": "sha1-pRkFmdQkwVGKG16zpUgnHX6Y/EQ=", + "requires": { + "@antv/gl-matrix": "^2.7.1", + "@antv/util": "^2.0.7", + "tslib": "^1.10.0" + } + }, + "@antv/path-util": { + "version": "2.0.8", + "resolved": "https://registry.npm.taobao.org/@antv/path-util/download/@antv/path-util-2.0.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40antv%2Fpath-util%2Fdownload%2F%40antv%2Fpath-util-2.0.8.tgz", + "integrity": "sha1-m8VNK3GYqtmIqcxKbekFTyaRm4Q=", + "requires": { + "@antv/util": "^2.0.9", + "tslib": "^1.10.0" + } + }, + "@antv/scale": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/@antv/scale/download/@antv/scale-0.3.1.tgz", + "integrity": "sha1-8QiFgnXKjCfXrz6zdXq3PyY2KZw=", + "requires": { + "@antv/util": "~2.0.3", + "fecha": "~3.0.3", + "tslib": "^1.10.0" + } + }, + "@antv/util": { + "version": "2.0.9", + "resolved": "https://registry.npm.taobao.org/@antv/util/download/@antv/util-2.0.9.tgz?cache=0&sync_timestamp=1588818415461&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40antv%2Futil%2Fdownload%2F%40antv%2Futil-2.0.9.tgz", + "integrity": "sha1-vT4pajkuEfvieB/eOdjnC6HFPtA=", + "requires": { + "tslib": "^1.10.0" + } + }, + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz", + "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.6.4", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.6.4.tgz", + "integrity": "sha1-br2f4Akl9sPhd7tyahiLX1eAiP8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.4", + "@babel/helpers": "^7.6.2", + "@babel/parser": "^7.6.4", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.3", + "@babel/types": "^7.6.3", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.6.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.6.4.tgz", + "integrity": "sha1-pPhDcoe/lnGwf0g7duO7cxvJdnE=", + "dev": true, + "requires": { + "@babel/types": "^7.6.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha1-Mj053QtQ4Qx8Bsp9djjmhk2MXDI=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha1-a2lijf5Ah3mODE7Zjj1Kay+9L18=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.4.4.tgz", + "integrity": "sha1-h8H4yhmtVSpzanonscH8+LH/H0M=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.6.0.tgz", + "integrity": "sha1-dpcRrMqIm+Nx6bwutoZB1VIYAh8=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.5.5", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4" + } + }, + "@babel/helper-define-map": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.5.5.tgz", + "integrity": "sha1-PewywgRvN+CbKMk+sLED/Sol02k=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha1-U3+hP28WdN90WwwA7I/k6ZaByPY=", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz", + "integrity": "sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha1-g1ctQyDipGVyY3NBE8QoaLZOScM=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha1-Api18lyMCcUxAtUqxKmPdz6yhQo=", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha1-H7W47ERTqTxDnun+Ou6kqEt2tZA=", + "dev": true, + "requires": { + "@babel/types": "^7.5.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0.tgz", + "integrity": "sha1-lggbcRHkhtpNLNlxrRpP4hbMLj0=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.5.5.tgz", + "integrity": "sha1-+E/4oJA43Lyh/UNVZhpQCTcWW0o=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha1-opIMVwKwc8Fd5REGIAqoytIEl9U=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha1-u7P77phmHFaQNCN8wDlnupm08lA=", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.5.5.tgz?cache=0&sync_timestamp=1563398528521&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-regex%2Fdownload%2F%40babel%2Fhelper-regex-7.5.5.tgz", + "integrity": "sha1-CqaCT3EAouDonBUnwjk2wVLKs1E=", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha1-Nh2AghtvONp1vT8HheziCojF/n8=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.5.5.tgz", + "integrity": "sha1-+EzkPfAxIi0rrQaNJibLV5nDS8I=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.5.5", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.1.0.tgz", + "integrity": "sha1-Ze65VMjCRb6qToWdphiPOdceWFw=", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.2.0.tgz", + "integrity": "sha1-xOABJEV2nigVtVKW6tQ6lYVJ9vo=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.6.2.tgz", + "integrity": "sha1-aB/+SJ6k3MVfI85GnljlnBwEUVM=", + "dev": true, + "requires": { + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.2", + "@babel/types": "^7.6.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz", + "integrity": "sha1-VtETEr2SSPphlZHQJHK+boyzJUA=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.6.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.6.4.tgz?cache=0&sync_timestamp=1570717401366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.6.4.tgz", + "integrity": "sha1-y5s2p0ghECgtXLbdQk7JJitHPYE=", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha1-somzBmadzkrSCwJSiJoVdoydQX4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.5.5.tgz", + "integrity": "sha1-qXTPrh43wxEOcfPGouSLjnGVjNQ=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.6.0.tgz", + "integrity": "sha1-ZlnSVyoX1wq9aBI+iaEqQ9kKoww=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.6.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-decorators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha1-j/zMjzplRen3iYi2v0/ogbiOgJY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha1-E12B7baKCB5V5W7EhUHs6AZcOPU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha1-BUE3YolPQb/kK5pegJGb1XXcyAI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha1-aeHw2zTG9aDPfiszI78VmnbIy38=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.2.0.tgz", + "integrity": "sha1-xQsblX3MaeSxEntl4cM+72FXDBs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha1-cr0T9v/h0lk4Ep0qGGsR/WKVFHA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha1-C4WjtLx830zEuL8jYzW5B8oi58c=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha1-O3o+czUQxX6CC5FCpleayLDfrS4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha1-qUAT1u2okI3+akd+f57ahWVuz1w=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha1-mur75Nb/xlY7+Pg3IJFijwB3lVA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha1-iaOEigFmYjtbxIEWS1k2q5R+iH4=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha1-XTzBHo1d3XUqpkyRSNDbbLef0ZA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha1-boVOUfu6qENRsV1N2v40LzpdVCo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha1-0JQpnZvWgKFKKg7a44MFrWD7Tek=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha1-g6ffamWIZbHI9kHVEMbzryICFto=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha1-RLvgi1f0SACU1X2f+82W0wkHW6Y=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha1-RKu5SLiPAZmmJwJOFQisr43Jsvk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha1-xdv1EGv4TN9pEiLAl0wSsd+TGFM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha1-pjhoKJ5bQAf3BU1GSRr1FDV2YAg=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha1-Amf8c14kyAi6FzhmxsTRRA/DxVY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha1-4UNhFquwYQwiWQlISHVKxSMJIq0=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha1-aQNT6B+SZ9rU/Yz9d+r6hqulPqE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha1-7wBDXUbaCllhqnKKHS7P8GPk+5E=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha1-Od/pV95EIERfH8+ItoouSqRRVIY=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha1-51JmoT75QgLbKgYgl3dW9R1S0kk=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha1-dnjOdRafCHe46yI1U4wHQmjdAa4=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", + "integrity": "sha1-qqbkCd1PsuULbiqR9+OjFJ284M8=", + "dev": true, + "requires": { + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha1-GNEgQ4sMye6VpH8scryXaPvtYKU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha1-xwAh34NAc8ZethO4Z5zEo4HRqfk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha1-dVbPA/MYvScZ/kySLS2Ai+VXHhY=", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha1-Yp3IJRLFXO4BNB+ye9/LIQNUaA8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.6.2.tgz", + "integrity": "sha1-Jmn2fB+uCujYv2luQmOtUsuYtvg=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha1-YzOu4vjW7n4oYVRXKYk0o7RhmPA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha1-/HfPeYsksQxG4bUbG4jCv2YbuN0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha1-oeRUtZlVYKnB4NU338FQYf0mh+E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha1-nSj+p7vOY3+3YSoHUJidgyHUvLA=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha1-EX0rzsL79ktLWdH5gZiUaC0p8rI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.6.2", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha1-tpKq2Iin6NixshS+a53APVAx9pg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/preset-env": { + "version": "7.3.4", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz", + "integrity": "sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.3.4", + "@babel/plugin-transform-classes": "^7.3.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.3.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.3.4", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/runtime": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.6.3.tgz", + "integrity": "sha1-k1Eix0xz0iQMr9Mt21/Cps01zx8=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz", + "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=", + "dev": true + } + } + }, + "@babel/runtime-corejs2": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.6.3.tgz", + "integrity": "sha1-3j9Eaz+2iLmMvSIEdNGnytkJvLg=", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz", + "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.6.0.tgz", + "integrity": "sha1-fwFZx/UBIjDa1kzKQuyb21yVNuY=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "@babel/traverse": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.6.3.tgz", + "integrity": "sha1-ZtfboUawhnA8D7EN1Yi3NkzsR/k=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.3", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.3", + "@babel/types": "^7.6.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.6.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.6.3.tgz", + "integrity": "sha1-PwfZb4VPmOL71FxksMuULRHougk=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@hapi/address": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.2.tgz", + "integrity": "sha1-HHlM1tvyNU0ese8Q4DA/Vz4cciI=", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz", + "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=", + "dev": true + }, + "@hapi/hoek": { + "version": "8.3.0", + "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.3.0.tgz?cache=0&sync_timestamp=1570245875776&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.3.0.tgz", + "integrity": "sha1-K52xzQDziRAFx3s6jWCLiKbQqk0=", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz", + "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.5", + "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.5.tgz?cache=0&sync_timestamp=1570335484252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.5.tgz", + "integrity": "sha1-O66hfkVlMO2taadcP8fN6X3W0zE=", + "dev": true, + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1566430562325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@types/d3-timer": { + "version": "1.0.9", + "resolved": "https://registry.npm.taobao.org/@types/d3-timer/download/@types/d3-timer-1.0.9.tgz", + "integrity": "sha1-rtG94M8Ykg0z9dRIOdc945NjP9M=" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1567532284800&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&sync_timestamp=1567532885668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", + "dev": true + }, + "@types/node": { + "version": "12.7.12", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.7.12.tgz", + "integrity": "sha1-fGxXHMLz86xKWaXyvUj1vbyGU8w=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz?cache=0&sync_timestamp=1567534086032&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.2.tgz", + "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=", + "dev": true + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.0.0.tgz", + "integrity": "sha1-68vznDEslBFMjE9AfuT2yXqkVDI=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.12.0.tgz", + "integrity": "sha1-dsye4sNXJc5nPHgyG5G7YCEMHHU=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.1.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.4.0", + "@babel/preset-env": "^7.0.0 < 7.4.0", + "@babel/runtime": "^7.0.0", + "@babel/runtime-corejs2": "^7.2.0", + "@vue/babel-preset-jsx": "^1.0.0", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "3.2.0", + "core-js": "^2.6.5" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.1.tgz?cache=0&sync_timestamp=1570771266201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-jsx%2Fdownload%2F%40vue%2Fbabel-preset-jsx-1.1.1.tgz", + "integrity": "sha1-OnRkLKDs6hCq4TZJ31/3D50kpvU=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0", + "@vue/babel-sugar-functional-vue": "^1.0.0", + "@vue/babel-sugar-inject-h": "^1.0.0", + "@vue/babel-sugar-v-model": "^1.1.1", + "@vue/babel-sugar-v-on": "^1.1.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.0.0.tgz", + "integrity": "sha1-F+LEyie3SyRNo7kjJA7JHRAEjLM=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.0.0.tgz", + "integrity": "sha1-5e+2xbW3mI3AODGvbRM797zeY0c=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.1.tgz", + "integrity": "sha1-oPB1D87iB2mAWiAXgpnuvUur8lo=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.0.tgz", + "integrity": "sha1-Hys17uq7h+r4klkx9NNP2OZASkU=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-3.12.0.tgz", + "integrity": "sha1-62r+k7zEJIirmd2AaS7zr7sJ73c=", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-3.12.0.tgz", + "integrity": "sha1-Kozj1aAwvFJWw/shKwzzL/HejqU=", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@vue/babel-preset-app": "^3.12.0", + "@vue/cli-shared-utils": "^3.12.0", + "babel-loader": "^8.0.5", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-3.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-3.12.0.tgz", + "integrity": "sha1-8CmQtpO9H1ISfxPOFKHgbYrYQWQ=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^3.12.0", + "babel-eslint": "^10.0.1", + "eslint": "^4.19.1", + "eslint-loader": "^2.1.2", + "eslint-plugin-vue": "^4.7.1", + "globby": "^9.2.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz", + "integrity": "sha1-MtHWU+HZBAiFS/spbwdux+GGowA=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-plugin-vue": { + "version": "4.7.1", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz", + "integrity": "sha1-yCm5/GJYLBiXtaC5Sv1E7MpRHmM=", + "dev": true, + "optional": true, + "requires": { + "vue-eslint-parser": "^2.0.3" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz", + "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "optional": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true, + "optional": true + } + } + }, + "@vue/cli-service": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-3.12.0.tgz", + "integrity": "sha1-1FeMObcIR5PyuKU3W010YpWqNvs=", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@vue/cli-overlay": "^3.12.0", + "@vue/cli-shared-utils": "^3.12.0", + "@vue/component-compiler-utils": "^3.0.0", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^6.1.1", + "acorn-walk": "^6.1.1", + "address": "^1.0.3", + "autoprefixer": "^9.5.1", + "browserslist": "^4.5.4", + "cache-loader": "^2.0.1", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-highlight": "^2.1.0", + "clipboardy": "^2.0.0", + "cliui": "^5.0.0", + "copy-webpack-plugin": "^4.6.0", + "css-loader": "^1.0.1", + "cssnano": "^4.1.10", + "current-script-polyfill": "^1.0.0", + "debug": "^4.1.1", + "default-gateway": "^5.0.2", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "escape-string-regexp": "^1.0.5", + "file-loader": "^3.0.1", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^1.0.2", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.8.0", + "minimist": "^1.2.0", + "ora": "^3.4.0", + "portfinder": "^1.0.20", + "postcss-loader": "^3.0.0", + "read-pkg": "^5.0.0", + "semver": "^6.0.0", + "slash": "^2.0.0", + "source-map-url": "^0.4.0", + "ssri": "^6.0.1", + "string.prototype.padend": "^3.0.0", + "terser-webpack-plugin": "^1.2.3", + "thread-loader": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.7.0", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.3.0", + "webpack-chain": "^4.11.0", + "webpack-dev-server": "^3.4.1", + "webpack-merge": "^4.2.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/cli-shared-utils": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-3.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-3.12.0.tgz", + "integrity": "sha1-SPzXhhKc8CJ4uckfLDSRGZ93ckg=", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.0.0", + "string.prototype.padstart": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.0.0.tgz", + "integrity": "sha1-0W+ia4NsBt9bqutF89gK/EfjVjQ=", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/eslint-config-prettier": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/@vue/eslint-config-prettier/download/@vue/eslint-config-prettier-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Feslint-config-prettier%2Fdownload%2F%40vue%2Feslint-config-prettier-4.0.1.tgz", + "integrity": "sha1-oDbQ0hk8XINlQrNaOnw1xOHGjJc=", + "dev": true, + "requires": { + "eslint-config-prettier": "^3.3.0", + "eslint-plugin-prettier": "^3.0.0", + "prettier": "^1.15.2" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.1.tgz", + "integrity": "sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo=", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz", + "integrity": "sha1-uw5G8VhafiibTuYGfcxaauYvHdE=", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz", + "integrity": "sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz", + "integrity": "sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz", + "integrity": "sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz", + "integrity": "sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz", + "integrity": "sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz", + "integrity": "sha1-3vS5knsBAdyMu9jR7bW3ucguskU=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha1-U3p1Dt31weky83RCBlUckcG5PmE=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz", + "integrity": "sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz", + "integrity": "sha1-cSMp2+8kDza/V70ve4+5v0FUQh4=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz", + "integrity": "sha1-BE7es06mefPgTNT9mCTV41dnrhA=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz", + "integrity": "sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz", + "integrity": "sha1-li2hKqWswcExyBxCMpkcgs5W4Bo=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz", + "integrity": "sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz", + "integrity": "sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz", + "integrity": "sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz", + "integrity": "sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz", + "integrity": "sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz", + "integrity": "sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4=", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "optional": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true, + "optional": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz", + "integrity": "sha1-Ejy487hMIXHx9/slJhWxx4prGow=", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faddress%2Fdownload%2Faddress-1.1.2.tgz", + "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz", + "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz", + "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz", + "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1566430562325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz", + "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/array-union/download/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.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz", + "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz", + "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", + "dev": true + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz", + "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=", + "requires": { + "babel-runtime": "6.x" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "autoprefixer": { + "version": "9.6.4", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.4.tgz", + "integrity": "sha1-5kU75HrzFrKSPq6u2Hhg9SrUt+s=", + "dev": true, + "requires": { + "browserslist": "^4.7.0", + "caniuse-lite": "^1.0.30000998", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.18", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz", + "integrity": "sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck=", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1566430562325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.0.3", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.3.tgz", + "integrity": "sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=" + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz", + "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha1-8A9Qe9qjw+P/bn5emNkKesq5b38=", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha1-3fpeMB47mqEthSqZefGLN4gf9ac=", + "dev": true, + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "http://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "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": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", + "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", + "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "bluebird": { + "version": "3.7.0", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.0.tgz?cache=0&sync_timestamp=1569957137990&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.0.tgz", + "integrity": "sha1-VqaohuA/auV3z/7etST48kUCk88=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "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": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.7.0.tgz", + "integrity": "sha1-nuiSJf/AfbA0CfL+5STcgidFihc=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz?cache=0&sync_timestamp=1569877543868&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.3.tgz", + "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "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" + } + }, + "cache-loader": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-2.0.1.tgz", + "integrity": "sha1-V1j0GmLXwjlB48PHAW5vrrA6ywc=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.0", + "normalize-path": "^3.0.0", + "schema-utils": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz?cache=0&sync_timestamp=1562668933683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-callsite%2Fdownload%2Fcaller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "optional": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true, + "optional": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000999", + "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000999.tgz", + "integrity": "sha1-QnJTpprXvqSqjYNFaHuO7FHKDkM=", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.2.0.tgz", + "integrity": "sha1-M3HvY2XvnCX6S4HBas4OnH3FjD4=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true, + "optional": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz", + "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.3.tgz", + "integrity": "sha1-Qtg31SOWiNVfMDADpQgjD6ZycUI=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz", + "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz", + "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz", + "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", + "dev": true, + "optional": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "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": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz", + "integrity": "sha1-LUEe92uFabbQyEBo2r6FsKpeXBc=", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.1.tgz", + "integrity": "sha1-IYAiPVFhixEvRQnPluSmx1Cwfpc=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^4.0.0", + "yargs": "^13.0.0" + } + }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz", + "integrity": "sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c=", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clipboardy": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclipboardy%2Fdownload%2Fclipboardy-2.1.0.tgz", + "integrity": "sha1-ASOgyPrJLyVtxWM14LuL6XpJCaU=", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz", + "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", + "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz", + "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor-convert%2Fdownload%2Fcolor-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz", + "integrity": "sha1-bowQihatWDhKl386SCyiC/8vOME=", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompression%2Fdownload%2Fcompression-1.7.4.tgz", + "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz", + "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz", + "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha1-5/QN2KaEd9QF3Rt6hUquMksVi64=", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz?cache=0&sync_timestamp=1569877543868&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-10.0.4.tgz", + "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz?cache=0&sync_timestamp=1562335642755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz", + "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz", + "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz", + "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz", + "integrity": "sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-1.0.1.tgz", + "integrity": "sha1-aIW7UjOzXsR7AGBX2gHMZAtref4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-select": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/css-select/download/css-select-2.0.2.tgz", + "integrity": "sha1-q0OGzsnh9miFVWSxfDcztDsqXt4=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz?cache=0&sync_timestamp=1568375270709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.33", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.33.tgz", + "integrity": "sha1-lw4g5akfejeN3Q/FjQtsjU876T4=", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.5.3" + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1564773794818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz", + "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=", + "dev": true + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz", + "integrity": "sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz", + "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz", + "integrity": "sha1-e564vmFiiXPBsmHhadLwJACOdYs=", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha1-P6nU7zFCy9HDAedmTB81K9gvWjk=", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&sync_timestamp=1562672674261&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz", + "integrity": "sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE=", + "dev": true + } + } + }, + "current-script-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/current-script-polyfill/download/current-script-polyfill-1.0.0.tgz", + "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/d3-color/download/d3-color-1.4.1.tgz", + "integrity": "sha1-xSACv4hGraRCTVXZeYL+8m6zvIo=" + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/d3-dispatch/download/d3-dispatch-1.0.6.tgz", + "integrity": "sha1-ANN7zuTdjNl3Kd2JOgrCnKq6XVg=" + }, + "d3-ease": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/d3-ease/download/d3-ease-1.0.6.tgz", + "integrity": "sha1-69ttoi36wKIiIvLU2gb2bEFqDsA=" + }, + "d3-force": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/d3-force/download/d3-force-2.0.1.tgz", + "integrity": "sha1-MXUO7oxDU1MB1XEZW/loO+2lNOI=", + "requires": { + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/d3-interpolate/download/d3-interpolate-1.4.0.tgz", + "integrity": "sha1-Um554tgNqjg/ngwcHH3MDwWD6Yc=", + "requires": { + "d3-color": "1" + } + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/d3-quadtree/download/d3-quadtree-1.0.7.tgz", + "integrity": "sha1-youE33u1N2P+PC8kvUNRN/TlMTU=" + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/d3-timer/download/d3-timer-1.0.10.tgz", + "integrity": "sha1-3+dripF0iDGxO22ceT/71QjdneU=" + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npm.taobao.org/dagre/download/dagre-0.8.5.tgz", + "integrity": "sha1-ujCwBV2sErbB/MJHgXRCd30Gr+4=", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.0.tgz", + "integrity": "sha1-MQPN+KttMs9KjfeGVFjyuNM/N0U=", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1570547201087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz", + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=" + }, + "default-gateway": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.3.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.3.tgz", + "integrity": "sha1-GENMlDChgDWihh94Ob92abNDbm8=", + "dev": true, + "requires": { + "execa": "^2.0.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.1.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-7.0.1.tgz", + "integrity": "sha1-CrVihuD3wk4VPQTMKqAn5DqaXRQ=", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-2.1.0.tgz", + "integrity": "sha1-5dPs2DfSpg7FDz2nj9OXZ3R7vpk=", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^3.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz", + "integrity": "sha1-ASA83JJZf5uQkGfD5lbMH008Tck=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-3.1.0.tgz", + "integrity": "sha1-f5G+MX9qRm7+08nymArYpO6LD6U=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz", + "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=", + "dev": true + }, + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.0.tgz", + "integrity": "sha1-maENhwqAO91e5vBHDljfzS+aVNM=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true + }, + "which": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.1.tgz?cache=0&sync_timestamp=1570145314160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.1.tgz", + "integrity": "sha1-8c+U0HqOVxtv8AauuR0DAMR+8KQ=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&sync_timestamp=1566558736172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz", + "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz?cache=0&sync_timestamp=1562335642755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-browser": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/detect-browser/download/detect-browser-5.1.1.tgz?cache=0&sync_timestamp=1592803473542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdetect-browser%2Fdownload%2Fdetect-browser-5.1.1.tgz", + "integrity": "sha1-qADbkdP9YNCGFmn1mE8b6f++AJw=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "dev": true, + "optional": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz", + "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.1.tgz?cache=0&sync_timestamp=1564710970695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.1.tgz", + "integrity": "sha1-E2UMhQ2v/qNdi2JqTPxNOhdkP9s=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz", + "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-7.0.0.tgz", + "integrity": "sha1-or481Sc2ZzIG6KhftSEO6ilijnw=", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fejs%2Fdownload%2Fejs-2.7.1.tgz", + "integrity": "sha1-W1q1f3GLedSsqSVEV6/s02+oAig=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.280", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.280.tgz", + "integrity": "sha1-X4lQyDKePhG1nHBf1ZtLjZs95bk=", + "dev": true + }, + "element-ui": { + "version": "2.12.0", + "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.12.0.tgz", + "integrity": "sha1-qJO8Ea5Pfbt+nVQWBvI+ZD8THuQ=", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.1", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.1.tgz?cache=0&sync_timestamp=1567564506448&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.1.tgz", + "integrity": "sha1-w4D1+Qm/G5tEKNAozRjTsO/WtSs=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz", + "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.4.tgz?cache=0&sync_timestamp=1568768368147&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferror-stack-parser%2Fdownload%2Ferror-stack-parser-2.0.4.tgz", + "integrity": "sha1-p1c5fcXZ3pc6yaXX1Oit58+ukQE=", + "dev": true, + "requires": { + "stackframe": "^1.1.0" + } + }, + "es-abstract": { + "version": "1.15.0", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.15.0.tgz", + "integrity": "sha1-iISSjsfkCnnjybyBLTfRDIskzFc=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz", + "integrity": "sha1-7fckeAM0VujdqO8J4ArZZQcH83c=", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-5.16.0.tgz", + "integrity": "sha1-oeOsGq5KP72Clvz496tzFMu2q+o=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.0.2.tgz", + "integrity": "sha1-hLaOpEs3PE+GhgI6VR9hoht8Sk8=", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz", + "integrity": "sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o=", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.1.0.tgz?cache=0&sync_timestamp=1561888919431&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.1.0.tgz", + "integrity": "sha1-bTP6Hc7235MPrgA0RvM0Fa+QURg=", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz", + "integrity": "sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo=", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&sync_timestamp=1567160849322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "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.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-prettier": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-3.6.0.tgz", + "integrity": "sha1-jKP/rEvW7u9iOgZR+ddUkA4+whc=", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz", + "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.1.1.tgz", + "integrity": "sha1-UHuFYkENAqA/DdyUnGFvh3hS8ro=", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-5.2.3.tgz", + "integrity": "sha1-PudZfYI7VHiASy/rqYY7G3QnOWE=", + "dev": true, + "requires": { + "vue-eslint-parser": "^5.0.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.0.2.tgz", + "integrity": "sha1-hLaOpEs3PE+GhgI6VR9hoht8Sk8=", + "dev": true + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-4.1.0.tgz", + "integrity": "sha1-co1UUeD9FWwEOEp62J7VH/VOsl8=", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "vue-eslint-parser": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz", + "integrity": "sha1-APTk2pTsl0uCGib/DtD3p4QCuKE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.1.0", + "esquery": "^1.0.1", + "lodash": "^4.17.11" + } + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.2.tgz", + "integrity": "sha1-FmpRgO9qt+tGLxYv0ObyRj1zCas=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705483230&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz", + "integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=", + "dev": true, + "optional": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-5.7.3.tgz", + "integrity": "sha1-Z6ojG/iBKXS4UjWpZ3Hra9B+onk=", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz", + "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz", + "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz?cache=0&sync_timestamp=1560950873670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.0.tgz", + "integrity": "sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.0.0.tgz", + "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "http://registry.npm.taobao.org/expand-brackets/download/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": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/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": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-2.2.0.tgz", + "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=", + "dev": true, + "optional": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "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": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/extend-shallow/download/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": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "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.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.2.0.tgz", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz", + "integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/fecha/download/fecha-3.0.3.tgz", + "integrity": "sha1-+rvUFkl2SaQsJNNL+nJrV5IDoeI=" + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz", + "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "optional": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz", + "integrity": "sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz?cache=0&sync_timestamp=1570604854141&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilesize%2Fdownload%2Ffilesize-3.6.1.tgz", + "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/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": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz", + "integrity": "sha1-qbezF+tbmGDNqdVHQKjIM3oig6I=", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz", + "integrity": "sha1-LC73dSXMKSkAff/6HdMUqpyd7m8=", + "dev": true, + "optional": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz?cache=0&sync_timestamp=1561466276595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.9.0.tgz", + "integrity": "sha1-jVvNxltxCP4VCGScecEtcy3O208=", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz?cache=0&sync_timestamp=1569891146996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.9.tgz", + "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "http://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/gl-matrix/download/gl-matrix-3.3.0.tgz", + "integrity": "sha1-Iy7vYLHIswooy751ssr2xI/WNYs=" + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz", + "integrity": "sha1-qmCKL2xXetNX4a5aXCbZqNGWklU=", + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz?cache=0&sync_timestamp=1562335642755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.2.tgz", + "integrity": "sha1-bwlSYF0BQMHP2xOO0AV3W5LWewI=", + "dev": true + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/graphlib/download/graphlib-2.1.8.tgz", + "integrity": "sha1-V2HUFHN4cAhMkux7XbywWSydNdo=", + "requires": { + "lodash": "^4.17.15" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", + "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz", + "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/has-value/download/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": "http://registry.npm.taobao.org/has-values/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true + }, + "highlight.js": { + "version": "9.15.10", + "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.15.10.tgz", + "integrity": "sha1-exjtdckDSMBF7vntCMoTGaIhmtI=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", + "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz?cache=0&sync_timestamp=1570493570687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.5.tgz", + "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", + "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-tags%2Fdownload%2Fhtml-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1563437816811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1564773692945&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.4.0.tgz", + "integrity": "sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz?cache=0&sync_timestamp=1568770896103&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.0.tgz", + "integrity": "sha1-2+VfY+daNH2389mZdPJpKjFKajo=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz?cache=0&sync_timestamp=1567540944297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy-middleware%2Fdownload%2Fhttp-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/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" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1561888919431&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz", + "integrity": "sha1-ndLyrXZdyrH/BEO0kUQqILoifck=", + "dev": true, + "optional": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz", + "integrity": "sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-any-array": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/is-any-array/download/is-any-array-0.0.3.tgz", + "integrity": "sha1-y92McYnUe1OwUJaSRfTvflVVC5s=" + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz", + "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", + "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "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": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/is-number/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz?cache=0&sync_timestamp=1562347283002&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-cwd%2Fdownload%2Fis-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-promise%2Fdownload%2Fis-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz", + "integrity": "sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg=", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&sync_timestamp=1569219566107&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz", + "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", + "dev": true + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz", + "integrity": "sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0=", + "dev": true + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1567740732347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", + "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", + "dev": true + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.1.tgz", + "integrity": "sha1-gbbLBOm6SW8ccAXQe0NoomOPkLY=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/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" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", + "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-fs-cache": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz", + "integrity": "sha1-VM7fa3J+F3n9jwEgXwX26IcG8IY=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz", + "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.4", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.6.4.tgz", + "integrity": "sha1-9Aj08Abbg1TQV33PbTNIWzy5DVY=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "http://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/mamacro/download/mamacro-0.0.3.tgz", + "integrity": "sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q=", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1562672674261&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz", + "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.4.tgz", + "integrity": "sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz?cache=0&sync_timestamp=1569468742433&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.40.0.tgz", + "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.24.tgz", + "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.8.0.tgz?cache=0&sync_timestamp=1563310319732&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha1-gdQexP5YxxOpatfHI82y0L1NcOE=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ml-array-max": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/ml-array-max/download/ml-array-max-1.1.2.tgz", + "integrity": "sha1-rBSklU69ufQBd0zBVy/OQ54S+U0=", + "requires": { + "is-any-array": "^0.0.3" + } + }, + "ml-array-min": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/ml-array-min/download/ml-array-min-1.1.2.tgz", + "integrity": "sha1-oIQ3D+eJmKQTHVZtBm7gG8zOJTo=", + "requires": { + "is-any-array": "^0.0.3" + } + }, + "ml-array-rescale": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/ml-array-rescale/download/ml-array-rescale-1.3.1.tgz", + "integrity": "sha1-flWHGvh0HSEuK0e4rNVVcZNsgis=", + "requires": { + "is-any-array": "^0.0.3", + "ml-array-max": "^1.1.2", + "ml-array-min": "^1.1.2" + } + }, + "ml-matrix": { + "version": "6.5.0", + "resolved": "https://registry.npm.taobao.org/ml-matrix/download/ml-matrix-6.5.0.tgz", + "integrity": "sha1-Pzu8VKaUoKz2f+t6dQqQOsJo1yw=", + "requires": { + "ml-array-rescale": "^1.3.1" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz", + "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "http://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "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" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz", + "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "http://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "http://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1569524669712&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz", + "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz", + "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-libs-browser%2Fdownload%2Fnode-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.35", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.35.tgz?cache=0&sync_timestamp=1570538675820&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.35.tgz", + "integrity": "sha1-MqdKPNSXqnfyPVCfSDR1/RYOTEg=", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "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": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz", + "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/object-copy/download/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": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=", + "dev": true + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.6.0.tgz", + "integrity": "sha1-xwtsv3LydKq0w0wMgvUWe/gs8Vs=", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/object-visit/download/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.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz", + "integrity": "sha1-v2gQ712j5TJXkOqqK+IT6oRiTak=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", + "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz", + "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz", + "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopn%2Fdownload%2Fopn-5.5.0.tgz", + "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "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" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz", + "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&sync_timestamp=1560274285880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz?cache=0&sync_timestamp=1559922734651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-defer%2Fdownload%2Fp-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz", + "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz?cache=0&sync_timestamp=1563032875018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz", + "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz", + "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz", + "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz", + "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz", + "integrity": "sha1-qgeniMwxUck5tRMfY1cPDdIAlTc=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz", + "integrity": "sha1-KYuJ34uTsCIdv0Ia0rGx6iP8Z3c=", + "dev": true, + "optional": true + }, + "portfinder": { + "version": "1.0.24", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.24.tgz", + "integrity": "sha1-Ee+8aGXxLzdiS2Ux6tHYCe2WXPo=", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.18", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.18.tgz", + "integrity": "sha1-S5zala5sBpxnpNkzAp7d1IOKwjM=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz", + "integrity": "sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY=", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz", + "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz", + "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz", + "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz", + "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-1.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha1-3IfjQUjsfqtfeR981YSYMzdbdBo=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha1-JJBENWaXsztk8aj3yAki3d7nGVw=", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz", + "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.16.3", + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.16.3.tgz", + "integrity": "sha1-jGIWhFO63vcC80tFtu6JlXSmpl0=", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz", + "integrity": "sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.4.0.tgz", + "integrity": "sha1-XdJhVs22n6H9uKsZkWZ9P4DO18I=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&sync_timestamp=1569938200736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&sync_timestamp=1567268249563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz", + "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz", + "integrity": "sha1-c+URTJhtFD76NxLU6iTbmkJm9g8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "dev": true, + "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": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.1.tgz?cache=0&sync_timestamp=1563549978509&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.1.tgz", + "integrity": "sha1-Oy/OThq3cywI9mXf2zFHScfd0vs=", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha1-azByTjBqJ4M+6xcbZqyIkLo35Bw=", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz?cache=0&sync_timestamp=1567160849322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-1.1.0.tgz", + "integrity": "sha1-DjUW3Qt5BPQT0tQZPc5GGMOmias=", + "dev": true, + "optional": true + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.6.0.tgz?cache=0&sync_timestamp=1568375270709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.6.0.tgz", + "integrity": "sha1-IDfBizJ8/Oim/qKk7EQfJDKvuLY=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.0.tgz", + "integrity": "sha1-p2NNwI+JIJwgSa3aNSVxH7lyZd0=", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.0.tgz", + "integrity": "sha1-8eaui32iuulsmTmbhozWyTOiupw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz", + "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "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.0", + "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.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.2.tgz", + "integrity": "sha1-M59qq6vK/bMceZ/xWHADNjAdM0Y=", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.7.tgz", + "integrity": "sha1-pJhopiS96lBp8SUdCoNuDYmqLFk=", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "optional": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freselect%2Fdownload%2Freselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.12.0.tgz?cache=0&sync_timestamp=1564641434608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.12.0.tgz", + "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true, + "optional": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true, + "optional": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "optional": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz?cache=0&sync_timestamp=1568815682378&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sass": { + "version": "1.23.0", + "resolved": "https://registry.npm.taobao.org/sass/download/sass-1.23.0.tgz", + "integrity": "sha1-vVJv9A28XQmk7Wniz/qEl0mXdxA=", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz", + "integrity": "sha1-pb9ooEvOocE/+ELXRxUPerfQ0j8=", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz?cache=0&sync_timestamp=1569952074772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.7.tgz", + "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.9.1.tgz?cache=0&sync_timestamp=1567600506467&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-1.9.1.tgz", + "integrity": "sha1-z8IArvd7YAxH2pu4FJyUPnmML9s=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "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": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz", + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsha.js%2Fdownload%2Fsha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz", + "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz", + "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz", + "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz", + "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=", + "dev": true, + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "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": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "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": "http://registry.npm.taobao.org/define-property/download/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": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "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": "http://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&sync_timestamp=1566505930428&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz", + "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1565864727994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "dev": true, + "requires": { + "atob": "^2.1.1", + "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.5.13", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.13.tgz", + "integrity": "sha1-MbJKnC5zwt6FBmwP631Edn7VKTI=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.1.tgz", + "integrity": "sha1-bxLtHF236k8k67i4m6WMh8CCV/I=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.4.0.tgz", + "integrity": "sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "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" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz", + "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "dev": true + }, + "stackframe": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.1.0.tgz", + "integrity": "sha1-4/wuuRIllHnJgi99Hx/zZb1cvIM=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "http://registry.npm.taobao.org/static-extend/download/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": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string.prototype.padstart": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/string.prototype.padstart/download/string.prototype.padstart-3.0.0.tgz", + "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimleft%2Fdownload%2Fstring.prototype.trimleft-2.1.0.tgz", + "integrity": "sha1-bMR/DX641isPNwFhFxWjlUWR1jQ=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimright%2Fdownload%2Fstring.prototype.trimright-2.1.0.tgz", + "integrity": "sha1-Zp0WS+nfm291WfqOiZRbFopabFg=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz", + "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.0.tgz", + "integrity": "sha1-uuUbqV3tmjOja3xGzpw1mukVQxM=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.33", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz", + "integrity": "sha1-ozRHN1OR52atNNNIbm4q7chNLjY=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "terser": { + "version": "4.3.8", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.3.8.tgz", + "integrity": "sha1-cH8F8/TBxwyEDmJq3f2xwVihcTY=", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha1-YbGOQOruW+l+dxzbsQ7RKAiIwrQ=", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz", + "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz", + "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0=" + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.0.3.tgz", + "integrity": "sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.11.tgz", + "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/to-object-path/download/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": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "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.npm.taobao.org/to-regex-range/download/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" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz", + "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", + "dev": true + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz", + "integrity": "sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/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.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1569404138136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1570521741655&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz", + "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha1-W0tCbgjROoA2Xg1lesemwexGonc=", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha1-qcxsx85joKMCP8meNBuUQx1AWlc=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz", + "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/unset-value/download/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": "http://registry.npm.taobao.org/has-value/download/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.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz", + "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz", + "integrity": "sha1-uXHRkbg69pPF4/6kBkvp4fLX+Ng=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz", + "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz", + "integrity": "sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.3.tgz", + "integrity": "sha1-pkZ3gavTZiF8BQ+CAuflDMnu+MA=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fverror%2Fdownload%2Fverror-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" + } + }, + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz", + "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=", + "dev": true + }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz", + "integrity": "sha1-pysaQqTYKnIepDjRtr9V5mGVxjc=" + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE=", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz", + "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", + "dev": true + }, + "vue-loader": { + "version": "15.7.1", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.7.1.tgz?cache=0&sync_timestamp=1563435501637&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.7.1.tgz", + "integrity": "sha1-bMrNQSKqgPabqqwI/ylaYuOu/P0=", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.0.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-router": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.1.3.tgz", + "integrity": "sha1-5rFPq8DA7p/aDiy72nSzUOKOQSs=" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz", + "integrity": "sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.10", + "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz", + "integrity": "sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw=", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", + "dev": true + }, + "vuex": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.1.tgz", + "integrity": "sha1-DCZL/jDNvM+Wq52zF30hGCilkQ4=" + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz", + "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.41.0", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.41.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.41.0.tgz", + "integrity": "sha1-22olS95nF2n3wU6QoaVec2Avxws=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + } + }, + "webpack-bundle-analyzer": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.5.2.tgz", + "integrity": "sha1-rAKDT0sx3o4n1x5semEjAevdt58=", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + } + }, + "webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz", + "integrity": "sha1-bIQ5u7KrVQlS1g4eqTGRQZBsAqY=", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", + "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.8.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.8.2.tgz", + "integrity": "sha1-MpJCe/ZRDamjrC1QC5JKQZdmf/k=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.24", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz", + "integrity": "sha1-qgeniMwxUck5tRMfY1cPDdIAlTc=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1564684394562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&sync_timestamp=1566978693896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz", + "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1568302837530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz", + "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz", + "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1570145314160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/write/download/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-13.3.0.tgz", + "integrity": "sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM=", + "dev": true, + "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.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz", + "integrity": "sha1-qgeniMwxUck5tRMfY1cPDdIAlTc=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.1.tgz", + "integrity": "sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz", + "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f613c6e --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "@chaincloud/ClayTop", + "version": "0.1.0", + "description": "A visual graph editor based on G6 and Vue.js.", + "author": "clay ", + "main": "lib/ClayTop.common.js", + "keywords": [ + "vue", + "graph", + "graph editor", + "topo", + "topology" + ], + "license": "MIT", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "lib": "vue-cli-service build --target lib --name ClayTop --dest lib packages/index.js" + }, + "dependencies": { + "@antv/g6": "^3.5.7", + "core-js": "^2.6.5", + "element-ui": "^2.11.1", + "jquery": "^3.6.0", + "vue": "^2.6.10", + "vue-router": "^3.0.3", + "vuex": "^3.0.1" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.9.0", + "@vue/cli-plugin-eslint": "^3.9.0", + "@vue/cli-service": "^3.9.0", + "@vue/eslint-config-prettier": "^4.0.1", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.0.0", + "sass": "^1.18.0", + "sass-loader": "^7.1.0", + "vue-template-compiler": "^2.6.10" + } +} diff --git a/packages-含有注释代码/assets/iconfont/iconfont.css b/packages-含有注释代码/assets/iconfont/iconfont.css new file mode 100644 index 0000000..e43ff4c --- /dev/null +++ b/packages-含有注释代码/assets/iconfont/iconfont.css @@ -0,0 +1,127 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1568972645985'); /* IE9 */ + src: url('iconfont.eot?t=1568972645985#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1568972645985') format('woff'), + url('iconfont.ttf?t=1568972645985') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1568972645985#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-download:before { + content: "\e68d"; +} + +.icon-zoom-out:before { + content: "\e69c"; +} + +.icon-image:before { + content: "\e752"; +} + +.icon-iconedit:before { + content: "\e650"; +} + +.icon-actualsize:before { + content: "\e665"; +} + +.icon-copy:before { + content: "\e61c"; +} + +.icon-zoom-in:before { + content: "\e600"; +} + +.icon-clear:before { + content: "\e700"; +} + +.icon-flow-line:before { + content: "\e660"; +} + +.icon-redo:before { + content: "\e716"; +} + +.icon-undo:before { + content: "\e71a"; +} + +.icon-fit:before { + content: "\e7cb"; +} + +.icon-to-front:before { + content: "\e7cc"; +} + +.icon-to-back:before { + content: "\e7cd"; +} + +.icon-roi-select:before { + content: "\e7ce"; +} + +.icon-json:before { + content: "\e623"; +} + +.icon-fullscreen:before { + content: "\e648"; +} + +.icon-broken:before { + content: "\e9ad"; +} + +.icon-curve:before { + content: "\e9b0"; +} + +.icon-paste:before { + content: "\e963"; +} + +.icon-group:before { + content: "\e915"; +} + +.icon-ungroup:after { + content: "\e917"; +} + +.icon-arrow-dropdown:before { + content: "\e601"; +} +.icon-save:before{ + content: url('../images/icon/pc_icon_bc.png'); +} +.icon-auto-layout:before{ + content: url('../images/icon/pc_icon_zdbj.png'); +} +.icon-solidline:before{ + content: url('../images/icon/pc_icon_sx.png'); +} +.icon-dottedline:before{ + content: url('../images/icon/pc_icon_xx.png'); +} +.icon-crudedottedline:before{ + content: url('../images/icon/pc_icon_cxx.png'); +} +.icon-return:before{ + content: url('../images/icon/pc_icon_fh.png'); +} + diff --git a/packages-含有注释代码/assets/iconfont/iconfont.eot b/packages-含有注释代码/assets/iconfont/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..3eda34f5e80e272c158b0ad093896a3703808aac GIT binary patch literal 6896 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 OgI>mF^3y_F#{L)V2<(sm literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/iconfont/iconfont.js b/packages-含有注释代码/assets/iconfont/iconfont.js new file mode 100644 index 0000000..9467797 --- /dev/null +++ b/packages-含有注释代码/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(i){var c,o='',h=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(h&&!i.__iconfont__svg__cssinject__){i.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var h=function(){document.removeEventListener("DOMContentLoaded",h,!1),c()};document.addEventListener("DOMContentLoaded",h,!1)}else document.attachEvent&&(t=c,l=i.document,e=!1,(v=function(){try{l.documentElement.doScroll("left")}catch(c){return void setTimeout(v,50)}o()})(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,o())});function o(){e||(e=!0,t())}var t,l,e,v}(function(){var c,h;(c=document.createElement("div")).innerHTML=o,o=null,(h=c.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",function(c,h){h.firstChild?function(c,h){h.parentNode.insertBefore(c,h)}(c,h.firstChild):h.appendChild(c)}(h,document.body))})}(window); \ No newline at end of file diff --git a/packages-含有注释代码/assets/iconfont/iconfont.svg b/packages-含有注释代码/assets/iconfont/iconfont.svg new file mode 100644 index 0000000..f4aa4a7 --- /dev/null +++ b/packages-含有注释代码/assets/iconfont/iconfont.svg @@ -0,0 +1,95 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages-含有注释代码/assets/iconfont/iconfont.ttf b/packages-含有注释代码/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5ab0e1e683081abdffb407c1af09caa4fed3d75 GIT binary patch literal 6728 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 LkHC+HRHOd~otURy literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/iconfont/iconfont.woff2 b/packages-含有注释代码/assets/iconfont/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..482e53ec52020c23825ea4c31e5ecc3f5315c595 GIT binary patch literal 3404 zcmV-S4YTrhPew8T0RR9101Zq43jhEB02)XD01W>C0RR9100000000000000000000 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 D)Kace literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/database.png b/packages-含有注释代码/assets/images/database.png new file mode 100644 index 0000000000000000000000000000000000000000..809869eb84f82bd570a12ba3c3ca3a8848e9e188 GIT binary patch literal 3577 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 CNZ-r= literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/icon/pc_icon_bc.png b/packages-含有注释代码/assets/images/icon/pc_icon_bc.png new file mode 100644 index 0000000000000000000000000000000000000000..06fb1cd31fbb2ae36886919b95eb42584f569842 GIT binary patch literal 305 zcmV-10nYx3P)?tbg;CCSO6clRF2 zK=R7nF9GaRRl8dXGaISubByskP1Db|ZJ#=vB*{tBG9RPTk!-1LE9EwN} zz~ijyS&VVA02RRKS6J8eYo6!V9jvPACd;zJjSxWHonM+!4j`L7b+uv$p%38bkHNl_ zWjR*WRk-0RrrSFVrvdn9kKX}UidIj}%8W00000NkvXXu0mjf DVr78N literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/icon/pc_icon_cxx.png b/packages-含有注释代码/assets/images/icon/pc_icon_cxx.png new file mode 100644 index 0000000000000000000000000000000000000000..92ab002f4427a7d82535c7d4dceaecc84768be8e GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^NSeY`?}B!fql!ke+*VAr m$dogE5+)hqul&S{g(1}?rm$tzoxMQA89ZJ6T-G@yGywpA*(^B# literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/icon/pc_icon_fh.png b/packages-含有注释代码/assets/images/icon/pc_icon_fh.png new file mode 100644 index 0000000000000000000000000000000000000000..50f8b3c32fd26355e2effd91ee142d7df97ca3c9 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp@K+MO%1|+}KPrC%9CVIL!hG+yQrzkKkS-w2_-~a#r z)s+paf`Wo%BqSwYOG-*Em6VWB`HzG-Ci8zQP4bb(bhlciO>ZdzmQwal1$zk7~B_^bAPSOTn%&_gQu&X%Q~loCIA-7 BPoV$+ literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/icon/pc_icon_sx.png b/packages-含有注释代码/assets/images/icon/pc_icon_sx.png new file mode 100644 index 0000000000000000000000000000000000000000..3800bb8c02c3fb674d0d643159e4b691efd191a5 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ~!3HGV&G(%EQfZzpjv*f2Z>JvQJz&7W{QBgq z)P&wu*$0eXri9c!iInWLd6?aNhLdx}tJ0hm9W&nj3vo|$U(g}Jux#etrw&&cG|T=Jwt5)5==s*(M0>KN$Lz zp}?;7g2I}DEqsfaH+{UMuy?C)%iqSh>D!(eD{OXmi~RUruJC(On)dG1PSfW}g~l>W eIdh3;g7lXC$%US?RSp3i!QkoY=d#Wzp$P!%&_=cZ literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/images/icon/pc_icon_zdbj.png b/packages-含有注释代码/assets/images/icon/pc_icon_zdbj.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4288284d751b0aad95a2bcf8a6aa1403fde8d0 GIT binary patch literal 268 zcmV+n0rUQeP)^v;F1 z0G}VyG;NsK#5vde3%mkY6x2A5rP={dEr7>DSOA{av4}GwssXqW(I^NrTRz5ih{2qh zTV~ex-k$lvJ0000F#-UoWB_=T002-401y?r#;^dqV4fHn%mk*5pT4D{5LYZPHiu>L?3=kJE-Raq zmjnPn$YC?#h_wDO-R@ZyZtJ5(|5;2VDl@dT`EJ&z(H%8)H5Ys&b^W{I_fC$SkJdG8Tv7hLM(-3Asi0@Do@_s5 zIF*_Hc$}uNX`qkvttcqIZgTO>0PjS;X713iH4rhujzF zuuG+l|43gHD;}PF-E*AS_*Nr-Ohzb%Y&nyl-kt>!)-I7sMdum z+&~JnYP4uayVLfZgJ6K|8O?aLY<}0ypD)yywe)yYSLNmMN8O^5Y`0^6MSU-yc4>3X z>|R(sXab|XwKdO!Rn&{Rab?KiEna?m<~p+A#1reEy*@;wsp%fw+M1`I?#C%$gFRR0 zB;5Jke%~syE^U9a=67AKygF+_zw+9lqp=RIO9qn7-JElBB2b%y)wC}6{sGSAvhXyX zz5{YBie!fIx38_m+G76Pt$-7<@08daDV{o{Y+n_(smO3|9mpG{>@dtT;bCH4W%#3h zS-0zE%XT;MRZZA}Zk~RRw88YDf?#E52+j8#EvYx~gLWNLU7@xfQ)FI|5x3uC3+@4eQD)X*TW^4)2@J*z* zXVG=L#-MuA`pUB4@XDy_LDNSj15c(UIon#?o_%zT3~0I;eHgzeRrG zeoOuB}$mCW?=JBrvsa%96Y5u$6 zmiT@#-muBIf=Zr*sRc>|08>>;FhwpDq=2YYAV%;&g~^~wf)_!NTnMs_DrZLZ^Z`Ls zCPLCk5=@%XQl~LKVD?742uZ3m5rUXdWO?*WZ^8Ia5Nn!$X*o2zO8O=@nYhvVkDmpB%vt?1cIPME=54KTCJ4J zF;Ir6RVX$yCm{lr1{KO>BpHH%LXpf9m5Tong)-3SpaLlriZQ4(I+=v;cIx#04tzC$ M&Ehi8GZHfY0;Tk7SO5S3 literal 0 HcmV?d00001 diff --git a/packages-含有注释代码/assets/logo.png b/packages-含有注释代码/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8384357c5f9fb233e5d7e67263bd08380b54cc GIT binary patch literal 5691 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 + + + + + + diff --git a/packages-含有注释代码/cc-elements/checkbox.vue b/packages-含有注释代码/cc-elements/checkbox.vue new file mode 100644 index 0000000..aa36f62 --- /dev/null +++ b/packages-含有注释代码/cc-elements/checkbox.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/packages-含有注释代码/cc-elements/dropdown.vue b/packages-含有注释代码/cc-elements/dropdown.vue new file mode 100644 index 0000000..497489e --- /dev/null +++ b/packages-含有注释代码/cc-elements/dropdown.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/packages-含有注释代码/cc-elements/index.js b/packages-含有注释代码/cc-elements/index.js new file mode 100644 index 0000000..ae59602 --- /dev/null +++ b/packages-含有注释代码/cc-elements/index.js @@ -0,0 +1,18 @@ +/** + * @author: winyuan + * @data: 2019/11/14 + * @repository: https://github.com/winyuan + * @description: cceditor内部的通用组件 + */ + +import Checkbox from './checkbox' +import Button from './button' +import Dropdown from './dropdown' +import Loading from './loading' + +export { + Checkbox, + Button, + Dropdown, + Loading +} diff --git a/packages-含有注释代码/cc-elements/loading.vue b/packages-含有注释代码/cc-elements/loading.vue new file mode 100644 index 0000000..f410a92 --- /dev/null +++ b/packages-含有注释代码/cc-elements/loading.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/packages-含有注释代码/cc-topology/index.js b/packages-含有注释代码/cc-topology/index.js new file mode 100644 index 0000000..70e0b68 --- /dev/null +++ b/packages-含有注释代码/cc-topology/index.js @@ -0,0 +1,17 @@ +/** + * @author: winyuan + * @data: 2019/08/20 + * @repository: https://github.com/winyuan + * @description: 导入组件,组件必须声明 name + */ + +import CCTopology from './src/cc-topology' + +// 为组件提供 install 安装方法,供按需引入 +CCTopology.install = function(Vue) { + console.info('install----CCEditor: CCTopology----') + Vue.component(CCTopology.name, CCTopology) +} + +// 默认导出组件 +export default CCTopology diff --git a/packages-含有注释代码/cc-topology/src/behavior/click-add-edge.js b/packages-含有注释代码/cc-topology/src/behavior/click-add-edge.js new file mode 100644 index 0000000..267f299 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/click-add-edge.js @@ -0,0 +1,96 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: edit mode: 通过先后点击两个节点来添加连线(容易和节点点击动作交叉,已弃用) + */ + +// import G6 from '@antv/g6' +// import theme from '../theme' + +export default { + name: 'click-add-edge', + options: { + getEvents() { + return { + 'node:click': 'onNodeClick', + 'canvas:mousemove': 'onMousemove', + 'edge:click': 'onEdgeClick', // 点击空白处,取消边 + } + }, + onNodeClick(event) { + let graph = this.graph + let node = event.item + let point = { x: event.x, y: event.y } + let model = node.getModel() + let edgeShape = self.currentEdgeShape.guid || 'line' + if (this.addingEdge && this.edge) { + // 点击第二个节点 + graph.updateItem(this.edge, { + target: model.id + }) + this.edge = null + this.addingEdge = false + // 记录【连线】前后的数据状态 + if (this.historyData) { + let graph = this.graph + // 如果当前点过【撤销】了,连线后没有【重做】功能 + // 重置undoCount,连线后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (self.undoCount > 0) { + self.historyIndex = self.historyIndex - self.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= self.undoCount; i++) { + let key = `graph_history_${self.historyIndex + i}` + self.removeHistoryData(key) + } + self.undoCount = 0 + } else { + // 正常顺序执行的情况,记录【连线】前的数据状态 + let key = `graph_history_${self.historyIndex}` + self.addHistoryData(key, this.historyData) + } + // 记录【连线】后的数据状态 + self.historyIndex += 1 + let key = `graph_history_${self.historyIndex}` + let currentData = JSON.stringify(graph.save()) + self.addHistoryData(key, currentData) + } + } else { + // 点击第一个节点 + this.historyData = JSON.stringify(graph.save()) + if (edgeShape === 'stepline') { + this.edge = graph.addItem('edge', { + source: model.id, + target: point, + type: edgeShape, + controlPoints: [{ x: 100, y: 70 }] + }) + } else { + this.edge = graph.addItem('edge', { + source: model.id, + target: point, + type: edgeShape + }) + } + this.addingEdge = true + } + }, + onMousemove(event) { + const point = { x: event.x, y: event.y } + if (this.addingEdge && this.edge) { + this.graph.updateItem(this.edge, { + target: point + }) + } + }, + onEdgeClick(ev) { + let graph = this.graph + const currentEdge = ev.item + // 拖拽过程中,点击会点击到新增的边上 + if (this.addingEdge && this.edge === currentEdge) { + graph.removeItem(this.edge) + this.edge = null + this.addingEdge = false + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/behavior/click-event-edit.js b/packages-含有注释代码/cc-topology/src/behavior/click-event-edit.js new file mode 100644 index 0000000..3af735e --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/click-event-edit.js @@ -0,0 +1,161 @@ +/** + * @author: winyuan + * @data: 2019/07/16 + * @repository: https://github.com/winyuan + * @description: edit mode: 鼠标点击交互 + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'click-event-edit', + options: { + getEvents() { + return { + 'node:click': 'onNodeClick', + 'node:contextmenu': 'onNodeRightClick', + 'edge:click': 'onEdgeClick', + 'edge:contextmenu': 'onEdgeRightClick', + 'canvas:click': 'onCanvasClick' + } + }, + onNodeClick(event) { + // todo..."selected"是g6自带的状态 ,在"drag-add-edge"中的"node:mouseup"事件也会触发,故此处不需要设置"selected"状态 + //点击事件 + // let clickNode = event.item; + // clickNode.setState('selected', !clickNode.hasState('selected')); + vm.currentFocus = 'node' + vm.rightMenuShow = false + this.updateVmData(event) + }, + onNodeRightClick(event) { + console.log(event,'88888888888888888888888888888') + let graph = vm.graph + let clickNode = event.item + let clickNodeModel = clickNode.getModel() + let selectedNodes = graph.findAllByState('node', 'selected') + let selectedNodeIds = selectedNodes.map(item => {return item.getModel().id}) + vm.selectedNode = clickNode + // 如果当前点击节点是之前选中的某个节点,就进行下面的处理 + if (selectedNodes.length > 1 && selectedNodeIds.indexOf(clickNodeModel.id) > -1) { + vm.rightMenuShow = true + let rightMenu = vm.$refs.rightMenu + rightMenu.style.left = event.clientX + 'px' + rightMenu.style.top = event.clientY + 'px' + } else { + // 隐藏右键菜单 + vm.rightMenuShow = false + // 先取消所有节点的选中状态 + selectedNodes.forEach(node => { + node.setState('selected', false) + }) + // 再添加该节点的选中状态 + clickNode.setState('selected', true) + vm.currentFocus = 'node' + this.updateVmData(event) + } + graph.paint() + }, + onEdgeClick(event) { + // todo + let clickEdge = event.item + // // todo 入口 + clickEdge.setState('selected', !clickEdge.hasState('selected')) + + + this.onEdgeRightClick(event) + + + vm.currentFocus = 'edge' + vm.rightMenuShow = false + this.updateVmData(event) + }, + onEdgeRightClick(event) { + let graph = vm.graph + let clickEdge = event.item + let clickEdgeModel = clickEdge.getModel() + let selectedEdges = graph.findAllByState('edge', 'selected') + // 如果当前点击节点不是之前选中的单个节点,才进行下面的处理 + if (!(selectedEdges.length === 1 && clickEdgeModel.id === selectedEdges[0].getModel().id)) { + // 先取消所有节点的选中状态 + selectedEdges.forEach(edge => { + edge.setState('selected', false) + }) + // 再添加该节点的选中状态 + clickEdge.setState('selected', true) + vm.currentFocus = 'edge' + this.updateVmData(event) + } + // eslint-disable-next-line no-unused-vars + let point = { x: event.x, y: event.y } + }, + onCanvasClick() { + vm.currentFocus = 'canvas' + vm.rightMenuShow = false + }, + updateVmData(event) { + if (event.item._cfg.type === 'node') { + // 更新vm的data: selectedNode 和 selectedNodeParams + //TODO 修改右侧输入信息 + let clickNode = event.item + if (clickNode.hasState('selected')) { + console.log(clickNode.getModel()) + + let clickNodeModel = clickNode.getModel() + vm.selectedNode = clickNode + //todo 修改右侧输入信息 + let nodeAppConfig = { ...vm.nodeAppConfig } + + + // console.log(nodeAppConfig,'nodeAppConfig') + + + + Object.keys(nodeAppConfig).forEach(function(key) { + nodeAppConfig[key] = '' + }) + let uuids =[] + for (let i = 0;i { + vm = _this +} + +import G6 from '@antv/g6' +import theme from '../theme' + +export default { + sendThis, // 暴露函数 + name: 'drag-add-edge', + options: { + getEvents() { + return { + 'node:mousedown': 'onNodeMousedown', + 'node:mouseup': 'onNodeMouseup', + 'edge:mouseup': 'onEdgeMouseup', + 'mousemove': 'onMousemove' + } + }, + onNodeMousedown(event) { + let self = this + // 交互过程中的信息 + self.evtInfo = { + action: null, + node: event.item, + target: event.target + } + if (self.evtInfo.target && self.evtInfo.target.attrs.name) { + // todo...未来可能针对锚点增加其它功能(例如拖拽调整大小) + switch (self.evtInfo.target.attrs.name) { + case 'anchor': + self.evtInfo.action = 'drawEdge' + break + } + } + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].start.call(self, event) + } + }, + onNodeMouseup(event) { + let self = this + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].stop.call(self, event) + } + }, + onEdgeMouseup(event) { + let self = this + if (self.evtInfo && self.evtInfo.action === 'drawEdge') { + self[self.evtInfo.action].stop.call(self, event) + } + }, + onMousemove(event) { + let self = this + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].move.call(self, event) + } + }, + drawEdge: { + isMoving: false, + currentLine: null, + start: function(event) { + console.log(event) + let self = this + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + + // ************** 暂存【连线】前的数据状态 start ************** + let graph = vm.graph + self.historyData = JSON.stringify(graph.save()) + // ************** 暂存【连线】前的数据状态 end ************** + + let sourceAnchor + let sourceNodeModel = self.evtInfo.node.getModel() + // 锚点数据 + let anchorPoints = self.evtInfo.node.getAnchorPoints() + // 处理线条目标点 + if (anchorPoints && anchorPoints.length) { + // 获取距离指定坐标最近的一个锚点 + sourceAnchor = { + x: event.x, + y: event.y + } + } + if (self.graph.$C.edge.type=='dottedline'){ + console.log(1) + self.drawEdge.currentLine = self.graph.addItem('edge', { + // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复 + id: utils.generateUUID(), + // 起始节点 + source: sourceNodeModel.id, + sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : '', + // 终止节点/位置 + target: { + x: event.x, + y: event.y + }, + type: self.graph.$C.edge.type || 'solidline', + //todo 修改类型 + // style:null + style: G6.Util.mix({}, themeStyle.edgeStyle.dottedline, self.graph.$C.edge.style) + }) + }else if (self.graph.$C.edge.type=='solidline'){ + console.log(2) + self.drawEdge.currentLine = self.graph.addItem('edge', { + // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复 + id: utils.generateUUID(), + // 起始节点 + source: sourceNodeModel.id, + sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : '', + // 终止节点/位置 + target: { + x: event.x, + y: event.y + }, + type: self.graph.$C.edge.type || 'solidline', + //todo 修改类型 + // style:null + style: G6.Util.mix({}, themeStyle.edgeStyle.solidline, self.graph.$C.edge.style) + }) + }else if (self.graph.$C.edge.type=='crudedottedline'){ + console.log(3) + + self.drawEdge.currentLine = self.graph.addItem('edge', { + // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复 + id: utils.generateUUID(), + // 起始节点 + source: sourceNodeModel.id, + sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : '', + // 终止节点/位置 + target: { + x: event.x, + y: event.y + }, + type: self.graph.$C.edge.type || 'solidline', + //todo 修改类型 + // style:null + style: G6.Util.mix({}, themeStyle.edgeStyle.crudedottedline, self.graph.$C.edge.style) + }) + } + + // console.log(self.drawEdge) + console.log(self.graph.$C.edge.type) + // self.drawEdge.currentLine.style = G6.Util.mix({}, themeStyle.edgeStyle.dottedline, self.graph.$C.edge.style) + self.drawEdge.isMoving = true + }, + move(event) { + let self = this + if (self.drawEdge.isMoving && self.drawEdge.currentLine) { + self.graph.updateItem(self.drawEdge.currentLine, { + target: { + x: event.x, + y: event.y + } + }) + } + }, + stop(event) { + let self = this + if (self.drawEdge.isMoving) { + if (self.drawEdge.currentLine === event.item) { + // 画线过程中点击则移除当前画线 + self.graph.removeItem(event.item) + } else { + let targetNode = event.item + let targetNodeModel = targetNode.getModel() + let targetAnchor = null + // 锚点数据 + let anchorPoints = targetNode.getAnchorPoints() + // 处理线条目标点 + if (anchorPoints && anchorPoints.length) { + // 获取距离指定坐标最近的一个锚点 + targetAnchor = { x: event.x, y: event.y } + } + self.graph.updateItem(self.drawEdge.currentLine, { + target: targetNodeModel.id, + targetAnchor: targetAnchor ? targetAnchor.anchorIndex : '' + }) + + // ************** 记录historyData的逻辑 start ************** + if (this.historyData) { + let graph = this.graph + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}` + vm.removeHistoryData(key) + } + vm.undoCount = 0 + } else { + // 正常顺序执行的情况,记录拖拽前的数据状态 + let key = `graph_history_${vm.historyIndex}` + vm.addHistoryData(key, this.historyData) + } + // 记录拖拽后的数据状态 + vm.historyIndex += 1 + let key = `graph_history_${vm.historyIndex}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + } + // ************** 记录historyData的逻辑 end ************** + } + } + self.drawEdge.currentLine = null + self.drawEdge.isMoving = false + self.evtInfo = null + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/behavior/drag-event-edit.js b/packages-含有注释代码/cc-topology/src/behavior/drag-event-edit.js new file mode 100644 index 0000000..eb77d22 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/drag-event-edit.js @@ -0,0 +1,54 @@ +/** + * @author: winyuan + * @data: 2019/07/16 + * @repository: https://github.com/winyuan + * @description: edit mode: 鼠标拖动节点的交互(记录拖拽前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'drag-event-edit', + options: { + getEvents() { + return { + 'node:dragstart': 'onNodeDragstart', + 'node:dragend': 'onNodeDragend' + } + }, + onNodeDragstart() { + let graph = vm.graph + this.historyData = JSON.stringify(graph.save()) + }, + onNodeDragend() { + if (this.historyData) { + let graph = this.graph + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}` + vm.removeHistoryData(key) + } + vm.undoCount = 0 + } else { + // 正常顺序执行的情况,记录拖拽前的数据状态 + let key = `graph_history_${vm.historyIndex}` + vm.addHistoryData(key, this.historyData) + } + // 记录拖拽后的数据状态 + vm.historyIndex += 1 + let key = `graph_history_${vm.historyIndex}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/behavior/hover-event-edit.js b/packages-含有注释代码/cc-topology/src/behavior/hover-event-edit.js new file mode 100644 index 0000000..9167b72 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/hover-event-edit.js @@ -0,0 +1,26 @@ +/** + * @author: winyuan + * @data: 2019/07/16 + * @repository: https://github.com/winyuan + * @description: edit mode: 悬浮交互 + */ + +export default { + name: 'hover-event-edit', + options: { + getEvents() { + return { + 'node:mouseover': 'onNodeHover', + 'node:mouseout': 'onNodeOut' + } + }, + onNodeHover(event) { + let hoverNode = event.item + hoverNode.setState('hover', true) + }, + onNodeOut(event) { + let hoverNode = event.item + hoverNode.setState('hover', false) + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/behavior/index.js b/packages-含有注释代码/cc-topology/src/behavior/index.js new file mode 100644 index 0000000..2ed8c8c --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/index.js @@ -0,0 +1,29 @@ +/** + * @author: winyuan + * @data: 2019/07/16 + * @repository: https://github.com/winyuan + * @description: register behaviors + */ + +import dragAddEdge from './drag-add-edge' +import hoverEventEdit from './hover-event-edit' +import clickEventEdit from './click-event-edit' +import dragEventEdit from './drag-event-edit' +import keyupEventEdit from './keyup-event-edit' + +const obj = { + dragAddEdge, + hoverEventEdit, + clickEventEdit, + dragEventEdit, + keyupEventEdit, +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerBehavior(item.name, item.options) + }) + } +} diff --git a/packages-含有注释代码/cc-topology/src/behavior/keyup-event-edit.js b/packages-含有注释代码/cc-topology/src/behavior/keyup-event-edit.js new file mode 100644 index 0000000..7867acc --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/behavior/keyup-event-edit.js @@ -0,0 +1,64 @@ +/** + * @author: winyuan + * @data: 2019/07/16 + * @repository: https://github.com/winyuan + * @description: edit mode: 键盘事件的交互,主要是删除节点和连线(记录删除前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'keyup-event-edit', + options: { + getEvents() { + return { + 'keyup': 'onKeyup' + } + }, + onKeyup(event) { + let graph = this.graph + let selectedNodes = graph.findAllByState('node', 'selected') + let selectedEdges = graph.findAllByState('edge', 'selected') + if (event.keyCode === 46 && (selectedNodes.length > 0 || selectedEdges.length > 0)) { + + // ************** 记录【删除】前的数据状态 start ************** + let historyData = JSON.stringify(graph.save()) + let key = `graph_history_${vm.historyIndex}` + vm.addHistoryData(key, historyData) + // ************** 记录【删除】前的数据状态 end ************** + + // 开始删除 + for (let i = 0; i < selectedNodes.length; i++) { + graph.removeItem(selectedNodes[i]) + } + for (let i = 0; i < selectedEdges.length; i++) { + graph.removeItem(selectedEdges[i]) + } + + // ************** 记录【删除】后的数据状态 start ************** + // 如果当前点过【撤销】了,拖拽节点后将取消【重做】功能 + // 重置undoCount,【删除】后的数据状态给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.undoCount > 0) { + vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.undoCount; i++) { + let key = `graph_history_${vm.historyIndex + i}` + vm.removeHistoryData(key) + } + vm.undoCount = 0 + } + // 记录【删除】后的数据状态 + vm.historyIndex += 1 + key = `graph_history_${vm.historyIndex}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + // ************** 记录【删除】后的数据状态 end ************** + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/cc-topology.vue b/packages-含有注释代码/cc-topology/src/cc-topology.vue new file mode 100644 index 0000000..19531b9 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/cc-topology.vue @@ -0,0 +1,1412 @@ + + + + + + diff --git a/packages-含有注释代码/cc-topology/src/config/edge.js b/packages-含有注释代码/cc-topology/src/config/edge.js new file mode 100644 index 0000000..658b4ce --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/config/edge.js @@ -0,0 +1,18 @@ +/** + * @author: winyuan + * @data: 2019/08/16 + * @repository: https://github.com/winyuan + * @description: 线条的后期设置 + */ +//配置是否有箭头 +import G6 from '@antv/g6' +export default { + type: 'solidline', + style: { + startArrow: false, + endArrow: { + path: G6.Arrow.vee(10, 20, 15), + d: 25 + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/config/index.js b/packages-含有注释代码/cc-topology/src/config/index.js new file mode 100644 index 0000000..6af1d9a --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/config/index.js @@ -0,0 +1,12 @@ +/** + * @author: winyuan + * @data: 2019/08/16 + * @repository: https://github.com/winyuan + * @description: 配置 + */ + +import edge from './edge' + +export default { + edge +} diff --git a/packages-含有注释代码/cc-topology/src/edge/base.js b/packages-含有注释代码/cc-topology/src/edge/base.js new file mode 100644 index 0000000..4a10aea --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/base.js @@ -0,0 +1,30 @@ +/** + * @author: winyuan + * @data: 2019/07/18 + * @repository: https://github.com/winyuan + * @description: 线公共方法 + */ + +import utils from '../utils' + +export default { + draw(cfg, group) { + const { startPoint, endPoint } = cfg + const keyShape = group.addShape('path', { + className: 'edge-shape', + attrs: { + ...cfg.style, + path: [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + name: 'edge-shape' + }) + return keyShape + }, + setState(name, value, item) { + // 设置边状态 + utils.edge.setState(name, value, item) + } +} diff --git a/packages-含有注释代码/cc-topology/src/edge/cc-cubic.js b/packages-含有注释代码/cc-topology/src/edge/cc-cubic.js new file mode 100644 index 0000000..21382ad --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/cc-cubic.js @@ -0,0 +1,16 @@ +/** + * @author: winyuan + * @data: 2019/07/18 + * @repository: https://github.com/winyuan + * @description: 曲线 + */ + +import base from './base' + +export default { + name: 'cubic', + extendName: 'cubic', + options: { + ...base + } +} diff --git a/packages-含有注释代码/cc-topology/src/edge/crudedottedline.js b/packages-含有注释代码/cc-topology/src/edge/crudedottedline.js new file mode 100644 index 0000000..4250df0 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/crudedottedline.js @@ -0,0 +1,53 @@ +/** + * @author: winyuan + * @data: 2019/10/22 + * @repository: https://github.com/winyuan + * @description: 折线 + */ + +import base from './base' +import theme from '../theme' + +/** + * fix: 继承 polyline 在 G6 3.x 里面有bug + * 现实现方法参考 https://g6.antv.vision/zh/examples/shape/customEdge#customPolyline + */ +export default { + name: 'crudedottedline', + extendName: 'line', + options: { + ...base, + getPath(points) { + const startPoint = points[0] + const endPoint = points[1] + return [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, endPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + getShapeStyle(cfg) { + const { startPoint, endPoint } = cfg + const controlPoints = this.getControlPoints(cfg) + let points = [startPoint] // 添加起始点 + // 添加控制点 + if (controlPoints) { + points = points.concat(controlPoints) + } + // 添加结束点 + points.push(endPoint) + const path = this.getPath(points) + const themeStyle = theme.darkStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + const style = { + stroke: '#BBB', + lineWidth: 1, + path, + startArrow: false, + endArrow: true, + ...themeStyle.edgeStyle.default + } + return style + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/edge/dottedline.js b/packages-含有注释代码/cc-topology/src/edge/dottedline.js new file mode 100644 index 0000000..2576283 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/dottedline.js @@ -0,0 +1,53 @@ +/** + * @author: winyuan + * @data: 2019/10/22 + * @repository: https://github.com/winyuan + * @description: 折线 + */ + +import base from './base' +import theme from '../theme' + +/** + * fix: 继承 polyline 在 G6 3.x 里面有bug + * 现实现方法参考 https://g6.antv.vision/zh/examples/shape/customEdge#customPolyline + */ +export default { + name: 'dottedline', + extendName: 'line', + options: { + ...base, + getPath(points) { + const startPoint = points[0] + const endPoint = points[1] + return [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, endPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + getShapeStyle(cfg) { + const { startPoint, endPoint } = cfg + const controlPoints = this.getControlPoints(cfg) + let points = [startPoint] // 添加起始点 + // 添加控制点 + if (controlPoints) { + points = points.concat(controlPoints) + } + // 添加结束点 + points.push(endPoint) + const path = this.getPath(points) + const themeStyle = theme.darkStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + const style = { + stroke: '#BBB', + lineWidth: 1, + path, + startArrow: false, + endArrow: true, + ...themeStyle.edgeStyle.default + } + return style + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/edge/index.js b/packages-含有注释代码/cc-topology/src/edge/index.js new file mode 100644 index 0000000..0ea5ba3 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/index.js @@ -0,0 +1,24 @@ +/** + * @author: winyuan + * @data: 2019/07/18 + * @repository: https://github.com/winyuan + * @description: register edges + */ + +import ccCubic from './cc-cubic' +import dottedline from './dottedline' +import solidline from './solidline' +import crudedottedline from './crudedottedline' + +const obj = { + ccCubic, + dottedline, + solidline, + crudedottedline +} + +export default function(G6) { + Object.values(obj).map(item => { + G6.registerEdge(item.name, item.options, item.extendName) + }) +} diff --git a/packages-含有注释代码/cc-topology/src/edge/polyline-finding.js b/packages-含有注释代码/cc-topology/src/edge/polyline-finding.js new file mode 100644 index 0000000..39531fc --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/polyline-finding.js @@ -0,0 +1,275 @@ +/** + * 带圆角折线连线的策略 + * 文档:https://www.yuque.com/antv/blog/eyi70n + * 参考:https://github.com/guozhaolong/wfd/blob/master/src/item/edge.js + * 引用:https://github.com/OXOYO/X-Flowchart-Vue/blob/master/src/global/lib/g6/edge/polylineFinding.js + */ + +// 折线寻径 +export const polylineFinding = function(sNode, tNode, sPort, tPort, offset = 10) { + const sourceBBox = sNode && sNode.getBBox ? sNode.getBBox() : getPointBBox(sPort) + const targetBBox = tNode && tNode.getBBox ? tNode.getBBox() : getPointBBox(tPort) + // 获取节点带 offset 的区域(扩展区域) + const sBBox = getExpandedBBox(sourceBBox, offset) + const tBBox = getExpandedBBox(targetBBox, offset) + // 获取扩展区域上的起始和终止连接点 + const sPoint = getExpandedPort(sBBox, sPort) + const tPoint = getExpandedPort(tBBox, tPort) + // 获取合法折点集 + let points = getConnectablePoints(sBBox, tBBox, sPoint, tPoint) + // 过滤合法点集,预处理、剪枝等 + filterConnectablePoints(points, sBBox) + // 过滤合法点集,预处理、剪枝等 + filterConnectablePoints(points, tBBox) + // 用 A-Star 算法寻径 + let polylinePoints = AStar(points, sPoint, tPoint, sBBox, tBBox) + return polylinePoints +} + +const getPointBBox = function(t) { + return { + centerX: t.x, + centerY: t.y, + minX: t.x, + minY: t.y, + maxX: t.x, + maxY: t.y, + height: 0, + width: 0 + } +} + +// 获取扩展区域 +const getExpandedBBox = function(bbox, offset) { + if (bbox.width === 0 && bbox.height === 0) { + return bbox + } + return { + centerX: bbox.centerX, + centerY: bbox.centerY, + minX: bbox.minX - offset, + minY: bbox.minY - offset, + maxX: bbox.maxX + offset, + maxY: bbox.maxY + offset, + height: bbox.height + 2 * offset, + width: bbox.width + 2 * offset + } +} + +// 获取扩展区域上的连接点 +const getExpandedPort = function(bbox, point) { + // 判断连接点在上下左右哪个区域,相应地给x或y加上或者减去offset + if (Math.abs(point.x - bbox.centerX) / bbox.width > Math.abs(point.y - bbox.centerY) / bbox.height) { + return { + x: point.x > bbox.centerX ? bbox.maxX : bbox.minX, + y: point.y + } + } + return { + x: point.x, + y: point.y > bbox.centerY ? bbox.maxY : bbox.minY + } +} + +// 获取合法折点集合 +const getConnectablePoints = function(sBBox, tBBox, sPoint, tPoint) { + let lineBBox = getBBoxFromVertexes(sPoint, tPoint) + let outerBBox = combineBBoxes(sBBox, tBBox) + let sLineBBox = combineBBoxes(sBBox, lineBBox) + let tLineBBox = combineBBoxes(tBBox, lineBBox) + let points = [ + ...vertexOfBBox(sLineBBox), + ...vertexOfBBox(tLineBBox), + ...vertexOfBBox(outerBBox) + ] + const centerPoint = { x: outerBBox.centerX, y: outerBBox.centerY } + let bboxes = [outerBBox, sLineBBox, tLineBBox, lineBBox] + bboxes.forEach(bbox => { + // 包含 bbox 延长线和线段的相交线 + points = [ + ...points, + ...crossPointsByLineAndBBox(bbox, centerPoint) + ] + }) + points.push({ x: sPoint.x, y: tPoint.y }) + points.push({ x: tPoint.x, y: sPoint.y }) + return points +} + +const getBBoxFromVertexes = function(sPoint, tPoint) { + const minX = Math.min(sPoint.x, tPoint.x) + const maxX = Math.max(sPoint.x, tPoint.x) + const minY = Math.min(sPoint.y, tPoint.y) + const maxY = Math.max(sPoint.y, tPoint.y) + + return { + centerX: (minX + maxX) / 2, + centerY: (minY + maxY) / 2, + maxX: maxX, + maxY: maxY, + minX: minX, + minY: minY, + height: maxY - minY, + width: maxX - minX + } +} + +const combineBBoxes = function(sBBox, tBBox) { + const minX = Math.min(sBBox.minX, tBBox.minX) + const minY = Math.min(sBBox.minY, tBBox.minY) + const maxX = Math.max(sBBox.maxX, tBBox.maxX) + const maxY = Math.max(sBBox.maxY, tBBox.maxY) + + return { + centerX: (minX + maxX) / 2, + centerY: (minY + maxY) / 2, + minX: minX, + minY: minY, + maxX: maxX, + maxY: maxY, + height: maxY - minY, + width: maxX - minX + } +} + +const vertexOfBBox = function(bbox) { + return [ + { x: bbox.minX, y: bbox.minY }, + { x: bbox.maxX, y: bbox.minY }, + { x: bbox.maxX, y: bbox.maxY }, + { x: bbox.minX, y: bbox.maxY } + ] +} + +const crossPointsByLineAndBBox = function(bbox, centerPoint) { + let crossPoints = [] + if (!(centerPoint.x < bbox.minX || centerPoint.x > bbox.maxX)) { + crossPoints = [ + ...crossPoints, + { x: centerPoint.x, y: bbox.minY }, + { x: centerPoint.x, y: bbox.maxY } + ] + } + if (!(centerPoint.y < bbox.minY || centerPoint.y > bbox.maxY)) { + crossPoints = [ + ...crossPoints, + { x: bbox.minX, y: centerPoint.y }, + { x: bbox.maxX, y: centerPoint.y } + ] + } + + return crossPoints +} + +// 过滤连接点 +const filterConnectablePoints = function(points, bbox) { + return points.filter(point => { + return point.x <= bbox.minX || point.x >= bbox.maxX || point.y <= bbox.minY || point.y >= bbox.maxY + }) +} + +const crossBBox = function(bboxes, p1, p2) { + for (let i = 0; i < bboxes.length; i++) { + const bbox = bboxes[i] + if (p1.x === p2.x && bbox.minX < p1.x && bbox.maxX > p1.x) { + if ((p1.y < bbox.maxY && p2.y >= bbox.maxY) || (p2.y < bbox.maxY && p1.y >= bbox.maxY)) { + return true + } + } else if (p1.y === p2.y && bbox.minY < p1.y && bbox.maxY > p1.y) { + if ((p1.x < bbox.maxX && p2.x >= bbox.maxX) || (p2.x < bbox.maxX && p1.x >= bbox.maxX)) { + return true + } + } + } + return false +} + +const getCost = function(p1, p2) { + return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y) +} + +// aStar 寻径 +const AStar = function(points, sPoint, tPoint, sBBox, tBBox) { + const openList = [sPoint] + const closeList = [] + points.forEach(item => { + item.id = item.x + '-' + item.y + }) + let tmpArr = [] + points.forEach(item => { + if (!tmpArr.includes(target => target.id === item.id)) { + tmpArr.push(item) + } + }) + points = [ + ...tmpArr, + tPoint + ] + let endPoint + while (openList.length > 0) { + let minCostPoint + openList.forEach((p, i) => { + if (!p.parent) { + p.f = 0 + } + if (!minCostPoint) { + minCostPoint = p + } + if (p.f < minCostPoint.f) { + minCostPoint = p + } + }) + if (minCostPoint.x === tPoint.x && minCostPoint.y === tPoint.y) { + endPoint = minCostPoint + break + } + openList.splice(openList.findIndex(o => o.x === minCostPoint.x && o.y === minCostPoint.y), 1) + closeList.push(minCostPoint) + const neighbor = points.filter(p => { + return (p.x === minCostPoint.x || p.y === minCostPoint.y) && + !(p.x === minCostPoint.x && p.y === minCostPoint.y) && + !crossBBox([sBBox, tBBox], minCostPoint, p) + } + ) + neighbor.forEach(p => { + const inOpen = openList.find(o => o.x === p.x && o.y === p.y) + const currentG = getCost(p, minCostPoint) + if (!closeList.find(o => o.x === p.x && o.y === p.y)) { + if (inOpen) { + if (p.g > currentG) { + p.parent = minCostPoint + p.g = currentG + p.f = p.g + p.h + } + } else { + p.parent = minCostPoint + p.g = currentG + let h = getCost(p, tPoint) + if (crossBBox([tBBox], p, tPoint)) { + // 如果穿过bbox则增加该点的预估代价为bbox周长的一半 + h += (tBBox.width / 2 + tBBox.height / 2) + } + p.h = h + p.f = p.g + p.h + openList.push(p) + } + } + }) + } + if (endPoint) { + const result = [] + result.push({ + x: endPoint.x, + y: endPoint.y + }) + while (endPoint.parent) { + endPoint = endPoint.parent + result.push({ + x: endPoint.x, + y: endPoint.y + }) + } + return result.reverse() + } + return [] +} diff --git a/packages-含有注释代码/cc-topology/src/edge/solidline.js b/packages-含有注释代码/cc-topology/src/edge/solidline.js new file mode 100644 index 0000000..ed4bd1a --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/solidline.js @@ -0,0 +1,53 @@ +/** + * @author: winyuan + * @data: 2019/10/22 + * @repository: https://github.com/winyuan + * @description: 折线 + */ + +import base from './base' +import theme from '../theme' + +/** + * fix: 继承 polyline 在 G6 3.x 里面有bug + * 现实现方法参考 https://g6.antv.vision/zh/examples/shape/customEdge#customPolyline + */ +export default { + name: 'solidline', + extendName: 'line', + options: { + ...base, + getPath(points) { + const startPoint = points[0] + const endPoint = points[1] + return [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, startPoint.y], + ['L', endPoint.x / 3 + 2 / 3 * startPoint.x, endPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + getShapeStyle(cfg) { + const { startPoint, endPoint } = cfg + const controlPoints = this.getControlPoints(cfg) + let points = [startPoint] // 添加起始点 + // 添加控制点 + if (controlPoints) { + points = points.concat(controlPoints) + } + // 添加结束点 + points.push(endPoint) + const path = this.getPath(points) + const themeStyle = theme.darkStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + const style = { + stroke: '#BBB', + lineWidth: 1, + path, + startArrow: false, + endArrow: true, + ...themeStyle.edgeStyle.default + } + return style + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/edge/top-table.js b/packages-含有注释代码/cc-topology/src/edge/top-table.js new file mode 100644 index 0000000..2bad44a --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/edge/top-table.js @@ -0,0 +1,9 @@ +/** + * @author: clay + * @data: 2021/5/12 0:02 + * @email: clay@hchyun.com + * @description: node + */ +export default { + +} diff --git a/packages-含有注释代码/cc-topology/src/graph/index.js b/packages-含有注释代码/cc-topology/src/graph/index.js new file mode 100644 index 0000000..78c29e8 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/graph/index.js @@ -0,0 +1,160 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: 图的布局方式/图的初始化 + */ + +import d3 from '../plugins/d3-installer' +import theme from '../theme' + +/** + * 图的布局方式/图的初始化 + * @type {{commonGraph: (function(*, *): G6.Graph)}} + */ +const initGraph = { + /** + * 一般布局 + * @param G6 + * @param options + * @returns {G6.Graph} + */ + commonGraph: function(G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + plugins: options.plugins, + container: options.container, + width: options.width, + height: options.height, + // layout: { + // type: 'random', + // width: options.width, + // height: options.height + // }, + defaultNode: { + type: 'cc-rect', + labelCfg: { + position: 'bottom' + } + }, + defaultEdge: { + type: 'cc-line', + labelCfg: { + position: 'center', + autoRotate: false + } + }, + nodeStateStyles: themeStyle.nodeStyle, + // nodeStyle: { + // selected: { + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + // } + // }, + edgeStateStyles: themeStyle.edgeStyle, + // edgeStyle: { + // default: { + // stroke: '#e2e2e2', + // lineWidth: 3, + // lineAppendWidth: 10 + // }, + // selected: { + // shadowColor: '#626262', + // shadowBlur: 3 + // } + // }, + modes: options.modes + }) + // 将 read 方法分解成 data() 和 render 方法,便于整个生命周期的管理 + graph.read(graphData) + graph.render() + // 返回G6实例 + return graph + }, + /** + * 力导布局 + * @param G6 + * @param options + * @returns {*} + */ + forceLayoutGraph: function(resolve, G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + container: options.container, + width: options.width, + height: options.height, + nodeStateStyles: themeStyle.nodeStyle, + edgeStateStyles: themeStyle.edgeStyle + }) + // 初始化力导布局 + let simulation = d3 + .forceSimulation() + .force( + 'link', + d3 + .forceLink() + .id(function(d) { + return d.id + }) + .distance(linkDistance) + .strength(0.5) + ) + .force('charge', d3.forceManyBody().strength(-500).distanceMax(500).distanceMin(100)) + .force('center', d3.forceCenter(options.width / 2, options.height / 2)) + // 定义节点数据 + simulation.nodes(graphData.nodes).on('tick', ticked) + // 定义连线数据 + let edges = [] + for (let i = 0; i < graphData.edges.length; i++) { + edges.push({ + id: graphData.edges[i].id, + source: graphData.edges[i].source, + target: graphData.edges[i].target + }) + } + simulation.force('link').links(edges) + graph.data(graphData) + graph.render() + + function linkDistance(d) { + return 150 + } + + function ticked() { + // protect: planA: 移除事件监听器 planB: 手动停止力模拟 + if (graph.destroyed) { + // simulation.nodes(graphData.nodes).on('tick', null) + simulation.stop() + return + } + if (!graph.get('data')) { + // 若是第一次渲染,定义数据,渲染 + graph.data(graphData) + graph.render() + } else { + // 后续渲染,直接刷新所有点和边的位置 + graph.refreshPositions() + } + } + + // 控制时间: 只布局10秒 + let t = setTimeout(function() { + simulation.stop() + resolve(graph) + }, 10000) + + // 判断force-layout结束 + simulation.on('end', () => { + clearTimeout(t) + resolve(graph) + }) + } +} + +export default initGraph diff --git a/packages-含有注释代码/cc-topology/src/node/base.js b/packages-含有注释代码/cc-topology/src/node/base.js new file mode 100644 index 0000000..92212bb --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/node/base.js @@ -0,0 +1,22 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: 节点基础方法 + */ + +import utils from '../utils' + +export default { + setState(name, value, item) { + // 设置节点状态 + utils.node.setState(name, value, item) + // 设置锚点状态 + utils.anchor.setState(name, value, item) + }, + // 绘制后附加锚点 + afterDraw(cfg, group) { + // 绘制锚点 + utils.anchor.draw(cfg, group) + } +} diff --git a/packages-含有注释代码/cc-topology/src/node/cc-image.js b/packages-含有注释代码/cc-topology/src/node/cc-image.js new file mode 100644 index 0000000..371b9e8 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/node/cc-image.js @@ -0,0 +1,127 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: 图片节点 + */ + +import utils from '../utils' + +// 用来获取调用此js的vue组件实例(this) +let vm = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, + name: 'cc-image', + extendName: 'image', + options: { + setState(name, value, item) { + // 设置节点状态 + utils.node.setState(name, value, item) + // 设置锚点状态 + if (vm.graphMode === 'edit') { + utils.anchor.setState(name, value, item) + } + }, + // 绘制后附加锚点 + afterDraw(cfg, group) { + // 绘制锚点 + if (vm.graphMode === 'edit') { + utils.anchor.draw(cfg, group) + } + }, + // 设置告警状态 + afterUpdate(cfg, node) { + const group = node.getContainer() + // 获取children + const halos = group.findAll(function(item) { + return item.attrs.name === 'halo' + }) + // 告警 + if (cfg.appState && cfg.appState.alert) { + if (halos.length > 0) { + return + } + let size = this.getSize(cfg) || [48, 48] + let r = size[0] / 2 + let { id } = cfg + let halo1 = group.addShape('circle', { + id: id + '_halo_' + 1, + attrs: { + name: 'halo', + x: 0, + y: 0, + r: r, + fill: cfg.color || '#F56C6C', + opacity: 0.6 + }, + name: 'halo', + zIndex: -3 + }) + let halo2 = group.addShape('circle', { + id: id + '_halo_' + 2, + attrs: { + name: 'halo', + x: 0, + y: 0, + r: r, + fill: cfg.color || '#F56C6C', // 为了显示清晰,随意设置了颜色 + opacity: 0.6 + }, + name: 'halo', + zIndex: -2 + }) + let halo3 = group.addShape('circle', { + id: id + '_halo_' + 3, + attrs: { + name: 'halo', + x: 0, + y: 0, + r: r, + fill: cfg.color || '#F56C6C', + opacity: 0.6 + }, + name: 'halo', + zIndex: -1 + }) + group.sort() // 排序,根据zIndex 排序 + halo1.animate({ // 逐渐放大,并消失 + r: r + 10, + opacity: 0.1, + }, { + repeat: true, // 循环 + duration: 3000, + easing: 'easeCubic', + delay: 0 // 无延迟 + }) + halo2.animate({ // 逐渐放大,并消失 + r: r + 10, + opacity: 0.1 + }, { + repeat: true, // 循环 + duration: 3000, + easing: 'easeCubic', + delay: 1000 // 1 秒延迟 + }) + halo3.animate({ // 逐渐放大,并消失 + r: r + 10, + opacity: 0.1 + }, { + repeat: true, // 循环 + duration: 3000, + easing: 'easeCubic', + delay: 2000 // 2 秒延迟 + }) + } else { + halos.forEach(halo => { + // FIXME: G6 3.x在底层库遗留了bug,导致removeChild()方法报错,等待解决 + group.removeChild(halo) + }) + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/node/cc-rect.js b/packages-含有注释代码/cc-topology/src/node/cc-rect.js new file mode 100644 index 0000000..270ce18 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/node/cc-rect.js @@ -0,0 +1,31 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: 矩形节点 + */ + +import base from './base' +import theme from '../theme' + +export default { + name: 'cc-rect', + extendName: 'rect', + options: { + ...base, + getShapeStyle(cfg) { + const size = this.getSize(cfg) || [48, 48] + const width = size[0] + const height = size[1] + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + const style = { + x: 0 - width / 2, + y: 0 - height / 2, + width: width, + height: height, + ...themeStyle.nodeStyle.default + } + return style + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/node/index.js b/packages-含有注释代码/cc-topology/src/node/index.js new file mode 100644 index 0000000..da8366f --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/node/index.js @@ -0,0 +1,23 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: register nodes + */ + +import ccRect from './cc-rect' +import ccImage from './cc-image' + +const obj = { + ccRect, + ccImage +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerNode(item.name, item.options, item.extendName) + }) + } +} diff --git a/packages-含有注释代码/cc-topology/src/plugins/d3-installer.js b/packages-含有注释代码/cc-topology/src/plugins/d3-installer.js new file mode 100644 index 0000000..a805344 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/plugins/d3-installer.js @@ -0,0 +1,10 @@ +/** + * @author: winyuan + * @data: 2019/07/05 + * @repository: https://github.com/winyuan + * @description: install 3rd plugins + */ + +import * as d3 from 'd3-force/dist/d3-force' + +export default d3 diff --git a/packages-含有注释代码/cc-topology/src/theme/dark-style.js b/packages-含有注释代码/cc-topology/src/theme/dark-style.js new file mode 100644 index 0000000..aad3328 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/theme/dark-style.js @@ -0,0 +1,178 @@ +/** + * @author: winyuan + * @data: 2019/11/20 + * @repository: https://github.com/winyuan + * @description: dark style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#FFF' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#53da3a', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/packages-含有注释代码/cc-topology/src/theme/default-style.js b/packages-含有注释代码/cc-topology/src/theme/default-style.js new file mode 100644 index 0000000..efbb257 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/theme/default-style.js @@ -0,0 +1,220 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: default style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + //修改连线颜色 + stroke: 'red', + //todo 边的宽度 + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true, + startArrow: false, + //todo 添加虚线 + // lineDash: [2, 2] + }, + solidline: { + //实线 + stroke: 'blue', + //todo 边的宽度 + lineWidth: 1.5, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true, + startArrow: false, + }, + dottedline: { + //虚线 + stroke: 'blue', + //todo 边的宽度 + lineWidth: 1.5, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true, + startArrow: false, + //todo 添加虚线 + lineDash: [2, 2] + }, + crudedottedline: { + //粗虚线 + stroke: 'blue', + //todo 边的宽度 + lineWidth: 3, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true, + startArrow: false, + //todo 添加虚线 + lineDash: [2, 2] + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '', + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0 + } + }, + // 锚点样式 + anchorStyle: { + default: { + r: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + r: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/packages-含有注释代码/cc-topology/src/theme/index.js b/packages-含有注释代码/cc-topology/src/theme/index.js new file mode 100644 index 0000000..352020a --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/theme/index.js @@ -0,0 +1,16 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: 编辑器主题样式 - 节点、连线的预设样式 + */ + +import defaultStyle from './default-style' +import darkStyle from './dark-style' +import officeStyle from './office-style' + +export default { + defaultStyle, + darkStyle, + officeStyle +} diff --git a/packages-含有注释代码/cc-topology/src/theme/office-style.js b/packages-含有注释代码/cc-topology/src/theme/office-style.js new file mode 100644 index 0000000..9c08efd --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/theme/office-style.js @@ -0,0 +1,178 @@ +/** + * @author: winyuan + * @data: 2019/11/21 + * @repository: https://github.com/winyuan + * @description: office style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: '#FFFFFF', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#41c23a', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10, + endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/packages-含有注释代码/cc-topology/src/toolbar-edit.vue b/packages-含有注释代码/cc-topology/src/toolbar-edit.vue new file mode 100644 index 0000000..1abcbe2 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/toolbar-edit.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/packages-含有注释代码/cc-topology/src/utils/anchor/draw.js b/packages-含有注释代码/cc-topology/src/utils/anchor/draw.js new file mode 100644 index 0000000..45d167d --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/anchor/draw.js @@ -0,0 +1,60 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: draw anchor + */ + +import theme from '../../theme' + +export default function(cfg, group) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX + let anchorY = y * height + originY + // 添加锚点背景 + let anchorBgShape = group.addShape('marker', { + id: id + '_anchor_bg_' + i, + attrs: { + name: 'anchorBg', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorBgStyle.default + }, + draggable: false, + name: 'markerBg-shape' + }) + // 添加锚点Marker形状 + let anchorShape = group.addShape('marker', { + id: id + '_anchor_' + i, + attrs: { + name: 'anchor', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorStyle.default + }, + draggable: false, + name: 'marker-shape' + }) + + anchorShape.on('mouseenter', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.active + }) + }) + anchorShape.on('mouseleave', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.inactive + }) + }) + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/utils/anchor/index.js b/packages-含有注释代码/cc-topology/src/utils/anchor/index.js new file mode 100644 index 0000000..6f8f2a2 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/anchor/index.js @@ -0,0 +1,16 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: anchor + */ + +import draw from './draw' +import setState from './set-state' +import update from './update' + +export default { + draw, + setState, + update +} diff --git a/packages-含有注释代码/cc-topology/src/utils/anchor/set-state.js b/packages-含有注释代码/cc-topology/src/utils/anchor/set-state.js new file mode 100644 index 0000000..6e481d7 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/anchor/set-state.js @@ -0,0 +1,27 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: set anchor state + */ + +import theme from '../../theme' + +export default function(name, value, item) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'hover') { + let group = item.getContainer() + let children = group.get('children') + for (let i = 0, len = children.length; i < len; i++) { + let child = children[i] + // 处理锚点状态 + if (child.attrs.name === 'anchor') { + if (value) { + child.attr(themeStyle.anchorStyle.hover) + } else { + child.attr(themeStyle.anchorStyle.unhover) + } + } + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/utils/anchor/update.js b/packages-含有注释代码/cc-topology/src/utils/anchor/update.js new file mode 100644 index 0000000..0f43473 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/anchor/update.js @@ -0,0 +1,32 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: update anchor + */ + +export default function(cfg, group) { + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX + let anchorY = y * height + originY + // 锚点背景 + let anchorBgShape = group.findById(id + '_anchor_bg_' + i) + // 锚点 + let anchorShape = group.findById(id + '_anchor_' + i) + anchorBgShape.attr({ + x: anchorX, + y: anchorY + }) + anchorShape.attr({ + x: anchorX, + y: anchorY + }) + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/utils/edge/index.js b/packages-含有注释代码/cc-topology/src/utils/edge/index.js new file mode 100644 index 0000000..690f906 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/edge/index.js @@ -0,0 +1,12 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: edge + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/packages-含有注释代码/cc-topology/src/utils/edge/set-state.js b/packages-含有注释代码/cc-topology/src/utils/edge/set-state.js new file mode 100644 index 0000000..3bb60b7 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/edge/set-state.js @@ -0,0 +1,27 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: set edge state + */ + +import theme from '../../theme' + +export default function(name, value, item) { + const group = item.getContainer() + const shape = group.get('children')[0] // 顺序根据 draw 时确定 + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'active') { + if (value) { + shape.attr(themeStyle.edgeStyle.active) + } else { + shape.attr(themeStyle.edgeStyle.inactive) + } + } else if (name === 'selected') { + if (value) { + shape.attr(themeStyle.edgeStyle.selected) + } else { + shape.attr(themeStyle.edgeStyle.unselected) + } + } +} diff --git a/packages-含有注释代码/cc-topology/src/utils/index.js b/packages-含有注释代码/cc-topology/src/utils/index.js new file mode 100644 index 0000000..36fb8f1 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/index.js @@ -0,0 +1,65 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: graph utils + */ + +import node from './node' +import anchor from './anchor' +import edge from './edge' + +/** + * 比较两个对象的内容是否相同(两个对象的键值都相同) + * @param obj1 + * @param obj2 + * @returns {*} + */ +const isObjectValueEqual = function(obj1, obj2) { + let o1 = obj1 instanceof Object + let o2 = obj2 instanceof Object + // 不是对象的情况 + if (!o1 || !o2) { + return obj1 === obj2 + } + // 对象的属性(key值)个数不相等 + if (Object.keys(obj1).length !== Object.keys(obj2).length) { + return false + } + // 判断每个属性(如果属性值也是对象则需要递归) + for (let attr in obj1) { + let t1 = obj1[attr] instanceof Object + let t2 = obj2[attr] instanceof Object + if (t1 && t2) { + return isObjectValueEqual(obj1[attr], obj2[attr]) + } else if (obj1[attr] !== obj2[attr]) { + return false + } + } + return true +} + + +/** + * 生成uuid算法,碰撞率低于1/2^^122 + * @returns {string} + */ +const generateUUID = function() { + let d = new Date().getTime() + // x 是 0-9 或 a-f 范围内的一个32位十六进制数 + let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + let r = (d + Math.random() * 16) % 16 | 0 + d = Math.floor(d / 16) + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16) + }) + return uuid +} + +export default { + node, + anchor, + edge, + // 通用工具类函数 + isObjectValueEqual, + generateUUID +} diff --git a/packages-含有注释代码/cc-topology/src/utils/node/index.js b/packages-含有注释代码/cc-topology/src/utils/node/index.js new file mode 100644 index 0000000..95fa208 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/node/index.js @@ -0,0 +1,12 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: node + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/packages-含有注释代码/cc-topology/src/utils/node/set-state.js b/packages-含有注释代码/cc-topology/src/utils/node/set-state.js new file mode 100644 index 0000000..4503f47 --- /dev/null +++ b/packages-含有注释代码/cc-topology/src/utils/node/set-state.js @@ -0,0 +1,27 @@ +/** + * @author: winyuan + * @data: 2019/08/15 + * @repository: https://github.com/winyuan + * @description: set node state + */ + +import theme from '../../theme' + +export default function(name, value, item) { + const group = item.getContainer() + const shape = group.get('children')[0] // 顺序根据 draw 时确定 + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'active') { + if (value) { + shape.attr(themeStyle.nodeStyle.active) + } else { + shape.attr(themeStyle.nodeStyle.inactive) + } + } else if (name === 'selected') { + if (value) { + shape.attr(themeStyle.nodeStyle.selected) + } else { + shape.attr(themeStyle.nodeStyle.default) + } + } +} diff --git a/packages-含有注释代码/index.js b/packages-含有注释代码/index.js new file mode 100644 index 0000000..c0c4ce4 --- /dev/null +++ b/packages-含有注释代码/index.js @@ -0,0 +1,40 @@ +/** + * @author: winyuan + * @data: 2019/08/20 + * @repository: https://github.com/winyuan + * @description: 整合所有的组件,对外导出,即一个完整的组件库 + */ + +import CCTopology from './cc-topology' + +// 存储组件列表 +const components = [ + CCTopology +] + +// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册 +const install = function(Vue) { + // 判断是否安装 + if (install.installed) return + // 遍历注册全局组件 + console.info('install----CCEditor: All----') + components.map(component => Vue.component(component.name, component)) +} + +// 判断是否是直接引入文件 +if (typeof window !== 'undefined' && window.Vue) { + install(window.Vue) +} + +export default { + // 导出的对象必须具有 install,才能被 Vue.use() 方法安装 + install, + // 以下是具体的组件列表 + CCTopology +} + +export { + install, + // 以下是具体的组件列表 + CCTopology +} diff --git a/packages-含有注释代码/top/Review.vue b/packages-含有注释代码/top/Review.vue new file mode 100644 index 0000000..e4412dd --- /dev/null +++ b/packages-含有注释代码/top/Review.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/packages-含有注释代码/top/ViewTop.vue b/packages-含有注释代码/top/ViewTop.vue new file mode 100644 index 0000000..5378759 --- /dev/null +++ b/packages-含有注释代码/top/ViewTop.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/packages-含有注释代码/top/index.vue b/packages-含有注释代码/top/index.vue new file mode 100644 index 0000000..4b4e2cc --- /dev/null +++ b/packages-含有注释代码/top/index.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/packages-含有注释代码/top/topology.vue b/packages-含有注释代码/top/topology.vue new file mode 100644 index 0000000..0f66c1b --- /dev/null +++ b/packages-含有注释代码/top/topology.vue @@ -0,0 +1,176 @@ + + + + + + + diff --git a/packages-含有注释代码/topology.vue b/packages-含有注释代码/topology.vue new file mode 100644 index 0000000..506127e --- /dev/null +++ b/packages-含有注释代码/topology.vue @@ -0,0 +1,175 @@ + + + + + + + diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..5bfb8f6 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +}; diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..d9013df --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,9 @@ +// prettier.config.js or .prettierrc.js 返回对象 +module.exports = { + eslintIntegration: true, // 开启 eslint 支持 + singleQuote: true, // 使用单引号 + tabWidth: 2, // 一个tab代表几个空格数,默认为80 + useTabs: false, // 是否使用tab进行缩进,默认为false,表示用空格进行缩减 + semi: false, // 行位是否使用分号,默认为true + bracketSpacing: true //对象大括号直接是否有空格,默认为true,效果:{ foo: bar } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..28d098daaec2d6ede733c59f12b4419daa221deb GIT binary patch literal 8960 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 XH7Yst_AL=NTL2XWP5EkBtFZq8JJ)H; literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..918dee7 --- /dev/null +++ b/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + ClayTop + + + +

+ + + diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..816bab7 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,54 @@ +let path = require('path') + +function resolve(dir) { + return path.join(__dirname, dir) +} + +module.exports = { + // 修改src为examples + pages: { + index: { + entry: 'examples/main.js', + template: 'public/index.html', + filename: 'index.html' + } + }, + // 强制内联CSS + // 默认true: 使用CSS分离插件 ExtractTextPlugin,采用独立样式文件载入,不采用