├── .gitignore ├── README.md ├── express.js ├── package-lock.json ├── package.json └── public ├── css ├── mindmap.css ├── mindmap.css.map └── mindmap.scss ├── index.html ├── js ├── dataJSON.js └── main.js └── json ├── blank.json └── learn.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | .vscode 4 | .eslintrc.js 5 | .stylelintrc.js 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 网页思维导图(web mindmap) 2 | 3 | ## 目前在开发新项目——思维导图组件 4 | 5 | 更加成熟的项目: 6 | 7 | ## 前言 8 | 9 | 初衷是想实现一个跟[MindNode](https://mindnode.com)近似的网页思维导图web mindmap 10 | 11 | ### 本地运行 12 | 13 | * git clone 本项目 14 | * npm install 15 | * node express.js 16 | * 17 | 18 | ### 功能 19 | 20 | * 已实现:拖拽、编辑、删除、添加、缩放 21 | * 未实现: 22 | * 折叠 23 | * 编辑节点时,enter表示输入完成,不换行;option + enter换行 24 | * 通过鼠标操作添加节点 25 | * 一键找回根节点 26 | 27 | ## 开发手册 28 | 29 | 理清楚该网页的代码,方便后续开发。 30 | 31 | 部分功能的具体实现没有更新到开发手册,等功能下一次完善的时候再集中更新 32 | 33 | ## 简写变量 34 | 35 | * **r** - root 36 | * **d** - data 37 | * **n** - NodeList 38 | * **del** - delete 39 | * **px/py** - 相对初始位置的平移量 40 | * **dx/dy** - 相对父节点的坐标 41 | * **x/y** - 相对根节点的坐标 42 | * **dura** - duration 43 | * **sele** - select 44 | 45 | ## DataJSON类 46 | 47 | ## 辅助函数 48 | 49 | * **drawHotkey**() - 50 | * **seleOutNode**(id) - 选中对应数据id的节点 51 | * **seleMindNode**(g, id) - 递归查找并选中对应数据id的节点 52 | * **drawHiddenText**(d) - 给数据d添加d.name在text中的宽度 53 | * **traverse**(d) - 54 | * **checkEditFocus**() - 当正在编辑的节点不再focus时,根据数据更新图 55 | * **keyboardSvg**(newJSON, sele) - 56 | 57 | ## Outline绘制 58 | 59 | * **drawOutline**(data) - 根据数据data绘制outline 60 | * **shapePath**(d) - 连线生成器 61 | * **clicked**() - 点击事件 62 | * **appendNode**(enter) - 添加节点 63 | * **updateNode**(update) - 更新节点 64 | * **appendPath**(enter) - 添加连线 65 | * **updatePath**(update) - 更新连线 66 | * **draw**(r) - 处理数据r并分别绘制Node和Path 67 | 68 | ## Mindnode绘制 69 | 70 | * **drawMindnode**(data) - 根据数据data绘制mindnode 71 | * **draggedNodeRenew**(draggedNode, targetX, targetY, dura) - 更新draggedNode的位置,dura设定了动画过渡的时间 72 | * **draggedNodeChildrenRenew**(d, px, py) - 更新数据d中的平移量px和py 73 | * **dragback**(subject, draggedNode) - 74 | * **clicked**() - 75 | * **dragged**() - 拖拽中:拖拽node 76 | * **dragended**() - 拖拽结束时:更新node 77 | * **appendNode**(enter) - 添加节点 78 | * **updateNode**(update) - 更新节点 79 | * **tree**(d) - 处理数据d,返回新数据 80 | * **gNodeNest**(d, gParent) - 嵌套绘制Node和Path 81 | * **renewY**(r, textWidth) - 根据textWidth更新数据y值 82 | * **chart**(d) - 处理数据d并开始绘制 83 | 84 | ## 仍待处理 85 | 86 | * 面向对象、函数式编程 - [什么是函数式编程思维?](https://www.zhihu.com/question/28292740) 87 | * 尾递归优化 - [什么是尾递归?](https://www.zhihu.com/question/20761771) 88 | * 前端自动化测试 - [如何进行前端自动化测试?](https://www.zhihu.com/question/29922082) 89 | * mindnode和outline的联动 90 | * 如何区分dragStart 和 click 91 | * 动画的顺滑过渡 92 | * isEqualJSON 93 | -------------------------------------------------------------------------------- /express.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); // 引入express模块 2 | 3 | const app = express(); 4 | app.use(express.static('public')); 5 | const server = require('http').createServer(app);// http 6 | 7 | server.listen(3000); 8 | // eslint-disable-next-line 9 | console.log('3000'); 10 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mindnode", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz", 10 | "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/core": { 17 | "version": "7.5.5", 18 | "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.5.5.tgz", 19 | "integrity": "sha1-F7JobvDWvFj5Y93daKtml1VYLDA=", 20 | "dev": true, 21 | "requires": { 22 | "@babel/code-frame": "^7.5.5", 23 | "@babel/generator": "^7.5.5", 24 | "@babel/helpers": "^7.5.5", 25 | "@babel/parser": "^7.5.5", 26 | "@babel/template": "^7.4.4", 27 | "@babel/traverse": "^7.5.5", 28 | "@babel/types": "^7.5.5", 29 | "convert-source-map": "^1.1.0", 30 | "debug": "^4.1.0", 31 | "json5": "^2.1.0", 32 | "lodash": "^4.17.13", 33 | "resolve": "^1.3.2", 34 | "semver": "^5.4.1", 35 | "source-map": "^0.5.0" 36 | }, 37 | "dependencies": { 38 | "debug": { 39 | "version": "4.1.1", 40 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", 41 | "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", 42 | "dev": true, 43 | "requires": { 44 | "ms": "^2.1.1" 45 | } 46 | }, 47 | "ms": { 48 | "version": "2.1.2", 49 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", 50 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 51 | "dev": true 52 | }, 53 | "semver": { 54 | "version": "5.7.1", 55 | "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", 56 | "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", 57 | "dev": true 58 | }, 59 | "source-map": { 60 | "version": "0.5.7", 61 | "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", 62 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 63 | "dev": true 64 | } 65 | } 66 | }, 67 | "@babel/generator": { 68 | "version": "7.5.5", 69 | "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz", 70 | "integrity": "sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488=", 71 | "dev": true, 72 | "requires": { 73 | "@babel/types": "^7.5.5", 74 | "jsesc": "^2.5.1", 75 | "lodash": "^4.17.13", 76 | "source-map": "^0.5.0", 77 | "trim-right": "^1.0.1" 78 | }, 79 | "dependencies": { 80 | "source-map": { 81 | "version": "0.5.7", 82 | "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", 83 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 84 | "dev": true 85 | } 86 | } 87 | }, 88 | "@babel/helper-function-name": { 89 | "version": "7.1.0", 90 | "resolved": "http://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz", 91 | "integrity": "sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M=", 92 | "dev": true, 93 | "requires": { 94 | "@babel/helper-get-function-arity": "^7.0.0", 95 | "@babel/template": "^7.1.0", 96 | "@babel/types": "^7.0.0" 97 | } 98 | }, 99 | "@babel/helper-get-function-arity": { 100 | "version": "7.0.0", 101 | "resolved": "http://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz", 102 | "integrity": "sha1-g1ctQyDipGVyY3NBE8QoaLZOScM=", 103 | "dev": true, 104 | "requires": { 105 | "@babel/types": "^7.0.0" 106 | } 107 | }, 108 | "@babel/helper-split-export-declaration": { 109 | "version": "7.4.4", 110 | "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz", 111 | "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=", 112 | "dev": true, 113 | "requires": { 114 | "@babel/types": "^7.4.4" 115 | } 116 | }, 117 | "@babel/helpers": { 118 | "version": "7.5.5", 119 | "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.5.5.tgz", 120 | "integrity": "sha1-Y5CNKnOUIinR5mhbwqDnMN3jt14=", 121 | "dev": true, 122 | "requires": { 123 | "@babel/template": "^7.4.4", 124 | "@babel/traverse": "^7.5.5", 125 | "@babel/types": "^7.5.5" 126 | } 127 | }, 128 | "@babel/highlight": { 129 | "version": "7.5.0", 130 | "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz?cache=0&sync_timestamp=1562245140883&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.5.0.tgz", 131 | "integrity": "sha1-VtETEr2SSPphlZHQJHK+boyzJUA=", 132 | "dev": true, 133 | "requires": { 134 | "chalk": "^2.0.0", 135 | "esutils": "^2.0.2", 136 | "js-tokens": "^4.0.0" 137 | } 138 | }, 139 | "@babel/parser": { 140 | "version": "7.5.5", 141 | "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz", 142 | "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=", 143 | "dev": true 144 | }, 145 | "@babel/template": { 146 | "version": "7.4.4", 147 | "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz", 148 | "integrity": "sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc=", 149 | "dev": true, 150 | "requires": { 151 | "@babel/code-frame": "^7.0.0", 152 | "@babel/parser": "^7.4.4", 153 | "@babel/types": "^7.4.4" 154 | } 155 | }, 156 | "@babel/traverse": { 157 | "version": "7.5.5", 158 | "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz", 159 | "integrity": "sha1-9mT482jtMpiM1kjan3LVynDxZbs=", 160 | "dev": true, 161 | "requires": { 162 | "@babel/code-frame": "^7.5.5", 163 | "@babel/generator": "^7.5.5", 164 | "@babel/helper-function-name": "^7.1.0", 165 | "@babel/helper-split-export-declaration": "^7.4.4", 166 | "@babel/parser": "^7.5.5", 167 | "@babel/types": "^7.5.5", 168 | "debug": "^4.1.0", 169 | "globals": "^11.1.0", 170 | "lodash": "^4.17.13" 171 | }, 172 | "dependencies": { 173 | "debug": { 174 | "version": "4.1.1", 175 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", 176 | "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", 177 | "dev": true, 178 | "requires": { 179 | "ms": "^2.1.1" 180 | } 181 | }, 182 | "ms": { 183 | "version": "2.1.2", 184 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", 185 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 186 | "dev": true 187 | } 188 | } 189 | }, 190 | "@babel/types": { 191 | "version": "7.5.5", 192 | "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz", 193 | "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=", 194 | "dev": true, 195 | "requires": { 196 | "esutils": "^2.0.2", 197 | "lodash": "^4.17.13", 198 | "to-fast-properties": "^2.0.0" 199 | } 200 | }, 201 | "@mrmlnc/readdir-enhanced": { 202 | "version": "2.2.1", 203 | "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", 204 | "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", 205 | "dev": true, 206 | "requires": { 207 | "call-me-maybe": "^1.0.1", 208 | "glob-to-regexp": "^0.3.0" 209 | } 210 | }, 211 | "@nodelib/fs.stat": { 212 | "version": "1.1.3", 213 | "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz", 214 | "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", 215 | "dev": true 216 | }, 217 | "@types/events": { 218 | "version": "3.0.0", 219 | "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz", 220 | "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", 221 | "dev": true 222 | }, 223 | "@types/glob": { 224 | "version": "7.1.1", 225 | "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz", 226 | "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", 227 | "dev": true, 228 | "requires": { 229 | "@types/events": "*", 230 | "@types/minimatch": "*", 231 | "@types/node": "*" 232 | } 233 | }, 234 | "@types/minimatch": { 235 | "version": "3.0.3", 236 | "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz", 237 | "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", 238 | "dev": true 239 | }, 240 | "@types/node": { 241 | "version": "12.7.3", 242 | "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.7.3.tgz", 243 | "integrity": "sha1-J7P0Ct2vL1gEWf20BSImhVQvkHo=", 244 | "dev": true 245 | }, 246 | "@types/unist": { 247 | "version": "2.0.3", 248 | "resolved": "https://registry.npm.taobao.org/@types/unist/download/@types/unist-2.0.3.tgz", 249 | "integrity": "sha1-nAiGeYdvN061mD8VDUeHqm+zLX4=", 250 | "dev": true 251 | }, 252 | "@types/vfile": { 253 | "version": "3.0.2", 254 | "resolved": "https://registry.npm.taobao.org/@types/vfile/download/@types/vfile-3.0.2.tgz", 255 | "integrity": "sha1-GcGM0jLfEc5vpq2AJZvIbDZrCbk=", 256 | "dev": true, 257 | "requires": { 258 | "@types/node": "*", 259 | "@types/unist": "*", 260 | "@types/vfile-message": "*" 261 | } 262 | }, 263 | "@types/vfile-message": { 264 | "version": "1.0.1", 265 | "resolved": "https://registry.npm.taobao.org/@types/vfile-message/download/@types/vfile-message-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fvfile-message%2Fdownload%2F%40types%2Fvfile-message-1.0.1.tgz", 266 | "integrity": "sha1-4emJXMazbEYtQkTmTm0Lbq9lNVo=", 267 | "dev": true, 268 | "requires": { 269 | "@types/node": "*", 270 | "@types/unist": "*" 271 | } 272 | }, 273 | "accepts": { 274 | "version": "1.3.7", 275 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", 276 | "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", 277 | "requires": { 278 | "mime-types": "~2.1.24", 279 | "negotiator": "0.6.2" 280 | } 281 | }, 282 | "acorn": { 283 | "version": "7.1.1", 284 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 285 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", 286 | "dev": true 287 | }, 288 | "acorn-jsx": { 289 | "version": "5.0.2", 290 | "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.2.tgz?cache=0&sync_timestamp=1566311078040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.0.2.tgz", 291 | "integrity": "sha1-hLaOpEs3PE+GhgI6VR9hoht8Sk8=", 292 | "dev": true 293 | }, 294 | "ajv": { 295 | "version": "6.10.2", 296 | "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz", 297 | "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", 298 | "dev": true, 299 | "requires": { 300 | "fast-deep-equal": "^2.0.1", 301 | "fast-json-stable-stringify": "^2.0.0", 302 | "json-schema-traverse": "^0.4.1", 303 | "uri-js": "^4.2.2" 304 | } 305 | }, 306 | "ansi-escapes": { 307 | "version": "3.2.0", 308 | "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz", 309 | "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=", 310 | "dev": true 311 | }, 312 | "ansi-regex": { 313 | "version": "3.0.0", 314 | "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", 315 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 316 | "dev": true 317 | }, 318 | "ansi-styles": { 319 | "version": "3.2.1", 320 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", 321 | "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", 322 | "dev": true, 323 | "requires": { 324 | "color-convert": "^1.9.0" 325 | } 326 | }, 327 | "argparse": { 328 | "version": "1.0.10", 329 | "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", 330 | "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", 331 | "dev": true, 332 | "requires": { 333 | "sprintf-js": "~1.0.2" 334 | } 335 | }, 336 | "arr-diff": { 337 | "version": "4.0.0", 338 | "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", 339 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 340 | "dev": true 341 | }, 342 | "arr-flatten": { 343 | "version": "1.1.0", 344 | "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", 345 | "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", 346 | "dev": true 347 | }, 348 | "arr-union": { 349 | "version": "3.1.0", 350 | "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", 351 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 352 | "dev": true 353 | }, 354 | "array-find-index": { 355 | "version": "1.0.2", 356 | "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz", 357 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 358 | "dev": true 359 | }, 360 | "array-flatten": { 361 | "version": "1.1.1", 362 | "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", 363 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 364 | }, 365 | "array-includes": { 366 | "version": "3.0.3", 367 | "resolved": "https://registry.npm.taobao.org/array-includes/download/array-includes-3.0.3.tgz", 368 | "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", 369 | "dev": true, 370 | "requires": { 371 | "define-properties": "^1.1.2", 372 | "es-abstract": "^1.7.0" 373 | } 374 | }, 375 | "array-union": { 376 | "version": "1.0.2", 377 | "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", 378 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 379 | "dev": true, 380 | "requires": { 381 | "array-uniq": "^1.0.1" 382 | } 383 | }, 384 | "array-uniq": { 385 | "version": "1.0.3", 386 | "resolved": "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", 387 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 388 | "dev": true 389 | }, 390 | "array-unique": { 391 | "version": "0.3.2", 392 | "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", 393 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 394 | "dev": true 395 | }, 396 | "arrify": { 397 | "version": "1.0.1", 398 | "resolved": "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz", 399 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 400 | "dev": true 401 | }, 402 | "assign-symbols": { 403 | "version": "1.0.0", 404 | "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", 405 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 406 | "dev": true 407 | }, 408 | "astral-regex": { 409 | "version": "1.0.0", 410 | "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", 411 | "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", 412 | "dev": true 413 | }, 414 | "atob": { 415 | "version": "2.1.2", 416 | "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", 417 | "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", 418 | "dev": true 419 | }, 420 | "autoprefixer": { 421 | "version": "9.6.1", 422 | "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.1.tgz", 423 | "integrity": "sha1-UZZ6AtLSMAuwGGbBYR7INI01Wkc=", 424 | "dev": true, 425 | "requires": { 426 | "browserslist": "^4.6.3", 427 | "caniuse-lite": "^1.0.30000980", 428 | "chalk": "^2.4.2", 429 | "normalize-range": "^0.1.2", 430 | "num2fraction": "^1.2.2", 431 | "postcss": "^7.0.17", 432 | "postcss-value-parser": "^4.0.0" 433 | }, 434 | "dependencies": { 435 | "postcss-value-parser": { 436 | "version": "4.0.2", 437 | "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz", 438 | "integrity": "sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck=", 439 | "dev": true 440 | } 441 | } 442 | }, 443 | "axios": { 444 | "version": "0.19.0", 445 | "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.19.0.tgz", 446 | "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=", 447 | "requires": { 448 | "follow-redirects": "1.5.10", 449 | "is-buffer": "^2.0.2" 450 | } 451 | }, 452 | "bail": { 453 | "version": "1.0.4", 454 | "resolved": "https://registry.npm.taobao.org/bail/download/bail-1.0.4.tgz", 455 | "integrity": "sha1-cYG2bVCKowVdP2wT8KDHIGQd3ps=", 456 | "dev": true 457 | }, 458 | "balanced-match": { 459 | "version": "1.0.0", 460 | "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", 461 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 462 | "dev": true 463 | }, 464 | "base": { 465 | "version": "0.11.2", 466 | "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", 467 | "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", 468 | "dev": true, 469 | "requires": { 470 | "cache-base": "^1.0.1", 471 | "class-utils": "^0.3.5", 472 | "component-emitter": "^1.2.1", 473 | "define-property": "^1.0.0", 474 | "isobject": "^3.0.1", 475 | "mixin-deep": "^1.2.0", 476 | "pascalcase": "^0.1.1" 477 | }, 478 | "dependencies": { 479 | "define-property": { 480 | "version": "1.0.0", 481 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", 482 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 483 | "dev": true, 484 | "requires": { 485 | "is-descriptor": "^1.0.0" 486 | } 487 | }, 488 | "is-accessor-descriptor": { 489 | "version": "1.0.0", 490 | "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", 491 | "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", 492 | "dev": true, 493 | "requires": { 494 | "kind-of": "^6.0.0" 495 | } 496 | }, 497 | "is-data-descriptor": { 498 | "version": "1.0.0", 499 | "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", 500 | "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", 501 | "dev": true, 502 | "requires": { 503 | "kind-of": "^6.0.0" 504 | } 505 | }, 506 | "is-descriptor": { 507 | "version": "1.0.2", 508 | "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", 509 | "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", 510 | "dev": true, 511 | "requires": { 512 | "is-accessor-descriptor": "^1.0.0", 513 | "is-data-descriptor": "^1.0.0", 514 | "kind-of": "^6.0.2" 515 | } 516 | } 517 | } 518 | }, 519 | "body-parser": { 520 | "version": "1.19.0", 521 | "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", 522 | "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", 523 | "requires": { 524 | "bytes": "3.1.0", 525 | "content-type": "~1.0.4", 526 | "debug": "2.6.9", 527 | "depd": "~1.1.2", 528 | "http-errors": "1.7.2", 529 | "iconv-lite": "0.4.24", 530 | "on-finished": "~2.3.0", 531 | "qs": "6.7.0", 532 | "raw-body": "2.4.0", 533 | "type-is": "~1.6.17" 534 | } 535 | }, 536 | "brace-expansion": { 537 | "version": "1.1.11", 538 | "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", 539 | "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", 540 | "dev": true, 541 | "requires": { 542 | "balanced-match": "^1.0.0", 543 | "concat-map": "0.0.1" 544 | } 545 | }, 546 | "braces": { 547 | "version": "2.3.2", 548 | "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", 549 | "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", 550 | "dev": true, 551 | "requires": { 552 | "arr-flatten": "^1.1.0", 553 | "array-unique": "^0.3.2", 554 | "extend-shallow": "^2.0.1", 555 | "fill-range": "^4.0.0", 556 | "isobject": "^3.0.1", 557 | "repeat-element": "^1.1.2", 558 | "snapdragon": "^0.8.1", 559 | "snapdragon-node": "^2.0.1", 560 | "split-string": "^3.0.2", 561 | "to-regex": "^3.0.1" 562 | }, 563 | "dependencies": { 564 | "extend-shallow": { 565 | "version": "2.0.1", 566 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 567 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 568 | "dev": true, 569 | "requires": { 570 | "is-extendable": "^0.1.0" 571 | } 572 | } 573 | } 574 | }, 575 | "browserslist": { 576 | "version": "4.6.6", 577 | "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.6.6.tgz", 578 | "integrity": "sha1-bkv0Z83lILydvfN0fa+gNTHOxFM=", 579 | "dev": true, 580 | "requires": { 581 | "caniuse-lite": "^1.0.30000984", 582 | "electron-to-chromium": "^1.3.191", 583 | "node-releases": "^1.1.25" 584 | } 585 | }, 586 | "bytes": { 587 | "version": "3.1.0", 588 | "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", 589 | "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" 590 | }, 591 | "cache-base": { 592 | "version": "1.0.1", 593 | "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", 594 | "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", 595 | "dev": true, 596 | "requires": { 597 | "collection-visit": "^1.0.0", 598 | "component-emitter": "^1.2.1", 599 | "get-value": "^2.0.6", 600 | "has-value": "^1.0.0", 601 | "isobject": "^3.0.1", 602 | "set-value": "^2.0.0", 603 | "to-object-path": "^0.3.0", 604 | "union-value": "^1.0.0", 605 | "unset-value": "^1.0.0" 606 | } 607 | }, 608 | "call-me-maybe": { 609 | "version": "1.0.1", 610 | "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz", 611 | "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", 612 | "dev": true 613 | }, 614 | "caller-callsite": { 615 | "version": "2.0.0", 616 | "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", 617 | "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", 618 | "dev": true, 619 | "requires": { 620 | "callsites": "^2.0.0" 621 | }, 622 | "dependencies": { 623 | "callsites": { 624 | "version": "2.0.0", 625 | "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", 626 | "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", 627 | "dev": true 628 | } 629 | } 630 | }, 631 | "caller-path": { 632 | "version": "2.0.0", 633 | "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz", 634 | "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", 635 | "dev": true, 636 | "requires": { 637 | "caller-callsite": "^2.0.0" 638 | } 639 | }, 640 | "callsites": { 641 | "version": "3.1.0", 642 | "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz", 643 | "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", 644 | "dev": true 645 | }, 646 | "camelcase": { 647 | "version": "4.1.0", 648 | "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz", 649 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 650 | "dev": true 651 | }, 652 | "camelcase-keys": { 653 | "version": "4.2.0", 654 | "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-4.2.0.tgz?cache=0&sync_timestamp=1564587881114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase-keys%2Fdownload%2Fcamelcase-keys-4.2.0.tgz", 655 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 656 | "dev": true, 657 | "requires": { 658 | "camelcase": "^4.1.0", 659 | "map-obj": "^2.0.0", 660 | "quick-lru": "^1.0.0" 661 | } 662 | }, 663 | "caniuse-lite": { 664 | "version": "1.0.30000989", 665 | "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000989.tgz", 666 | "integrity": "sha1-uRk+KTzPfkQmxSRRNLjypWwKxLk=", 667 | "dev": true 668 | }, 669 | "ccount": { 670 | "version": "1.0.4", 671 | "resolved": "https://registry.npm.taobao.org/ccount/download/ccount-1.0.4.tgz", 672 | "integrity": "sha1-nPLeSUyoQGCiqNKFTt1t+wRF84Y=", 673 | "dev": true 674 | }, 675 | "chalk": { 676 | "version": "2.4.2", 677 | "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz", 678 | "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", 679 | "dev": true, 680 | "requires": { 681 | "ansi-styles": "^3.2.1", 682 | "escape-string-regexp": "^1.0.5", 683 | "supports-color": "^5.3.0" 684 | } 685 | }, 686 | "character-entities": { 687 | "version": "1.2.3", 688 | "resolved": "https://registry.npm.taobao.org/character-entities/download/character-entities-1.2.3.tgz", 689 | "integrity": "sha1-u+1KUv5++YzHE8bYDZ+qJpFtVOY=", 690 | "dev": true 691 | }, 692 | "character-entities-html4": { 693 | "version": "1.1.3", 694 | "resolved": "https://registry.npm.taobao.org/character-entities-html4/download/character-entities-html4-1.1.3.tgz", 695 | "integrity": "sha1-XObgFhjkcEisIvNPfznbXG/Wee8=", 696 | "dev": true 697 | }, 698 | "character-entities-legacy": { 699 | "version": "1.1.3", 700 | "resolved": "https://registry.npm.taobao.org/character-entities-legacy/download/character-entities-legacy-1.1.3.tgz", 701 | "integrity": "sha1-PHKZkdkpPaDt5t3crx8s4QCe6LQ=", 702 | "dev": true 703 | }, 704 | "character-reference-invalid": { 705 | "version": "1.1.3", 706 | "resolved": "https://registry.npm.taobao.org/character-reference-invalid/download/character-reference-invalid-1.1.3.tgz", 707 | "integrity": "sha1-Fkf09yZjjT6kp1DPXRl1wceRmoU=", 708 | "dev": true 709 | }, 710 | "chardet": { 711 | "version": "0.7.0", 712 | "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz", 713 | "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", 714 | "dev": true 715 | }, 716 | "class-utils": { 717 | "version": "0.3.6", 718 | "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", 719 | "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", 720 | "dev": true, 721 | "requires": { 722 | "arr-union": "^3.1.0", 723 | "define-property": "^0.2.5", 724 | "isobject": "^3.0.0", 725 | "static-extend": "^0.1.1" 726 | }, 727 | "dependencies": { 728 | "define-property": { 729 | "version": "0.2.5", 730 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", 731 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 732 | "dev": true, 733 | "requires": { 734 | "is-descriptor": "^0.1.0" 735 | } 736 | } 737 | } 738 | }, 739 | "cli-cursor": { 740 | "version": "2.1.0", 741 | "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", 742 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 743 | "dev": true, 744 | "requires": { 745 | "restore-cursor": "^2.0.0" 746 | } 747 | }, 748 | "cli-width": { 749 | "version": "2.2.0", 750 | "resolved": "http://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz", 751 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 752 | "dev": true 753 | }, 754 | "clone-regexp": { 755 | "version": "2.2.0", 756 | "resolved": "https://registry.npm.taobao.org/clone-regexp/download/clone-regexp-2.2.0.tgz", 757 | "integrity": "sha1-fWXgCIXNh5ZAXDWnN+eoa3Qp428=", 758 | "dev": true, 759 | "requires": { 760 | "is-regexp": "^2.0.0" 761 | } 762 | }, 763 | "collapse-white-space": { 764 | "version": "1.0.5", 765 | "resolved": "https://registry.npm.taobao.org/collapse-white-space/download/collapse-white-space-1.0.5.tgz", 766 | "integrity": "sha1-wklbaZqx7TgNKaEJHgEGPnXbvjo=", 767 | "dev": true 768 | }, 769 | "collection-visit": { 770 | "version": "1.0.0", 771 | "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", 772 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 773 | "dev": true, 774 | "requires": { 775 | "map-visit": "^1.0.0", 776 | "object-visit": "^1.0.0" 777 | } 778 | }, 779 | "color-convert": { 780 | "version": "1.9.3", 781 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz?cache=0&sync_timestamp=1566248870121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor-convert%2Fdownload%2Fcolor-convert-1.9.3.tgz", 782 | "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", 783 | "dev": true, 784 | "requires": { 785 | "color-name": "1.1.3" 786 | } 787 | }, 788 | "color-name": { 789 | "version": "1.1.3", 790 | "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", 791 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 792 | "dev": true 793 | }, 794 | "component-emitter": { 795 | "version": "1.3.0", 796 | "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", 797 | "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", 798 | "dev": true 799 | }, 800 | "concat-map": { 801 | "version": "0.0.1", 802 | "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", 803 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 804 | "dev": true 805 | }, 806 | "confusing-browser-globals": { 807 | "version": "1.0.8", 808 | "resolved": "https://registry.npm.taobao.org/confusing-browser-globals/download/confusing-browser-globals-1.0.8.tgz", 809 | "integrity": "sha1-k//sH4Km4r8rw2dpzDqS+iDlAvM=", 810 | "dev": true 811 | }, 812 | "contains-path": { 813 | "version": "0.1.0", 814 | "resolved": "http://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz", 815 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 816 | "dev": true 817 | }, 818 | "content-disposition": { 819 | "version": "0.5.3", 820 | "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", 821 | "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", 822 | "requires": { 823 | "safe-buffer": "5.1.2" 824 | } 825 | }, 826 | "content-type": { 827 | "version": "1.0.4", 828 | "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", 829 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" 830 | }, 831 | "convert-source-map": { 832 | "version": "1.6.0", 833 | "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz", 834 | "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=", 835 | "dev": true, 836 | "requires": { 837 | "safe-buffer": "~5.1.1" 838 | } 839 | }, 840 | "cookie": { 841 | "version": "0.4.0", 842 | "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", 843 | "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" 844 | }, 845 | "cookie-signature": { 846 | "version": "1.0.6", 847 | "resolved": "http://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", 848 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 849 | }, 850 | "copy-descriptor": { 851 | "version": "0.1.1", 852 | "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", 853 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 854 | "dev": true 855 | }, 856 | "cosmiconfig": { 857 | "version": "5.2.1", 858 | "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", 859 | "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", 860 | "dev": true, 861 | "requires": { 862 | "import-fresh": "^2.0.0", 863 | "is-directory": "^0.3.1", 864 | "js-yaml": "^3.13.1", 865 | "parse-json": "^4.0.0" 866 | }, 867 | "dependencies": { 868 | "import-fresh": { 869 | "version": "2.0.0", 870 | "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz", 871 | "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", 872 | "dev": true, 873 | "requires": { 874 | "caller-path": "^2.0.0", 875 | "resolve-from": "^3.0.0" 876 | } 877 | }, 878 | "parse-json": { 879 | "version": "4.0.0", 880 | "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", 881 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 882 | "dev": true, 883 | "requires": { 884 | "error-ex": "^1.3.1", 885 | "json-parse-better-errors": "^1.0.1" 886 | } 887 | }, 888 | "resolve-from": { 889 | "version": "3.0.0", 890 | "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", 891 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 892 | "dev": true 893 | } 894 | } 895 | }, 896 | "cross-spawn": { 897 | "version": "6.0.5", 898 | "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz", 899 | "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", 900 | "dev": true, 901 | "requires": { 902 | "nice-try": "^1.0.4", 903 | "path-key": "^2.0.1", 904 | "semver": "^5.5.0", 905 | "shebang-command": "^1.2.0", 906 | "which": "^1.2.9" 907 | }, 908 | "dependencies": { 909 | "semver": { 910 | "version": "5.7.1", 911 | "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", 912 | "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", 913 | "dev": true 914 | } 915 | } 916 | }, 917 | "cssesc": { 918 | "version": "3.0.0", 919 | "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", 920 | "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=", 921 | "dev": true 922 | }, 923 | "currently-unhandled": { 924 | "version": "0.4.1", 925 | "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz", 926 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 927 | "dev": true, 928 | "requires": { 929 | "array-find-index": "^1.0.1" 930 | } 931 | }, 932 | "debug": { 933 | "version": "2.6.9", 934 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 935 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 936 | "requires": { 937 | "ms": "2.0.0" 938 | } 939 | }, 940 | "decamelize": { 941 | "version": "1.2.0", 942 | "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", 943 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 944 | "dev": true 945 | }, 946 | "decamelize-keys": { 947 | "version": "1.1.0", 948 | "resolved": "https://registry.npm.taobao.org/decamelize-keys/download/decamelize-keys-1.1.0.tgz", 949 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 950 | "dev": true, 951 | "requires": { 952 | "decamelize": "^1.1.0", 953 | "map-obj": "^1.0.0" 954 | }, 955 | "dependencies": { 956 | "map-obj": { 957 | "version": "1.0.1", 958 | "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1560578867343&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz", 959 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 960 | "dev": true 961 | } 962 | } 963 | }, 964 | "decode-uri-component": { 965 | "version": "0.2.0", 966 | "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", 967 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 968 | "dev": true 969 | }, 970 | "deep-is": { 971 | "version": "0.1.3", 972 | "resolved": "http://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", 973 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 974 | "dev": true 975 | }, 976 | "define-properties": { 977 | "version": "1.1.3", 978 | "resolved": "http://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", 979 | "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", 980 | "dev": true, 981 | "requires": { 982 | "object-keys": "^1.0.12" 983 | } 984 | }, 985 | "define-property": { 986 | "version": "2.0.2", 987 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", 988 | "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", 989 | "dev": true, 990 | "requires": { 991 | "is-descriptor": "^1.0.2", 992 | "isobject": "^3.0.1" 993 | }, 994 | "dependencies": { 995 | "is-accessor-descriptor": { 996 | "version": "1.0.0", 997 | "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", 998 | "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", 999 | "dev": true, 1000 | "requires": { 1001 | "kind-of": "^6.0.0" 1002 | } 1003 | }, 1004 | "is-data-descriptor": { 1005 | "version": "1.0.0", 1006 | "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", 1007 | "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", 1008 | "dev": true, 1009 | "requires": { 1010 | "kind-of": "^6.0.0" 1011 | } 1012 | }, 1013 | "is-descriptor": { 1014 | "version": "1.0.2", 1015 | "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", 1016 | "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", 1017 | "dev": true, 1018 | "requires": { 1019 | "is-accessor-descriptor": "^1.0.0", 1020 | "is-data-descriptor": "^1.0.0", 1021 | "kind-of": "^6.0.2" 1022 | } 1023 | } 1024 | } 1025 | }, 1026 | "depd": { 1027 | "version": "1.1.2", 1028 | "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", 1029 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1030 | }, 1031 | "destroy": { 1032 | "version": "1.0.4", 1033 | "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", 1034 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 1035 | }, 1036 | "dir-glob": { 1037 | "version": "2.2.2", 1038 | "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz", 1039 | "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", 1040 | "dev": true, 1041 | "requires": { 1042 | "path-type": "^3.0.0" 1043 | }, 1044 | "dependencies": { 1045 | "path-type": { 1046 | "version": "3.0.0", 1047 | "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", 1048 | "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", 1049 | "dev": true, 1050 | "requires": { 1051 | "pify": "^3.0.0" 1052 | } 1053 | }, 1054 | "pify": { 1055 | "version": "3.0.0", 1056 | "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", 1057 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1058 | "dev": true 1059 | } 1060 | } 1061 | }, 1062 | "doctrine": { 1063 | "version": "3.0.0", 1064 | "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", 1065 | "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", 1066 | "dev": true, 1067 | "requires": { 1068 | "esutils": "^2.0.2" 1069 | } 1070 | }, 1071 | "dom-serializer": { 1072 | "version": "0.2.1", 1073 | "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", 1074 | "integrity": "sha1-E2UMhQ2v/qNdi2JqTPxNOhdkP9s=", 1075 | "dev": true, 1076 | "requires": { 1077 | "domelementtype": "^2.0.1", 1078 | "entities": "^2.0.0" 1079 | }, 1080 | "dependencies": { 1081 | "domelementtype": { 1082 | "version": "2.0.1", 1083 | "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz", 1084 | "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", 1085 | "dev": true 1086 | }, 1087 | "entities": { 1088 | "version": "2.0.0", 1089 | "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz?cache=0&sync_timestamp=1563403318326&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-2.0.0.tgz", 1090 | "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", 1091 | "dev": true 1092 | } 1093 | } 1094 | }, 1095 | "domelementtype": { 1096 | "version": "1.3.1", 1097 | "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz", 1098 | "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", 1099 | "dev": true 1100 | }, 1101 | "domhandler": { 1102 | "version": "2.4.2", 1103 | "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1564708887907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz", 1104 | "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", 1105 | "dev": true, 1106 | "requires": { 1107 | "domelementtype": "1" 1108 | } 1109 | }, 1110 | "domutils": { 1111 | "version": "1.7.0", 1112 | "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz", 1113 | "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", 1114 | "dev": true, 1115 | "requires": { 1116 | "dom-serializer": "0", 1117 | "domelementtype": "1" 1118 | } 1119 | }, 1120 | "dot-prop": { 1121 | "version": "4.2.0", 1122 | "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz", 1123 | "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", 1124 | "dev": true, 1125 | "requires": { 1126 | "is-obj": "^1.0.0" 1127 | } 1128 | }, 1129 | "ee-first": { 1130 | "version": "1.1.1", 1131 | "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 1132 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1133 | }, 1134 | "electron-to-chromium": { 1135 | "version": "1.3.245", 1136 | "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.245.tgz", 1137 | "integrity": "sha1-GCnEUWWFPDf3Tp9nNlRpF/eKA9Q=", 1138 | "dev": true 1139 | }, 1140 | "emoji-regex": { 1141 | "version": "7.0.3", 1142 | "resolved": "http://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", 1143 | "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", 1144 | "dev": true 1145 | }, 1146 | "encodeurl": { 1147 | "version": "1.0.2", 1148 | "resolved": "http://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", 1149 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1150 | }, 1151 | "entities": { 1152 | "version": "1.1.2", 1153 | "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1563403318326&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-1.1.2.tgz", 1154 | "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", 1155 | "dev": true 1156 | }, 1157 | "error-ex": { 1158 | "version": "1.3.2", 1159 | "resolved": "http://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", 1160 | "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", 1161 | "dev": true, 1162 | "requires": { 1163 | "is-arrayish": "^0.2.1" 1164 | } 1165 | }, 1166 | "es-abstract": { 1167 | "version": "1.13.0", 1168 | "resolved": "http://registry.npm.taobao.org/es-abstract/download/es-abstract-1.13.0.tgz", 1169 | "integrity": "sha1-rIYUX91QmdjdSVWMy6Lq+biOJOk=", 1170 | "dev": true, 1171 | "requires": { 1172 | "es-to-primitive": "^1.2.0", 1173 | "function-bind": "^1.1.1", 1174 | "has": "^1.0.3", 1175 | "is-callable": "^1.1.4", 1176 | "is-regex": "^1.0.4", 1177 | "object-keys": "^1.0.12" 1178 | } 1179 | }, 1180 | "es-to-primitive": { 1181 | "version": "1.2.0", 1182 | "resolved": "http://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz", 1183 | "integrity": "sha1-7fckeAM0VujdqO8J4ArZZQcH83c=", 1184 | "dev": true, 1185 | "requires": { 1186 | "is-callable": "^1.1.4", 1187 | "is-date-object": "^1.0.1", 1188 | "is-symbol": "^1.0.2" 1189 | } 1190 | }, 1191 | "escape-html": { 1192 | "version": "1.0.3", 1193 | "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 1194 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1195 | }, 1196 | "escape-string-regexp": { 1197 | "version": "1.0.5", 1198 | "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", 1199 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1200 | "dev": true 1201 | }, 1202 | "eslint": { 1203 | "version": "6.2.2", 1204 | "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.2.2.tgz?cache=0&sync_timestamp=1566614535578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.2.2.tgz", 1205 | "integrity": "sha1-AymCgOd1DYH80xQx89Mz5D2T8k8=", 1206 | "dev": true, 1207 | "requires": { 1208 | "@babel/code-frame": "^7.0.0", 1209 | "ajv": "^6.10.0", 1210 | "chalk": "^2.1.0", 1211 | "cross-spawn": "^6.0.5", 1212 | "debug": "^4.0.1", 1213 | "doctrine": "^3.0.0", 1214 | "eslint-scope": "^5.0.0", 1215 | "eslint-utils": "^1.4.2", 1216 | "eslint-visitor-keys": "^1.1.0", 1217 | "espree": "^6.1.1", 1218 | "esquery": "^1.0.1", 1219 | "esutils": "^2.0.2", 1220 | "file-entry-cache": "^5.0.1", 1221 | "functional-red-black-tree": "^1.0.1", 1222 | "glob-parent": "^5.0.0", 1223 | "globals": "^11.7.0", 1224 | "ignore": "^4.0.6", 1225 | "import-fresh": "^3.0.0", 1226 | "imurmurhash": "^0.1.4", 1227 | "inquirer": "^6.4.1", 1228 | "is-glob": "^4.0.0", 1229 | "js-yaml": "^3.13.1", 1230 | "json-stable-stringify-without-jsonify": "^1.0.1", 1231 | "levn": "^0.3.0", 1232 | "lodash": "^4.17.14", 1233 | "minimatch": "^3.0.4", 1234 | "mkdirp": "^0.5.1", 1235 | "natural-compare": "^1.4.0", 1236 | "optionator": "^0.8.2", 1237 | "progress": "^2.0.0", 1238 | "regexpp": "^2.0.1", 1239 | "semver": "^6.1.2", 1240 | "strip-ansi": "^5.2.0", 1241 | "strip-json-comments": "^3.0.1", 1242 | "table": "^5.2.3", 1243 | "text-table": "^0.2.0", 1244 | "v8-compile-cache": "^2.0.3" 1245 | }, 1246 | "dependencies": { 1247 | "debug": { 1248 | "version": "4.1.1", 1249 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", 1250 | "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", 1251 | "dev": true, 1252 | "requires": { 1253 | "ms": "^2.1.1" 1254 | } 1255 | }, 1256 | "ms": { 1257 | "version": "2.1.2", 1258 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", 1259 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 1260 | "dev": true 1261 | } 1262 | } 1263 | }, 1264 | "eslint-config-airbnb-base": { 1265 | "version": "14.0.0", 1266 | "resolved": "https://registry.npm.taobao.org/eslint-config-airbnb-base/download/eslint-config-airbnb-base-14.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-airbnb-base%2Fdownload%2Feslint-config-airbnb-base-14.0.0.tgz", 1267 | "integrity": "sha1-invLlkPRPFXfTddETxOL9O+mHhc=", 1268 | "dev": true, 1269 | "requires": { 1270 | "confusing-browser-globals": "^1.0.7", 1271 | "object.assign": "^4.1.0", 1272 | "object.entries": "^1.1.0" 1273 | } 1274 | }, 1275 | "eslint-import-resolver-node": { 1276 | "version": "0.3.2", 1277 | "resolved": "http://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.2.tgz", 1278 | "integrity": "sha1-WPFfuDm40FdsqYBBNHaqskcttmo=", 1279 | "dev": true, 1280 | "requires": { 1281 | "debug": "^2.6.9", 1282 | "resolve": "^1.5.0" 1283 | } 1284 | }, 1285 | "eslint-module-utils": { 1286 | "version": "2.4.1", 1287 | "resolved": "https://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.4.1.tgz", 1288 | "integrity": "sha1-e0Z1h1v5aw2/GyGXdFblux9eAYw=", 1289 | "dev": true, 1290 | "requires": { 1291 | "debug": "^2.6.8", 1292 | "pkg-dir": "^2.0.0" 1293 | } 1294 | }, 1295 | "eslint-plugin-html": { 1296 | "version": "6.0.0", 1297 | "resolved": "https://registry.npm.taobao.org/eslint-plugin-html/download/eslint-plugin-html-6.0.0.tgz", 1298 | "integrity": "sha1-KOXD5x5vYS4H5z18IV5Gl2ZijBM=", 1299 | "dev": true, 1300 | "requires": { 1301 | "htmlparser2": "^3.10.1" 1302 | } 1303 | }, 1304 | "eslint-plugin-import": { 1305 | "version": "2.18.2", 1306 | "resolved": "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.18.2.tgz", 1307 | "integrity": "sha1-AvEYC5Cwd7M9RHoXojJs60AKzrY=", 1308 | "dev": true, 1309 | "requires": { 1310 | "array-includes": "^3.0.3", 1311 | "contains-path": "^0.1.0", 1312 | "debug": "^2.6.9", 1313 | "doctrine": "1.5.0", 1314 | "eslint-import-resolver-node": "^0.3.2", 1315 | "eslint-module-utils": "^2.4.0", 1316 | "has": "^1.0.3", 1317 | "minimatch": "^3.0.4", 1318 | "object.values": "^1.1.0", 1319 | "read-pkg-up": "^2.0.0", 1320 | "resolve": "^1.11.0" 1321 | }, 1322 | "dependencies": { 1323 | "doctrine": { 1324 | "version": "1.5.0", 1325 | "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz", 1326 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1327 | "dev": true, 1328 | "requires": { 1329 | "esutils": "^2.0.2", 1330 | "isarray": "^1.0.0" 1331 | } 1332 | } 1333 | } 1334 | }, 1335 | "eslint-scope": { 1336 | "version": "5.0.0", 1337 | "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz?cache=0&sync_timestamp=1563679289211&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.0.0.tgz", 1338 | "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", 1339 | "dev": true, 1340 | "requires": { 1341 | "esrecurse": "^4.1.0", 1342 | "estraverse": "^4.1.1" 1343 | } 1344 | }, 1345 | "eslint-utils": { 1346 | "version": "1.4.2", 1347 | "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.2.tgz?cache=0&sync_timestamp=1566297013046&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.2.tgz", 1348 | "integrity": "sha1-FmpRgO9qt+tGLxYv0ObyRj1zCas=", 1349 | "dev": true, 1350 | "requires": { 1351 | "eslint-visitor-keys": "^1.0.0" 1352 | } 1353 | }, 1354 | "eslint-visitor-keys": { 1355 | "version": "1.1.0", 1356 | "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705511122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz", 1357 | "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", 1358 | "dev": true 1359 | }, 1360 | "espree": { 1361 | "version": "6.1.1", 1362 | "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.1.1.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.1.1.tgz", 1363 | "integrity": "sha1-f4Dl9yV/xH20UAItcj41ba6x5d4=", 1364 | "dev": true, 1365 | "requires": { 1366 | "acorn": "^7.0.0", 1367 | "acorn-jsx": "^5.0.2", 1368 | "eslint-visitor-keys": "^1.1.0" 1369 | } 1370 | }, 1371 | "esprima": { 1372 | "version": "4.0.1", 1373 | "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", 1374 | "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", 1375 | "dev": true 1376 | }, 1377 | "esquery": { 1378 | "version": "1.0.1", 1379 | "resolved": "http://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz", 1380 | "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=", 1381 | "dev": true, 1382 | "requires": { 1383 | "estraverse": "^4.0.0" 1384 | } 1385 | }, 1386 | "esrecurse": { 1387 | "version": "4.2.1", 1388 | "resolved": "http://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", 1389 | "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", 1390 | "dev": true, 1391 | "requires": { 1392 | "estraverse": "^4.1.0" 1393 | } 1394 | }, 1395 | "estraverse": { 1396 | "version": "4.3.0", 1397 | "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz", 1398 | "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", 1399 | "dev": true 1400 | }, 1401 | "esutils": { 1402 | "version": "2.0.3", 1403 | "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz?cache=0&sync_timestamp=1564535492241&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesutils%2Fdownload%2Fesutils-2.0.3.tgz", 1404 | "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", 1405 | "dev": true 1406 | }, 1407 | "etag": { 1408 | "version": "1.8.1", 1409 | "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", 1410 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1411 | }, 1412 | "execall": { 1413 | "version": "2.0.0", 1414 | "resolved": "https://registry.npm.taobao.org/execall/download/execall-2.0.0.tgz", 1415 | "integrity": "sha1-FqBrX+UJnffQC+XZwG7s3tFmO0U=", 1416 | "dev": true, 1417 | "requires": { 1418 | "clone-regexp": "^2.1.0" 1419 | } 1420 | }, 1421 | "expand-brackets": { 1422 | "version": "2.1.4", 1423 | "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", 1424 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1425 | "dev": true, 1426 | "requires": { 1427 | "debug": "^2.3.3", 1428 | "define-property": "^0.2.5", 1429 | "extend-shallow": "^2.0.1", 1430 | "posix-character-classes": "^0.1.0", 1431 | "regex-not": "^1.0.0", 1432 | "snapdragon": "^0.8.1", 1433 | "to-regex": "^3.0.1" 1434 | }, 1435 | "dependencies": { 1436 | "define-property": { 1437 | "version": "0.2.5", 1438 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", 1439 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1440 | "dev": true, 1441 | "requires": { 1442 | "is-descriptor": "^0.1.0" 1443 | } 1444 | }, 1445 | "extend-shallow": { 1446 | "version": "2.0.1", 1447 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 1448 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1449 | "dev": true, 1450 | "requires": { 1451 | "is-extendable": "^0.1.0" 1452 | } 1453 | } 1454 | } 1455 | }, 1456 | "express": { 1457 | "version": "4.17.1", 1458 | "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz", 1459 | "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", 1460 | "requires": { 1461 | "accepts": "~1.3.7", 1462 | "array-flatten": "1.1.1", 1463 | "body-parser": "1.19.0", 1464 | "content-disposition": "0.5.3", 1465 | "content-type": "~1.0.4", 1466 | "cookie": "0.4.0", 1467 | "cookie-signature": "1.0.6", 1468 | "debug": "2.6.9", 1469 | "depd": "~1.1.2", 1470 | "encodeurl": "~1.0.2", 1471 | "escape-html": "~1.0.3", 1472 | "etag": "~1.8.1", 1473 | "finalhandler": "~1.1.2", 1474 | "fresh": "0.5.2", 1475 | "merge-descriptors": "1.0.1", 1476 | "methods": "~1.1.2", 1477 | "on-finished": "~2.3.0", 1478 | "parseurl": "~1.3.3", 1479 | "path-to-regexp": "0.1.7", 1480 | "proxy-addr": "~2.0.5", 1481 | "qs": "6.7.0", 1482 | "range-parser": "~1.2.1", 1483 | "safe-buffer": "5.1.2", 1484 | "send": "0.17.1", 1485 | "serve-static": "1.14.1", 1486 | "setprototypeof": "1.1.1", 1487 | "statuses": "~1.5.0", 1488 | "type-is": "~1.6.18", 1489 | "utils-merge": "1.0.1", 1490 | "vary": "~1.1.2" 1491 | } 1492 | }, 1493 | "extend": { 1494 | "version": "3.0.2", 1495 | "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", 1496 | "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", 1497 | "dev": true 1498 | }, 1499 | "extend-shallow": { 1500 | "version": "3.0.2", 1501 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", 1502 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1503 | "dev": true, 1504 | "requires": { 1505 | "assign-symbols": "^1.0.0", 1506 | "is-extendable": "^1.0.1" 1507 | }, 1508 | "dependencies": { 1509 | "is-extendable": { 1510 | "version": "1.0.1", 1511 | "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", 1512 | "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", 1513 | "dev": true, 1514 | "requires": { 1515 | "is-plain-object": "^2.0.4" 1516 | } 1517 | } 1518 | } 1519 | }, 1520 | "external-editor": { 1521 | "version": "3.1.0", 1522 | "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", 1523 | "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", 1524 | "dev": true, 1525 | "requires": { 1526 | "chardet": "^0.7.0", 1527 | "iconv-lite": "^0.4.24", 1528 | "tmp": "^0.0.33" 1529 | } 1530 | }, 1531 | "extglob": { 1532 | "version": "2.0.4", 1533 | "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", 1534 | "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", 1535 | "dev": true, 1536 | "requires": { 1537 | "array-unique": "^0.3.2", 1538 | "define-property": "^1.0.0", 1539 | "expand-brackets": "^2.1.4", 1540 | "extend-shallow": "^2.0.1", 1541 | "fragment-cache": "^0.2.1", 1542 | "regex-not": "^1.0.0", 1543 | "snapdragon": "^0.8.1", 1544 | "to-regex": "^3.0.1" 1545 | }, 1546 | "dependencies": { 1547 | "define-property": { 1548 | "version": "1.0.0", 1549 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", 1550 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1551 | "dev": true, 1552 | "requires": { 1553 | "is-descriptor": "^1.0.0" 1554 | } 1555 | }, 1556 | "extend-shallow": { 1557 | "version": "2.0.1", 1558 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 1559 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1560 | "dev": true, 1561 | "requires": { 1562 | "is-extendable": "^0.1.0" 1563 | } 1564 | }, 1565 | "is-accessor-descriptor": { 1566 | "version": "1.0.0", 1567 | "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", 1568 | "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", 1569 | "dev": true, 1570 | "requires": { 1571 | "kind-of": "^6.0.0" 1572 | } 1573 | }, 1574 | "is-data-descriptor": { 1575 | "version": "1.0.0", 1576 | "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", 1577 | "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", 1578 | "dev": true, 1579 | "requires": { 1580 | "kind-of": "^6.0.0" 1581 | } 1582 | }, 1583 | "is-descriptor": { 1584 | "version": "1.0.2", 1585 | "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", 1586 | "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", 1587 | "dev": true, 1588 | "requires": { 1589 | "is-accessor-descriptor": "^1.0.0", 1590 | "is-data-descriptor": "^1.0.0", 1591 | "kind-of": "^6.0.2" 1592 | } 1593 | } 1594 | } 1595 | }, 1596 | "fast-deep-equal": { 1597 | "version": "2.0.1", 1598 | "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-2.0.1.tgz", 1599 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 1600 | "dev": true 1601 | }, 1602 | "fast-glob": { 1603 | "version": "2.2.7", 1604 | "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz", 1605 | "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", 1606 | "dev": true, 1607 | "requires": { 1608 | "@mrmlnc/readdir-enhanced": "^2.2.1", 1609 | "@nodelib/fs.stat": "^1.1.2", 1610 | "glob-parent": "^3.1.0", 1611 | "is-glob": "^4.0.0", 1612 | "merge2": "^1.2.3", 1613 | "micromatch": "^3.1.10" 1614 | }, 1615 | "dependencies": { 1616 | "glob-parent": { 1617 | "version": "3.1.0", 1618 | "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", 1619 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 1620 | "dev": true, 1621 | "requires": { 1622 | "is-glob": "^3.1.0", 1623 | "path-dirname": "^1.0.0" 1624 | }, 1625 | "dependencies": { 1626 | "is-glob": { 1627 | "version": "3.1.0", 1628 | "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", 1629 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1630 | "dev": true, 1631 | "requires": { 1632 | "is-extglob": "^2.1.0" 1633 | } 1634 | } 1635 | } 1636 | }, 1637 | "micromatch": { 1638 | "version": "3.1.10", 1639 | "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", 1640 | "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", 1641 | "dev": true, 1642 | "requires": { 1643 | "arr-diff": "^4.0.0", 1644 | "array-unique": "^0.3.2", 1645 | "braces": "^2.3.1", 1646 | "define-property": "^2.0.2", 1647 | "extend-shallow": "^3.0.2", 1648 | "extglob": "^2.0.4", 1649 | "fragment-cache": "^0.2.1", 1650 | "kind-of": "^6.0.2", 1651 | "nanomatch": "^1.2.9", 1652 | "object.pick": "^1.3.0", 1653 | "regex-not": "^1.0.0", 1654 | "snapdragon": "^0.8.1", 1655 | "to-regex": "^3.0.2" 1656 | } 1657 | } 1658 | } 1659 | }, 1660 | "fast-json-stable-stringify": { 1661 | "version": "2.0.0", 1662 | "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", 1663 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1664 | "dev": true 1665 | }, 1666 | "fast-levenshtein": { 1667 | "version": "2.0.6", 1668 | "resolved": "http://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", 1669 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1670 | "dev": true 1671 | }, 1672 | "figures": { 1673 | "version": "2.0.0", 1674 | "resolved": "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz", 1675 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1676 | "dev": true, 1677 | "requires": { 1678 | "escape-string-regexp": "^1.0.5" 1679 | } 1680 | }, 1681 | "file-entry-cache": { 1682 | "version": "5.0.1", 1683 | "resolved": "http://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", 1684 | "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", 1685 | "dev": true, 1686 | "requires": { 1687 | "flat-cache": "^2.0.1" 1688 | } 1689 | }, 1690 | "fill-range": { 1691 | "version": "4.0.0", 1692 | "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", 1693 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 1694 | "dev": true, 1695 | "requires": { 1696 | "extend-shallow": "^2.0.1", 1697 | "is-number": "^3.0.0", 1698 | "repeat-string": "^1.6.1", 1699 | "to-regex-range": "^2.1.0" 1700 | }, 1701 | "dependencies": { 1702 | "extend-shallow": { 1703 | "version": "2.0.1", 1704 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 1705 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1706 | "dev": true, 1707 | "requires": { 1708 | "is-extendable": "^0.1.0" 1709 | } 1710 | } 1711 | } 1712 | }, 1713 | "finalhandler": { 1714 | "version": "1.1.2", 1715 | "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", 1716 | "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", 1717 | "requires": { 1718 | "debug": "2.6.9", 1719 | "encodeurl": "~1.0.2", 1720 | "escape-html": "~1.0.3", 1721 | "on-finished": "~2.3.0", 1722 | "parseurl": "~1.3.3", 1723 | "statuses": "~1.5.0", 1724 | "unpipe": "~1.0.0" 1725 | } 1726 | }, 1727 | "find-up": { 1728 | "version": "2.1.0", 1729 | "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-2.1.0.tgz", 1730 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1731 | "dev": true, 1732 | "requires": { 1733 | "locate-path": "^2.0.0" 1734 | } 1735 | }, 1736 | "flat-cache": { 1737 | "version": "2.0.1", 1738 | "resolved": "http://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", 1739 | "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", 1740 | "dev": true, 1741 | "requires": { 1742 | "flatted": "^2.0.0", 1743 | "rimraf": "2.6.3", 1744 | "write": "1.0.3" 1745 | } 1746 | }, 1747 | "flatted": { 1748 | "version": "2.0.1", 1749 | "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", 1750 | "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=", 1751 | "dev": true 1752 | }, 1753 | "follow-redirects": { 1754 | "version": "1.5.10", 1755 | "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.5.10.tgz", 1756 | "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", 1757 | "requires": { 1758 | "debug": "=3.1.0" 1759 | }, 1760 | "dependencies": { 1761 | "debug": { 1762 | "version": "3.1.0", 1763 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", 1764 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", 1765 | "requires": { 1766 | "ms": "2.0.0" 1767 | } 1768 | } 1769 | } 1770 | }, 1771 | "for-in": { 1772 | "version": "1.0.2", 1773 | "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", 1774 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1775 | "dev": true 1776 | }, 1777 | "forwarded": { 1778 | "version": "0.1.2", 1779 | "resolved": "http://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", 1780 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1781 | }, 1782 | "fragment-cache": { 1783 | "version": "0.2.1", 1784 | "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", 1785 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1786 | "dev": true, 1787 | "requires": { 1788 | "map-cache": "^0.2.2" 1789 | } 1790 | }, 1791 | "fresh": { 1792 | "version": "0.5.2", 1793 | "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 1794 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1795 | }, 1796 | "fs.realpath": { 1797 | "version": "1.0.0", 1798 | "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", 1799 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1800 | "dev": true 1801 | }, 1802 | "function-bind": { 1803 | "version": "1.1.1", 1804 | "resolved": "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", 1805 | "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", 1806 | "dev": true 1807 | }, 1808 | "functional-red-black-tree": { 1809 | "version": "1.0.1", 1810 | "resolved": "http://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", 1811 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1812 | "dev": true 1813 | }, 1814 | "get-stdin": { 1815 | "version": "7.0.0", 1816 | "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-7.0.0.tgz", 1817 | "integrity": "sha1-jV3pjxUXGhJcXlFmQ8em0OqKlvY=", 1818 | "dev": true 1819 | }, 1820 | "get-value": { 1821 | "version": "2.0.6", 1822 | "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", 1823 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1824 | "dev": true 1825 | }, 1826 | "glob": { 1827 | "version": "7.1.4", 1828 | "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz", 1829 | "integrity": "sha1-qmCKL2xXetNX4a5aXCbZqNGWklU=", 1830 | "dev": true, 1831 | "requires": { 1832 | "fs.realpath": "^1.0.0", 1833 | "inflight": "^1.0.4", 1834 | "inherits": "2", 1835 | "minimatch": "^3.0.4", 1836 | "once": "^1.3.0", 1837 | "path-is-absolute": "^1.0.0" 1838 | } 1839 | }, 1840 | "glob-parent": { 1841 | "version": "5.0.0", 1842 | "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.0.0.tgz", 1843 | "integrity": "sha1-HcmfDzmwBtPpLCwoQGg4Lwwg6VQ=", 1844 | "dev": true, 1845 | "requires": { 1846 | "is-glob": "^4.0.1" 1847 | } 1848 | }, 1849 | "glob-to-regexp": { 1850 | "version": "0.3.0", 1851 | "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", 1852 | "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", 1853 | "dev": true 1854 | }, 1855 | "global-modules": { 1856 | "version": "2.0.0", 1857 | "resolved": "https://registry.npm.taobao.org/global-modules/download/global-modules-2.0.0.tgz", 1858 | "integrity": "sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=", 1859 | "dev": true, 1860 | "requires": { 1861 | "global-prefix": "^3.0.0" 1862 | } 1863 | }, 1864 | "global-prefix": { 1865 | "version": "3.0.0", 1866 | "resolved": "https://registry.npm.taobao.org/global-prefix/download/global-prefix-3.0.0.tgz", 1867 | "integrity": "sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=", 1868 | "dev": true, 1869 | "requires": { 1870 | "ini": "^1.3.5", 1871 | "kind-of": "^6.0.2", 1872 | "which": "^1.3.1" 1873 | } 1874 | }, 1875 | "globals": { 1876 | "version": "11.12.0", 1877 | "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1563722107641&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz", 1878 | "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", 1879 | "dev": true 1880 | }, 1881 | "globby": { 1882 | "version": "9.2.0", 1883 | "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", 1884 | "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", 1885 | "dev": true, 1886 | "requires": { 1887 | "@types/glob": "^7.1.1", 1888 | "array-union": "^1.0.2", 1889 | "dir-glob": "^2.2.2", 1890 | "fast-glob": "^2.2.6", 1891 | "glob": "^7.1.3", 1892 | "ignore": "^4.0.3", 1893 | "pify": "^4.0.1", 1894 | "slash": "^2.0.0" 1895 | }, 1896 | "dependencies": { 1897 | "pify": { 1898 | "version": "4.0.1", 1899 | "resolved": "http://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", 1900 | "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", 1901 | "dev": true 1902 | }, 1903 | "slash": { 1904 | "version": "2.0.0", 1905 | "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", 1906 | "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", 1907 | "dev": true 1908 | } 1909 | } 1910 | }, 1911 | "globjoin": { 1912 | "version": "0.1.4", 1913 | "resolved": "https://registry.npm.taobao.org/globjoin/download/globjoin-0.1.4.tgz", 1914 | "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", 1915 | "dev": true 1916 | }, 1917 | "gonzales-pe": { 1918 | "version": "4.2.4", 1919 | "resolved": "https://registry.npm.taobao.org/gonzales-pe/download/gonzales-pe-4.2.4.tgz", 1920 | "integrity": "sha1-NWrjajEsRv4PECbdbLU5A5+FANI=", 1921 | "dev": true, 1922 | "requires": { 1923 | "minimist": "1.1.x" 1924 | }, 1925 | "dependencies": { 1926 | "minimist": { 1927 | "version": "1.1.3", 1928 | "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.1.3.tgz", 1929 | "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", 1930 | "dev": true 1931 | } 1932 | } 1933 | }, 1934 | "graceful-fs": { 1935 | "version": "4.2.2", 1936 | "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.2.tgz", 1937 | "integrity": "sha1-bwlSYF0BQMHP2xOO0AV3W5LWewI=", 1938 | "dev": true 1939 | }, 1940 | "has": { 1941 | "version": "1.0.3", 1942 | "resolved": "http://registry.npm.taobao.org/has/download/has-1.0.3.tgz", 1943 | "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", 1944 | "dev": true, 1945 | "requires": { 1946 | "function-bind": "^1.1.1" 1947 | } 1948 | }, 1949 | "has-flag": { 1950 | "version": "3.0.0", 1951 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", 1952 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1953 | "dev": true 1954 | }, 1955 | "has-symbols": { 1956 | "version": "1.0.0", 1957 | "resolved": "http://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz", 1958 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1959 | "dev": true 1960 | }, 1961 | "has-value": { 1962 | "version": "1.0.0", 1963 | "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", 1964 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1965 | "dev": true, 1966 | "requires": { 1967 | "get-value": "^2.0.6", 1968 | "has-values": "^1.0.0", 1969 | "isobject": "^3.0.0" 1970 | } 1971 | }, 1972 | "has-values": { 1973 | "version": "1.0.0", 1974 | "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", 1975 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1976 | "dev": true, 1977 | "requires": { 1978 | "is-number": "^3.0.0", 1979 | "kind-of": "^4.0.0" 1980 | }, 1981 | "dependencies": { 1982 | "is-buffer": { 1983 | "version": "1.1.6", 1984 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 1985 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 1986 | "dev": true 1987 | }, 1988 | "kind-of": { 1989 | "version": "4.0.0", 1990 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", 1991 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1992 | "dev": true, 1993 | "requires": { 1994 | "is-buffer": "^1.1.5" 1995 | } 1996 | } 1997 | } 1998 | }, 1999 | "hosted-git-info": { 2000 | "version": "2.8.4", 2001 | "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.4.tgz", 2002 | "integrity": "sha1-RBGauvS8ZGkqFqzjRwD+2cA+JUY=", 2003 | "dev": true 2004 | }, 2005 | "html-tags": { 2006 | "version": "3.1.0", 2007 | "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz", 2008 | "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=", 2009 | "dev": true 2010 | }, 2011 | "htmlparser2": { 2012 | "version": "3.10.1", 2013 | "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz", 2014 | "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", 2015 | "dev": true, 2016 | "requires": { 2017 | "domelementtype": "^1.3.1", 2018 | "domhandler": "^2.3.0", 2019 | "domutils": "^1.5.1", 2020 | "entities": "^1.1.1", 2021 | "inherits": "^2.0.1", 2022 | "readable-stream": "^3.1.1" 2023 | } 2024 | }, 2025 | "http-errors": { 2026 | "version": "1.7.2", 2027 | "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", 2028 | "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", 2029 | "requires": { 2030 | "depd": "~1.1.2", 2031 | "inherits": "2.0.3", 2032 | "setprototypeof": "1.1.1", 2033 | "statuses": ">= 1.5.0 < 2", 2034 | "toidentifier": "1.0.0" 2035 | } 2036 | }, 2037 | "iconv-lite": { 2038 | "version": "0.4.24", 2039 | "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", 2040 | "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", 2041 | "requires": { 2042 | "safer-buffer": ">= 2.1.2 < 3" 2043 | } 2044 | }, 2045 | "ignore": { 2046 | "version": "4.0.6", 2047 | "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz", 2048 | "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", 2049 | "dev": true 2050 | }, 2051 | "import-fresh": { 2052 | "version": "3.1.0", 2053 | "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.1.0.tgz", 2054 | "integrity": "sha1-bTP6Hc7235MPrgA0RvM0Fa+QURg=", 2055 | "dev": true, 2056 | "requires": { 2057 | "parent-module": "^1.0.0", 2058 | "resolve-from": "^4.0.0" 2059 | } 2060 | }, 2061 | "import-lazy": { 2062 | "version": "4.0.0", 2063 | "resolved": "https://registry.npm.taobao.org/import-lazy/download/import-lazy-4.0.0.tgz", 2064 | "integrity": "sha1-6OtidIOgpD2jwD8+NVSL5csMwVM=", 2065 | "dev": true 2066 | }, 2067 | "imurmurhash": { 2068 | "version": "0.1.4", 2069 | "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", 2070 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2071 | "dev": true 2072 | }, 2073 | "indent-string": { 2074 | "version": "3.2.0", 2075 | "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-3.2.0.tgz", 2076 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 2077 | "dev": true 2078 | }, 2079 | "indexes-of": { 2080 | "version": "1.0.1", 2081 | "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", 2082 | "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", 2083 | "dev": true 2084 | }, 2085 | "inflight": { 2086 | "version": "1.0.6", 2087 | "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", 2088 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2089 | "dev": true, 2090 | "requires": { 2091 | "once": "^1.3.0", 2092 | "wrappy": "1" 2093 | } 2094 | }, 2095 | "inherits": { 2096 | "version": "2.0.3", 2097 | "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", 2098 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 2099 | }, 2100 | "ini": { 2101 | "version": "1.3.5", 2102 | "resolved": "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fini%2Fdownload%2Fini-1.3.5.tgz", 2103 | "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", 2104 | "dev": true 2105 | }, 2106 | "inquirer": { 2107 | "version": "6.5.2", 2108 | "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz?cache=0&sync_timestamp=1566531616319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-6.5.2.tgz", 2109 | "integrity": "sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo=", 2110 | "dev": true, 2111 | "requires": { 2112 | "ansi-escapes": "^3.2.0", 2113 | "chalk": "^2.4.2", 2114 | "cli-cursor": "^2.1.0", 2115 | "cli-width": "^2.0.0", 2116 | "external-editor": "^3.0.3", 2117 | "figures": "^2.0.0", 2118 | "lodash": "^4.17.12", 2119 | "mute-stream": "0.0.7", 2120 | "run-async": "^2.2.0", 2121 | "rxjs": "^6.4.0", 2122 | "string-width": "^2.1.0", 2123 | "strip-ansi": "^5.1.0", 2124 | "through": "^2.3.6" 2125 | } 2126 | }, 2127 | "ipaddr.js": { 2128 | "version": "1.9.0", 2129 | "resolved": "http://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz", 2130 | "integrity": "sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U=" 2131 | }, 2132 | "is-accessor-descriptor": { 2133 | "version": "0.1.6", 2134 | "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", 2135 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2136 | "dev": true, 2137 | "requires": { 2138 | "kind-of": "^3.0.2" 2139 | }, 2140 | "dependencies": { 2141 | "is-buffer": { 2142 | "version": "1.1.6", 2143 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 2144 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 2145 | "dev": true 2146 | }, 2147 | "kind-of": { 2148 | "version": "3.2.2", 2149 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 2150 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2151 | "dev": true, 2152 | "requires": { 2153 | "is-buffer": "^1.1.5" 2154 | } 2155 | } 2156 | } 2157 | }, 2158 | "is-alphabetical": { 2159 | "version": "1.0.3", 2160 | "resolved": "https://registry.npm.taobao.org/is-alphabetical/download/is-alphabetical-1.0.3.tgz", 2161 | "integrity": "sha1-6wTMRyGaiJXYRQrORxWr/yJYofg=", 2162 | "dev": true 2163 | }, 2164 | "is-alphanumeric": { 2165 | "version": "1.0.0", 2166 | "resolved": "https://registry.npm.taobao.org/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz", 2167 | "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", 2168 | "dev": true 2169 | }, 2170 | "is-alphanumerical": { 2171 | "version": "1.0.3", 2172 | "resolved": "https://registry.npm.taobao.org/is-alphanumerical/download/is-alphanumerical-1.0.3.tgz", 2173 | "integrity": "sha1-V64hw3Qnez3v4CdMZApXBLj2ZXw=", 2174 | "dev": true, 2175 | "requires": { 2176 | "is-alphabetical": "^1.0.0", 2177 | "is-decimal": "^1.0.0" 2178 | } 2179 | }, 2180 | "is-arrayish": { 2181 | "version": "0.2.1", 2182 | "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", 2183 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 2184 | "dev": true 2185 | }, 2186 | "is-buffer": { 2187 | "version": "2.0.3", 2188 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz", 2189 | "integrity": "sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU=" 2190 | }, 2191 | "is-callable": { 2192 | "version": "1.1.4", 2193 | "resolved": "http://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz", 2194 | "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=", 2195 | "dev": true 2196 | }, 2197 | "is-data-descriptor": { 2198 | "version": "0.1.4", 2199 | "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", 2200 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2201 | "dev": true, 2202 | "requires": { 2203 | "kind-of": "^3.0.2" 2204 | }, 2205 | "dependencies": { 2206 | "is-buffer": { 2207 | "version": "1.1.6", 2208 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 2209 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 2210 | "dev": true 2211 | }, 2212 | "kind-of": { 2213 | "version": "3.2.2", 2214 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 2215 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2216 | "dev": true, 2217 | "requires": { 2218 | "is-buffer": "^1.1.5" 2219 | } 2220 | } 2221 | } 2222 | }, 2223 | "is-date-object": { 2224 | "version": "1.0.1", 2225 | "resolved": "http://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz", 2226 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 2227 | "dev": true 2228 | }, 2229 | "is-decimal": { 2230 | "version": "1.0.3", 2231 | "resolved": "https://registry.npm.taobao.org/is-decimal/download/is-decimal-1.0.3.tgz", 2232 | "integrity": "sha1-OBBodZudyAfYwNwL+64raOHaSLc=", 2233 | "dev": true 2234 | }, 2235 | "is-descriptor": { 2236 | "version": "0.1.6", 2237 | "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", 2238 | "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", 2239 | "dev": true, 2240 | "requires": { 2241 | "is-accessor-descriptor": "^0.1.6", 2242 | "is-data-descriptor": "^0.1.4", 2243 | "kind-of": "^5.0.0" 2244 | }, 2245 | "dependencies": { 2246 | "kind-of": { 2247 | "version": "5.1.0", 2248 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", 2249 | "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", 2250 | "dev": true 2251 | } 2252 | } 2253 | }, 2254 | "is-directory": { 2255 | "version": "0.3.1", 2256 | "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", 2257 | "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", 2258 | "dev": true 2259 | }, 2260 | "is-extendable": { 2261 | "version": "0.1.1", 2262 | "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", 2263 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2264 | "dev": true 2265 | }, 2266 | "is-extglob": { 2267 | "version": "2.1.1", 2268 | "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", 2269 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2270 | "dev": true 2271 | }, 2272 | "is-fullwidth-code-point": { 2273 | "version": "2.0.0", 2274 | "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", 2275 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2276 | "dev": true 2277 | }, 2278 | "is-glob": { 2279 | "version": "4.0.1", 2280 | "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", 2281 | "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", 2282 | "dev": true, 2283 | "requires": { 2284 | "is-extglob": "^2.1.1" 2285 | } 2286 | }, 2287 | "is-hexadecimal": { 2288 | "version": "1.0.3", 2289 | "resolved": "https://registry.npm.taobao.org/is-hexadecimal/download/is-hexadecimal-1.0.3.tgz", 2290 | "integrity": "sha1-6KQmppttMUcNOjOke7glzaAlBu4=", 2291 | "dev": true 2292 | }, 2293 | "is-number": { 2294 | "version": "3.0.0", 2295 | "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", 2296 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2297 | "dev": true, 2298 | "requires": { 2299 | "kind-of": "^3.0.2" 2300 | }, 2301 | "dependencies": { 2302 | "is-buffer": { 2303 | "version": "1.1.6", 2304 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 2305 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 2306 | "dev": true 2307 | }, 2308 | "kind-of": { 2309 | "version": "3.2.2", 2310 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 2311 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2312 | "dev": true, 2313 | "requires": { 2314 | "is-buffer": "^1.1.5" 2315 | } 2316 | } 2317 | } 2318 | }, 2319 | "is-obj": { 2320 | "version": "1.0.1", 2321 | "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz", 2322 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 2323 | "dev": true 2324 | }, 2325 | "is-plain-obj": { 2326 | "version": "1.1.0", 2327 | "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", 2328 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 2329 | "dev": true 2330 | }, 2331 | "is-plain-object": { 2332 | "version": "2.0.4", 2333 | "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", 2334 | "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", 2335 | "dev": true, 2336 | "requires": { 2337 | "isobject": "^3.0.1" 2338 | } 2339 | }, 2340 | "is-promise": { 2341 | "version": "2.1.0", 2342 | "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz", 2343 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 2344 | "dev": true 2345 | }, 2346 | "is-regex": { 2347 | "version": "1.0.4", 2348 | "resolved": "http://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz", 2349 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 2350 | "dev": true, 2351 | "requires": { 2352 | "has": "^1.0.1" 2353 | } 2354 | }, 2355 | "is-regexp": { 2356 | "version": "2.1.0", 2357 | "resolved": "https://registry.npm.taobao.org/is-regexp/download/is-regexp-2.1.0.tgz", 2358 | "integrity": "sha1-zXNKVoZOI7lWv058ZsOWpMCyLC0=", 2359 | "dev": true 2360 | }, 2361 | "is-symbol": { 2362 | "version": "1.0.2", 2363 | "resolved": "http://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz", 2364 | "integrity": "sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg=", 2365 | "dev": true, 2366 | "requires": { 2367 | "has-symbols": "^1.0.0" 2368 | } 2369 | }, 2370 | "is-whitespace-character": { 2371 | "version": "1.0.3", 2372 | "resolved": "https://registry.npm.taobao.org/is-whitespace-character/download/is-whitespace-character-1.0.3.tgz", 2373 | "integrity": "sha1-s62VRtkW19P/p4IEvKDCa1Ylf6w=", 2374 | "dev": true 2375 | }, 2376 | "is-windows": { 2377 | "version": "1.0.2", 2378 | "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", 2379 | "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", 2380 | "dev": true 2381 | }, 2382 | "is-word-character": { 2383 | "version": "1.0.3", 2384 | "resolved": "https://registry.npm.taobao.org/is-word-character/download/is-word-character-1.0.3.tgz", 2385 | "integrity": "sha1-Jk0VVBy60LqDPTmSw05rQIc7CKo=", 2386 | "dev": true 2387 | }, 2388 | "isarray": { 2389 | "version": "1.0.0", 2390 | "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", 2391 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2392 | "dev": true 2393 | }, 2394 | "isexe": { 2395 | "version": "2.0.0", 2396 | "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", 2397 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2398 | "dev": true 2399 | }, 2400 | "isobject": { 2401 | "version": "3.0.1", 2402 | "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", 2403 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2404 | "dev": true 2405 | }, 2406 | "js-tokens": { 2407 | "version": "4.0.0", 2408 | "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", 2409 | "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", 2410 | "dev": true 2411 | }, 2412 | "js-yaml": { 2413 | "version": "3.13.1", 2414 | "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.13.1.tgz", 2415 | "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", 2416 | "dev": true, 2417 | "requires": { 2418 | "argparse": "^1.0.7", 2419 | "esprima": "^4.0.0" 2420 | } 2421 | }, 2422 | "jsesc": { 2423 | "version": "2.5.2", 2424 | "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", 2425 | "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", 2426 | "dev": true 2427 | }, 2428 | "json-parse-better-errors": { 2429 | "version": "1.0.2", 2430 | "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", 2431 | "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", 2432 | "dev": true 2433 | }, 2434 | "json-schema-traverse": { 2435 | "version": "0.4.1", 2436 | "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", 2437 | "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", 2438 | "dev": true 2439 | }, 2440 | "json-stable-stringify-without-jsonify": { 2441 | "version": "1.0.1", 2442 | "resolved": "http://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", 2443 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2444 | "dev": true 2445 | }, 2446 | "json5": { 2447 | "version": "2.1.0", 2448 | "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.0.tgz", 2449 | "integrity": "sha1-56DGLEgoXGKNIKELhcibuAfDKFA=", 2450 | "dev": true, 2451 | "requires": { 2452 | "minimist": "^1.2.0" 2453 | }, 2454 | "dependencies": { 2455 | "minimist": { 2456 | "version": "1.2.0", 2457 | "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", 2458 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2459 | "dev": true 2460 | } 2461 | } 2462 | }, 2463 | "kind-of": { 2464 | "version": "6.0.3", 2465 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2466 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2467 | "dev": true 2468 | }, 2469 | "known-css-properties": { 2470 | "version": "0.14.0", 2471 | "resolved": "https://registry.npm.taobao.org/known-css-properties/download/known-css-properties-0.14.0.tgz", 2472 | "integrity": "sha1-1wMrQzSjLcIubkawgex4na8YdWw=", 2473 | "dev": true 2474 | }, 2475 | "leven": { 2476 | "version": "3.1.0", 2477 | "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz", 2478 | "integrity": "sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=", 2479 | "dev": true 2480 | }, 2481 | "levn": { 2482 | "version": "0.3.0", 2483 | "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", 2484 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 2485 | "dev": true, 2486 | "requires": { 2487 | "prelude-ls": "~1.1.2", 2488 | "type-check": "~0.3.2" 2489 | } 2490 | }, 2491 | "load-json-file": { 2492 | "version": "2.0.0", 2493 | "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fload-json-file%2Fdownload%2Fload-json-file-2.0.0.tgz", 2494 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 2495 | "dev": true, 2496 | "requires": { 2497 | "graceful-fs": "^4.1.2", 2498 | "parse-json": "^2.2.0", 2499 | "pify": "^2.0.0", 2500 | "strip-bom": "^3.0.0" 2501 | } 2502 | }, 2503 | "locate-path": { 2504 | "version": "2.0.0", 2505 | "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", 2506 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2507 | "dev": true, 2508 | "requires": { 2509 | "p-locate": "^2.0.0", 2510 | "path-exists": "^3.0.0" 2511 | } 2512 | }, 2513 | "lodash": { 2514 | "version": "4.17.15", 2515 | "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz", 2516 | "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", 2517 | "dev": true 2518 | }, 2519 | "log-symbols": { 2520 | "version": "3.0.0", 2521 | "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-3.0.0.tgz", 2522 | "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=", 2523 | "dev": true, 2524 | "requires": { 2525 | "chalk": "^2.4.2" 2526 | } 2527 | }, 2528 | "longest-streak": { 2529 | "version": "2.0.3", 2530 | "resolved": "https://registry.npm.taobao.org/longest-streak/download/longest-streak-2.0.3.tgz", 2531 | "integrity": "sha1-Peej9H7hjpB03thXW1wJH10KQQU=", 2532 | "dev": true 2533 | }, 2534 | "loud-rejection": { 2535 | "version": "1.6.0", 2536 | "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz", 2537 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 2538 | "dev": true, 2539 | "requires": { 2540 | "currently-unhandled": "^0.4.1", 2541 | "signal-exit": "^3.0.0" 2542 | } 2543 | }, 2544 | "map-cache": { 2545 | "version": "0.2.2", 2546 | "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", 2547 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2548 | "dev": true 2549 | }, 2550 | "map-obj": { 2551 | "version": "2.0.0", 2552 | "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-2.0.0.tgz?cache=0&sync_timestamp=1560578867343&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-2.0.0.tgz", 2553 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", 2554 | "dev": true 2555 | }, 2556 | "map-visit": { 2557 | "version": "1.0.0", 2558 | "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", 2559 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2560 | "dev": true, 2561 | "requires": { 2562 | "object-visit": "^1.0.0" 2563 | } 2564 | }, 2565 | "markdown-escapes": { 2566 | "version": "1.0.3", 2567 | "resolved": "https://registry.npm.taobao.org/markdown-escapes/download/markdown-escapes-1.0.3.tgz", 2568 | "integrity": "sha1-YVXhBBbvqvq2ZdRmzlmCFjdRlfU=", 2569 | "dev": true 2570 | }, 2571 | "markdown-table": { 2572 | "version": "1.1.3", 2573 | "resolved": "https://registry.npm.taobao.org/markdown-table/download/markdown-table-1.1.3.tgz", 2574 | "integrity": "sha1-n8tpvP24cXv9A5jG7C2TA2743mA=", 2575 | "dev": true 2576 | }, 2577 | "mathml-tag-names": { 2578 | "version": "2.1.1", 2579 | "resolved": "https://registry.npm.taobao.org/mathml-tag-names/download/mathml-tag-names-2.1.1.tgz", 2580 | "integrity": "sha1-bf9myZ1V7Pc5ylPEkuYm8dEqM8w=", 2581 | "dev": true 2582 | }, 2583 | "mdast-util-compact": { 2584 | "version": "1.0.3", 2585 | "resolved": "https://registry.npm.taobao.org/mdast-util-compact/download/mdast-util-compact-1.0.3.tgz", 2586 | "integrity": "sha1-mKJcyKeGV2GkFHezqH0dzvCx550=", 2587 | "dev": true, 2588 | "requires": { 2589 | "unist-util-visit": "^1.1.0" 2590 | } 2591 | }, 2592 | "media-typer": { 2593 | "version": "0.3.0", 2594 | "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 2595 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 2596 | }, 2597 | "meow": { 2598 | "version": "5.0.0", 2599 | "resolved": "https://registry.npm.taobao.org/meow/download/meow-5.0.0.tgz", 2600 | "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", 2601 | "dev": true, 2602 | "requires": { 2603 | "camelcase-keys": "^4.0.0", 2604 | "decamelize-keys": "^1.0.0", 2605 | "loud-rejection": "^1.0.0", 2606 | "minimist-options": "^3.0.1", 2607 | "normalize-package-data": "^2.3.4", 2608 | "read-pkg-up": "^3.0.0", 2609 | "redent": "^2.0.0", 2610 | "trim-newlines": "^2.0.0", 2611 | "yargs-parser": "^10.0.0" 2612 | }, 2613 | "dependencies": { 2614 | "load-json-file": { 2615 | "version": "4.0.0", 2616 | "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fload-json-file%2Fdownload%2Fload-json-file-4.0.0.tgz", 2617 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 2618 | "dev": true, 2619 | "requires": { 2620 | "graceful-fs": "^4.1.2", 2621 | "parse-json": "^4.0.0", 2622 | "pify": "^3.0.0", 2623 | "strip-bom": "^3.0.0" 2624 | } 2625 | }, 2626 | "parse-json": { 2627 | "version": "4.0.0", 2628 | "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", 2629 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 2630 | "dev": true, 2631 | "requires": { 2632 | "error-ex": "^1.3.1", 2633 | "json-parse-better-errors": "^1.0.1" 2634 | } 2635 | }, 2636 | "path-type": { 2637 | "version": "3.0.0", 2638 | "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", 2639 | "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", 2640 | "dev": true, 2641 | "requires": { 2642 | "pify": "^3.0.0" 2643 | } 2644 | }, 2645 | "pify": { 2646 | "version": "3.0.0", 2647 | "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", 2648 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2649 | "dev": true 2650 | }, 2651 | "read-pkg": { 2652 | "version": "3.0.0", 2653 | "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz", 2654 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 2655 | "dev": true, 2656 | "requires": { 2657 | "load-json-file": "^4.0.0", 2658 | "normalize-package-data": "^2.3.2", 2659 | "path-type": "^3.0.0" 2660 | } 2661 | }, 2662 | "read-pkg-up": { 2663 | "version": "3.0.0", 2664 | "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg-up%2Fdownload%2Fread-pkg-up-3.0.0.tgz", 2665 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 2666 | "dev": true, 2667 | "requires": { 2668 | "find-up": "^2.0.0", 2669 | "read-pkg": "^3.0.0" 2670 | } 2671 | } 2672 | } 2673 | }, 2674 | "merge-descriptors": { 2675 | "version": "1.0.1", 2676 | "resolved": "http://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", 2677 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 2678 | }, 2679 | "merge2": { 2680 | "version": "1.2.4", 2681 | "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.2.4.tgz?cache=0&sync_timestamp=1564568903369&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge2%2Fdownload%2Fmerge2-1.2.4.tgz", 2682 | "integrity": "sha1-ySaVieaIWmDPgGBdlSLUtnymRuM=", 2683 | "dev": true 2684 | }, 2685 | "methods": { 2686 | "version": "1.1.2", 2687 | "resolved": "http://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", 2688 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 2689 | }, 2690 | "micromatch": { 2691 | "version": "4.0.2", 2692 | "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.2.tgz", 2693 | "integrity": "sha1-T8sJmb+fvC/L3SEvbWKbmlbDklk=", 2694 | "dev": true, 2695 | "requires": { 2696 | "braces": "^3.0.1", 2697 | "picomatch": "^2.0.5" 2698 | }, 2699 | "dependencies": { 2700 | "braces": { 2701 | "version": "3.0.2", 2702 | "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", 2703 | "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", 2704 | "dev": true, 2705 | "requires": { 2706 | "fill-range": "^7.0.1" 2707 | } 2708 | }, 2709 | "fill-range": { 2710 | "version": "7.0.1", 2711 | "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", 2712 | "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", 2713 | "dev": true, 2714 | "requires": { 2715 | "to-regex-range": "^5.0.1" 2716 | } 2717 | }, 2718 | "is-number": { 2719 | "version": "7.0.0", 2720 | "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", 2721 | "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", 2722 | "dev": true 2723 | }, 2724 | "to-regex-range": { 2725 | "version": "5.0.1", 2726 | "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", 2727 | "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", 2728 | "dev": true, 2729 | "requires": { 2730 | "is-number": "^7.0.0" 2731 | } 2732 | } 2733 | } 2734 | }, 2735 | "mime": { 2736 | "version": "1.6.0", 2737 | "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz", 2738 | "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" 2739 | }, 2740 | "mime-db": { 2741 | "version": "1.40.0", 2742 | "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz", 2743 | "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=" 2744 | }, 2745 | "mime-types": { 2746 | "version": "2.1.24", 2747 | "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz", 2748 | "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=", 2749 | "requires": { 2750 | "mime-db": "1.40.0" 2751 | } 2752 | }, 2753 | "mimic-fn": { 2754 | "version": "1.2.0", 2755 | "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz", 2756 | "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", 2757 | "dev": true 2758 | }, 2759 | "minimatch": { 2760 | "version": "3.0.4", 2761 | "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", 2762 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 2763 | "dev": true, 2764 | "requires": { 2765 | "brace-expansion": "^1.1.7" 2766 | } 2767 | }, 2768 | "minimist": { 2769 | "version": "0.0.8", 2770 | "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", 2771 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2772 | "dev": true 2773 | }, 2774 | "minimist-options": { 2775 | "version": "3.0.2", 2776 | "resolved": "https://registry.npm.taobao.org/minimist-options/download/minimist-options-3.0.2.tgz", 2777 | "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", 2778 | "dev": true, 2779 | "requires": { 2780 | "arrify": "^1.0.1", 2781 | "is-plain-obj": "^1.1.0" 2782 | } 2783 | }, 2784 | "mixin-deep": { 2785 | "version": "1.3.2", 2786 | "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", 2787 | "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", 2788 | "dev": true, 2789 | "requires": { 2790 | "for-in": "^1.0.2", 2791 | "is-extendable": "^1.0.1" 2792 | }, 2793 | "dependencies": { 2794 | "is-extendable": { 2795 | "version": "1.0.1", 2796 | "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", 2797 | "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", 2798 | "dev": true, 2799 | "requires": { 2800 | "is-plain-object": "^2.0.4" 2801 | } 2802 | } 2803 | } 2804 | }, 2805 | "mkdirp": { 2806 | "version": "0.5.1", 2807 | "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", 2808 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2809 | "dev": true, 2810 | "requires": { 2811 | "minimist": "0.0.8" 2812 | } 2813 | }, 2814 | "ms": { 2815 | "version": "2.0.0", 2816 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", 2817 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2818 | }, 2819 | "mute-stream": { 2820 | "version": "0.0.7", 2821 | "resolved": "http://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz", 2822 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 2823 | "dev": true 2824 | }, 2825 | "nanomatch": { 2826 | "version": "1.2.13", 2827 | "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", 2828 | "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", 2829 | "dev": true, 2830 | "requires": { 2831 | "arr-diff": "^4.0.0", 2832 | "array-unique": "^0.3.2", 2833 | "define-property": "^2.0.2", 2834 | "extend-shallow": "^3.0.2", 2835 | "fragment-cache": "^0.2.1", 2836 | "is-windows": "^1.0.2", 2837 | "kind-of": "^6.0.2", 2838 | "object.pick": "^1.3.0", 2839 | "regex-not": "^1.0.0", 2840 | "snapdragon": "^0.8.1", 2841 | "to-regex": "^3.0.1" 2842 | } 2843 | }, 2844 | "natural-compare": { 2845 | "version": "1.4.0", 2846 | "resolved": "http://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", 2847 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2848 | "dev": true 2849 | }, 2850 | "negotiator": { 2851 | "version": "0.6.2", 2852 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", 2853 | "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" 2854 | }, 2855 | "nice-try": { 2856 | "version": "1.0.5", 2857 | "resolved": "http://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz", 2858 | "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", 2859 | "dev": true 2860 | }, 2861 | "node-releases": { 2862 | "version": "1.1.28", 2863 | "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.28.tgz", 2864 | "integrity": "sha1-UDw8cNDkcyuE56qikl+93hBILUo=", 2865 | "dev": true, 2866 | "requires": { 2867 | "semver": "^5.3.0" 2868 | }, 2869 | "dependencies": { 2870 | "semver": { 2871 | "version": "5.7.1", 2872 | "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", 2873 | "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", 2874 | "dev": true 2875 | } 2876 | } 2877 | }, 2878 | "normalize-package-data": { 2879 | "version": "2.5.0", 2880 | "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", 2881 | "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", 2882 | "dev": true, 2883 | "requires": { 2884 | "hosted-git-info": "^2.1.4", 2885 | "resolve": "^1.10.0", 2886 | "semver": "2 || 3 || 4 || 5", 2887 | "validate-npm-package-license": "^3.0.1" 2888 | }, 2889 | "dependencies": { 2890 | "semver": { 2891 | "version": "5.7.1", 2892 | "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", 2893 | "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", 2894 | "dev": true 2895 | } 2896 | } 2897 | }, 2898 | "normalize-range": { 2899 | "version": "0.1.2", 2900 | "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", 2901 | "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 2902 | "dev": true 2903 | }, 2904 | "normalize-selector": { 2905 | "version": "0.2.0", 2906 | "resolved": "https://registry.npm.taobao.org/normalize-selector/download/normalize-selector-0.2.0.tgz", 2907 | "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", 2908 | "dev": true 2909 | }, 2910 | "num2fraction": { 2911 | "version": "1.2.2", 2912 | "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", 2913 | "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", 2914 | "dev": true 2915 | }, 2916 | "object-copy": { 2917 | "version": "0.1.0", 2918 | "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", 2919 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2920 | "dev": true, 2921 | "requires": { 2922 | "copy-descriptor": "^0.1.0", 2923 | "define-property": "^0.2.5", 2924 | "kind-of": "^3.0.3" 2925 | }, 2926 | "dependencies": { 2927 | "define-property": { 2928 | "version": "0.2.5", 2929 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", 2930 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2931 | "dev": true, 2932 | "requires": { 2933 | "is-descriptor": "^0.1.0" 2934 | } 2935 | }, 2936 | "is-buffer": { 2937 | "version": "1.1.6", 2938 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 2939 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 2940 | "dev": true 2941 | }, 2942 | "kind-of": { 2943 | "version": "3.2.2", 2944 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 2945 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2946 | "dev": true, 2947 | "requires": { 2948 | "is-buffer": "^1.1.5" 2949 | } 2950 | } 2951 | } 2952 | }, 2953 | "object-keys": { 2954 | "version": "1.1.1", 2955 | "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", 2956 | "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", 2957 | "dev": true 2958 | }, 2959 | "object-visit": { 2960 | "version": "1.0.1", 2961 | "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", 2962 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2963 | "dev": true, 2964 | "requires": { 2965 | "isobject": "^3.0.0" 2966 | } 2967 | }, 2968 | "object.assign": { 2969 | "version": "4.1.0", 2970 | "resolved": "http://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", 2971 | "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", 2972 | "dev": true, 2973 | "requires": { 2974 | "define-properties": "^1.1.2", 2975 | "function-bind": "^1.1.1", 2976 | "has-symbols": "^1.0.0", 2977 | "object-keys": "^1.0.11" 2978 | } 2979 | }, 2980 | "object.entries": { 2981 | "version": "1.1.0", 2982 | "resolved": "http://registry.npm.taobao.org/object.entries/download/object.entries-1.1.0.tgz", 2983 | "integrity": "sha1-ICT8bWuiRq7ji9sP/Vz7zzcbdRk=", 2984 | "dev": true, 2985 | "requires": { 2986 | "define-properties": "^1.1.3", 2987 | "es-abstract": "^1.12.0", 2988 | "function-bind": "^1.1.1", 2989 | "has": "^1.0.3" 2990 | } 2991 | }, 2992 | "object.pick": { 2993 | "version": "1.3.0", 2994 | "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", 2995 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2996 | "dev": true, 2997 | "requires": { 2998 | "isobject": "^3.0.1" 2999 | } 3000 | }, 3001 | "object.values": { 3002 | "version": "1.1.0", 3003 | "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz", 3004 | "integrity": "sha1-v2gQ712j5TJXkOqqK+IT6oRiTak=", 3005 | "dev": true, 3006 | "requires": { 3007 | "define-properties": "^1.1.3", 3008 | "es-abstract": "^1.12.0", 3009 | "function-bind": "^1.1.1", 3010 | "has": "^1.0.3" 3011 | } 3012 | }, 3013 | "on-finished": { 3014 | "version": "2.3.0", 3015 | "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 3016 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 3017 | "requires": { 3018 | "ee-first": "1.1.1" 3019 | } 3020 | }, 3021 | "once": { 3022 | "version": "1.4.0", 3023 | "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 3024 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3025 | "dev": true, 3026 | "requires": { 3027 | "wrappy": "1" 3028 | } 3029 | }, 3030 | "onetime": { 3031 | "version": "2.0.1", 3032 | "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz", 3033 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 3034 | "dev": true, 3035 | "requires": { 3036 | "mimic-fn": "^1.0.0" 3037 | } 3038 | }, 3039 | "optionator": { 3040 | "version": "0.8.2", 3041 | "resolved": "http://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz", 3042 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 3043 | "dev": true, 3044 | "requires": { 3045 | "deep-is": "~0.1.3", 3046 | "fast-levenshtein": "~2.0.4", 3047 | "levn": "~0.3.0", 3048 | "prelude-ls": "~1.1.2", 3049 | "type-check": "~0.3.2", 3050 | "wordwrap": "~1.0.0" 3051 | } 3052 | }, 3053 | "os-tmpdir": { 3054 | "version": "1.0.2", 3055 | "resolved": "http://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", 3056 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3057 | "dev": true 3058 | }, 3059 | "p-limit": { 3060 | "version": "1.3.0", 3061 | "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz", 3062 | "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", 3063 | "dev": true, 3064 | "requires": { 3065 | "p-try": "^1.0.0" 3066 | } 3067 | }, 3068 | "p-locate": { 3069 | "version": "2.0.0", 3070 | "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", 3071 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 3072 | "dev": true, 3073 | "requires": { 3074 | "p-limit": "^1.1.0" 3075 | } 3076 | }, 3077 | "p-try": { 3078 | "version": "1.0.0", 3079 | "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", 3080 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 3081 | "dev": true 3082 | }, 3083 | "parent-module": { 3084 | "version": "1.0.1", 3085 | "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", 3086 | "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", 3087 | "dev": true, 3088 | "requires": { 3089 | "callsites": "^3.0.0" 3090 | } 3091 | }, 3092 | "parse-entities": { 3093 | "version": "1.2.2", 3094 | "resolved": "https://registry.npm.taobao.org/parse-entities/download/parse-entities-1.2.2.tgz", 3095 | "integrity": "sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A=", 3096 | "dev": true, 3097 | "requires": { 3098 | "character-entities": "^1.0.0", 3099 | "character-entities-legacy": "^1.0.0", 3100 | "character-reference-invalid": "^1.0.0", 3101 | "is-alphanumerical": "^1.0.0", 3102 | "is-decimal": "^1.0.0", 3103 | "is-hexadecimal": "^1.0.0" 3104 | } 3105 | }, 3106 | "parse-json": { 3107 | "version": "2.2.0", 3108 | "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", 3109 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 3110 | "dev": true, 3111 | "requires": { 3112 | "error-ex": "^1.2.0" 3113 | } 3114 | }, 3115 | "parseurl": { 3116 | "version": "1.3.3", 3117 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", 3118 | "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" 3119 | }, 3120 | "pascalcase": { 3121 | "version": "0.1.1", 3122 | "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", 3123 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 3124 | "dev": true 3125 | }, 3126 | "path-dirname": { 3127 | "version": "1.0.2", 3128 | "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", 3129 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 3130 | "dev": true 3131 | }, 3132 | "path-exists": { 3133 | "version": "3.0.0", 3134 | "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", 3135 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3136 | "dev": true 3137 | }, 3138 | "path-is-absolute": { 3139 | "version": "1.0.1", 3140 | "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", 3141 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3142 | "dev": true 3143 | }, 3144 | "path-key": { 3145 | "version": "2.0.1", 3146 | "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz", 3147 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 3148 | "dev": true 3149 | }, 3150 | "path-parse": { 3151 | "version": "1.0.6", 3152 | "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", 3153 | "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", 3154 | "dev": true 3155 | }, 3156 | "path-to-regexp": { 3157 | "version": "0.1.7", 3158 | "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", 3159 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 3160 | }, 3161 | "path-type": { 3162 | "version": "2.0.0", 3163 | "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz", 3164 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 3165 | "dev": true, 3166 | "requires": { 3167 | "pify": "^2.0.0" 3168 | } 3169 | }, 3170 | "picomatch": { 3171 | "version": "2.0.7", 3172 | "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.0.7.tgz", 3173 | "integrity": "sha1-UUFp2MfNC9vuzIomCeNKcWPeafY=", 3174 | "dev": true 3175 | }, 3176 | "pify": { 3177 | "version": "2.3.0", 3178 | "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", 3179 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 3180 | "dev": true 3181 | }, 3182 | "pkg-dir": { 3183 | "version": "2.0.0", 3184 | "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz", 3185 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 3186 | "dev": true, 3187 | "requires": { 3188 | "find-up": "^2.1.0" 3189 | } 3190 | }, 3191 | "posix-character-classes": { 3192 | "version": "0.1.1", 3193 | "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", 3194 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 3195 | "dev": true 3196 | }, 3197 | "postcss": { 3198 | "version": "7.0.17", 3199 | "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.17.tgz", 3200 | "integrity": "sha1-TaG9/1Mi1KCsqrTYfz54JDa60x8=", 3201 | "dev": true, 3202 | "requires": { 3203 | "chalk": "^2.4.2", 3204 | "source-map": "^0.6.1", 3205 | "supports-color": "^6.1.0" 3206 | }, 3207 | "dependencies": { 3208 | "supports-color": { 3209 | "version": "6.1.0", 3210 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz", 3211 | "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", 3212 | "dev": true, 3213 | "requires": { 3214 | "has-flag": "^3.0.0" 3215 | } 3216 | } 3217 | } 3218 | }, 3219 | "postcss-html": { 3220 | "version": "0.36.0", 3221 | "resolved": "https://registry.npm.taobao.org/postcss-html/download/postcss-html-0.36.0.tgz", 3222 | "integrity": "sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=", 3223 | "dev": true, 3224 | "requires": { 3225 | "htmlparser2": "^3.10.0" 3226 | } 3227 | }, 3228 | "postcss-jsx": { 3229 | "version": "0.36.3", 3230 | "resolved": "https://registry.npm.taobao.org/postcss-jsx/download/postcss-jsx-0.36.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-jsx%2Fdownload%2Fpostcss-jsx-0.36.3.tgz", 3231 | "integrity": "sha1-yRET6uKTWhyU8ANTt4js6ayuP0Y=", 3232 | "dev": true, 3233 | "requires": { 3234 | "@babel/core": ">=7.2.2" 3235 | } 3236 | }, 3237 | "postcss-less": { 3238 | "version": "3.1.4", 3239 | "resolved": "https://registry.npm.taobao.org/postcss-less/download/postcss-less-3.1.4.tgz", 3240 | "integrity": "sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=", 3241 | "dev": true, 3242 | "requires": { 3243 | "postcss": "^7.0.14" 3244 | } 3245 | }, 3246 | "postcss-markdown": { 3247 | "version": "0.36.0", 3248 | "resolved": "https://registry.npm.taobao.org/postcss-markdown/download/postcss-markdown-0.36.0.tgz", 3249 | "integrity": "sha1-fyKEmuDj2xiCC3sNXngz8TpEdWA=", 3250 | "dev": true, 3251 | "requires": { 3252 | "remark": "^10.0.1", 3253 | "unist-util-find-all-after": "^1.0.2" 3254 | } 3255 | }, 3256 | "postcss-media-query-parser": { 3257 | "version": "0.2.3", 3258 | "resolved": "https://registry.npm.taobao.org/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz", 3259 | "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", 3260 | "dev": true 3261 | }, 3262 | "postcss-reporter": { 3263 | "version": "6.0.1", 3264 | "resolved": "https://registry.npm.taobao.org/postcss-reporter/download/postcss-reporter-6.0.1.tgz", 3265 | "integrity": "sha1-fAVRIAYKl8iDe05IIVZhqvt0JF8=", 3266 | "dev": true, 3267 | "requires": { 3268 | "chalk": "^2.4.1", 3269 | "lodash": "^4.17.11", 3270 | "log-symbols": "^2.2.0", 3271 | "postcss": "^7.0.7" 3272 | }, 3273 | "dependencies": { 3274 | "log-symbols": { 3275 | "version": "2.2.0", 3276 | "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz", 3277 | "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", 3278 | "dev": true, 3279 | "requires": { 3280 | "chalk": "^2.0.1" 3281 | } 3282 | } 3283 | } 3284 | }, 3285 | "postcss-resolve-nested-selector": { 3286 | "version": "0.1.1", 3287 | "resolved": "https://registry.npm.taobao.org/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz", 3288 | "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", 3289 | "dev": true 3290 | }, 3291 | "postcss-safe-parser": { 3292 | "version": "4.0.1", 3293 | "resolved": "https://registry.npm.taobao.org/postcss-safe-parser/download/postcss-safe-parser-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-safe-parser%2Fdownload%2Fpostcss-safe-parser-4.0.1.tgz", 3294 | "integrity": "sha1-h1bZ5MNv3OLHKwkbvIyhdqsfzeo=", 3295 | "dev": true, 3296 | "requires": { 3297 | "postcss": "^7.0.0" 3298 | } 3299 | }, 3300 | "postcss-sass": { 3301 | "version": "0.3.5", 3302 | "resolved": "https://registry.npm.taobao.org/postcss-sass/download/postcss-sass-0.3.5.tgz?cache=0&sync_timestamp=1562542112844&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-sass%2Fdownload%2Fpostcss-sass-0.3.5.tgz", 3303 | "integrity": "sha1-bT458QGlPS76CR+VNJMRbTK+tow=", 3304 | "dev": true, 3305 | "requires": { 3306 | "gonzales-pe": "^4.2.3", 3307 | "postcss": "^7.0.1" 3308 | } 3309 | }, 3310 | "postcss-scss": { 3311 | "version": "2.0.0", 3312 | "resolved": "https://registry.npm.taobao.org/postcss-scss/download/postcss-scss-2.0.0.tgz", 3313 | "integrity": "sha1-JIsKKK936nsysQEaug9zi9on3qE=", 3314 | "dev": true, 3315 | "requires": { 3316 | "postcss": "^7.0.0" 3317 | } 3318 | }, 3319 | "postcss-selector-parser": { 3320 | "version": "3.1.1", 3321 | "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", 3322 | "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", 3323 | "dev": true, 3324 | "requires": { 3325 | "dot-prop": "^4.1.1", 3326 | "indexes-of": "^1.0.1", 3327 | "uniq": "^1.0.1" 3328 | } 3329 | }, 3330 | "postcss-sorting": { 3331 | "version": "5.0.1", 3332 | "resolved": "https://registry.npm.taobao.org/postcss-sorting/download/postcss-sorting-5.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-sorting%2Fdownload%2Fpostcss-sorting-5.0.1.tgz", 3333 | "integrity": "sha1-ENXQBZ7qgzTazIIMASGGQDW8PxE=", 3334 | "dev": true, 3335 | "requires": { 3336 | "lodash": "^4.17.14", 3337 | "postcss": "^7.0.17" 3338 | } 3339 | }, 3340 | "postcss-syntax": { 3341 | "version": "0.36.2", 3342 | "resolved": "https://registry.npm.taobao.org/postcss-syntax/download/postcss-syntax-0.36.2.tgz", 3343 | "integrity": "sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=", 3344 | "dev": true 3345 | }, 3346 | "postcss-value-parser": { 3347 | "version": "3.3.1", 3348 | "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", 3349 | "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", 3350 | "dev": true 3351 | }, 3352 | "prelude-ls": { 3353 | "version": "1.1.2", 3354 | "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", 3355 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 3356 | "dev": true 3357 | }, 3358 | "progress": { 3359 | "version": "2.0.3", 3360 | "resolved": "http://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz", 3361 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", 3362 | "dev": true 3363 | }, 3364 | "proxy-addr": { 3365 | "version": "2.0.5", 3366 | "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz", 3367 | "integrity": "sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ=", 3368 | "requires": { 3369 | "forwarded": "~0.1.2", 3370 | "ipaddr.js": "1.9.0" 3371 | } 3372 | }, 3373 | "punycode": { 3374 | "version": "2.1.1", 3375 | "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", 3376 | "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", 3377 | "dev": true 3378 | }, 3379 | "qs": { 3380 | "version": "6.7.0", 3381 | "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", 3382 | "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" 3383 | }, 3384 | "quick-lru": { 3385 | "version": "1.1.0", 3386 | "resolved": "https://registry.npm.taobao.org/quick-lru/download/quick-lru-1.1.0.tgz", 3387 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", 3388 | "dev": true 3389 | }, 3390 | "range-parser": { 3391 | "version": "1.2.1", 3392 | "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", 3393 | "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" 3394 | }, 3395 | "raw-body": { 3396 | "version": "2.4.0", 3397 | "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", 3398 | "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", 3399 | "requires": { 3400 | "bytes": "3.1.0", 3401 | "http-errors": "1.7.2", 3402 | "iconv-lite": "0.4.24", 3403 | "unpipe": "1.0.0" 3404 | } 3405 | }, 3406 | "read-pkg": { 3407 | "version": "2.0.0", 3408 | "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz", 3409 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 3410 | "dev": true, 3411 | "requires": { 3412 | "load-json-file": "^2.0.0", 3413 | "normalize-package-data": "^2.3.2", 3414 | "path-type": "^2.0.0" 3415 | } 3416 | }, 3417 | "read-pkg-up": { 3418 | "version": "2.0.0", 3419 | "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg-up%2Fdownload%2Fread-pkg-up-2.0.0.tgz", 3420 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 3421 | "dev": true, 3422 | "requires": { 3423 | "find-up": "^2.0.0", 3424 | "read-pkg": "^2.0.0" 3425 | } 3426 | }, 3427 | "readable-stream": { 3428 | "version": "3.4.0", 3429 | "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", 3430 | "integrity": "sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w=", 3431 | "dev": true, 3432 | "requires": { 3433 | "inherits": "^2.0.3", 3434 | "string_decoder": "^1.1.1", 3435 | "util-deprecate": "^1.0.1" 3436 | } 3437 | }, 3438 | "redent": { 3439 | "version": "2.0.0", 3440 | "resolved": "https://registry.npm.taobao.org/redent/download/redent-2.0.0.tgz", 3441 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 3442 | "dev": true, 3443 | "requires": { 3444 | "indent-string": "^3.0.0", 3445 | "strip-indent": "^2.0.0" 3446 | } 3447 | }, 3448 | "regex-not": { 3449 | "version": "1.0.2", 3450 | "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", 3451 | "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", 3452 | "dev": true, 3453 | "requires": { 3454 | "extend-shallow": "^3.0.2", 3455 | "safe-regex": "^1.1.0" 3456 | } 3457 | }, 3458 | "regexpp": { 3459 | "version": "2.0.1", 3460 | "resolved": "http://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz", 3461 | "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", 3462 | "dev": true 3463 | }, 3464 | "remark": { 3465 | "version": "10.0.1", 3466 | "resolved": "https://registry.npm.taobao.org/remark/download/remark-10.0.1.tgz", 3467 | "integrity": "sha1-MFgHbcQXgb9QXYl4wpFIX+R2Z98=", 3468 | "dev": true, 3469 | "requires": { 3470 | "remark-parse": "^6.0.0", 3471 | "remark-stringify": "^6.0.0", 3472 | "unified": "^7.0.0" 3473 | } 3474 | }, 3475 | "remark-parse": { 3476 | "version": "6.0.3", 3477 | "resolved": "https://registry.npm.taobao.org/remark-parse/download/remark-parse-6.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fremark-parse%2Fdownload%2Fremark-parse-6.0.3.tgz", 3478 | "integrity": "sha1-yZExBSgJ2kghCEE/h7Duf1IYCjo=", 3479 | "dev": true, 3480 | "requires": { 3481 | "collapse-white-space": "^1.0.2", 3482 | "is-alphabetical": "^1.0.0", 3483 | "is-decimal": "^1.0.0", 3484 | "is-whitespace-character": "^1.0.0", 3485 | "is-word-character": "^1.0.0", 3486 | "markdown-escapes": "^1.0.0", 3487 | "parse-entities": "^1.1.0", 3488 | "repeat-string": "^1.5.4", 3489 | "state-toggle": "^1.0.0", 3490 | "trim": "0.0.1", 3491 | "trim-trailing-lines": "^1.0.0", 3492 | "unherit": "^1.0.4", 3493 | "unist-util-remove-position": "^1.0.0", 3494 | "vfile-location": "^2.0.0", 3495 | "xtend": "^4.0.1" 3496 | } 3497 | }, 3498 | "remark-stringify": { 3499 | "version": "6.0.4", 3500 | "resolved": "https://registry.npm.taobao.org/remark-stringify/download/remark-stringify-6.0.4.tgz", 3501 | "integrity": "sha1-FqwinU0VkySQGGY8e93yiq/E4Ig=", 3502 | "dev": true, 3503 | "requires": { 3504 | "ccount": "^1.0.0", 3505 | "is-alphanumeric": "^1.0.0", 3506 | "is-decimal": "^1.0.0", 3507 | "is-whitespace-character": "^1.0.0", 3508 | "longest-streak": "^2.0.1", 3509 | "markdown-escapes": "^1.0.0", 3510 | "markdown-table": "^1.1.0", 3511 | "mdast-util-compact": "^1.0.0", 3512 | "parse-entities": "^1.0.2", 3513 | "repeat-string": "^1.5.4", 3514 | "state-toggle": "^1.0.0", 3515 | "stringify-entities": "^1.0.1", 3516 | "unherit": "^1.0.4", 3517 | "xtend": "^4.0.1" 3518 | } 3519 | }, 3520 | "repeat-element": { 3521 | "version": "1.1.3", 3522 | "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", 3523 | "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", 3524 | "dev": true 3525 | }, 3526 | "repeat-string": { 3527 | "version": "1.6.1", 3528 | "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", 3529 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3530 | "dev": true 3531 | }, 3532 | "replace-ext": { 3533 | "version": "1.0.0", 3534 | "resolved": "https://registry.npm.taobao.org/replace-ext/download/replace-ext-1.0.0.tgz", 3535 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", 3536 | "dev": true 3537 | }, 3538 | "resolve": { 3539 | "version": "1.12.0", 3540 | "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", 3541 | "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", 3542 | "dev": true, 3543 | "requires": { 3544 | "path-parse": "^1.0.6" 3545 | } 3546 | }, 3547 | "resolve-from": { 3548 | "version": "4.0.0", 3549 | "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", 3550 | "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", 3551 | "dev": true 3552 | }, 3553 | "resolve-url": { 3554 | "version": "0.2.1", 3555 | "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", 3556 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 3557 | "dev": true 3558 | }, 3559 | "restore-cursor": { 3560 | "version": "2.0.0", 3561 | "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz", 3562 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 3563 | "dev": true, 3564 | "requires": { 3565 | "onetime": "^2.0.0", 3566 | "signal-exit": "^3.0.2" 3567 | } 3568 | }, 3569 | "ret": { 3570 | "version": "0.1.15", 3571 | "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", 3572 | "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", 3573 | "dev": true 3574 | }, 3575 | "rimraf": { 3576 | "version": "2.6.3", 3577 | "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", 3578 | "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", 3579 | "dev": true, 3580 | "requires": { 3581 | "glob": "^7.1.3" 3582 | } 3583 | }, 3584 | "run-async": { 3585 | "version": "2.3.0", 3586 | "resolved": "http://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz", 3587 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 3588 | "dev": true, 3589 | "requires": { 3590 | "is-promise": "^2.1.0" 3591 | } 3592 | }, 3593 | "rxjs": { 3594 | "version": "6.5.2", 3595 | "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.2.tgz", 3596 | "integrity": "sha1-LjXOgVzUbYTQKiCftOWSHgUdvsc=", 3597 | "dev": true, 3598 | "requires": { 3599 | "tslib": "^1.9.0" 3600 | } 3601 | }, 3602 | "safe-buffer": { 3603 | "version": "5.1.2", 3604 | "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", 3605 | "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" 3606 | }, 3607 | "safe-regex": { 3608 | "version": "1.1.0", 3609 | "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz", 3610 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3611 | "dev": true, 3612 | "requires": { 3613 | "ret": "~0.1.10" 3614 | } 3615 | }, 3616 | "safer-buffer": { 3617 | "version": "2.1.2", 3618 | "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", 3619 | "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" 3620 | }, 3621 | "semver": { 3622 | "version": "6.3.0", 3623 | "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", 3624 | "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", 3625 | "dev": true 3626 | }, 3627 | "send": { 3628 | "version": "0.17.1", 3629 | "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", 3630 | "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", 3631 | "requires": { 3632 | "debug": "2.6.9", 3633 | "depd": "~1.1.2", 3634 | "destroy": "~1.0.4", 3635 | "encodeurl": "~1.0.2", 3636 | "escape-html": "~1.0.3", 3637 | "etag": "~1.8.1", 3638 | "fresh": "0.5.2", 3639 | "http-errors": "~1.7.2", 3640 | "mime": "1.6.0", 3641 | "ms": "2.1.1", 3642 | "on-finished": "~2.3.0", 3643 | "range-parser": "~1.2.1", 3644 | "statuses": "~1.5.0" 3645 | }, 3646 | "dependencies": { 3647 | "ms": { 3648 | "version": "2.1.1", 3649 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", 3650 | "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" 3651 | } 3652 | } 3653 | }, 3654 | "serve-static": { 3655 | "version": "1.14.1", 3656 | "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", 3657 | "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", 3658 | "requires": { 3659 | "encodeurl": "~1.0.2", 3660 | "escape-html": "~1.0.3", 3661 | "parseurl": "~1.3.3", 3662 | "send": "0.17.1" 3663 | } 3664 | }, 3665 | "set-value": { 3666 | "version": "2.0.1", 3667 | "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", 3668 | "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", 3669 | "dev": true, 3670 | "requires": { 3671 | "extend-shallow": "^2.0.1", 3672 | "is-extendable": "^0.1.1", 3673 | "is-plain-object": "^2.0.3", 3674 | "split-string": "^3.0.1" 3675 | }, 3676 | "dependencies": { 3677 | "extend-shallow": { 3678 | "version": "2.0.1", 3679 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 3680 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3681 | "dev": true, 3682 | "requires": { 3683 | "is-extendable": "^0.1.0" 3684 | } 3685 | } 3686 | } 3687 | }, 3688 | "setprototypeof": { 3689 | "version": "1.1.1", 3690 | "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", 3691 | "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" 3692 | }, 3693 | "shebang-command": { 3694 | "version": "1.2.0", 3695 | "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", 3696 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3697 | "dev": true, 3698 | "requires": { 3699 | "shebang-regex": "^1.0.0" 3700 | } 3701 | }, 3702 | "shebang-regex": { 3703 | "version": "1.0.0", 3704 | "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", 3705 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3706 | "dev": true 3707 | }, 3708 | "signal-exit": { 3709 | "version": "3.0.2", 3710 | "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", 3711 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3712 | "dev": true 3713 | }, 3714 | "slash": { 3715 | "version": "3.0.0", 3716 | "resolved": "https://registry.npm.taobao.org/slash/download/slash-3.0.0.tgz", 3717 | "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", 3718 | "dev": true 3719 | }, 3720 | "slice-ansi": { 3721 | "version": "2.1.0", 3722 | "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz", 3723 | "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", 3724 | "dev": true, 3725 | "requires": { 3726 | "ansi-styles": "^3.2.0", 3727 | "astral-regex": "^1.0.0", 3728 | "is-fullwidth-code-point": "^2.0.0" 3729 | } 3730 | }, 3731 | "snapdragon": { 3732 | "version": "0.8.2", 3733 | "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", 3734 | "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", 3735 | "dev": true, 3736 | "requires": { 3737 | "base": "^0.11.1", 3738 | "debug": "^2.2.0", 3739 | "define-property": "^0.2.5", 3740 | "extend-shallow": "^2.0.1", 3741 | "map-cache": "^0.2.2", 3742 | "source-map": "^0.5.6", 3743 | "source-map-resolve": "^0.5.0", 3744 | "use": "^3.1.0" 3745 | }, 3746 | "dependencies": { 3747 | "define-property": { 3748 | "version": "0.2.5", 3749 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", 3750 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3751 | "dev": true, 3752 | "requires": { 3753 | "is-descriptor": "^0.1.0" 3754 | } 3755 | }, 3756 | "extend-shallow": { 3757 | "version": "2.0.1", 3758 | "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", 3759 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3760 | "dev": true, 3761 | "requires": { 3762 | "is-extendable": "^0.1.0" 3763 | } 3764 | }, 3765 | "source-map": { 3766 | "version": "0.5.7", 3767 | "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", 3768 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3769 | "dev": true 3770 | } 3771 | } 3772 | }, 3773 | "snapdragon-node": { 3774 | "version": "2.1.1", 3775 | "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", 3776 | "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", 3777 | "dev": true, 3778 | "requires": { 3779 | "define-property": "^1.0.0", 3780 | "isobject": "^3.0.0", 3781 | "snapdragon-util": "^3.0.1" 3782 | }, 3783 | "dependencies": { 3784 | "define-property": { 3785 | "version": "1.0.0", 3786 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", 3787 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3788 | "dev": true, 3789 | "requires": { 3790 | "is-descriptor": "^1.0.0" 3791 | } 3792 | }, 3793 | "is-accessor-descriptor": { 3794 | "version": "1.0.0", 3795 | "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", 3796 | "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", 3797 | "dev": true, 3798 | "requires": { 3799 | "kind-of": "^6.0.0" 3800 | } 3801 | }, 3802 | "is-data-descriptor": { 3803 | "version": "1.0.0", 3804 | "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", 3805 | "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", 3806 | "dev": true, 3807 | "requires": { 3808 | "kind-of": "^6.0.0" 3809 | } 3810 | }, 3811 | "is-descriptor": { 3812 | "version": "1.0.2", 3813 | "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", 3814 | "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", 3815 | "dev": true, 3816 | "requires": { 3817 | "is-accessor-descriptor": "^1.0.0", 3818 | "is-data-descriptor": "^1.0.0", 3819 | "kind-of": "^6.0.2" 3820 | } 3821 | } 3822 | } 3823 | }, 3824 | "snapdragon-util": { 3825 | "version": "3.0.1", 3826 | "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", 3827 | "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", 3828 | "dev": true, 3829 | "requires": { 3830 | "kind-of": "^3.2.0" 3831 | }, 3832 | "dependencies": { 3833 | "is-buffer": { 3834 | "version": "1.1.6", 3835 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 3836 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 3837 | "dev": true 3838 | }, 3839 | "kind-of": { 3840 | "version": "3.2.2", 3841 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 3842 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3843 | "dev": true, 3844 | "requires": { 3845 | "is-buffer": "^1.1.5" 3846 | } 3847 | } 3848 | } 3849 | }, 3850 | "source-map": { 3851 | "version": "0.6.1", 3852 | "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", 3853 | "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", 3854 | "dev": true 3855 | }, 3856 | "source-map-resolve": { 3857 | "version": "0.5.2", 3858 | "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz", 3859 | "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", 3860 | "dev": true, 3861 | "requires": { 3862 | "atob": "^2.1.1", 3863 | "decode-uri-component": "^0.2.0", 3864 | "resolve-url": "^0.2.1", 3865 | "source-map-url": "^0.4.0", 3866 | "urix": "^0.1.0" 3867 | } 3868 | }, 3869 | "source-map-url": { 3870 | "version": "0.4.0", 3871 | "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", 3872 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3873 | "dev": true 3874 | }, 3875 | "spdx-correct": { 3876 | "version": "3.1.0", 3877 | "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", 3878 | "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", 3879 | "dev": true, 3880 | "requires": { 3881 | "spdx-expression-parse": "^3.0.0", 3882 | "spdx-license-ids": "^3.0.0" 3883 | } 3884 | }, 3885 | "spdx-exceptions": { 3886 | "version": "2.2.0", 3887 | "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", 3888 | "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", 3889 | "dev": true 3890 | }, 3891 | "spdx-expression-parse": { 3892 | "version": "3.0.0", 3893 | "resolved": "http://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", 3894 | "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", 3895 | "dev": true, 3896 | "requires": { 3897 | "spdx-exceptions": "^2.1.0", 3898 | "spdx-license-ids": "^3.0.0" 3899 | } 3900 | }, 3901 | "spdx-license-ids": { 3902 | "version": "3.0.5", 3903 | "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz?cache=0&sync_timestamp=1562834220236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.5.tgz", 3904 | "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", 3905 | "dev": true 3906 | }, 3907 | "specificity": { 3908 | "version": "0.4.1", 3909 | "resolved": "https://registry.npm.taobao.org/specificity/download/specificity-0.4.1.tgz", 3910 | "integrity": "sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=", 3911 | "dev": true 3912 | }, 3913 | "split-string": { 3914 | "version": "3.1.0", 3915 | "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", 3916 | "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", 3917 | "dev": true, 3918 | "requires": { 3919 | "extend-shallow": "^3.0.0" 3920 | } 3921 | }, 3922 | "sprintf-js": { 3923 | "version": "1.0.3", 3924 | "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", 3925 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3926 | "dev": true 3927 | }, 3928 | "state-toggle": { 3929 | "version": "1.0.2", 3930 | "resolved": "https://registry.npm.taobao.org/state-toggle/download/state-toggle-1.0.2.tgz", 3931 | "integrity": "sha1-dek6YZRBFrSVnWZcjbLSQ2Mdbdw=", 3932 | "dev": true 3933 | }, 3934 | "static-extend": { 3935 | "version": "0.1.2", 3936 | "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", 3937 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3938 | "dev": true, 3939 | "requires": { 3940 | "define-property": "^0.2.5", 3941 | "object-copy": "^0.1.0" 3942 | }, 3943 | "dependencies": { 3944 | "define-property": { 3945 | "version": "0.2.5", 3946 | "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", 3947 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3948 | "dev": true, 3949 | "requires": { 3950 | "is-descriptor": "^0.1.0" 3951 | } 3952 | } 3953 | } 3954 | }, 3955 | "statuses": { 3956 | "version": "1.5.0", 3957 | "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", 3958 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 3959 | }, 3960 | "string-width": { 3961 | "version": "2.1.1", 3962 | "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", 3963 | "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", 3964 | "dev": true, 3965 | "requires": { 3966 | "is-fullwidth-code-point": "^2.0.0", 3967 | "strip-ansi": "^4.0.0" 3968 | }, 3969 | "dependencies": { 3970 | "strip-ansi": { 3971 | "version": "4.0.0", 3972 | "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", 3973 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3974 | "dev": true, 3975 | "requires": { 3976 | "ansi-regex": "^3.0.0" 3977 | } 3978 | } 3979 | } 3980 | }, 3981 | "string_decoder": { 3982 | "version": "1.3.0", 3983 | "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz", 3984 | "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", 3985 | "dev": true, 3986 | "requires": { 3987 | "safe-buffer": "~5.2.0" 3988 | }, 3989 | "dependencies": { 3990 | "safe-buffer": { 3991 | "version": "5.2.0", 3992 | "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz", 3993 | "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=", 3994 | "dev": true 3995 | } 3996 | } 3997 | }, 3998 | "stringify-entities": { 3999 | "version": "1.3.2", 4000 | "resolved": "https://registry.npm.taobao.org/stringify-entities/download/stringify-entities-1.3.2.tgz", 4001 | "integrity": "sha1-qYQX5Ucf0iez5F09sYYcEcr2aPc=", 4002 | "dev": true, 4003 | "requires": { 4004 | "character-entities-html4": "^1.0.0", 4005 | "character-entities-legacy": "^1.0.0", 4006 | "is-alphanumerical": "^1.0.0", 4007 | "is-hexadecimal": "^1.0.0" 4008 | } 4009 | }, 4010 | "strip-ansi": { 4011 | "version": "5.2.0", 4012 | "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", 4013 | "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", 4014 | "dev": true, 4015 | "requires": { 4016 | "ansi-regex": "^4.1.0" 4017 | }, 4018 | "dependencies": { 4019 | "ansi-regex": { 4020 | "version": "4.1.0", 4021 | "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", 4022 | "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", 4023 | "dev": true 4024 | } 4025 | } 4026 | }, 4027 | "strip-bom": { 4028 | "version": "3.0.0", 4029 | "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz", 4030 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 4031 | "dev": true 4032 | }, 4033 | "strip-indent": { 4034 | "version": "2.0.0", 4035 | "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz", 4036 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", 4037 | "dev": true 4038 | }, 4039 | "strip-json-comments": { 4040 | "version": "3.0.1", 4041 | "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.0.1.tgz", 4042 | "integrity": "sha1-hXE5dakfuHvxswXMp3OV5A0qZKc=", 4043 | "dev": true 4044 | }, 4045 | "style-search": { 4046 | "version": "0.1.0", 4047 | "resolved": "https://registry.npm.taobao.org/style-search/download/style-search-0.1.0.tgz", 4048 | "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", 4049 | "dev": true 4050 | }, 4051 | "stylelint": { 4052 | "version": "10.1.0", 4053 | "resolved": "https://registry.npm.taobao.org/stylelint/download/stylelint-10.1.0.tgz", 4054 | "integrity": "sha1-G8TEzoeBB+fDlrGSJtkbooJokRo=", 4055 | "dev": true, 4056 | "requires": { 4057 | "autoprefixer": "^9.5.1", 4058 | "balanced-match": "^1.0.0", 4059 | "chalk": "^2.4.2", 4060 | "cosmiconfig": "^5.2.0", 4061 | "debug": "^4.1.1", 4062 | "execall": "^2.0.0", 4063 | "file-entry-cache": "^5.0.1", 4064 | "get-stdin": "^7.0.0", 4065 | "global-modules": "^2.0.0", 4066 | "globby": "^9.2.0", 4067 | "globjoin": "^0.1.4", 4068 | "html-tags": "^3.0.0", 4069 | "ignore": "^5.0.6", 4070 | "import-lazy": "^4.0.0", 4071 | "imurmurhash": "^0.1.4", 4072 | "known-css-properties": "^0.14.0", 4073 | "leven": "^3.1.0", 4074 | "lodash": "^4.17.11", 4075 | "log-symbols": "^3.0.0", 4076 | "mathml-tag-names": "^2.1.0", 4077 | "meow": "^5.0.0", 4078 | "micromatch": "^4.0.0", 4079 | "normalize-selector": "^0.2.0", 4080 | "pify": "^4.0.1", 4081 | "postcss": "^7.0.14", 4082 | "postcss-html": "^0.36.0", 4083 | "postcss-jsx": "^0.36.1", 4084 | "postcss-less": "^3.1.4", 4085 | "postcss-markdown": "^0.36.0", 4086 | "postcss-media-query-parser": "^0.2.3", 4087 | "postcss-reporter": "^6.0.1", 4088 | "postcss-resolve-nested-selector": "^0.1.1", 4089 | "postcss-safe-parser": "^4.0.1", 4090 | "postcss-sass": "^0.3.5", 4091 | "postcss-scss": "^2.0.0", 4092 | "postcss-selector-parser": "^3.1.0", 4093 | "postcss-syntax": "^0.36.2", 4094 | "postcss-value-parser": "^3.3.1", 4095 | "resolve-from": "^5.0.0", 4096 | "signal-exit": "^3.0.2", 4097 | "slash": "^3.0.0", 4098 | "specificity": "^0.4.1", 4099 | "string-width": "^4.1.0", 4100 | "strip-ansi": "^5.2.0", 4101 | "style-search": "^0.1.0", 4102 | "sugarss": "^2.0.0", 4103 | "svg-tags": "^1.0.0", 4104 | "table": "^5.2.3" 4105 | }, 4106 | "dependencies": { 4107 | "debug": { 4108 | "version": "4.1.1", 4109 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", 4110 | "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", 4111 | "dev": true, 4112 | "requires": { 4113 | "ms": "^2.1.1" 4114 | } 4115 | }, 4116 | "emoji-regex": { 4117 | "version": "8.0.0", 4118 | "resolved": "http://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", 4119 | "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", 4120 | "dev": true 4121 | }, 4122 | "ignore": { 4123 | "version": "5.1.4", 4124 | "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.4.tgz", 4125 | "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=", 4126 | "dev": true 4127 | }, 4128 | "is-fullwidth-code-point": { 4129 | "version": "3.0.0", 4130 | "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", 4131 | "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", 4132 | "dev": true 4133 | }, 4134 | "ms": { 4135 | "version": "2.1.2", 4136 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", 4137 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 4138 | "dev": true 4139 | }, 4140 | "pify": { 4141 | "version": "4.0.1", 4142 | "resolved": "http://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", 4143 | "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", 4144 | "dev": true 4145 | }, 4146 | "resolve-from": { 4147 | "version": "5.0.0", 4148 | "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-5.0.0.tgz", 4149 | "integrity": "sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=", 4150 | "dev": true 4151 | }, 4152 | "string-width": { 4153 | "version": "4.1.0", 4154 | "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.1.0.tgz", 4155 | "integrity": "sha1-uoRtHaqXw8WWFVMIBj4HXtHJmv8=", 4156 | "dev": true, 4157 | "requires": { 4158 | "emoji-regex": "^8.0.0", 4159 | "is-fullwidth-code-point": "^3.0.0", 4160 | "strip-ansi": "^5.2.0" 4161 | } 4162 | } 4163 | } 4164 | }, 4165 | "stylelint-config-recommended": { 4166 | "version": "2.2.0", 4167 | "resolved": "https://registry.npm.taobao.org/stylelint-config-recommended/download/stylelint-config-recommended-2.2.0.tgz", 4168 | "integrity": "sha1-RqsTnbSg5xUf1flK8VVRKIbJbT8=", 4169 | "dev": true 4170 | }, 4171 | "stylelint-config-standard": { 4172 | "version": "18.3.0", 4173 | "resolved": "https://registry.npm.taobao.org/stylelint-config-standard/download/stylelint-config-standard-18.3.0.tgz", 4174 | "integrity": "sha1-oqG3iNLPh2wBP+r/iuJ2EXob76c=", 4175 | "dev": true, 4176 | "requires": { 4177 | "stylelint-config-recommended": "^2.2.0" 4178 | } 4179 | }, 4180 | "stylelint-order": { 4181 | "version": "3.1.0", 4182 | "resolved": "https://registry.npm.taobao.org/stylelint-order/download/stylelint-order-3.1.0.tgz", 4183 | "integrity": "sha1-41/ORTrp7XGiGFrzayu0XmKpznU=", 4184 | "dev": true, 4185 | "requires": { 4186 | "lodash": "^4.17.15", 4187 | "postcss": "^7.0.17", 4188 | "postcss-sorting": "^5.0.1" 4189 | } 4190 | }, 4191 | "stylelint-scss": { 4192 | "version": "3.10.0", 4193 | "resolved": "https://registry.npm.taobao.org/stylelint-scss/download/stylelint-scss-3.10.0.tgz", 4194 | "integrity": "sha1-Gvn/ADlwlDZIR+1eYueOgZ3TfCg=", 4195 | "dev": true, 4196 | "requires": { 4197 | "lodash": "^4.17.15", 4198 | "postcss-media-query-parser": "^0.2.3", 4199 | "postcss-resolve-nested-selector": "^0.1.1", 4200 | "postcss-selector-parser": "^6.0.2", 4201 | "postcss-value-parser": "^4.0.2" 4202 | }, 4203 | "dependencies": { 4204 | "postcss-selector-parser": { 4205 | "version": "6.0.2", 4206 | "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", 4207 | "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", 4208 | "dev": true, 4209 | "requires": { 4210 | "cssesc": "^3.0.0", 4211 | "indexes-of": "^1.0.1", 4212 | "uniq": "^1.0.1" 4213 | } 4214 | }, 4215 | "postcss-value-parser": { 4216 | "version": "4.0.2", 4217 | "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz", 4218 | "integrity": "sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck=", 4219 | "dev": true 4220 | } 4221 | } 4222 | }, 4223 | "sugarss": { 4224 | "version": "2.0.0", 4225 | "resolved": "https://registry.npm.taobao.org/sugarss/download/sugarss-2.0.0.tgz", 4226 | "integrity": "sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=", 4227 | "dev": true, 4228 | "requires": { 4229 | "postcss": "^7.0.2" 4230 | } 4231 | }, 4232 | "supports-color": { 4233 | "version": "5.5.0", 4234 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz", 4235 | "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", 4236 | "dev": true, 4237 | "requires": { 4238 | "has-flag": "^3.0.0" 4239 | } 4240 | }, 4241 | "svg-tags": { 4242 | "version": "1.0.0", 4243 | "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz", 4244 | "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", 4245 | "dev": true 4246 | }, 4247 | "table": { 4248 | "version": "5.4.6", 4249 | "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz", 4250 | "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", 4251 | "dev": true, 4252 | "requires": { 4253 | "ajv": "^6.10.2", 4254 | "lodash": "^4.17.14", 4255 | "slice-ansi": "^2.1.0", 4256 | "string-width": "^3.0.0" 4257 | }, 4258 | "dependencies": { 4259 | "string-width": { 4260 | "version": "3.1.0", 4261 | "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", 4262 | "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", 4263 | "dev": true, 4264 | "requires": { 4265 | "emoji-regex": "^7.0.1", 4266 | "is-fullwidth-code-point": "^2.0.0", 4267 | "strip-ansi": "^5.1.0" 4268 | } 4269 | } 4270 | } 4271 | }, 4272 | "text-table": { 4273 | "version": "0.2.0", 4274 | "resolved": "http://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", 4275 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 4276 | "dev": true 4277 | }, 4278 | "through": { 4279 | "version": "2.3.8", 4280 | "resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz", 4281 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 4282 | "dev": true 4283 | }, 4284 | "tmp": { 4285 | "version": "0.0.33", 4286 | "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", 4287 | "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", 4288 | "dev": true, 4289 | "requires": { 4290 | "os-tmpdir": "~1.0.2" 4291 | } 4292 | }, 4293 | "to-fast-properties": { 4294 | "version": "2.0.0", 4295 | "resolved": "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", 4296 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 4297 | "dev": true 4298 | }, 4299 | "to-object-path": { 4300 | "version": "0.3.0", 4301 | "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", 4302 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 4303 | "dev": true, 4304 | "requires": { 4305 | "kind-of": "^3.0.2" 4306 | }, 4307 | "dependencies": { 4308 | "is-buffer": { 4309 | "version": "1.1.6", 4310 | "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 4311 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 4312 | "dev": true 4313 | }, 4314 | "kind-of": { 4315 | "version": "3.2.2", 4316 | "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 4317 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 4318 | "dev": true, 4319 | "requires": { 4320 | "is-buffer": "^1.1.5" 4321 | } 4322 | } 4323 | } 4324 | }, 4325 | "to-regex": { 4326 | "version": "3.0.2", 4327 | "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", 4328 | "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", 4329 | "dev": true, 4330 | "requires": { 4331 | "define-property": "^2.0.2", 4332 | "extend-shallow": "^3.0.2", 4333 | "regex-not": "^1.0.2", 4334 | "safe-regex": "^1.1.0" 4335 | } 4336 | }, 4337 | "to-regex-range": { 4338 | "version": "2.1.1", 4339 | "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", 4340 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 4341 | "dev": true, 4342 | "requires": { 4343 | "is-number": "^3.0.0", 4344 | "repeat-string": "^1.6.1" 4345 | } 4346 | }, 4347 | "toidentifier": { 4348 | "version": "1.0.0", 4349 | "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", 4350 | "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" 4351 | }, 4352 | "trim": { 4353 | "version": "0.0.1", 4354 | "resolved": "https://registry.npm.taobao.org/trim/download/trim-0.0.1.tgz", 4355 | "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", 4356 | "dev": true 4357 | }, 4358 | "trim-newlines": { 4359 | "version": "2.0.0", 4360 | "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-2.0.0.tgz", 4361 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", 4362 | "dev": true 4363 | }, 4364 | "trim-right": { 4365 | "version": "1.0.1", 4366 | "resolved": "http://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz", 4367 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 4368 | "dev": true 4369 | }, 4370 | "trim-trailing-lines": { 4371 | "version": "1.1.2", 4372 | "resolved": "https://registry.npm.taobao.org/trim-trailing-lines/download/trim-trailing-lines-1.1.2.tgz", 4373 | "integrity": "sha1-0vHhUxYRUunwL6vGcPtAvsLqLjo=", 4374 | "dev": true 4375 | }, 4376 | "trough": { 4377 | "version": "1.0.4", 4378 | "resolved": "https://registry.npm.taobao.org/trough/download/trough-1.0.4.tgz", 4379 | "integrity": "sha1-O1Kx8Tkk9GDD+/0N9ptYfby8di4=", 4380 | "dev": true 4381 | }, 4382 | "tslib": { 4383 | "version": "1.10.0", 4384 | "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz", 4385 | "integrity": "sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=", 4386 | "dev": true 4387 | }, 4388 | "type-check": { 4389 | "version": "0.3.2", 4390 | "resolved": "http://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", 4391 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4392 | "dev": true, 4393 | "requires": { 4394 | "prelude-ls": "~1.1.2" 4395 | } 4396 | }, 4397 | "type-is": { 4398 | "version": "1.6.18", 4399 | "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", 4400 | "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", 4401 | "requires": { 4402 | "media-typer": "0.3.0", 4403 | "mime-types": "~2.1.24" 4404 | } 4405 | }, 4406 | "unherit": { 4407 | "version": "1.1.2", 4408 | "resolved": "https://registry.npm.taobao.org/unherit/download/unherit-1.1.2.tgz", 4409 | "integrity": "sha1-FPHzlyU+5OyVzsFndi5334NnhEk=", 4410 | "dev": true, 4411 | "requires": { 4412 | "inherits": "^2.0.1", 4413 | "xtend": "^4.0.1" 4414 | } 4415 | }, 4416 | "unified": { 4417 | "version": "7.1.0", 4418 | "resolved": "https://registry.npm.taobao.org/unified/download/unified-7.1.0.tgz", 4419 | "integrity": "sha1-UDLxwe4zZL0J2hLif91KdVPHvhM=", 4420 | "dev": true, 4421 | "requires": { 4422 | "@types/unist": "^2.0.0", 4423 | "@types/vfile": "^3.0.0", 4424 | "bail": "^1.0.0", 4425 | "extend": "^3.0.0", 4426 | "is-plain-obj": "^1.1.0", 4427 | "trough": "^1.0.0", 4428 | "vfile": "^3.0.0", 4429 | "x-is-string": "^0.1.0" 4430 | } 4431 | }, 4432 | "union-value": { 4433 | "version": "1.0.1", 4434 | "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funion-value%2Fdownload%2Funion-value-1.0.1.tgz", 4435 | "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", 4436 | "dev": true, 4437 | "requires": { 4438 | "arr-union": "^3.1.0", 4439 | "get-value": "^2.0.6", 4440 | "is-extendable": "^0.1.1", 4441 | "set-value": "^2.0.1" 4442 | } 4443 | }, 4444 | "uniq": { 4445 | "version": "1.0.1", 4446 | "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", 4447 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", 4448 | "dev": true 4449 | }, 4450 | "unist-util-find-all-after": { 4451 | "version": "1.0.4", 4452 | "resolved": "https://registry.npm.taobao.org/unist-util-find-all-after/download/unist-util-find-all-after-1.0.4.tgz", 4453 | "integrity": "sha1-Luq6gY/ZhJLWnET5vuUsaiUoLu8=", 4454 | "dev": true, 4455 | "requires": { 4456 | "unist-util-is": "^3.0.0" 4457 | } 4458 | }, 4459 | "unist-util-is": { 4460 | "version": "3.0.0", 4461 | "resolved": "https://registry.npm.taobao.org/unist-util-is/download/unist-util-is-3.0.0.tgz?cache=0&sync_timestamp=1564126045608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funist-util-is%2Fdownload%2Funist-util-is-3.0.0.tgz", 4462 | "integrity": "sha1-2ehDgcJGjoJinkpb6dfQWi3TJM0=", 4463 | "dev": true 4464 | }, 4465 | "unist-util-remove-position": { 4466 | "version": "1.1.3", 4467 | "resolved": "https://registry.npm.taobao.org/unist-util-remove-position/download/unist-util-remove-position-1.1.3.tgz", 4468 | "integrity": "sha1-2RqouJswyzi60pJNoRBy+qZP2XI=", 4469 | "dev": true, 4470 | "requires": { 4471 | "unist-util-visit": "^1.1.0" 4472 | } 4473 | }, 4474 | "unist-util-stringify-position": { 4475 | "version": "1.1.2", 4476 | "resolved": "https://registry.npm.taobao.org/unist-util-stringify-position/download/unist-util-stringify-position-1.1.2.tgz", 4477 | "integrity": "sha1-Pzf881EnncvKdICrWIm7ioMu4cY=", 4478 | "dev": true 4479 | }, 4480 | "unist-util-visit": { 4481 | "version": "1.4.1", 4482 | "resolved": "https://registry.npm.taobao.org/unist-util-visit/download/unist-util-visit-1.4.1.tgz", 4483 | "integrity": "sha1-RySqqEhububibX/zyGhZYNVgseM=", 4484 | "dev": true, 4485 | "requires": { 4486 | "unist-util-visit-parents": "^2.0.0" 4487 | } 4488 | }, 4489 | "unist-util-visit-parents": { 4490 | "version": "2.1.2", 4491 | "resolved": "https://registry.npm.taobao.org/unist-util-visit-parents/download/unist-util-visit-parents-2.1.2.tgz", 4492 | "integrity": "sha1-JeQ+VTEhZvM0jK5nQ1iHgdESwek=", 4493 | "dev": true, 4494 | "requires": { 4495 | "unist-util-is": "^3.0.0" 4496 | } 4497 | }, 4498 | "unpipe": { 4499 | "version": "1.0.0", 4500 | "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", 4501 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 4502 | }, 4503 | "unset-value": { 4504 | "version": "1.0.0", 4505 | "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", 4506 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 4507 | "dev": true, 4508 | "requires": { 4509 | "has-value": "^0.3.1", 4510 | "isobject": "^3.0.0" 4511 | }, 4512 | "dependencies": { 4513 | "has-value": { 4514 | "version": "0.3.1", 4515 | "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", 4516 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 4517 | "dev": true, 4518 | "requires": { 4519 | "get-value": "^2.0.3", 4520 | "has-values": "^0.1.4", 4521 | "isobject": "^2.0.0" 4522 | }, 4523 | "dependencies": { 4524 | "isobject": { 4525 | "version": "2.1.0", 4526 | "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", 4527 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 4528 | "dev": true, 4529 | "requires": { 4530 | "isarray": "1.0.0" 4531 | } 4532 | } 4533 | } 4534 | }, 4535 | "has-values": { 4536 | "version": "0.1.4", 4537 | "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", 4538 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 4539 | "dev": true 4540 | } 4541 | } 4542 | }, 4543 | "uri-js": { 4544 | "version": "4.2.2", 4545 | "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", 4546 | "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", 4547 | "dev": true, 4548 | "requires": { 4549 | "punycode": "^2.1.0" 4550 | } 4551 | }, 4552 | "urix": { 4553 | "version": "0.1.0", 4554 | "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", 4555 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 4556 | "dev": true 4557 | }, 4558 | "use": { 4559 | "version": "3.1.1", 4560 | "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz", 4561 | "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", 4562 | "dev": true 4563 | }, 4564 | "util-deprecate": { 4565 | "version": "1.0.2", 4566 | "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", 4567 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4568 | "dev": true 4569 | }, 4570 | "utils-merge": { 4571 | "version": "1.0.1", 4572 | "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", 4573 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 4574 | }, 4575 | "v8-compile-cache": { 4576 | "version": "2.1.0", 4577 | "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8-compile-cache%2Fdownload%2Fv8-compile-cache-2.1.0.tgz", 4578 | "integrity": "sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=", 4579 | "dev": true 4580 | }, 4581 | "validate-npm-package-license": { 4582 | "version": "3.0.4", 4583 | "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", 4584 | "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", 4585 | "dev": true, 4586 | "requires": { 4587 | "spdx-correct": "^3.0.0", 4588 | "spdx-expression-parse": "^3.0.0" 4589 | } 4590 | }, 4591 | "vary": { 4592 | "version": "1.1.2", 4593 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", 4594 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 4595 | }, 4596 | "vfile": { 4597 | "version": "3.0.1", 4598 | "resolved": "https://registry.npm.taobao.org/vfile/download/vfile-3.0.1.tgz", 4599 | "integrity": "sha1-RzMdKr4ygkJPSku2rNIKRMQSGAM=", 4600 | "dev": true, 4601 | "requires": { 4602 | "is-buffer": "^2.0.0", 4603 | "replace-ext": "1.0.0", 4604 | "unist-util-stringify-position": "^1.0.0", 4605 | "vfile-message": "^1.0.0" 4606 | } 4607 | }, 4608 | "vfile-location": { 4609 | "version": "2.0.5", 4610 | "resolved": "https://registry.npm.taobao.org/vfile-location/download/vfile-location-2.0.5.tgz", 4611 | "integrity": "sha1-yD6wL4BAIoqNKz8Q5IW+PjQz4KI=", 4612 | "dev": true 4613 | }, 4614 | "vfile-message": { 4615 | "version": "1.1.1", 4616 | "resolved": "https://registry.npm.taobao.org/vfile-message/download/vfile-message-1.1.1.tgz", 4617 | "integrity": "sha1-WDOuB4od+i2W6WR4hs0ymTqzE+E=", 4618 | "dev": true, 4619 | "requires": { 4620 | "unist-util-stringify-position": "^1.1.1" 4621 | } 4622 | }, 4623 | "which": { 4624 | "version": "1.3.1", 4625 | "resolved": "http://registry.npm.taobao.org/which/download/which-1.3.1.tgz", 4626 | "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", 4627 | "dev": true, 4628 | "requires": { 4629 | "isexe": "^2.0.0" 4630 | } 4631 | }, 4632 | "wordwrap": { 4633 | "version": "1.0.0", 4634 | "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz", 4635 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 4636 | "dev": true 4637 | }, 4638 | "wrappy": { 4639 | "version": "1.0.2", 4640 | "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", 4641 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4642 | "dev": true 4643 | }, 4644 | "write": { 4645 | "version": "1.0.3", 4646 | "resolved": "http://registry.npm.taobao.org/write/download/write-1.0.3.tgz", 4647 | "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", 4648 | "dev": true, 4649 | "requires": { 4650 | "mkdirp": "^0.5.1" 4651 | } 4652 | }, 4653 | "x-is-string": { 4654 | "version": "0.1.0", 4655 | "resolved": "https://registry.npm.taobao.org/x-is-string/download/x-is-string-0.1.0.tgz", 4656 | "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", 4657 | "dev": true 4658 | }, 4659 | "xtend": { 4660 | "version": "4.0.2", 4661 | "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", 4662 | "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", 4663 | "dev": true 4664 | }, 4665 | "yargs-parser": { 4666 | "version": "10.1.0", 4667 | "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-10.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-10.1.0.tgz", 4668 | "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", 4669 | "dev": true, 4670 | "requires": { 4671 | "camelcase": "^4.1.0" 4672 | } 4673 | } 4674 | } 4675 | } 4676 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mindnode", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "mindnode.js", 6 | "dependencies": { 7 | "axios": "^0.19.0", 8 | "express": "^4.17.1" 9 | }, 10 | "devDependencies": { 11 | "eslint": "^6.2.2", 12 | "eslint-config-airbnb-base": "^14.0.0", 13 | "eslint-plugin-html": "^6.0.0", 14 | "eslint-plugin-import": "^2.18.2", 15 | "stylelint": "^10.1.0", 16 | "stylelint-config-standard": "^18.3.0", 17 | "stylelint-order": "^3.1.0", 18 | "stylelint-scss": "^3.10.0" 19 | }, 20 | "scripts": { 21 | "test": "echo \"Error: no test specified\" && exit 1" 22 | }, 23 | "author": "", 24 | "license": "ISC" 25 | } 26 | -------------------------------------------------------------------------------- /public/css/mindmap.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | color: #4c5566; 8 | font-family: sans-serif; 9 | } 10 | 11 | .wrapper { 12 | display: flex; 13 | margin: 8px; 14 | } 15 | 16 | svg { 17 | font-size: 14px; 18 | } 19 | 20 | .mindmap { 21 | background-color: #eeeef3; 22 | flex: auto; 23 | height: 650px; 24 | margin-right: 8px; 25 | } 26 | 27 | .mindmap rect:not(.depth_0) { 28 | fill: blue; 29 | fill-opacity: 0; 30 | stroke: blue; 31 | stroke-opacity: 0; 32 | stroke-width: 2; 33 | } 34 | 35 | .mindmap rect.depth_0 { 36 | fill: white; 37 | stroke: #bec6f3; 38 | stroke-opacity: 0; 39 | stroke-width: 2; 40 | } 41 | 42 | .mindmap path { 43 | fill: none; 44 | stroke-linecap: round; 45 | stroke-width: 4; 46 | } 47 | 48 | .mindmap #selectedMindnode > rect:not(.depth_0) { 49 | fill-opacity: 1; 50 | opacity: 0.2; 51 | stroke-opacity: 1; 52 | } 53 | 54 | .mindmap #selectedMindnode > rect.depth_0 { 55 | stroke-opacity: 1; 56 | } 57 | 58 | .mindmap #newParentNode > rect { 59 | stroke-opacity: 0.2; 60 | } 61 | 62 | .outline { 63 | height: 650px; 64 | margin-right: 8px; 65 | width: 200px; 66 | } 67 | 68 | .outline rect { 69 | fill: #eeeef3; 70 | } 71 | 72 | .outline .outpath { 73 | transform: translate(14px, 15px); 74 | } 75 | 76 | .outline .outpath path { 77 | fill: none; 78 | stroke-linecap: round; 79 | stroke-width: 1.5; 80 | } 81 | 82 | .outline #selectedOutnode > rect { 83 | fill: #ccd3fd; 84 | } 85 | 86 | .tip { 87 | background-color: #eeeef3; 88 | height: 120px; 89 | width: 200px; 90 | } 91 | 92 | .tip text { 93 | fill: #4c5566; 94 | } 95 | 96 | .tip #hidden { 97 | visibility: hidden; 98 | } 99 | 100 | /* stylelint-disable-next-line */ 101 | foreignObject { 102 | padding: 5px; 103 | } 104 | 105 | /*# sourceMappingURL=mindmap.css.map */ 106 | -------------------------------------------------------------------------------- /public/css/mindmap.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["mindmap.scss"],"names":[],"mappings":"AAEA;EACE;EACA;;;AAGF;EACE,OARU;EASV;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE,MA7FQ;;AAgGV;EACE;;;AAGJ;AACA;EACE","file":"mindmap.css"} -------------------------------------------------------------------------------- /public/css/mindmap.scss: -------------------------------------------------------------------------------- 1 | $fontColor: rgb(76, 85, 102); 2 | 3 | * { 4 | margin: 0; 5 | padding: 0; 6 | } 7 | 8 | body { 9 | color: $fontColor; 10 | font-family: sans-serif; 11 | } 12 | 13 | .wrapper { 14 | display: flex; 15 | margin: 8px; 16 | } 17 | 18 | svg { 19 | font-size: 14px; 20 | } 21 | 22 | .mindmap { 23 | background-color: rgb(238, 238, 243); 24 | flex: auto; 25 | height: 650px; 26 | margin-right: 8px; 27 | 28 | rect:not(.depth_0) { 29 | fill: blue; 30 | fill-opacity: 0; 31 | stroke: blue; 32 | stroke-opacity: 0; 33 | stroke-width: 2; 34 | } 35 | 36 | rect.depth_0 { 37 | fill: white; 38 | stroke: rgb(190, 198, 243); 39 | stroke-opacity: 0; 40 | stroke-width: 2; 41 | } 42 | 43 | path { 44 | fill: none; 45 | stroke-linecap: round; 46 | stroke-width: 4; 47 | } 48 | 49 | #selectedMindnode > rect:not(.depth_0) { 50 | fill-opacity: 1; 51 | opacity: 0.2; 52 | stroke-opacity: 1; 53 | } 54 | 55 | #selectedMindnode > rect.depth_0 { 56 | stroke-opacity: 1; 57 | } 58 | 59 | #newParentNode > rect { 60 | stroke-opacity: 0.2; 61 | } 62 | } 63 | 64 | .outline { 65 | height: 650px; 66 | margin-right: 8px; 67 | width: 200px; 68 | 69 | rect { 70 | fill: rgb(238, 238, 243); 71 | } 72 | 73 | .outpath { 74 | transform: translate(14px, 15px); 75 | 76 | path { 77 | fill: none; 78 | stroke-linecap: round; 79 | stroke-width: 1.5; 80 | } 81 | } 82 | 83 | #selectedOutnode > rect { 84 | fill: rgb(204, 211, 253); 85 | } 86 | } 87 | 88 | .tip { 89 | background-color: rgb(238, 238, 243); 90 | height: 120px; 91 | width: 200px; 92 | 93 | text { 94 | fill: $fontColor; 95 | } 96 | 97 | #hidden { 98 | visibility: hidden; 99 | } 100 | } 101 | /* stylelint-disable-next-line */ 102 | foreignObject { 103 | padding: 5px; 104 | } 105 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 思维导图 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /public/js/dataJSON.js: -------------------------------------------------------------------------------- 1 | /* global d3:true */ 2 | /* eslint no-param-reassign: ['error', { 'props': false }] */ 3 | let colorNumber = 0; 4 | const colorScale = d3.scaleOrdinal(d3.schemePaired);// 颜色列表 5 | function isEqualJSON(a, b) { // 判断a,b是否完全一致 6 | // 局限性: 7 | // 如果对象里属性的位置发生变化,转换来的字符串就不相等 8 | // 但实际我们只需要看他们的内容是否一致,与顺序没有关系,所以这种方法有局限性。 9 | const aStr = JSON.stringify(a); 10 | const bStr = JSON.stringify(b); 11 | if (aStr === bStr) { 12 | return true; 13 | } 14 | return false; 15 | } 16 | function breadthTraverse(d, c) { // 广度遍历 17 | if (d.children) { 18 | for (let index = 0; index < d.children.length; index += 1) { 19 | const dChild = d.children[index]; 20 | if (!c) { 21 | dChild.color = colorScale(colorNumber); 22 | colorNumber += 1; 23 | } else { 24 | dChild.color = c; 25 | } 26 | } 27 | for (let index = 0; index < d.children.length; index += 1) { 28 | const dChild = d.children[index]; 29 | breadthTraverse(dChild, dChild.color); 30 | } 31 | } 32 | } 33 | function inheritColor(d, c) { // 赋予新颜色,并更新子节点的颜色 34 | if (d.children) { 35 | for (let index = 0; index < d.children.length; index += 1) { 36 | const dChild = d.children[index]; 37 | dChild.color = c; 38 | inheritColor(dChild, c); 39 | } 40 | } 41 | } 42 | class DataJSON { // eslint-disable-line 43 | constructor(d) { // d为数组 44 | breadthTraverse(d[0]); 45 | this.data = d; 46 | } 47 | 48 | addId(id = '', d = this.data) { // 添加唯一标识 49 | for (let index = 0; index < d.length; index += 1) { 50 | const dChild = d[index]; 51 | dChild.id = `${id}${index}`; 52 | if (dChild.children) { 53 | this.addId(`${id}${index}`, dChild.children); 54 | } 55 | } 56 | } 57 | 58 | del(s, d = this.data) { // 删除s 59 | for (let index = 0; d && index < d.length; index += 1) { 60 | const dChild = d[index]; 61 | if (isEqualJSON(dChild, s)) { 62 | d.splice(index, 1); 63 | return true; 64 | } 65 | if (dChild.children) { 66 | if (this.del(s, dChild.children)) { 67 | return true; 68 | } 69 | } 70 | } 71 | return false; 72 | } 73 | 74 | add(dParent, d, data = this.data) { // dParent添加子节点d 75 | for (let index = 0; index < data.length; index += 1) { 76 | const dataChild = data[index]; 77 | if (isEqualJSON(dataChild, dParent)) { 78 | if (!dataChild.children) { 79 | dataChild.children = []; 80 | } 81 | if (dataChild.id === '0') { // 根节点 82 | d.color = colorScale(colorNumber); 83 | colorNumber += 1; 84 | } else { 85 | d.color = dataChild.color; // 继承父节点的color 86 | } 87 | inheritColor(d, d.color); 88 | dataChild.children.push(d); 89 | return true; 90 | } 91 | if (dataChild.children) { 92 | if (this.add(dParent, d, dataChild.children)) { 93 | return true; 94 | } 95 | } 96 | } 97 | return false; 98 | } 99 | 100 | exchange(a, b, d = this.data) { // 同一父节点下的a,b调换 101 | for (let index = 0; index < d.length; index += 1) { 102 | const dChildA = d[index]; 103 | if (isEqualJSON(dChildA, a)) { 104 | for (let i = 0; i < d.length; i += 1) { 105 | const dChildB = d[i]; 106 | if (isEqualJSON(dChildB, b)) { 107 | d[index] = dChildB; 108 | d[i] = dChildA; 109 | } 110 | } 111 | return true; 112 | } 113 | if (dChildA.children) { 114 | if (this.exchange(a, b, dChildA.children)) { 115 | return true; 116 | } 117 | } 118 | } 119 | return false; 120 | } 121 | 122 | insert(dPosition, d, i = 0, data = this.data) { // 把d插入到dPosition的前面(i=0)或者后面(i=1) 123 | for (let index = 0; index < data.length; index += 1) { 124 | const dataChild = data[index]; 125 | if (isEqualJSON(dataChild, dPosition)) { 126 | if (dPosition.id.substring(0, 1) === '0' && dPosition.id.length === 2) { // 根节点的直接子节点 127 | colorNumber += 1; 128 | d.color = colorScale(colorNumber); 129 | } else { 130 | d.color = dPosition.color; 131 | } 132 | inheritColor(d, d.color); 133 | data.splice(index + i, 0, d); 134 | return true; 135 | } 136 | if (dataChild.children) { 137 | if (this.insert(dPosition, d, i, dataChild.children)) { 138 | return true; 139 | } 140 | } 141 | } 142 | return false; 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /public/js/main.js: -------------------------------------------------------------------------------- 1 | /* global d3 axios DataJSON:true */ 2 | /* eslint no-param-reassign: ['error', { 'props': false }] */ 3 | let dataJSON = null; 4 | const transition = d3.transition().duration(1000).ease(d3.easePolyInOut); 5 | 6 | const svgOutline = d3.select('.outline'); 7 | const gOutNode = svgOutline.append('g'); 8 | const gOutPath = svgOutline.append('g').attr('class', 'outpath'); 9 | 10 | const gHotkey = d3.select('g#hotkey'); 11 | const gMindnode = d3.select('g#mindnode'); 12 | 13 | const gHidden = d3.select('g#hidden'); 14 | 15 | function zoomed() { 16 | const { transform } = d3.event; 17 | gMindnode.attr('transform', transform); 18 | } 19 | function drawHotkey() { 20 | gHotkey.append('text').text('选中状态下:').attr('transform', 'translate(0, 20)'); 21 | gHotkey.append('text').text('Tab添加子节点').attr('transform', 'translate(20, 40)'); 22 | gHotkey.append('text').text('Enter添加弟弟节点').attr('transform', 'translate(20, 60)'); 23 | gHotkey.append('text').text('Backspace/delete删除节点').attr('transform', 'translate(20, 80)'); 24 | gHotkey.append('text').text('单击编辑节点').attr('transform', 'translate(20, 100)'); 25 | } 26 | function seleOutNode(id) { 27 | const gList = gOutNode.selectAll('g'); 28 | gList.filter((d) => d.data.id === id).attr('id', 'selectedOutnode'); 29 | gList.filter((d) => d.data.id !== id).attr('id', ''); 30 | } 31 | function seleMindNode(g, id) { 32 | const gList = g.selectAll('g'); 33 | const sele = gList.filter((d) => d.data.id === id); 34 | if (sele) { 35 | sele.attr('id', 'selectedMindnode'); 36 | return true; 37 | } 38 | const gNode = gList.nodes(); 39 | for (let index = 0; index < gNode.length; index += 1) { 40 | const gChild = gNode[index]; 41 | if (seleMindNode(gChild, id)) { 42 | return true; 43 | } 44 | } 45 | return false; 46 | } 47 | function drawHiddenText(d) { // 取得textWidth 48 | const text = gHidden.append('text').text(d.name).nodes()[0]; 49 | d.textWidth = text.getBBox().width; 50 | } 51 | function traverse(d) { // 深度遍历 52 | drawHiddenText(d); 53 | if (d.children) { 54 | for (let index = 0; index < d.children.length; index += 1) { 55 | const dChild = d.children[index]; 56 | traverse(dChild); 57 | } 58 | } 59 | } 60 | function drawOutline(dJSON) { 61 | const nodeSize = { width: 200, height: 30 }; 62 | function shapePath(d) { 63 | const x0 = d.source.x; 64 | const y0 = d.source.y; 65 | const x1 = d.target.x; 66 | const y1 = d.target.y; 67 | return `M${y0},${x0}V${x1 - 4}Q${y0} ${x1} ${y1} ${x1}`; 68 | } 69 | function clicked() { 70 | d3.event.stopPropagation();// 阻止捕获和冒泡阶段中当前事件的进一步传播。 71 | let sele = document.getElementById('selectedOutnode'); 72 | const edit = document.getElementById('editing'); 73 | const clickedNode = this; 74 | if (clickedNode.isSameNode(edit)) { // 正在编辑 75 | return; 76 | } 77 | if (clickedNode.isSameNode(sele)) { // 进入编辑状态 78 | sele.setAttribute('id', 'editing'); 79 | d3.select(sele).select('p').attr('contenteditable', true); 80 | document.querySelector('#editing p').focus(); 81 | document.execCommand('selectAll', false); 82 | } else { // 选中 83 | // 选中新的selectedOutnode 84 | if (sele) { 85 | sele.removeAttribute('id'); 86 | } 87 | sele = d3.select(clickedNode); 88 | sele.attr('id', 'selectedOutnode'); 89 | // 选中新的selectedMindnode 90 | sele.each((d) => { 91 | const { id } = d.data; 92 | const seleMind = d3.select('g#selectedMindnode'); 93 | if (seleMind.nodes()[0]) { 94 | seleMind.attr('id', ''); 95 | } 96 | seleMindNode(gMindnode, id); 97 | }); 98 | } 99 | } 100 | function appendNode(enter) { 101 | const gEnter = enter.append('g') 102 | .attr('class', 'outnode') 103 | .attr('transform', (d) => `translate(0,${d.x})`) 104 | .on('click', clicked); 105 | gEnter.append('rect') 106 | .attr('width', nodeSize.width) 107 | .attr('height', nodeSize.height); 108 | const gap = 21; 109 | const foreign = gEnter.append('foreignObject') 110 | .attr('width', (d) => (nodeSize.width - d.y - gap)) 111 | .attr('height', nodeSize.height) 112 | .attr('transform', (d) => `translate(${d.y + gap},${0})`); 113 | const foreignP = foreign.append('xhtml:p') 114 | .attr('contenteditable', false) 115 | .text((d) => d.data.name); 116 | foreignP.on('blur', () => { 117 | const editP = document.querySelector('#editing p'); 118 | window.getSelection().removeAllRanges();// 清除选中 119 | const editText = editP.textContent; 120 | d3.select('g#editing').each((d, i, n) => { 121 | n[i].removeAttribute('id'); 122 | editP.setAttribute('contenteditable', false); 123 | if (d.data.name !== editText) { 124 | d.data.name = editText; 125 | drawHiddenText(d.data); 126 | drawOutline(dataJSON);// eslint-disable-line no-use-before-define 127 | drawMindnode(dataJSON);// eslint-disable-line no-use-before-define 128 | } 129 | }); 130 | }); 131 | } 132 | function updateNode(update) { 133 | update.attr('transform', (d) => `translate(0,${d.x})`); 134 | update.select('p').text((d) => d.data.name); 135 | } 136 | function appendPath(enter) { 137 | enter.append('path').attr('d', shapePath) 138 | .attr('stroke', (d) => (d.target.data.color)); 139 | } 140 | function updatePath(update) { 141 | update.attr('d', shapePath).attr('stroke', (d) => (d.target.data.color)); 142 | } 143 | function draw(r) { 144 | let index = 0; 145 | r.eachBefore((n) => { // 深度优先遍历 146 | n.x = index * (nodeSize.height + 1); 147 | n.y = n.depth * 8; 148 | index += 1; 149 | }); 150 | const rDescendants = r.descendants(); 151 | gOutNode.selectAll('g') 152 | .data(rDescendants) 153 | .join( 154 | (enter) => appendNode(enter), 155 | (update) => updateNode(update), 156 | ); 157 | gOutPath.selectAll('path') 158 | .data(r.links()) 159 | .join( 160 | (enter) => appendPath(enter), 161 | (update) => updatePath(update), 162 | ); 163 | } 164 | draw(d3.hierarchy(dJSON.data[0])); 165 | } 166 | function drawMindnode(dJSON) { 167 | let root = null; 168 | const link = d3.linkHorizontal().x((d) => d[0]).y((d) => d[1]); 169 | function draggedNodeRenew(draggedNode, targetX, targetY, dura) { 170 | const tran = d3.transition().duration(dura).ease(d3.easePoly); 171 | d3.select(draggedNode).transition(tran).attr('transform', `translate(${targetY},${targetX})`); 172 | // 更新draggedNode与父节点的path 173 | d3.select(draggedNode).each((d) => { 174 | d3.select(`path#path_${d.data.id}`).transition(tran).attr('d', `${link({ 175 | source: [-targetY + (d.parent ? d.parent.data.textWidth : 0), -targetX], 176 | target: [0, 0], 177 | })}L${d.data.textWidth},0`); 178 | }); 179 | } 180 | function draggedNodeChildrenRenew(d, px, py) { 181 | d.px = px; 182 | d.py = py; 183 | if (d.children) { 184 | for (let index = 0; index < d.children.length; index += 1) { 185 | const dChild = d.children[index]; 186 | draggedNodeChildrenRenew(dChild, px, py); 187 | } 188 | } 189 | } 190 | function dragback(subject, draggedNode) { 191 | draggedNodeChildrenRenew(subject, 0, 0); 192 | draggedNodeRenew(draggedNode, subject.dx, subject.dy, 1000); 193 | } 194 | function clicked() { 195 | d3.event.stopPropagation();// 阻止捕获和冒泡阶段中当前事件的进一步传播。 196 | let sele = document.getElementById('selectedMindnode'); 197 | const edit = document.getElementById('editing'); 198 | const clickedNode = this; 199 | if (clickedNode.isSameNode(edit)) { // 正在编辑 200 | return; 201 | } 202 | if (clickedNode.isSameNode(sele)) { // 进入编辑状态 203 | sele.setAttribute('id', 'editing'); 204 | d3.select(sele).select('p').attr('contenteditable', true); 205 | document.querySelector('#editing p').focus(); 206 | document.execCommand('selectAll', false, null); 207 | // checkEditTimer = setInterval(checkEditFocus, interval); 208 | } else { // 选中 209 | // 选中新的selectedMindnode 210 | if (sele) { 211 | sele.removeAttribute('id'); 212 | } 213 | sele = d3.select(clickedNode); 214 | sele.attr('id', 'selectedMindnode'); 215 | // 选中新的selectedOutnode 216 | sele.each((d) => { 217 | const { id } = d.data; 218 | seleOutNode(id); 219 | }); 220 | } 221 | } 222 | function dragged() { 223 | const draggedNode = this; 224 | // 选中 225 | const sele = document.getElementById('selectedMindnode'); 226 | if (sele && !sele.isSameNode(draggedNode)) { 227 | sele.removeAttribute('id'); 228 | } 229 | d3.select(draggedNode).attr('id', 'selectedMindnode') 230 | .each((d) => { 231 | const { id } = d.data; 232 | seleOutNode(id); 233 | }); 234 | // 拖拽 235 | const { subject } = d3.event; 236 | const py = d3.event.x - subject.x; 237 | const px = d3.event.y - subject.y; 238 | draggedNodeChildrenRenew(subject, px, py); 239 | // 相对subject.parent的坐标 240 | const targetY = subject.dy + py; 241 | const targetX = subject.dx + px; 242 | draggedNodeRenew(draggedNode, targetX, targetY, 0); 243 | // 重叠触发矩形边框 244 | const gSelection = gMindnode.selectAll('g').filter((d, i, n) => !draggedNode.isSameNode(n[i]) && !draggedNode.parentNode.isSameNode(n[i])); 245 | gSelection.each((d, i, n) => { 246 | const gNode = n[i]; 247 | const gRect = gNode.getElementsByTagName('rect')[0]; 248 | const rect = { // 各个gRect相对subject.parent的坐标,以及gRect的宽高 249 | y: parseInt(gRect.getAttribute('x'), 10) + d.y + (d.py ? d.py : 0) - (subject.parent ? subject.parent.y : 0), 250 | x: parseInt(gRect.getAttribute('y'), 10) + d.x + (d.px ? d.px : 0) - (subject.parent ? subject.parent.x : 0), 251 | width: parseInt(gRect.getAttribute('width'), 10), 252 | height: parseInt(gRect.getAttribute('height'), 10), 253 | }; 254 | if ((targetY > rect.y) && (targetY < rect.y + rect.width) 255 | && (targetX > rect.x) && (targetX < rect.x + rect.height)) { 256 | gNode.setAttribute('id', 'newParentNode'); 257 | } else if (gNode.getAttribute('id') === 'newParentNode') { 258 | gNode.removeAttribute('id'); 259 | } 260 | }); 261 | } 262 | function dragended() { 263 | const { subject } = d3.event; 264 | const draggedNode = this; 265 | let draggedParentNode = draggedNode.parentNode; 266 | if (draggedParentNode.isEqualNode(gMindnode.nodes()[0])) { // 拖拽的是根节点时复原 267 | dragback(subject, draggedNode); 268 | return; 269 | } 270 | const newParentNode = document.getElementById('newParentNode'); 271 | if (newParentNode) { // 建立新的父子关系 272 | newParentNode.removeAttribute('id'); 273 | d3.select(draggedNode).each((draggedD) => { 274 | d3.select(newParentNode).each((newParentD) => { 275 | // 处理数据 276 | dJSON.del(draggedD.data); 277 | dJSON.add(newParentD.data, draggedD.data); 278 | dJSON.addId(); 279 | draggedNode.parentNode.removeChild(draggedNode); 280 | // 绘制图形 281 | chart(dJSON);// eslint-disable-line no-use-before-define 282 | drawOutline(dJSON); 283 | d3.select(draggedNode).each((d) => { 284 | const { id } = d.data; 285 | seleOutNode(id); 286 | seleMindNode(gMindnode, id); 287 | }); 288 | }); 289 | }); 290 | return; 291 | } 292 | if (Math.abs(subject.px) < root.nodeHeight) { // 平移距离不足以调换兄弟节点顺序时复原 293 | dragback(subject, draggedNode); 294 | return; 295 | } 296 | // 调换兄弟节点顺序 297 | draggedParentNode = d3.select(draggedParentNode); 298 | draggedParentNode.each((d) => { 299 | const draggedBrotherNodes = draggedParentNode.selectAll(`g.depth_${d.depth + 1}`).filter((a, i, n) => !draggedNode.isSameNode(n[i])); 300 | if (!draggedBrotherNodes.nodes()[0]) { // 无兄弟节点时复原 301 | dragback(subject, draggedNode); 302 | return; 303 | } 304 | const a = { x0: Infinity, x1: -Infinity }; 305 | draggedBrotherNodes.each((b, i, n) => { 306 | if (b.x > subject.x && b.x > a.x1 && b.x < (subject.x + subject.px)) { // 新哥哥节点 307 | a.x1 = b.x; 308 | a.b1 = b.data; 309 | a.n1 = n[i]; 310 | } 311 | if (b.x < subject.x && b.x < a.x0 && b.x > (subject.x + subject.px)) { // 新弟弟节点 312 | a.x0 = b.x; 313 | a.b0 = b.data; 314 | a.n0 = n[i]; 315 | } 316 | }); 317 | if (a.b0 || a.b1) { // 存在新兄弟节点时调换节点顺序 318 | dJSON.del(subject.data); 319 | if (a.b0) { // 插入在兄弟节点前面 320 | dJSON.insert(a.b0, subject.data); 321 | draggedNode.parentNode.insertBefore(draggedNode, a.n0); 322 | } else if (a.b1) { // 插入在兄弟节点后面 323 | dJSON.insert(a.b1, subject.data, 1); 324 | draggedNode.parentNode.insertBefore(draggedNode, a.n1.nextSibling); 325 | } 326 | dJSON.addId(); 327 | drawOutline(dJSON); 328 | chart(dJSON);// eslint-disable-line no-use-before-define 329 | d3.select(draggedNode).each((p) => seleOutNode(p.data.id)); 330 | } else { 331 | dragback(subject, draggedNode); 332 | } 333 | }); 334 | } 335 | function appendNode(enter) { 336 | const gNode = enter.append('g'); 337 | gNode.attr('class', (d) => `depth_${d.depth}`) 338 | .attr('transform', (d) => `translate(${d.dy},${d.dx})`); 339 | const foreign = gNode.append('foreignObject') 340 | .attr('width', (d) => d.data.textWidth + 11) 341 | .attr('height', 30) 342 | .attr('transform', `translate(${-5},${-27})`); 343 | const foreignP = foreign.append('xhtml:p') 344 | .attr('contenteditable', false) 345 | .text((d) => d.data.name); 346 | foreignP.on('blur', () => { 347 | const editP = document.querySelector('#editing p'); 348 | window.getSelection().removeAllRanges();// 清除选中 349 | const editText = editP.textContent; 350 | d3.select('g#editing').each((d, i, n) => { 351 | n[i].removeAttribute('id'); 352 | editP.setAttribute('contenteditable', false); 353 | if (d.data.name !== editText) { 354 | d.data.name = editText; 355 | drawHiddenText(d.data); 356 | drawOutline(dataJSON);// eslint-disable-line no-use-before-define 357 | drawMindnode(dataJSON);// eslint-disable-line no-use-before-define 358 | } 359 | }); 360 | }); 361 | const rect = gNode.append('rect') 362 | .attr('class', (d) => `depth_${d.depth}`) 363 | .attr('y', -17 - 4) 364 | .attr('x', -4) 365 | .attr('width', (d) => d.data.textWidth + 8) 366 | .attr('height', 16 + 8) 367 | .attr('rx', 3) 368 | .attr('ry', 3) 369 | .lower(); 370 | 371 | const enterData = enter.data(); 372 | if (enterData.length) { 373 | if (enterData[0].data.id !== '0') { 374 | gNode.append('path') 375 | .attr('id', (d) => `path_${d.data.id}`) 376 | .attr('class', (d) => `depth_${d.depth}`) 377 | .lower() 378 | .attr('stroke', (d) => d.data.color) 379 | .attr('d', (d) => `${link({ 380 | source: [ 381 | (d.parent ? d.parent.y + d.parent.data.textWidth : 0) - d.y, 382 | (d.parent ? d.parent.x : 0) - d.x, 383 | ], 384 | target: [0, 0], 385 | })}L${d.data.textWidth},0`); 386 | } else if (enterData[0].data.id === '0') { // 根节点 387 | foreign.attr('transform', `translate(${-10},${-15})`); 388 | rect.attr('y', -9 - 4).attr('x', -5 - 4); 389 | } 390 | } 391 | 392 | return gNode; 393 | } 394 | function updateNode(update) { 395 | update.attr('class', (d) => `depth_${d.depth}`) 396 | .transition(transition) 397 | .attr('transform', (d) => `translate(${d.dy},${d.dx})`); 398 | update.each((d, i, n) => { 399 | const node = d3.select(n[i]); 400 | node.select('foreignObject').attr('width', d.data.textWidth + 11); 401 | node.select('p').text(d.data.name); 402 | node.select('rect') 403 | .attr('class', `depth_${d.depth}`) 404 | .attr('width', d.data.textWidth + 8); 405 | node.select('path') 406 | .attr('id', `path_${d.data.id}`) 407 | .attr('class', `depth_${d.depth}`) 408 | .attr('stroke', d.data.color) 409 | .transition(transition) 410 | .attr('d', `${link({ 411 | source: [ 412 | (d.parent ? d.parent.y + d.parent.data.textWidth : 0) - d.y, 413 | (d.parent ? d.parent.x : 0) - d.x, 414 | ], 415 | target: [0, 0], 416 | })}L${d.data.textWidth},0`); 417 | }); 418 | return update; 419 | } 420 | function gNodeNest(d, gParent) { 421 | const gNode = gParent.selectAll(`g${d[0] ? `.depth_${d[0].depth}` : ''}`) 422 | .data(d) 423 | .join( 424 | (enter) => appendNode(enter), 425 | (update) => updateNode(update), 426 | ); 427 | gNode.on('click', clicked); 428 | if (!d[0] || d[0].depth !== 0) { // 非根节点才可以拖拽 429 | gNode.call(d3.drag().on('drag', dragged).on('end', dragended)); 430 | } 431 | // 生成嵌套节点 432 | for (let index = 0; index < d.length; index += 1) { 433 | let dChildren = d[index].children; 434 | if (!dChildren) { 435 | dChildren = []; 436 | } 437 | gNodeNest(dChildren, gNode.filter((a, i) => i === index)); 438 | } 439 | } 440 | function renewY(r, textWidth) { 441 | r.y += textWidth; 442 | if (r.children) { 443 | for (let index = 0; index < r.children.length; index += 1) { 444 | const rChild = r.children[index]; 445 | renewY(rChild, textWidth + r.data.textWidth); 446 | } 447 | } 448 | } 449 | function chart(d) { 450 | const r = d3.hierarchy(d.data[0]);// 根据指定的分层数据构造根节点 451 | r.nodeHeight = 35; 452 | r.nodeWidth = 100;// r.height与叶子节点的最大距离 453 | // nodeSize设置了节点的大小(高宽) 454 | // 高指两个叶子节点的纵向距离,宽指两个节点的横向距离 455 | root = d3.tree().nodeSize([r.nodeHeight, r.nodeWidth])(r); 456 | let x0 = Infinity; 457 | let x1 = -x0; 458 | renewY(root, 0); 459 | root.each((a) => { 460 | if (a.x > x1) x1 = a.x;// 求得最大,即最低点 461 | if (a.x < x0) x0 = a.x;// 求得最小,即最高点 462 | }); 463 | root.each((a) => { 464 | // 处理偏移量确保图像完全显示 465 | a.x -= (x0 - 30); 466 | a.y += 15; 467 | // 相对偏移 468 | a.dx = a.x - (a.parent ? a.parent.x : 0); 469 | a.dy = a.y - (a.parent ? a.parent.y : 0); 470 | }); 471 | gNodeNest([root], gMindnode); 472 | } 473 | chart(dJSON); 474 | } 475 | function keyboardSvg(newJSON, sele) { 476 | dataJSON.addId(); 477 | if (newJSON) { 478 | drawHiddenText(newJSON); 479 | } 480 | drawMindnode(dataJSON); 481 | drawOutline(dataJSON); 482 | if (sele) { 483 | seleOutNode(newJSON.id); 484 | sele.attr('id', ''); 485 | seleMindNode(gMindnode, newJSON.id); 486 | d3.select('#selectedMindnode') 487 | .attr('id', 'editing') 488 | .select('p') 489 | .attr('contenteditable', true); 490 | document.querySelector('#editing p').focus(); 491 | document.execCommand('selectAll', false); 492 | } 493 | } 494 | // 监听键盘 495 | document.addEventListener('keydown', (event) => { 496 | const sele = d3.select('#selectedMindnode'); 497 | if (!sele.nodes()[0]) { 498 | return; 499 | } 500 | const newJSON = { name: '新建节点' }; 501 | const keyName = event.key; 502 | if (keyName === 'Tab') { // 添加子节点 503 | event.preventDefault(); 504 | sele.each((d) => { 505 | dataJSON.add(d.data, newJSON); 506 | keyboardSvg(newJSON, sele); 507 | }); 508 | } else if (keyName === 'Enter') { // 添加弟弟节点 509 | event.preventDefault(); 510 | sele.each((d, i, n) => { 511 | if (n[i].parentNode.isSameNode(gMindnode.nodes()[0])) { // 根节点enter时,等效tab 512 | dataJSON.add(d.data, newJSON); 513 | } else { 514 | dataJSON.insert(d.data, newJSON, 1); 515 | } 516 | keyboardSvg(newJSON, sele); 517 | }); 518 | } else if (keyName === 'Backspace') { // 删除节点 519 | event.preventDefault(); 520 | sele.each((d) => { 521 | dataJSON.del(d.data); 522 | keyboardSvg(); 523 | }); 524 | } 525 | }); 526 | const svg = d3.select('svg.mindmap'); 527 | const zoom = d3.zoom().scaleExtent([0.1, 8]).on('zoom', zoomed); 528 | svg.call(zoom).on('dblclick.zoom', null); 529 | axios.get('/json/learn.json').then((res) => { 530 | dataJSON = new DataJSON([res.data]); 531 | dataJSON.addId(); 532 | traverse(dataJSON.data[0]); 533 | drawHotkey(); 534 | drawMindnode(dataJSON); 535 | drawOutline(dataJSON); 536 | }); 537 | -------------------------------------------------------------------------------- /public/json/blank.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "空白节点" 3 | } -------------------------------------------------------------------------------- /public/json/learn.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"如何学习D3", 3 | "children": 4 | [ 5 | { 6 | "name":"预备知识", 7 | "children": 8 | [ 9 | {"name":"HTML & CSS" }, 10 | {"name":"JavaScript" }, 11 | {"name":"DOM"}, 12 | {"name":"SVG"}, 13 | {"name":"test"}] 14 | }, 15 | { 16 | "name":"安装" 17 | }, 18 | { 19 | "name":"入门", 20 | "children": 21 | [ 22 | {"name":"选择集"}, 23 | {"name":"test"}, 24 | {"name":"绑定数据"}, 25 | {"name":"添加删除元素"}, 26 | { 27 | "name":"简单图形", 28 | "children": 29 | [ 30 | {"name":"柱形图"}, 31 | {"name":"折线图"}, 32 | {"name":"散点图"}] 33 | }, 34 | {"name":"比例尺"}, 35 | {"name":"生成器"}, 36 | {"name":"过渡"}] 37 | }, 38 | { 39 | "name":"进阶" 40 | }] 41 | } --------------------------------------------------------------------------------