├── .gitignore
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── public
└── favicon.ico
└── src
├── App.vue
├── assets
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
├── 5.jpg
└── logo.png
├── components
├── FlyCard.vue
└── HelloWorld.vue
├── index.css
├── main.js
├── use
└── touch.js
└── views
├── demo-tantan.vue
└── demo-zhihu.vue
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 备战2021,仿探探拖拽卡片效果Vue3实现
2 |
3 | 大帅刚做了一版类似`探探`的`飞卡`效果组件,十分炫酷!
4 |
5 | 只可惜不是vue3版本,下面带大家看看如何正确搬运到vue3中。
6 |
7 | `绝对抄袭,如有不同,纯属巧合`😁
8 |
9 |
10 | 
11 |
12 |
13 |
14 | ### 飞卡原理
15 |
16 | 核心点有三:`卡片堆叠布局`、`拖动卡片`和`飞卡`
17 |
18 | 布局主要利用`z-index`和`absolute`定位;
19 |
20 | 拖动主要利用几个touch事件:`touchstart`,`touchmove`,`touchcancel`,`touchend`;
21 |
22 | 飞卡主要利用`勾股定理`😁
23 |
24 | 详情参见[原文](https://juejin.cn/post/6906143905922678797),不再赘述。
25 |
26 |
27 |
28 | ### 组件化
29 |
30 | 这里抽取组件是核心,先看看`FlyCard`组件template中的结构:
31 |
32 | ```html
33 |
34 |
35 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | ```
53 |
54 | > 注意这里省略了所有样式,替换所有`view`为`div`,每张卡片预留了`具名插槽`方便外界传入内容进来。
55 | >
56 | > 只有卡片1需要监听事件,最后预留一张空卡等待“上位”😁
57 |
58 |
59 |
60 | 那么,使用`FlyCard`组件时,需要使用`v-slot`指令分发内容,来看看`demo-tantan.vue`
61 |
62 | ```html
63 |
64 |
65 |
66 |
![]()
67 |
68 |
69 |
70 |
71 | ```
72 |
73 | > 这里的``分发内容进去,完整写法应该是``
74 |
75 | > 注意这里使用`vite`,图片`src`是动态设置的,需要做特殊处理,否则不能正常显示:
76 | >
77 | > ```js
78 | > import img1 from "../assets/1.jpg";
79 | > ```
80 | >
81 | > ```js
82 | > cards: [{img: img1}]
83 | > ```
84 |
85 |
86 |
87 | ### 逻辑代码拆分
88 |
89 | 目前FlyCard接近`400`行,不太容易维护了,我们可以用`Composition API`拆分它们。
90 |
91 | 观察一下不难发现,拖动逻辑只有`卡片1`需要,所以这一部分的数据和逻辑控制是独立的,完全可拆分出来。
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | 因此创建`use/touch.js`,抽取这部分逻辑代码,思路是:
100 |
101 | - 抽取useTouch函数,接收卡片属性和回调函数等
102 | - 响应数据就是上面的left,top这些
103 | - 控制它们的逻辑是touchStart这些
104 | - 组织在一起并导出供外界使用,日后还能复用在其他项目
105 |
106 |
107 |
108 | 抽取`useTouch`,接口如下:
109 |
110 | ```js
111 | function useTouch(props, {
112 | onDragStart,
113 | onDragMove,
114 | onDragStop,
115 | onThrowStart,
116 | onThrowDone,
117 | onThrowFail,
118 | }) {}
119 | ```
120 |
121 | > 传入卡片属性后面计算逻辑要用到,还要留出事件回调,这样外界可以做一些额外事情:
122 |
123 |
124 |
125 | 响应式数据创建
126 |
127 | ```js
128 | const cardOneState = reactive({
129 | left: 0,
130 | top: 0,
131 | startLeft: 0,
132 | startTop: 0,
133 | isDrag: false,
134 | isThrow: false,
135 | needBack: false,
136 | isAnimating: false,
137 | })
138 | ```
139 |
140 |
141 |
142 | 控制逻辑:替换大量`this.xxx`,类似下面这样:
143 |
144 | ```js
145 | function touchStart(e) {
146 | if (cardOneState.isAnimating) return;
147 | cardOneState.isDrag = true;
148 | cardOneState.needBack = false;
149 | cardOneState.isThrow = false;
150 | // ......
151 | }
152 | ```
153 |
154 | > 这里有一个例外是`getDistance`方法,这是一个工具方法,外界不需要它,完全可以放到utils中去。
155 |
156 |
157 |
158 | 下面是飞卡逻辑和卡片回弹逻辑,它们需要处理另外几张卡的状态
159 |
160 | ```js
161 | const otherCardsState = reactive({
162 | left2: 0,
163 | top2: 0,
164 | width2: 0,
165 | height2: 0,
166 | // ...
167 | });
168 |
169 | function resetAllCardDown() {/*...*/}
170 | function resetAllCard() {/*...*/}
171 | function makeCardThrow() {/*...*/}
172 | function makeCardBack() {/*...*/}
173 | ```
174 |
175 |
176 |
177 | 生命周期钩子处理
178 |
179 | ```js
180 | import { onMounted } from "vue";
181 |
182 | function useTouch() {
183 | // ...
184 | onMounted(() => {
185 | resetAllCard()
186 | })
187 | }
188 | ```
189 |
190 |
191 |
192 | 最后导出接口:
193 |
194 | ```js
195 | return {
196 | ...toRefs(cardOneState),
197 | ...toRefs(otherCardsState),
198 | touchStart,
199 | touchMove,
200 | touchCancel,
201 | };
202 | ```
203 |
204 |
205 |
206 | 重构完成,useTouch()长这样
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 | ### 组件内使用
215 |
216 | 下面在`FlyCard`里面使用`useTouch`,额外暴露一下`emits`选项,组件`输入输出`更明确。
217 |
218 | ```js
219 | import useTouch from "../use/touch";
220 |
221 | export default {
222 | props: {},
223 | emits: [
224 | "onDragStart",
225 | "onDragMove",
226 | "onDragStop",
227 | "onThrowFail",
228 | "onThrowStart",
229 | "onThrowDone",
230 | ],
231 | setup(props, { emit }) {
232 | const touchState = useTouch(props, {
233 | onDragStart: () => emit("onDragStart"),
234 | onDragMove: (obj) => emit("onDragMove", obj),
235 | onDragStop: (obj) => emit("onDragStop", obj),
236 | onThrowFail: () => emit("onThrowFail"),
237 | onThrowStart: () => emit("onThrowStart"),
238 | onThrowDone: () => emit("onThrowDone"),
239 | });
240 | return { ...touchState };
241 | },
242 | };
243 | ```
244 |
245 | > 可以看到FlyCard组件简洁多了,组件由接近400行缩减至200行
246 |
247 |
248 |
249 | ### 敲黑板
250 |
251 | 重构完成了,这是我们使用vue3 composition api的一次小实践,好处显而易见:
252 |
253 | - 我们的组件更简洁、易维护了
254 | - 我们的业务逻辑可复用了
255 | - 我们的代码完全消除了`this`,更有利于支持ts
256 | - 重构过程我们加强了对业务的理解,这些代码都不是我写的,但是我很快就搞清楚了组件真正需要的接口有哪些,哪些方法只是touch内部需要并不需要暴露出去的。
257 |
258 |
259 |
260 | ### 思考
261 |
262 | 大家观察其他卡片的操作代码,不难发现,它们很有规律,应该很容易进一步抽象成更加通用、可复用的逻辑,比如我能不能动态指定卡片的数量,而不是像现在这样写死,这样大大限制了它的通用性。这个留给大家实现,可以给[我的项目](https://github.com/57code/flycart-in-vue3)提pr。
263 |
264 |
265 |
266 |
267 |
268 | ### 代码仓库
269 |
270 | https://github.com/57code/flycart-in-vue3
271 |
272 |
273 |
274 | ### 关注杨村长
275 |
276 | 关于该案例就说到这里,希望抛砖引玉,引出更多好的内容出现。
277 |
278 | 我近期的文章(感谢掘友的鼓励与支持🌹🌹🌹):
279 |
280 | - [🔥又是一夜,这篇Composition-API实操还觉得短吗](https://juejin.im/post/6892017198450081800) 198👍
281 | - [🔥拿下vue3你要做好这些准备](https://juejin.im/post/6866373381424414734) 62👍
282 | - [🔥闪电五连鞭:Composition API原理深度剖析](https://juejin.im/post/6894993303486332941) 49👍
283 | - [🔥我的非凡2020 | 掘金年度征文](https://juejin.cn/post/6904058925482672141) 35👍
284 |
285 | 我的视频教程(感谢掘友的鼓励与支持🌹🌹🌹):
286 |
287 | - [【全网首发】Vue3.0光速上手「持续更新中」](https://www.bilibili.com/video/BV1Wh411X7Xp) 523👍
288 | - [【面霸养成】天天造轮子 (每天一更,建议收藏)](https://www.bilibili.com/video/BV13v411C7VC) 69👍
289 | - [【源码解读】村长vue3源码剖析](https://www.bilibili.com/video/BV1iT4y137yj) 60👍
290 | - [【快乐1024】给程序员同胞在线发老婆!](https://www.bilibili.com/video/BV16z4y1o7Wg)31👍
291 |
292 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flycart-in-action",
3 | "version": "0.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.12.11",
9 | "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz?cache=0&sync_timestamp=1608076799939&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.11.tgz",
10 | "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.10.4"
14 | }
15 | },
16 | "@babel/helper-validator-identifier": {
17 | "version": "7.12.11",
18 | "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz",
19 | "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0="
20 | },
21 | "@babel/highlight": {
22 | "version": "7.10.4",
23 | "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593522818552&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz",
24 | "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=",
25 | "dev": true,
26 | "requires": {
27 | "@babel/helper-validator-identifier": "^7.10.4",
28 | "chalk": "^2.0.0",
29 | "js-tokens": "^4.0.0"
30 | }
31 | },
32 | "@babel/parser": {
33 | "version": "7.12.11",
34 | "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076801657&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz",
35 | "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk="
36 | },
37 | "@babel/types": {
38 | "version": "7.12.11",
39 | "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.11.tgz",
40 | "integrity": "sha1-qG5NceMKm27hAlkERsmGYliSg84=",
41 | "requires": {
42 | "@babel/helper-validator-identifier": "^7.12.11",
43 | "lodash": "^4.17.19",
44 | "to-fast-properties": "^2.0.0"
45 | }
46 | },
47 | "@koa/cors": {
48 | "version": "3.1.0",
49 | "resolved": "https://registry.npm.taobao.org/@koa/cors/download/@koa/cors-3.1.0.tgz",
50 | "integrity": "sha1-YYuwc0OM/b0+vQ5kinbjO4Tzo7I=",
51 | "dev": true,
52 | "requires": {
53 | "vary": "^1.1.2"
54 | }
55 | },
56 | "@nodelib/fs.scandir": {
57 | "version": "2.1.3",
58 | "resolved": "https://registry.npm.taobao.org/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.3.tgz",
59 | "integrity": "sha1-Olgr21OATGum0UZXnEblITDPSjs=",
60 | "dev": true,
61 | "requires": {
62 | "@nodelib/fs.stat": "2.0.3",
63 | "run-parallel": "^1.1.9"
64 | }
65 | },
66 | "@nodelib/fs.stat": {
67 | "version": "2.0.3",
68 | "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.3.tgz",
69 | "integrity": "sha1-NNxfTKu8cg9OYPdadH5+zWwXW9M=",
70 | "dev": true
71 | },
72 | "@nodelib/fs.walk": {
73 | "version": "1.2.4",
74 | "resolved": "https://registry.npm.taobao.org/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.4.tgz",
75 | "integrity": "sha1-ARuSAqcKY2bkNspcBlhEUoqwSXY=",
76 | "dev": true,
77 | "requires": {
78 | "@nodelib/fs.scandir": "2.1.3",
79 | "fastq": "^1.6.0"
80 | }
81 | },
82 | "@rollup/plugin-commonjs": {
83 | "version": "16.0.0",
84 | "resolved": "https://registry.npm.taobao.org/@rollup/plugin-commonjs/download/@rollup/plugin-commonjs-16.0.0.tgz",
85 | "integrity": "sha1-FpAE1WzQ8KHQ81kV0xoDaw7+KB8=",
86 | "dev": true,
87 | "requires": {
88 | "@rollup/pluginutils": "^3.1.0",
89 | "commondir": "^1.0.1",
90 | "estree-walker": "^2.0.1",
91 | "glob": "^7.1.6",
92 | "is-reference": "^1.2.1",
93 | "magic-string": "^0.25.7",
94 | "resolve": "^1.17.0"
95 | },
96 | "dependencies": {
97 | "@rollup/pluginutils": {
98 | "version": "3.1.0",
99 | "resolved": "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz?cache=0&sync_timestamp=1603767613737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-3.1.0.tgz",
100 | "integrity": "sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=",
101 | "dev": true,
102 | "requires": {
103 | "@types/estree": "0.0.39",
104 | "estree-walker": "^1.0.1",
105 | "picomatch": "^2.2.2"
106 | },
107 | "dependencies": {
108 | "estree-walker": {
109 | "version": "1.0.1",
110 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-1.0.1.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-1.0.1.tgz",
111 | "integrity": "sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=",
112 | "dev": true
113 | }
114 | }
115 | }
116 | }
117 | },
118 | "@rollup/plugin-json": {
119 | "version": "4.1.0",
120 | "resolved": "https://registry.npm.taobao.org/@rollup/plugin-json/download/@rollup/plugin-json-4.1.0.tgz",
121 | "integrity": "sha1-VOCYZ65pY8WThE2L16nHGClElvM=",
122 | "dev": true,
123 | "requires": {
124 | "@rollup/pluginutils": "^3.0.8"
125 | },
126 | "dependencies": {
127 | "@rollup/pluginutils": {
128 | "version": "3.1.0",
129 | "resolved": "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz?cache=0&sync_timestamp=1603767613737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-3.1.0.tgz",
130 | "integrity": "sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=",
131 | "dev": true,
132 | "requires": {
133 | "@types/estree": "0.0.39",
134 | "estree-walker": "^1.0.1",
135 | "picomatch": "^2.2.2"
136 | }
137 | },
138 | "estree-walker": {
139 | "version": "1.0.1",
140 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-1.0.1.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-1.0.1.tgz",
141 | "integrity": "sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=",
142 | "dev": true
143 | }
144 | }
145 | },
146 | "@rollup/plugin-node-resolve": {
147 | "version": "10.0.0",
148 | "resolved": "https://registry.npm.taobao.org/@rollup/plugin-node-resolve/download/@rollup/plugin-node-resolve-10.0.0.tgz?cache=0&sync_timestamp=1607997326826&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fplugin-node-resolve%2Fdownload%2F%40rollup%2Fplugin-node-resolve-10.0.0.tgz",
149 | "integrity": "sha1-RAZKK5jfdTDmas+JQf8mL8m06tg=",
150 | "dev": true,
151 | "requires": {
152 | "@rollup/pluginutils": "^3.1.0",
153 | "@types/resolve": "1.17.1",
154 | "builtin-modules": "^3.1.0",
155 | "deepmerge": "^4.2.2",
156 | "is-module": "^1.0.0",
157 | "resolve": "^1.17.0"
158 | },
159 | "dependencies": {
160 | "@rollup/pluginutils": {
161 | "version": "3.1.0",
162 | "resolved": "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz?cache=0&sync_timestamp=1603767613737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-3.1.0.tgz",
163 | "integrity": "sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=",
164 | "dev": true,
165 | "requires": {
166 | "@types/estree": "0.0.39",
167 | "estree-walker": "^1.0.1",
168 | "picomatch": "^2.2.2"
169 | }
170 | },
171 | "estree-walker": {
172 | "version": "1.0.1",
173 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-1.0.1.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-1.0.1.tgz",
174 | "integrity": "sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=",
175 | "dev": true
176 | }
177 | }
178 | },
179 | "@rollup/pluginutils": {
180 | "version": "4.1.0",
181 | "resolved": "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-4.1.0.tgz?cache=0&sync_timestamp=1603767613737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-4.1.0.tgz",
182 | "integrity": "sha1-Dcxhx4DjkldVT+t/dyB9zsoTyDg=",
183 | "dev": true,
184 | "requires": {
185 | "estree-walker": "^2.0.1",
186 | "picomatch": "^2.2.2"
187 | }
188 | },
189 | "@types/accepts": {
190 | "version": "1.3.5",
191 | "resolved": "https://registry.npm.taobao.org/@types/accepts/download/@types/accepts-1.3.5.tgz",
192 | "integrity": "sha1-w0vsEVz8dG4E/loFnfTOfns5FXU=",
193 | "dev": true,
194 | "requires": {
195 | "@types/node": "*"
196 | }
197 | },
198 | "@types/body-parser": {
199 | "version": "1.19.0",
200 | "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1605052521338&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz",
201 | "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
202 | "dev": true,
203 | "requires": {
204 | "@types/connect": "*",
205 | "@types/node": "*"
206 | }
207 | },
208 | "@types/connect": {
209 | "version": "3.4.34",
210 | "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1607458722751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz",
211 | "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
212 | "dev": true,
213 | "requires": {
214 | "@types/node": "*"
215 | }
216 | },
217 | "@types/content-disposition": {
218 | "version": "0.5.3",
219 | "resolved": "https://registry.npm.taobao.org/@types/content-disposition/download/@types/content-disposition-0.5.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcontent-disposition%2Fdownload%2F%40types%2Fcontent-disposition-0.5.3.tgz",
220 | "integrity": "sha1-CqEWcBlVwvqgcX/GnNFZYJXknZY=",
221 | "dev": true
222 | },
223 | "@types/cookies": {
224 | "version": "0.7.5",
225 | "resolved": "https://registry.npm.taobao.org/@types/cookies/download/@types/cookies-0.7.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcookies%2Fdownload%2F%40types%2Fcookies-0.7.5.tgz",
226 | "integrity": "sha1-qkLJqYNHJL/+5ZcCjaUxmzjoXoQ=",
227 | "dev": true,
228 | "requires": {
229 | "@types/connect": "*",
230 | "@types/express": "*",
231 | "@types/keygrip": "*",
232 | "@types/node": "*"
233 | }
234 | },
235 | "@types/estree": {
236 | "version": "0.0.39",
237 | "resolved": "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.39.tgz?cache=0&sync_timestamp=1605053042114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Festree%2Fdownload%2F%40types%2Festree-0.0.39.tgz",
238 | "integrity": "sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8=",
239 | "dev": true
240 | },
241 | "@types/express": {
242 | "version": "4.17.9",
243 | "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.9.tgz?cache=0&sync_timestamp=1605057477768&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.9.tgz",
244 | "integrity": "sha1-9fLfat1wP/KEKK3VK97IoQkbCng=",
245 | "dev": true,
246 | "requires": {
247 | "@types/body-parser": "*",
248 | "@types/express-serve-static-core": "*",
249 | "@types/qs": "*",
250 | "@types/serve-static": "*"
251 | }
252 | },
253 | "@types/express-serve-static-core": {
254 | "version": "4.17.17",
255 | "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.17.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.17.tgz",
256 | "integrity": "sha1-a6AkZRZbbJw9jbOije9rFvybcPU=",
257 | "dev": true,
258 | "requires": {
259 | "@types/node": "*",
260 | "@types/qs": "*",
261 | "@types/range-parser": "*"
262 | }
263 | },
264 | "@types/http-assert": {
265 | "version": "1.5.1",
266 | "resolved": "https://registry.npm.taobao.org/@types/http-assert/download/@types/http-assert-1.5.1.tgz?cache=0&sync_timestamp=1605053586196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-assert%2Fdownload%2F%40types%2Fhttp-assert-1.5.1.tgz",
267 | "integrity": "sha1-13XpNjDCRpwvmA/CfjFDJAM12zs=",
268 | "dev": true
269 | },
270 | "@types/http-errors": {
271 | "version": "1.8.0",
272 | "resolved": "https://registry.npm.taobao.org/@types/http-errors/download/@types/http-errors-1.8.0.tgz?cache=0&sync_timestamp=1605053586555&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-errors%2Fdownload%2F%40types%2Fhttp-errors-1.8.0.tgz",
273 | "integrity": "sha1-aCR327vQfNAycxyzsOfq7j0Ca2k=",
274 | "dev": true
275 | },
276 | "@types/http-proxy": {
277 | "version": "1.17.4",
278 | "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.4.tgz?cache=0&sync_timestamp=1605053586725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-proxy%2Fdownload%2F%40types%2Fhttp-proxy-1.17.4.tgz",
279 | "integrity": "sha1-58kuPb4+E6p5lED/QubToXqdBFs=",
280 | "dev": true,
281 | "requires": {
282 | "@types/node": "*"
283 | }
284 | },
285 | "@types/keygrip": {
286 | "version": "1.0.2",
287 | "resolved": "https://registry.npm.taobao.org/@types/keygrip/download/@types/keygrip-1.0.2.tgz?cache=0&sync_timestamp=1605053949959&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fkeygrip%2Fdownload%2F%40types%2Fkeygrip-1.0.2.tgz",
288 | "integrity": "sha1-UTq/0lbXrQvx7hhzYGMXszsbKnI=",
289 | "dev": true
290 | },
291 | "@types/koa": {
292 | "version": "2.11.6",
293 | "resolved": "https://registry.npm.taobao.org/@types/koa/download/@types/koa-2.11.6.tgz",
294 | "integrity": "sha1-twMMqmtEr4AcKuoTunfXSv90hNU=",
295 | "dev": true,
296 | "requires": {
297 | "@types/accepts": "*",
298 | "@types/content-disposition": "*",
299 | "@types/cookies": "*",
300 | "@types/http-assert": "*",
301 | "@types/http-errors": "*",
302 | "@types/keygrip": "*",
303 | "@types/koa-compose": "*",
304 | "@types/node": "*"
305 | }
306 | },
307 | "@types/koa-compose": {
308 | "version": "3.2.5",
309 | "resolved": "https://registry.npm.taobao.org/@types/koa-compose/download/@types/koa-compose-3.2.5.tgz",
310 | "integrity": "sha1-hesugKxQvpXzfM+MQHwJu+NGjp0=",
311 | "dev": true,
312 | "requires": {
313 | "@types/koa": "*"
314 | }
315 | },
316 | "@types/lru-cache": {
317 | "version": "5.1.0",
318 | "resolved": "https://registry.npm.taobao.org/@types/lru-cache/download/@types/lru-cache-5.1.0.tgz?cache=0&sync_timestamp=1605054797572&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Flru-cache%2Fdownload%2F%40types%2Flru-cache-5.1.0.tgz",
319 | "integrity": "sha1-V/Io8rgMBGtKG9XKwDH4HyB/TwM=",
320 | "dev": true
321 | },
322 | "@types/mime": {
323 | "version": "2.0.3",
324 | "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-2.0.3.tgz",
325 | "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=",
326 | "dev": true
327 | },
328 | "@types/node": {
329 | "version": "14.14.14",
330 | "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.14.tgz?cache=0&sync_timestamp=1608047776716&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.14.tgz",
331 | "integrity": "sha1-9/1fPMhSEwERn2ORDw+5ZcfXYa4=",
332 | "dev": true
333 | },
334 | "@types/parse-json": {
335 | "version": "4.0.0",
336 | "resolved": "https://registry.npm.taobao.org/@types/parse-json/download/@types/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1605054922030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fparse-json%2Fdownload%2F%40types%2Fparse-json-4.0.0.tgz",
337 | "integrity": "sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=",
338 | "dev": true
339 | },
340 | "@types/qs": {
341 | "version": "6.9.5",
342 | "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.5.tgz?cache=0&sync_timestamp=1605055106687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fqs%2Fdownload%2F%40types%2Fqs-6.9.5.tgz",
343 | "integrity": "sha1-Q0cRvdSete5p2QwdZ8NUqajssYs=",
344 | "dev": true
345 | },
346 | "@types/range-parser": {
347 | "version": "1.2.3",
348 | "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz?cache=0&sync_timestamp=1605055243791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Frange-parser%2Fdownload%2F%40types%2Frange-parser-1.2.3.tgz",
349 | "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
350 | "dev": true
351 | },
352 | "@types/resolve": {
353 | "version": "1.17.1",
354 | "resolved": "https://registry.npm.taobao.org/@types/resolve/download/@types/resolve-1.17.1.tgz?cache=0&sync_timestamp=1605057255654&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fresolve%2Fdownload%2F%40types%2Fresolve-1.17.1.tgz",
355 | "integrity": "sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY=",
356 | "dev": true,
357 | "requires": {
358 | "@types/node": "*"
359 | }
360 | },
361 | "@types/serve-static": {
362 | "version": "1.13.8",
363 | "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.8.tgz?cache=0&sync_timestamp=1605657655340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.8.tgz",
364 | "integrity": "sha1-hREp1DRDPHCCFIV0/+wmPVgwnEY=",
365 | "dev": true,
366 | "requires": {
367 | "@types/mime": "*",
368 | "@types/node": "*"
369 | }
370 | },
371 | "@vue/compiler-core": {
372 | "version": "3.0.4",
373 | "resolved": "https://registry.npm.taobao.org/@vue/compiler-core/download/@vue/compiler-core-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcompiler-core%2Fdownload%2F%40vue%2Fcompiler-core-3.0.4.tgz",
374 | "integrity": "sha1-ASKspuraTLKLOe2TCvkXREdV4zA=",
375 | "requires": {
376 | "@babel/parser": "^7.12.0",
377 | "@babel/types": "^7.12.0",
378 | "@vue/shared": "3.0.4",
379 | "estree-walker": "^2.0.1",
380 | "source-map": "^0.6.1"
381 | }
382 | },
383 | "@vue/compiler-dom": {
384 | "version": "3.0.4",
385 | "resolved": "https://registry.npm.taobao.org/@vue/compiler-dom/download/@vue/compiler-dom-3.0.4.tgz",
386 | "integrity": "sha1-g0/UsVxWmM+fRQXCv7zMoFioQ+s=",
387 | "requires": {
388 | "@vue/compiler-core": "3.0.4",
389 | "@vue/shared": "3.0.4"
390 | }
391 | },
392 | "@vue/compiler-sfc": {
393 | "version": "3.0.4",
394 | "resolved": "https://registry.npm.taobao.org/@vue/compiler-sfc/download/@vue/compiler-sfc-3.0.4.tgz",
395 | "integrity": "sha1-IRn+HmjSwmiq+iBGHILBOamt+OA=",
396 | "dev": true,
397 | "requires": {
398 | "@babel/parser": "^7.12.0",
399 | "@babel/types": "^7.12.0",
400 | "@vue/compiler-core": "3.0.4",
401 | "@vue/compiler-dom": "3.0.4",
402 | "@vue/compiler-ssr": "3.0.4",
403 | "@vue/shared": "3.0.4",
404 | "consolidate": "^0.16.0",
405 | "estree-walker": "^2.0.1",
406 | "hash-sum": "^2.0.0",
407 | "lru-cache": "^5.1.1",
408 | "magic-string": "^0.25.7",
409 | "merge-source-map": "^1.1.0",
410 | "postcss": "^7.0.32",
411 | "postcss-modules": "^3.2.2",
412 | "postcss-selector-parser": "^6.0.4",
413 | "source-map": "^0.6.1"
414 | }
415 | },
416 | "@vue/compiler-ssr": {
417 | "version": "3.0.4",
418 | "resolved": "https://registry.npm.taobao.org/@vue/compiler-ssr/download/@vue/compiler-ssr-3.0.4.tgz",
419 | "integrity": "sha1-zL0fVXNNUdFAL62CWsECACp6B8c=",
420 | "dev": true,
421 | "requires": {
422 | "@vue/compiler-dom": "3.0.4",
423 | "@vue/shared": "3.0.4"
424 | }
425 | },
426 | "@vue/reactivity": {
427 | "version": "3.0.4",
428 | "resolved": "https://registry.npm.taobao.org/@vue/reactivity/download/@vue/reactivity-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Freactivity%2Fdownload%2F%40vue%2Freactivity-3.0.4.tgz",
429 | "integrity": "sha1-tlmd2CcadFlgoD8FdEzPeZG6XY0=",
430 | "requires": {
431 | "@vue/shared": "3.0.4"
432 | }
433 | },
434 | "@vue/runtime-core": {
435 | "version": "3.0.4",
436 | "resolved": "https://registry.npm.taobao.org/@vue/runtime-core/download/@vue/runtime-core-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fruntime-core%2Fdownload%2F%40vue%2Fruntime-core-3.0.4.tgz",
437 | "integrity": "sha1-pbmgAVYLH9jAGkP2i3ZMVV3ng2w=",
438 | "requires": {
439 | "@vue/reactivity": "3.0.4",
440 | "@vue/shared": "3.0.4"
441 | }
442 | },
443 | "@vue/runtime-dom": {
444 | "version": "3.0.4",
445 | "resolved": "https://registry.npm.taobao.org/@vue/runtime-dom/download/@vue/runtime-dom-3.0.4.tgz",
446 | "integrity": "sha1-b4GuxUXyRRHSwooxWqM5FCC2nGg=",
447 | "requires": {
448 | "@vue/runtime-core": "3.0.4",
449 | "@vue/shared": "3.0.4",
450 | "csstype": "^2.6.8"
451 | }
452 | },
453 | "@vue/shared": {
454 | "version": "3.0.4",
455 | "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.4.tgz",
456 | "integrity": "sha1-bcUPWTvf3qphg9HbwV4tRefGuLM="
457 | },
458 | "accepts": {
459 | "version": "1.3.7",
460 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
461 | "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
462 | "dev": true,
463 | "requires": {
464 | "mime-types": "~2.1.24",
465 | "negotiator": "0.6.2"
466 | }
467 | },
468 | "ansi-regex": {
469 | "version": "5.0.0",
470 | "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz",
471 | "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=",
472 | "dev": true
473 | },
474 | "ansi-styles": {
475 | "version": "3.2.1",
476 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz",
477 | "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
478 | "dev": true,
479 | "requires": {
480 | "color-convert": "^1.9.0"
481 | }
482 | },
483 | "any-promise": {
484 | "version": "1.3.0",
485 | "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
486 | "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
487 | "dev": true
488 | },
489 | "anymatch": {
490 | "version": "3.1.1",
491 | "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz",
492 | "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=",
493 | "dev": true,
494 | "requires": {
495 | "normalize-path": "^3.0.0",
496 | "picomatch": "^2.0.4"
497 | }
498 | },
499 | "array-union": {
500 | "version": "2.1.0",
501 | "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-2.1.0.tgz",
502 | "integrity": "sha1-t5hCCtvrHego2ErNii4j0+/oXo0=",
503 | "dev": true
504 | },
505 | "at-least-node": {
506 | "version": "1.0.0",
507 | "resolved": "https://registry.npm.taobao.org/at-least-node/download/at-least-node-1.0.0.tgz",
508 | "integrity": "sha1-YCzUtG6EStTv/JKoARo8RuAjjcI=",
509 | "dev": true
510 | },
511 | "balanced-match": {
512 | "version": "1.0.0",
513 | "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
514 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
515 | "dev": true
516 | },
517 | "big.js": {
518 | "version": "5.2.2",
519 | "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz",
520 | "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
521 | "dev": true
522 | },
523 | "binary-extensions": {
524 | "version": "2.1.0",
525 | "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.1.0.tgz?cache=0&sync_timestamp=1593261283449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.1.0.tgz",
526 | "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=",
527 | "dev": true
528 | },
529 | "bluebird": {
530 | "version": "3.7.2",
531 | "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz",
532 | "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
533 | "dev": true
534 | },
535 | "brace-expansion": {
536 | "version": "1.1.11",
537 | "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1601898201980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz",
538 | "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
539 | "dev": true,
540 | "requires": {
541 | "balanced-match": "^1.0.0",
542 | "concat-map": "0.0.1"
543 | }
544 | },
545 | "braces": {
546 | "version": "3.0.2",
547 | "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
548 | "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
549 | "dev": true,
550 | "requires": {
551 | "fill-range": "^7.0.1"
552 | }
553 | },
554 | "brotli-size": {
555 | "version": "4.0.0",
556 | "resolved": "https://registry.npm.taobao.org/brotli-size/download/brotli-size-4.0.0.tgz",
557 | "integrity": "sha1-oF7j+q08DnAKLy2oJrprTXbmnl4=",
558 | "dev": true,
559 | "requires": {
560 | "duplexer": "0.1.1"
561 | }
562 | },
563 | "buffer-from": {
564 | "version": "1.1.1",
565 | "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
566 | "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
567 | "dev": true
568 | },
569 | "builtin-modules": {
570 | "version": "3.1.0",
571 | "resolved": "https://registry.npm.taobao.org/builtin-modules/download/builtin-modules-3.1.0.tgz",
572 | "integrity": "sha1-qtl8FRMet2tltQ7yCOdYTNdqdIQ=",
573 | "dev": true
574 | },
575 | "cac": {
576 | "version": "6.7.1",
577 | "resolved": "https://registry.npm.taobao.org/cac/download/cac-6.7.1.tgz?cache=0&sync_timestamp=1607738890352&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcac%2Fdownload%2Fcac-6.7.1.tgz",
578 | "integrity": "sha1-BgnSijHYh3Rt5LZqFeORTxBviAw=",
579 | "dev": true
580 | },
581 | "cache-content-type": {
582 | "version": "1.0.1",
583 | "resolved": "https://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz",
584 | "integrity": "sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=",
585 | "dev": true,
586 | "requires": {
587 | "mime-types": "^2.1.18",
588 | "ylru": "^1.2.0"
589 | }
590 | },
591 | "callsites": {
592 | "version": "3.1.0",
593 | "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz",
594 | "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=",
595 | "dev": true
596 | },
597 | "chalk": {
598 | "version": "2.4.2",
599 | "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1591687028262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
600 | "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
601 | "dev": true,
602 | "requires": {
603 | "ansi-styles": "^3.2.1",
604 | "escape-string-regexp": "^1.0.5",
605 | "supports-color": "^5.3.0"
606 | },
607 | "dependencies": {
608 | "supports-color": {
609 | "version": "5.5.0",
610 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz",
611 | "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
612 | "dev": true,
613 | "requires": {
614 | "has-flag": "^3.0.0"
615 | }
616 | }
617 | }
618 | },
619 | "chokidar": {
620 | "version": "3.4.3",
621 | "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.3.tgz?cache=0&sync_timestamp=1602585463277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.3.tgz",
622 | "integrity": "sha1-wd84IxRI5FykrFiObHlXO6alfVs=",
623 | "dev": true,
624 | "requires": {
625 | "anymatch": "~3.1.1",
626 | "braces": "~3.0.2",
627 | "fsevents": "~2.1.2",
628 | "glob-parent": "~5.1.0",
629 | "is-binary-path": "~2.1.0",
630 | "is-glob": "~4.0.1",
631 | "normalize-path": "~3.0.0",
632 | "readdirp": "~3.5.0"
633 | }
634 | },
635 | "clean-css": {
636 | "version": "4.2.3",
637 | "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz",
638 | "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=",
639 | "dev": true,
640 | "requires": {
641 | "source-map": "~0.6.0"
642 | }
643 | },
644 | "cli-cursor": {
645 | "version": "3.1.0",
646 | "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz",
647 | "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=",
648 | "dev": true,
649 | "requires": {
650 | "restore-cursor": "^3.1.0"
651 | }
652 | },
653 | "cli-spinners": {
654 | "version": "2.5.0",
655 | "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.5.0.tgz",
656 | "integrity": "sha1-EnY+RyUb+VHLdcIB36WP8byy0Ec=",
657 | "dev": true
658 | },
659 | "clone": {
660 | "version": "1.0.4",
661 | "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz",
662 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
663 | "dev": true
664 | },
665 | "co": {
666 | "version": "4.6.0",
667 | "resolved": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
668 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
669 | "dev": true
670 | },
671 | "color-convert": {
672 | "version": "1.9.3",
673 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
674 | "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
675 | "dev": true,
676 | "requires": {
677 | "color-name": "1.1.3"
678 | }
679 | },
680 | "color-name": {
681 | "version": "1.1.3",
682 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
683 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
684 | "dev": true
685 | },
686 | "commander": {
687 | "version": "2.20.3",
688 | "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1607933602027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
689 | "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=",
690 | "dev": true
691 | },
692 | "commondir": {
693 | "version": "1.0.1",
694 | "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
695 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
696 | "dev": true
697 | },
698 | "concat-map": {
699 | "version": "0.0.1",
700 | "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
701 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
702 | "dev": true
703 | },
704 | "consolidate": {
705 | "version": "0.16.0",
706 | "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.16.0.tgz?cache=0&sync_timestamp=1599596654038&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsolidate%2Fdownload%2Fconsolidate-0.16.0.tgz",
707 | "integrity": "sha1-oRhkdokw8vGUMWYKZZBmaPX73BY=",
708 | "dev": true,
709 | "requires": {
710 | "bluebird": "^3.7.2"
711 | }
712 | },
713 | "content-disposition": {
714 | "version": "0.5.3",
715 | "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
716 | "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
717 | "dev": true,
718 | "requires": {
719 | "safe-buffer": "5.1.2"
720 | }
721 | },
722 | "content-type": {
723 | "version": "1.0.4",
724 | "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
725 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
726 | "dev": true
727 | },
728 | "cookies": {
729 | "version": "0.8.0",
730 | "resolved": "https://registry.npm.taobao.org/cookies/download/cookies-0.8.0.tgz",
731 | "integrity": "sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=",
732 | "dev": true,
733 | "requires": {
734 | "depd": "~2.0.0",
735 | "keygrip": "~1.1.0"
736 | },
737 | "dependencies": {
738 | "depd": {
739 | "version": "2.0.0",
740 | "resolved": "https://registry.npm.taobao.org/depd/download/depd-2.0.0.tgz",
741 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=",
742 | "dev": true
743 | }
744 | }
745 | },
746 | "cosmiconfig": {
747 | "version": "7.0.0",
748 | "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-7.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-7.0.0.tgz",
749 | "integrity": "sha1-75tE13OVnK5j3ezRIt4jhTtg+NM=",
750 | "dev": true,
751 | "requires": {
752 | "@types/parse-json": "^4.0.0",
753 | "import-fresh": "^3.2.1",
754 | "parse-json": "^5.0.0",
755 | "path-type": "^4.0.0",
756 | "yaml": "^1.10.0"
757 | }
758 | },
759 | "cross-spawn": {
760 | "version": "7.0.3",
761 | "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz",
762 | "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
763 | "dev": true,
764 | "requires": {
765 | "path-key": "^3.1.0",
766 | "shebang-command": "^2.0.0",
767 | "which": "^2.0.1"
768 | }
769 | },
770 | "cssesc": {
771 | "version": "3.0.0",
772 | "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
773 | "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=",
774 | "dev": true
775 | },
776 | "csstype": {
777 | "version": "2.6.14",
778 | "resolved": "https://registry.npm.taobao.org/csstype/download/csstype-2.6.14.tgz?cache=0&sync_timestamp=1605258528595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsstype%2Fdownload%2Fcsstype-2.6.14.tgz",
779 | "integrity": "sha1-AEgipAUDRbVa1NzAC+HZzy9Clt4="
780 | },
781 | "debug": {
782 | "version": "4.3.1",
783 | "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz",
784 | "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=",
785 | "dev": true,
786 | "requires": {
787 | "ms": "2.1.2"
788 | }
789 | },
790 | "deep-equal": {
791 | "version": "1.0.1",
792 | "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1606860101281&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz",
793 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
794 | "dev": true
795 | },
796 | "deepmerge": {
797 | "version": "4.2.2",
798 | "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz",
799 | "integrity": "sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=",
800 | "dev": true
801 | },
802 | "defaults": {
803 | "version": "1.0.3",
804 | "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz",
805 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
806 | "dev": true,
807 | "requires": {
808 | "clone": "^1.0.2"
809 | }
810 | },
811 | "delegates": {
812 | "version": "1.0.0",
813 | "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
814 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
815 | "dev": true
816 | },
817 | "depd": {
818 | "version": "1.1.2",
819 | "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
820 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
821 | "dev": true
822 | },
823 | "destroy": {
824 | "version": "1.0.4",
825 | "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
826 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
827 | "dev": true
828 | },
829 | "dir-glob": {
830 | "version": "3.0.1",
831 | "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-3.0.1.tgz",
832 | "integrity": "sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=",
833 | "dev": true,
834 | "requires": {
835 | "path-type": "^4.0.0"
836 | }
837 | },
838 | "dotenv": {
839 | "version": "8.2.0",
840 | "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz",
841 | "integrity": "sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=",
842 | "dev": true
843 | },
844 | "dotenv-expand": {
845 | "version": "5.1.0",
846 | "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz",
847 | "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
848 | "dev": true
849 | },
850 | "duplexer": {
851 | "version": "0.1.1",
852 | "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
853 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
854 | "dev": true
855 | },
856 | "ee-first": {
857 | "version": "1.1.1",
858 | "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
859 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
860 | "dev": true
861 | },
862 | "emojis-list": {
863 | "version": "3.0.0",
864 | "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz",
865 | "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=",
866 | "dev": true
867 | },
868 | "encodeurl": {
869 | "version": "1.0.2",
870 | "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
871 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
872 | "dev": true
873 | },
874 | "end-of-stream": {
875 | "version": "1.4.4",
876 | "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
877 | "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
878 | "dev": true,
879 | "requires": {
880 | "once": "^1.4.0"
881 | }
882 | },
883 | "error-ex": {
884 | "version": "1.3.2",
885 | "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz",
886 | "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
887 | "dev": true,
888 | "requires": {
889 | "is-arrayish": "^0.2.1"
890 | }
891 | },
892 | "es-module-lexer": {
893 | "version": "0.3.26",
894 | "resolved": "https://registry.npm.taobao.org/es-module-lexer/download/es-module-lexer-0.3.26.tgz",
895 | "integrity": "sha1-e1BwROl9WwOwHUOSx0/+ucF3qDs=",
896 | "dev": true
897 | },
898 | "esbuild": {
899 | "version": "0.8.21",
900 | "resolved": "https://registry.npm.taobao.org/esbuild/download/esbuild-0.8.21.tgz?cache=0&sync_timestamp=1607407387297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesbuild%2Fdownload%2Fesbuild-0.8.21.tgz",
901 | "integrity": "sha1-xDH4r0V3lcL+yxsoc8uOrvTltTw=",
902 | "dev": true
903 | },
904 | "escape-html": {
905 | "version": "1.0.3",
906 | "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
907 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
908 | "dev": true
909 | },
910 | "escape-string-regexp": {
911 | "version": "1.0.5",
912 | "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
913 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
914 | "dev": true
915 | },
916 | "estree-walker": {
917 | "version": "2.0.2",
918 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-2.0.2.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-2.0.2.tgz",
919 | "integrity": "sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw="
920 | },
921 | "etag": {
922 | "version": "1.8.1",
923 | "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
924 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
925 | "dev": true
926 | },
927 | "eventemitter3": {
928 | "version": "4.0.7",
929 | "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517795415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz",
930 | "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
931 | "dev": true
932 | },
933 | "execa": {
934 | "version": "4.1.0",
935 | "resolved": "https://registry.npm.taobao.org/execa/download/execa-4.1.0.tgz?cache=0&sync_timestamp=1606970920652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-4.1.0.tgz",
936 | "integrity": "sha1-TlSRrRVy8vF6d9OIxshXE1sihHo=",
937 | "dev": true,
938 | "requires": {
939 | "cross-spawn": "^7.0.0",
940 | "get-stream": "^5.0.0",
941 | "human-signals": "^1.1.1",
942 | "is-stream": "^2.0.0",
943 | "merge-stream": "^2.0.0",
944 | "npm-run-path": "^4.0.0",
945 | "onetime": "^5.1.0",
946 | "signal-exit": "^3.0.2",
947 | "strip-final-newline": "^2.0.0"
948 | }
949 | },
950 | "fast-glob": {
951 | "version": "3.2.4",
952 | "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-3.2.4.tgz?cache=0&sync_timestamp=1592290280465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-3.2.4.tgz",
953 | "integrity": "sha1-0grvv5lXk4Pn88xmUpFYybmFVNM=",
954 | "dev": true,
955 | "requires": {
956 | "@nodelib/fs.stat": "^2.0.2",
957 | "@nodelib/fs.walk": "^1.2.3",
958 | "glob-parent": "^5.1.0",
959 | "merge2": "^1.3.0",
960 | "micromatch": "^4.0.2",
961 | "picomatch": "^2.2.1"
962 | }
963 | },
964 | "fastq": {
965 | "version": "1.9.0",
966 | "resolved": "https://registry.npm.taobao.org/fastq/download/fastq-1.9.0.tgz?cache=0&sync_timestamp=1603877192750&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffastq%2Fdownload%2Ffastq-1.9.0.tgz",
967 | "integrity": "sha1-4Wpy8zjqykjpG1wjWTvMLvZreUc=",
968 | "dev": true,
969 | "requires": {
970 | "reusify": "^1.0.4"
971 | }
972 | },
973 | "fill-range": {
974 | "version": "7.0.1",
975 | "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
976 | "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
977 | "dev": true,
978 | "requires": {
979 | "to-regex-range": "^5.0.1"
980 | }
981 | },
982 | "follow-redirects": {
983 | "version": "1.13.1",
984 | "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.1.tgz?cache=0&sync_timestamp=1607916846877&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.13.1.tgz",
985 | "integrity": "sha1-X2m4Ezds7k/QR0o6uoNd8Eq3Y7c=",
986 | "dev": true
987 | },
988 | "fresh": {
989 | "version": "0.5.2",
990 | "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
991 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
992 | "dev": true
993 | },
994 | "fs-extra": {
995 | "version": "9.0.1",
996 | "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-9.0.1.tgz?cache=0&sync_timestamp=1591231538901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-9.0.1.tgz",
997 | "integrity": "sha1-kQ2gBiQ3ukw5/t2GPxZ1zP78ufw=",
998 | "dev": true,
999 | "requires": {
1000 | "at-least-node": "^1.0.0",
1001 | "graceful-fs": "^4.2.0",
1002 | "jsonfile": "^6.0.1",
1003 | "universalify": "^1.0.0"
1004 | }
1005 | },
1006 | "fs.realpath": {
1007 | "version": "1.0.0",
1008 | "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
1009 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1010 | "dev": true
1011 | },
1012 | "fsevents": {
1013 | "version": "2.1.3",
1014 | "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz?cache=0&sync_timestamp=1608033993741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.1.3.tgz",
1015 | "integrity": "sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4=",
1016 | "dev": true,
1017 | "optional": true
1018 | },
1019 | "function-bind": {
1020 | "version": "1.1.1",
1021 | "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
1022 | "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
1023 | "dev": true
1024 | },
1025 | "generic-names": {
1026 | "version": "2.0.1",
1027 | "resolved": "https://registry.npm.taobao.org/generic-names/download/generic-names-2.0.1.tgz?cache=0&sync_timestamp=1603542242727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgeneric-names%2Fdownload%2Fgeneric-names-2.0.1.tgz",
1028 | "integrity": "sha1-+KN46tLMqno08DF7BVVIMq5BuHI=",
1029 | "dev": true,
1030 | "requires": {
1031 | "loader-utils": "^1.1.0"
1032 | }
1033 | },
1034 | "get-stream": {
1035 | "version": "5.2.0",
1036 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1597056464385&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz",
1037 | "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=",
1038 | "dev": true,
1039 | "requires": {
1040 | "pump": "^3.0.0"
1041 | }
1042 | },
1043 | "glob": {
1044 | "version": "7.1.6",
1045 | "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz",
1046 | "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=",
1047 | "dev": true,
1048 | "requires": {
1049 | "fs.realpath": "^1.0.0",
1050 | "inflight": "^1.0.4",
1051 | "inherits": "2",
1052 | "minimatch": "^3.0.4",
1053 | "once": "^1.3.0",
1054 | "path-is-absolute": "^1.0.0"
1055 | }
1056 | },
1057 | "glob-parent": {
1058 | "version": "5.1.1",
1059 | "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz",
1060 | "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
1061 | "dev": true,
1062 | "requires": {
1063 | "is-glob": "^4.0.1"
1064 | }
1065 | },
1066 | "globby": {
1067 | "version": "11.0.1",
1068 | "resolved": "https://registry.npm.taobao.org/globby/download/globby-11.0.1.tgz",
1069 | "integrity": "sha1-mivxB6Bo8//qvEmtcCx57ejP01c=",
1070 | "dev": true,
1071 | "requires": {
1072 | "array-union": "^2.1.0",
1073 | "dir-glob": "^3.0.1",
1074 | "fast-glob": "^3.1.1",
1075 | "ignore": "^5.1.4",
1076 | "merge2": "^1.3.0",
1077 | "slash": "^3.0.0"
1078 | }
1079 | },
1080 | "graceful-fs": {
1081 | "version": "4.2.4",
1082 | "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz",
1083 | "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=",
1084 | "dev": true
1085 | },
1086 | "has": {
1087 | "version": "1.0.3",
1088 | "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
1089 | "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
1090 | "dev": true,
1091 | "requires": {
1092 | "function-bind": "^1.1.1"
1093 | }
1094 | },
1095 | "has-flag": {
1096 | "version": "3.0.0",
1097 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
1098 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1099 | "dev": true
1100 | },
1101 | "hash-sum": {
1102 | "version": "2.0.0",
1103 | "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz",
1104 | "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=",
1105 | "dev": true
1106 | },
1107 | "http-assert": {
1108 | "version": "1.4.1",
1109 | "resolved": "https://registry.npm.taobao.org/http-assert/download/http-assert-1.4.1.tgz",
1110 | "integrity": "sha1-xfcl1neqfoc+9zYZm4lobM6zeHg=",
1111 | "dev": true,
1112 | "requires": {
1113 | "deep-equal": "~1.0.1",
1114 | "http-errors": "~1.7.2"
1115 | },
1116 | "dependencies": {
1117 | "http-errors": {
1118 | "version": "1.7.3",
1119 | "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz?cache=0&sync_timestamp=1593407611415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.3.tgz",
1120 | "integrity": "sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY=",
1121 | "dev": true,
1122 | "requires": {
1123 | "depd": "~1.1.2",
1124 | "inherits": "2.0.4",
1125 | "setprototypeof": "1.1.1",
1126 | "statuses": ">= 1.5.0 < 2",
1127 | "toidentifier": "1.0.0"
1128 | }
1129 | }
1130 | }
1131 | },
1132 | "http-errors": {
1133 | "version": "1.8.0",
1134 | "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.8.0.tgz?cache=0&sync_timestamp=1593407611415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.8.0.tgz",
1135 | "integrity": "sha1-ddG75JfhBE9R5O6ecEpi8o0zZQc=",
1136 | "dev": true,
1137 | "requires": {
1138 | "depd": "~1.1.2",
1139 | "inherits": "2.0.4",
1140 | "setprototypeof": "1.2.0",
1141 | "statuses": ">= 1.5.0 < 2",
1142 | "toidentifier": "1.0.0"
1143 | },
1144 | "dependencies": {
1145 | "setprototypeof": {
1146 | "version": "1.2.0",
1147 | "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.2.0.tgz",
1148 | "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=",
1149 | "dev": true
1150 | }
1151 | }
1152 | },
1153 | "http-proxy": {
1154 | "version": "1.18.1",
1155 | "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz",
1156 | "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
1157 | "dev": true,
1158 | "requires": {
1159 | "eventemitter3": "^4.0.0",
1160 | "follow-redirects": "^1.0.0",
1161 | "requires-port": "^1.0.0"
1162 | }
1163 | },
1164 | "human-signals": {
1165 | "version": "1.1.1",
1166 | "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz",
1167 | "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=",
1168 | "dev": true
1169 | },
1170 | "icss-replace-symbols": {
1171 | "version": "1.1.0",
1172 | "resolved": "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz",
1173 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
1174 | "dev": true
1175 | },
1176 | "icss-utils": {
1177 | "version": "4.1.1",
1178 | "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&sync_timestamp=1605801266348&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz",
1179 | "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=",
1180 | "dev": true,
1181 | "requires": {
1182 | "postcss": "^7.0.14"
1183 | }
1184 | },
1185 | "ignore": {
1186 | "version": "5.1.8",
1187 | "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz?cache=0&sync_timestamp=1590809380232&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.8.tgz",
1188 | "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=",
1189 | "dev": true
1190 | },
1191 | "import-cwd": {
1192 | "version": "3.0.0",
1193 | "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-3.0.0.tgz",
1194 | "integrity": "sha1-IIRVR3GAFRJuqbNna3WS+4vUz5I=",
1195 | "dev": true,
1196 | "requires": {
1197 | "import-from": "^3.0.0"
1198 | }
1199 | },
1200 | "import-fresh": {
1201 | "version": "3.2.2",
1202 | "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.2.tgz?cache=0&sync_timestamp=1604256115691&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.2.tgz",
1203 | "integrity": "sha1-/BKcFgxdaCNVB/QzGmuq0Ya9vD4=",
1204 | "dev": true,
1205 | "requires": {
1206 | "parent-module": "^1.0.0",
1207 | "resolve-from": "^4.0.0"
1208 | }
1209 | },
1210 | "import-from": {
1211 | "version": "3.0.0",
1212 | "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-3.0.0.tgz",
1213 | "integrity": "sha1-BVz+w4zVon2AV8pRN219O/CJGWY=",
1214 | "dev": true,
1215 | "requires": {
1216 | "resolve-from": "^5.0.0"
1217 | },
1218 | "dependencies": {
1219 | "resolve-from": {
1220 | "version": "5.0.0",
1221 | "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-5.0.0.tgz",
1222 | "integrity": "sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=",
1223 | "dev": true
1224 | }
1225 | }
1226 | },
1227 | "indexes-of": {
1228 | "version": "1.0.1",
1229 | "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz",
1230 | "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
1231 | "dev": true
1232 | },
1233 | "inflight": {
1234 | "version": "1.0.6",
1235 | "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
1236 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1237 | "dev": true,
1238 | "requires": {
1239 | "once": "^1.3.0",
1240 | "wrappy": "1"
1241 | }
1242 | },
1243 | "inherits": {
1244 | "version": "2.0.4",
1245 | "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
1246 | "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=",
1247 | "dev": true
1248 | },
1249 | "is-arrayish": {
1250 | "version": "0.2.1",
1251 | "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
1252 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1253 | "dev": true
1254 | },
1255 | "is-binary-path": {
1256 | "version": "2.1.0",
1257 | "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
1258 | "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
1259 | "dev": true,
1260 | "requires": {
1261 | "binary-extensions": "^2.0.0"
1262 | }
1263 | },
1264 | "is-core-module": {
1265 | "version": "2.2.0",
1266 | "resolved": "https://registry.npm.taobao.org/is-core-module/download/is-core-module-2.2.0.tgz?cache=0&sync_timestamp=1606411557629&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-core-module%2Fdownload%2Fis-core-module-2.2.0.tgz",
1267 | "integrity": "sha1-lwN+89UiJNhRY/VZeytj2a/tmBo=",
1268 | "dev": true,
1269 | "requires": {
1270 | "has": "^1.0.3"
1271 | }
1272 | },
1273 | "is-docker": {
1274 | "version": "2.1.1",
1275 | "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.1.1.tgz?cache=0&sync_timestamp=1596559351223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-docker%2Fdownload%2Fis-docker-2.1.1.tgz",
1276 | "integrity": "sha1-QSWojkTkUNOE4JBH7eca3C0UQVY=",
1277 | "dev": true
1278 | },
1279 | "is-extglob": {
1280 | "version": "2.1.1",
1281 | "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
1282 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1283 | "dev": true
1284 | },
1285 | "is-generator-function": {
1286 | "version": "1.0.8",
1287 | "resolved": "https://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.8.tgz?cache=0&sync_timestamp=1606926808749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-generator-function%2Fdownload%2Fis-generator-function-1.0.8.tgz",
1288 | "integrity": "sha1-37XCsSDgKwqNnSxoBs1WIaqSL3s=",
1289 | "dev": true
1290 | },
1291 | "is-glob": {
1292 | "version": "4.0.1",
1293 | "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
1294 | "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
1295 | "dev": true,
1296 | "requires": {
1297 | "is-extglob": "^2.1.1"
1298 | }
1299 | },
1300 | "is-interactive": {
1301 | "version": "1.0.0",
1302 | "resolved": "https://registry.npm.taobao.org/is-interactive/download/is-interactive-1.0.0.tgz",
1303 | "integrity": "sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=",
1304 | "dev": true
1305 | },
1306 | "is-module": {
1307 | "version": "1.0.0",
1308 | "resolved": "https://registry.npm.taobao.org/is-module/download/is-module-1.0.0.tgz",
1309 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
1310 | "dev": true
1311 | },
1312 | "is-number": {
1313 | "version": "7.0.0",
1314 | "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
1315 | "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
1316 | "dev": true
1317 | },
1318 | "is-reference": {
1319 | "version": "1.2.1",
1320 | "resolved": "https://registry.npm.taobao.org/is-reference/download/is-reference-1.2.1.tgz",
1321 | "integrity": "sha1-iy2sCzcfS8mU/eq6nrVC0DAC0Lc=",
1322 | "dev": true,
1323 | "requires": {
1324 | "@types/estree": "*"
1325 | }
1326 | },
1327 | "is-stream": {
1328 | "version": "2.0.0",
1329 | "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz",
1330 | "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=",
1331 | "dev": true
1332 | },
1333 | "is-wsl": {
1334 | "version": "2.2.0",
1335 | "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz",
1336 | "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=",
1337 | "dev": true,
1338 | "requires": {
1339 | "is-docker": "^2.0.0"
1340 | }
1341 | },
1342 | "isarray": {
1343 | "version": "0.0.1",
1344 | "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
1345 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
1346 | "dev": true
1347 | },
1348 | "isbuiltin": {
1349 | "version": "1.0.0",
1350 | "resolved": "https://registry.npm.taobao.org/isbuiltin/download/isbuiltin-1.0.0.tgz",
1351 | "integrity": "sha1-RFOykVaQy0fAy5ySVaCAd3gxXJY=",
1352 | "dev": true,
1353 | "requires": {
1354 | "builtin-modules": "^1.1.1"
1355 | },
1356 | "dependencies": {
1357 | "builtin-modules": {
1358 | "version": "1.1.1",
1359 | "resolved": "https://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz",
1360 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
1361 | "dev": true
1362 | }
1363 | }
1364 | },
1365 | "isexe": {
1366 | "version": "2.0.0",
1367 | "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
1368 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1369 | "dev": true
1370 | },
1371 | "jest-worker": {
1372 | "version": "26.6.2",
1373 | "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-26.6.2.tgz",
1374 | "integrity": "sha1-f3LLxNZDw2Xie5/XdfnQ6qnHqO0=",
1375 | "dev": true,
1376 | "requires": {
1377 | "@types/node": "*",
1378 | "merge-stream": "^2.0.0",
1379 | "supports-color": "^7.0.0"
1380 | },
1381 | "dependencies": {
1382 | "has-flag": {
1383 | "version": "4.0.0",
1384 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
1385 | "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
1386 | "dev": true
1387 | },
1388 | "supports-color": {
1389 | "version": "7.2.0",
1390 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz",
1391 | "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
1392 | "dev": true,
1393 | "requires": {
1394 | "has-flag": "^4.0.0"
1395 | }
1396 | }
1397 | }
1398 | },
1399 | "js-tokens": {
1400 | "version": "4.0.0",
1401 | "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz",
1402 | "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
1403 | "dev": true
1404 | },
1405 | "json-parse-even-better-errors": {
1406 | "version": "2.3.1",
1407 | "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz",
1408 | "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=",
1409 | "dev": true
1410 | },
1411 | "json5": {
1412 | "version": "1.0.1",
1413 | "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz",
1414 | "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
1415 | "dev": true,
1416 | "requires": {
1417 | "minimist": "^1.2.0"
1418 | }
1419 | },
1420 | "jsonfile": {
1421 | "version": "6.1.0",
1422 | "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-6.1.0.tgz?cache=0&sync_timestamp=1604161912962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-6.1.0.tgz",
1423 | "integrity": "sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=",
1424 | "dev": true,
1425 | "requires": {
1426 | "graceful-fs": "^4.1.6",
1427 | "universalify": "^2.0.0"
1428 | },
1429 | "dependencies": {
1430 | "universalify": {
1431 | "version": "2.0.0",
1432 | "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-2.0.0.tgz?cache=0&sync_timestamp=1603179970052&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-2.0.0.tgz",
1433 | "integrity": "sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=",
1434 | "dev": true
1435 | }
1436 | }
1437 | },
1438 | "keygrip": {
1439 | "version": "1.1.0",
1440 | "resolved": "https://registry.npm.taobao.org/keygrip/download/keygrip-1.1.0.tgz",
1441 | "integrity": "sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=",
1442 | "dev": true,
1443 | "requires": {
1444 | "tsscmp": "1.0.6"
1445 | }
1446 | },
1447 | "klona": {
1448 | "version": "2.0.4",
1449 | "resolved": "https://registry.npm.taobao.org/klona/download/klona-2.0.4.tgz?cache=0&sync_timestamp=1600227034624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fklona%2Fdownload%2Fklona-2.0.4.tgz",
1450 | "integrity": "sha1-e7Hjr/sMuGJFR+9+j2cI6i4538A=",
1451 | "dev": true
1452 | },
1453 | "koa": {
1454 | "version": "2.13.0",
1455 | "resolved": "https://registry.npm.taobao.org/koa/download/koa-2.13.0.tgz?cache=0&sync_timestamp=1592754713362&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa%2Fdownload%2Fkoa-2.13.0.tgz",
1456 | "integrity": "sha1-JSF+Be/TNYp+Xd7ADwo4DJtxtQE=",
1457 | "dev": true,
1458 | "requires": {
1459 | "accepts": "^1.3.5",
1460 | "cache-content-type": "^1.0.0",
1461 | "content-disposition": "~0.5.2",
1462 | "content-type": "^1.0.4",
1463 | "cookies": "~0.8.0",
1464 | "debug": "~3.1.0",
1465 | "delegates": "^1.0.0",
1466 | "depd": "^1.1.2",
1467 | "destroy": "^1.0.4",
1468 | "encodeurl": "^1.0.2",
1469 | "escape-html": "^1.0.3",
1470 | "fresh": "~0.5.2",
1471 | "http-assert": "^1.3.0",
1472 | "http-errors": "^1.6.3",
1473 | "is-generator-function": "^1.0.7",
1474 | "koa-compose": "^4.1.0",
1475 | "koa-convert": "^1.2.0",
1476 | "on-finished": "^2.3.0",
1477 | "only": "~0.0.2",
1478 | "parseurl": "^1.3.2",
1479 | "statuses": "^1.5.0",
1480 | "type-is": "^1.6.16",
1481 | "vary": "^1.1.2"
1482 | },
1483 | "dependencies": {
1484 | "debug": {
1485 | "version": "3.1.0",
1486 | "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz",
1487 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
1488 | "dev": true,
1489 | "requires": {
1490 | "ms": "2.0.0"
1491 | }
1492 | },
1493 | "ms": {
1494 | "version": "2.0.0",
1495 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
1496 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1497 | "dev": true
1498 | }
1499 | }
1500 | },
1501 | "koa-compose": {
1502 | "version": "4.1.0",
1503 | "resolved": "https://registry.npm.taobao.org/koa-compose/download/koa-compose-4.1.0.tgz",
1504 | "integrity": "sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=",
1505 | "dev": true
1506 | },
1507 | "koa-conditional-get": {
1508 | "version": "3.0.0",
1509 | "resolved": "https://registry.npm.taobao.org/koa-conditional-get/download/koa-conditional-get-3.0.0.tgz",
1510 | "integrity": "sha1-VSy2SiF9+5B+kLfDT0IAnkQcS44=",
1511 | "dev": true
1512 | },
1513 | "koa-convert": {
1514 | "version": "1.2.0",
1515 | "resolved": "https://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz?cache=0&sync_timestamp=1599761700662&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-convert%2Fdownload%2Fkoa-convert-1.2.0.tgz",
1516 | "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=",
1517 | "dev": true,
1518 | "requires": {
1519 | "co": "^4.6.0",
1520 | "koa-compose": "^3.0.0"
1521 | },
1522 | "dependencies": {
1523 | "koa-compose": {
1524 | "version": "3.2.1",
1525 | "resolved": "https://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz",
1526 | "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=",
1527 | "dev": true,
1528 | "requires": {
1529 | "any-promise": "^1.1.0"
1530 | }
1531 | }
1532 | }
1533 | },
1534 | "koa-etag": {
1535 | "version": "4.0.0",
1536 | "resolved": "https://registry.npm.taobao.org/koa-etag/download/koa-etag-4.0.0.tgz",
1537 | "integrity": "sha1-LCu3rmnKGsbO0Juijct4UjyBBBQ=",
1538 | "dev": true,
1539 | "requires": {
1540 | "etag": "^1.8.1"
1541 | }
1542 | },
1543 | "koa-proxies": {
1544 | "version": "0.11.0",
1545 | "resolved": "https://registry.npm.taobao.org/koa-proxies/download/koa-proxies-0.11.0.tgz",
1546 | "integrity": "sha1-Q93kJgCA98sPKEZV+Fz2VLvp7IQ=",
1547 | "dev": true,
1548 | "requires": {
1549 | "http-proxy": "^1.16.2",
1550 | "path-match": "^1.2.4"
1551 | }
1552 | },
1553 | "koa-send": {
1554 | "version": "5.0.1",
1555 | "resolved": "https://registry.npm.taobao.org/koa-send/download/koa-send-5.0.1.tgz?cache=0&sync_timestamp=1594224361920&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-send%2Fdownload%2Fkoa-send-5.0.1.tgz",
1556 | "integrity": "sha1-Odzuv6+zldDWC+r/ujpwtPVD/nk=",
1557 | "dev": true,
1558 | "requires": {
1559 | "debug": "^4.1.1",
1560 | "http-errors": "^1.7.3",
1561 | "resolve-path": "^1.4.0"
1562 | }
1563 | },
1564 | "koa-static": {
1565 | "version": "5.0.0",
1566 | "resolved": "https://registry.npm.taobao.org/koa-static/download/koa-static-5.0.0.tgz",
1567 | "integrity": "sha1-XpL8lrU3rVIZ9CUxnJW2R3J3aUM=",
1568 | "dev": true,
1569 | "requires": {
1570 | "debug": "^3.1.0",
1571 | "koa-send": "^5.0.0"
1572 | },
1573 | "dependencies": {
1574 | "debug": {
1575 | "version": "3.2.7",
1576 | "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
1577 | "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
1578 | "dev": true,
1579 | "requires": {
1580 | "ms": "^2.1.1"
1581 | }
1582 | }
1583 | }
1584 | },
1585 | "lines-and-columns": {
1586 | "version": "1.1.6",
1587 | "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
1588 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
1589 | "dev": true
1590 | },
1591 | "loader-utils": {
1592 | "version": "1.4.0",
1593 | "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz",
1594 | "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=",
1595 | "dev": true,
1596 | "requires": {
1597 | "big.js": "^5.2.2",
1598 | "emojis-list": "^3.0.0",
1599 | "json5": "^1.0.1"
1600 | }
1601 | },
1602 | "lodash": {
1603 | "version": "4.17.20",
1604 | "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336097104&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
1605 | "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI="
1606 | },
1607 | "lodash.camelcase": {
1608 | "version": "4.3.0",
1609 | "resolved": "https://registry.npm.taobao.org/lodash.camelcase/download/lodash.camelcase-4.3.0.tgz",
1610 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
1611 | "dev": true
1612 | },
1613 | "log-symbols": {
1614 | "version": "4.0.0",
1615 | "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.0.0.tgz?cache=0&sync_timestamp=1589682056270&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-4.0.0.tgz",
1616 | "integrity": "sha1-abPMRtIPRI7M23XqH6cz2eghySA=",
1617 | "dev": true,
1618 | "requires": {
1619 | "chalk": "^4.0.0"
1620 | },
1621 | "dependencies": {
1622 | "ansi-styles": {
1623 | "version": "4.3.0",
1624 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
1625 | "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
1626 | "dev": true,
1627 | "requires": {
1628 | "color-convert": "^2.0.1"
1629 | }
1630 | },
1631 | "chalk": {
1632 | "version": "4.1.0",
1633 | "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687028262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
1634 | "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
1635 | "dev": true,
1636 | "requires": {
1637 | "ansi-styles": "^4.1.0",
1638 | "supports-color": "^7.1.0"
1639 | }
1640 | },
1641 | "color-convert": {
1642 | "version": "2.0.1",
1643 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
1644 | "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
1645 | "dev": true,
1646 | "requires": {
1647 | "color-name": "~1.1.4"
1648 | }
1649 | },
1650 | "color-name": {
1651 | "version": "1.1.4",
1652 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
1653 | "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
1654 | "dev": true
1655 | },
1656 | "has-flag": {
1657 | "version": "4.0.0",
1658 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
1659 | "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
1660 | "dev": true
1661 | },
1662 | "supports-color": {
1663 | "version": "7.2.0",
1664 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz",
1665 | "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
1666 | "dev": true,
1667 | "requires": {
1668 | "has-flag": "^4.0.0"
1669 | }
1670 | }
1671 | }
1672 | },
1673 | "lru-cache": {
1674 | "version": "5.1.1",
1675 | "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz?cache=0&sync_timestamp=1594427519396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-5.1.1.tgz",
1676 | "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
1677 | "dev": true,
1678 | "requires": {
1679 | "yallist": "^3.0.2"
1680 | }
1681 | },
1682 | "magic-string": {
1683 | "version": "0.25.7",
1684 | "resolved": "https://registry.npm.taobao.org/magic-string/download/magic-string-0.25.7.tgz",
1685 | "integrity": "sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=",
1686 | "dev": true,
1687 | "requires": {
1688 | "sourcemap-codec": "^1.4.4"
1689 | }
1690 | },
1691 | "media-typer": {
1692 | "version": "0.3.0",
1693 | "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
1694 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
1695 | "dev": true
1696 | },
1697 | "merge-source-map": {
1698 | "version": "1.1.0",
1699 | "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz",
1700 | "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=",
1701 | "dev": true,
1702 | "requires": {
1703 | "source-map": "^0.6.1"
1704 | }
1705 | },
1706 | "merge-stream": {
1707 | "version": "2.0.0",
1708 | "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz",
1709 | "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=",
1710 | "dev": true
1711 | },
1712 | "merge2": {
1713 | "version": "1.4.1",
1714 | "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
1715 | "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
1716 | "dev": true
1717 | },
1718 | "micromatch": {
1719 | "version": "4.0.2",
1720 | "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.2.tgz",
1721 | "integrity": "sha1-T8sJmb+fvC/L3SEvbWKbmlbDklk=",
1722 | "dev": true,
1723 | "requires": {
1724 | "braces": "^3.0.1",
1725 | "picomatch": "^2.0.5"
1726 | }
1727 | },
1728 | "mime-db": {
1729 | "version": "1.44.0",
1730 | "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz?cache=0&sync_timestamp=1600831212519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.44.0.tgz",
1731 | "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=",
1732 | "dev": true
1733 | },
1734 | "mime-types": {
1735 | "version": "2.1.27",
1736 | "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz",
1737 | "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=",
1738 | "dev": true,
1739 | "requires": {
1740 | "mime-db": "1.44.0"
1741 | }
1742 | },
1743 | "mimic-fn": {
1744 | "version": "2.1.0",
1745 | "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1596094012686&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz",
1746 | "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
1747 | "dev": true
1748 | },
1749 | "minimatch": {
1750 | "version": "3.0.4",
1751 | "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
1752 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
1753 | "dev": true,
1754 | "requires": {
1755 | "brace-expansion": "^1.1.7"
1756 | }
1757 | },
1758 | "minimist": {
1759 | "version": "1.2.5",
1760 | "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz",
1761 | "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=",
1762 | "dev": true
1763 | },
1764 | "ms": {
1765 | "version": "2.1.2",
1766 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
1767 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=",
1768 | "dev": true
1769 | },
1770 | "mute-stream": {
1771 | "version": "0.0.8",
1772 | "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz",
1773 | "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=",
1774 | "dev": true
1775 | },
1776 | "negotiator": {
1777 | "version": "0.6.2",
1778 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
1779 | "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
1780 | "dev": true
1781 | },
1782 | "node-forge": {
1783 | "version": "0.10.0",
1784 | "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz?cache=0&sync_timestamp=1599010730714&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.10.0.tgz",
1785 | "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=",
1786 | "dev": true
1787 | },
1788 | "normalize-path": {
1789 | "version": "3.0.0",
1790 | "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz",
1791 | "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
1792 | "dev": true
1793 | },
1794 | "npm-run-path": {
1795 | "version": "4.0.1",
1796 | "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz",
1797 | "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=",
1798 | "dev": true,
1799 | "requires": {
1800 | "path-key": "^3.0.0"
1801 | }
1802 | },
1803 | "on-finished": {
1804 | "version": "2.3.0",
1805 | "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
1806 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1807 | "dev": true,
1808 | "requires": {
1809 | "ee-first": "1.1.1"
1810 | }
1811 | },
1812 | "once": {
1813 | "version": "1.4.0",
1814 | "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
1815 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1816 | "dev": true,
1817 | "requires": {
1818 | "wrappy": "1"
1819 | }
1820 | },
1821 | "onetime": {
1822 | "version": "5.1.2",
1823 | "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz?cache=0&sync_timestamp=1597005190531&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fonetime%2Fdownload%2Fonetime-5.1.2.tgz",
1824 | "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
1825 | "dev": true,
1826 | "requires": {
1827 | "mimic-fn": "^2.1.0"
1828 | }
1829 | },
1830 | "only": {
1831 | "version": "0.0.2",
1832 | "resolved": "https://registry.npm.taobao.org/only/download/only-0.0.2.tgz",
1833 | "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=",
1834 | "dev": true
1835 | },
1836 | "open": {
1837 | "version": "7.3.0",
1838 | "resolved": "https://registry.npm.taobao.org/open/download/open-7.3.0.tgz?cache=0&sync_timestamp=1601376246786&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-7.3.0.tgz",
1839 | "integrity": "sha1-RUYf3uRkRPNkW24U6zypS4Lhvmk=",
1840 | "dev": true,
1841 | "requires": {
1842 | "is-docker": "^2.0.0",
1843 | "is-wsl": "^2.1.1"
1844 | }
1845 | },
1846 | "ora": {
1847 | "version": "5.1.0",
1848 | "resolved": "https://registry.npm.taobao.org/ora/download/ora-5.1.0.tgz?cache=0&sync_timestamp=1599423139882&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-5.1.0.tgz",
1849 | "integrity": "sha1-sYjPjNLU2bE/0lODvD5cujUslPg=",
1850 | "dev": true,
1851 | "requires": {
1852 | "chalk": "^4.1.0",
1853 | "cli-cursor": "^3.1.0",
1854 | "cli-spinners": "^2.4.0",
1855 | "is-interactive": "^1.0.0",
1856 | "log-symbols": "^4.0.0",
1857 | "mute-stream": "0.0.8",
1858 | "strip-ansi": "^6.0.0",
1859 | "wcwidth": "^1.0.1"
1860 | },
1861 | "dependencies": {
1862 | "ansi-styles": {
1863 | "version": "4.3.0",
1864 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
1865 | "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
1866 | "dev": true,
1867 | "requires": {
1868 | "color-convert": "^2.0.1"
1869 | }
1870 | },
1871 | "chalk": {
1872 | "version": "4.1.0",
1873 | "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687028262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
1874 | "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
1875 | "dev": true,
1876 | "requires": {
1877 | "ansi-styles": "^4.1.0",
1878 | "supports-color": "^7.1.0"
1879 | }
1880 | },
1881 | "color-convert": {
1882 | "version": "2.0.1",
1883 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
1884 | "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
1885 | "dev": true,
1886 | "requires": {
1887 | "color-name": "~1.1.4"
1888 | }
1889 | },
1890 | "color-name": {
1891 | "version": "1.1.4",
1892 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
1893 | "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
1894 | "dev": true
1895 | },
1896 | "has-flag": {
1897 | "version": "4.0.0",
1898 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
1899 | "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
1900 | "dev": true
1901 | },
1902 | "supports-color": {
1903 | "version": "7.2.0",
1904 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz",
1905 | "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
1906 | "dev": true,
1907 | "requires": {
1908 | "has-flag": "^4.0.0"
1909 | }
1910 | }
1911 | }
1912 | },
1913 | "p-map-series": {
1914 | "version": "2.1.0",
1915 | "resolved": "https://registry.npm.taobao.org/p-map-series/download/p-map-series-2.1.0.tgz",
1916 | "integrity": "sha1-dWDUxFLZ2gwH5pL9v+biyBoqkfI=",
1917 | "dev": true
1918 | },
1919 | "parent-module": {
1920 | "version": "1.0.1",
1921 | "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
1922 | "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=",
1923 | "dev": true,
1924 | "requires": {
1925 | "callsites": "^3.0.0"
1926 | }
1927 | },
1928 | "parse-json": {
1929 | "version": "5.1.0",
1930 | "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.1.0.tgz?cache=0&sync_timestamp=1598130878813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.1.0.tgz",
1931 | "integrity": "sha1-+WCIzfJKj6qa6poAny2dlCyZlkY=",
1932 | "dev": true,
1933 | "requires": {
1934 | "@babel/code-frame": "^7.0.0",
1935 | "error-ex": "^1.3.1",
1936 | "json-parse-even-better-errors": "^2.3.0",
1937 | "lines-and-columns": "^1.1.6"
1938 | }
1939 | },
1940 | "parseurl": {
1941 | "version": "1.3.3",
1942 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
1943 | "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
1944 | "dev": true
1945 | },
1946 | "path-is-absolute": {
1947 | "version": "1.0.1",
1948 | "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
1949 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1950 | "dev": true
1951 | },
1952 | "path-key": {
1953 | "version": "3.1.1",
1954 | "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz",
1955 | "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
1956 | "dev": true
1957 | },
1958 | "path-match": {
1959 | "version": "1.2.4",
1960 | "resolved": "https://registry.npm.taobao.org/path-match/download/path-match-1.2.4.tgz",
1961 | "integrity": "sha1-pidH88fgwlFHYml/JEQ1hbCRAOo=",
1962 | "dev": true,
1963 | "requires": {
1964 | "http-errors": "~1.4.0",
1965 | "path-to-regexp": "^1.0.0"
1966 | },
1967 | "dependencies": {
1968 | "http-errors": {
1969 | "version": "1.4.0",
1970 | "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.4.0.tgz?cache=0&sync_timestamp=1593407611415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.4.0.tgz",
1971 | "integrity": "sha1-bAJC3qaz33r9oVPHEImzHG6Cqr8=",
1972 | "dev": true,
1973 | "requires": {
1974 | "inherits": "2.0.1",
1975 | "statuses": ">= 1.2.1 < 2"
1976 | }
1977 | },
1978 | "inherits": {
1979 | "version": "2.0.1",
1980 | "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
1981 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
1982 | "dev": true
1983 | }
1984 | }
1985 | },
1986 | "path-parse": {
1987 | "version": "1.0.6",
1988 | "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz",
1989 | "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
1990 | "dev": true
1991 | },
1992 | "path-to-regexp": {
1993 | "version": "1.8.0",
1994 | "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.8.0.tgz?cache=0&sync_timestamp=1601400247487&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-1.8.0.tgz",
1995 | "integrity": "sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=",
1996 | "dev": true,
1997 | "requires": {
1998 | "isarray": "0.0.1"
1999 | }
2000 | },
2001 | "path-type": {
2002 | "version": "4.0.0",
2003 | "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-4.0.0.tgz",
2004 | "integrity": "sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=",
2005 | "dev": true
2006 | },
2007 | "picomatch": {
2008 | "version": "2.2.2",
2009 | "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpicomatch%2Fdownload%2Fpicomatch-2.2.2.tgz",
2010 | "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=",
2011 | "dev": true
2012 | },
2013 | "pify": {
2014 | "version": "2.3.0",
2015 | "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
2016 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2017 | "dev": true
2018 | },
2019 | "postcss": {
2020 | "version": "7.0.35",
2021 | "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.35.tgz?cache=0&sync_timestamp=1607512913142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.35.tgz",
2022 | "integrity": "sha1-0r4AuZj38hHYonaXQHny6SuXDiQ=",
2023 | "dev": true,
2024 | "requires": {
2025 | "chalk": "^2.4.2",
2026 | "source-map": "^0.6.1",
2027 | "supports-color": "^6.1.0"
2028 | }
2029 | },
2030 | "postcss-discard-comments": {
2031 | "version": "4.0.2",
2032 | "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1603213010421&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-4.0.2.tgz",
2033 | "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=",
2034 | "dev": true,
2035 | "requires": {
2036 | "postcss": "^7.0.0"
2037 | }
2038 | },
2039 | "postcss-import": {
2040 | "version": "12.0.1",
2041 | "resolved": "https://registry.npm.taobao.org/postcss-import/download/postcss-import-12.0.1.tgz?cache=0&sync_timestamp=1603232541023&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-import%2Fdownload%2Fpostcss-import-12.0.1.tgz",
2042 | "integrity": "sha1-z4x6sLXMq1ZJAkU25WX4QZKLcVM=",
2043 | "dev": true,
2044 | "requires": {
2045 | "postcss": "^7.0.1",
2046 | "postcss-value-parser": "^3.2.3",
2047 | "read-cache": "^1.0.0",
2048 | "resolve": "^1.1.7"
2049 | },
2050 | "dependencies": {
2051 | "postcss-value-parser": {
2052 | "version": "3.3.1",
2053 | "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
2054 | "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
2055 | "dev": true
2056 | }
2057 | }
2058 | },
2059 | "postcss-load-config": {
2060 | "version": "3.0.0",
2061 | "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-3.0.0.tgz?cache=0&sync_timestamp=1601607668112&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-3.0.0.tgz",
2062 | "integrity": "sha1-hQuwZu3WW3NDKerPg68MB2QibIc=",
2063 | "dev": true,
2064 | "requires": {
2065 | "cosmiconfig": "^7.0.0",
2066 | "import-cwd": "^3.0.0"
2067 | }
2068 | },
2069 | "postcss-modules": {
2070 | "version": "3.2.2",
2071 | "resolved": "https://registry.npm.taobao.org/postcss-modules/download/postcss-modules-3.2.2.tgz",
2072 | "integrity": "sha1-7jkN4PnxjnYeF3jfub4maFwCxR8=",
2073 | "dev": true,
2074 | "requires": {
2075 | "generic-names": "^2.0.1",
2076 | "icss-replace-symbols": "^1.1.0",
2077 | "lodash.camelcase": "^4.3.0",
2078 | "postcss": "^7.0.32",
2079 | "postcss-modules-extract-imports": "^2.0.0",
2080 | "postcss-modules-local-by-default": "^3.0.2",
2081 | "postcss-modules-scope": "^2.2.0",
2082 | "postcss-modules-values": "^3.0.0",
2083 | "string-hash": "^1.1.1"
2084 | }
2085 | },
2086 | "postcss-modules-extract-imports": {
2087 | "version": "2.0.0",
2088 | "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz?cache=0&sync_timestamp=1602588260997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-2.0.0.tgz",
2089 | "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=",
2090 | "dev": true,
2091 | "requires": {
2092 | "postcss": "^7.0.5"
2093 | }
2094 | },
2095 | "postcss-modules-local-by-default": {
2096 | "version": "3.0.3",
2097 | "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz?cache=0&sync_timestamp=1602587625149&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.3.tgz",
2098 | "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=",
2099 | "dev": true,
2100 | "requires": {
2101 | "icss-utils": "^4.1.1",
2102 | "postcss": "^7.0.32",
2103 | "postcss-selector-parser": "^6.0.2",
2104 | "postcss-value-parser": "^4.1.0"
2105 | }
2106 | },
2107 | "postcss-modules-scope": {
2108 | "version": "2.2.0",
2109 | "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz?cache=0&sync_timestamp=1602593195049&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-2.2.0.tgz",
2110 | "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=",
2111 | "dev": true,
2112 | "requires": {
2113 | "postcss": "^7.0.6",
2114 | "postcss-selector-parser": "^6.0.0"
2115 | }
2116 | },
2117 | "postcss-modules-values": {
2118 | "version": "3.0.0",
2119 | "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz?cache=0&sync_timestamp=1602586215124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-3.0.0.tgz",
2120 | "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=",
2121 | "dev": true,
2122 | "requires": {
2123 | "icss-utils": "^4.0.0",
2124 | "postcss": "^7.0.6"
2125 | }
2126 | },
2127 | "postcss-selector-parser": {
2128 | "version": "6.0.4",
2129 | "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.4.tgz?cache=0&sync_timestamp=1601045323543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.4.tgz",
2130 | "integrity": "sha1-VgdaE4CgRgTDiwY+p3Z6Epr1wrM=",
2131 | "dev": true,
2132 | "requires": {
2133 | "cssesc": "^3.0.0",
2134 | "indexes-of": "^1.0.1",
2135 | "uniq": "^1.0.1",
2136 | "util-deprecate": "^1.0.2"
2137 | }
2138 | },
2139 | "postcss-value-parser": {
2140 | "version": "4.1.0",
2141 | "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz",
2142 | "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=",
2143 | "dev": true
2144 | },
2145 | "pump": {
2146 | "version": "3.0.0",
2147 | "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
2148 | "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
2149 | "dev": true,
2150 | "requires": {
2151 | "end-of-stream": "^1.1.0",
2152 | "once": "^1.3.1"
2153 | }
2154 | },
2155 | "randombytes": {
2156 | "version": "2.1.0",
2157 | "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
2158 | "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
2159 | "dev": true,
2160 | "requires": {
2161 | "safe-buffer": "^5.1.0"
2162 | }
2163 | },
2164 | "read-cache": {
2165 | "version": "1.0.0",
2166 | "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz",
2167 | "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
2168 | "dev": true,
2169 | "requires": {
2170 | "pify": "^2.3.0"
2171 | }
2172 | },
2173 | "readdirp": {
2174 | "version": "3.5.0",
2175 | "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz",
2176 | "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=",
2177 | "dev": true,
2178 | "requires": {
2179 | "picomatch": "^2.2.1"
2180 | }
2181 | },
2182 | "requires-port": {
2183 | "version": "1.0.0",
2184 | "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
2185 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
2186 | "dev": true
2187 | },
2188 | "resolve": {
2189 | "version": "1.19.0",
2190 | "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.19.0.tgz",
2191 | "integrity": "sha1-GvW/YwQJc0oGfK4pMYqsf6KaJnw=",
2192 | "dev": true,
2193 | "requires": {
2194 | "is-core-module": "^2.1.0",
2195 | "path-parse": "^1.0.6"
2196 | }
2197 | },
2198 | "resolve-from": {
2199 | "version": "4.0.0",
2200 | "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
2201 | "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
2202 | "dev": true
2203 | },
2204 | "resolve-path": {
2205 | "version": "1.4.0",
2206 | "resolved": "https://registry.npm.taobao.org/resolve-path/download/resolve-path-1.4.0.tgz",
2207 | "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=",
2208 | "dev": true,
2209 | "requires": {
2210 | "http-errors": "~1.6.2",
2211 | "path-is-absolute": "1.0.1"
2212 | },
2213 | "dependencies": {
2214 | "http-errors": {
2215 | "version": "1.6.3",
2216 | "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1593407611415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz",
2217 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
2218 | "dev": true,
2219 | "requires": {
2220 | "depd": "~1.1.2",
2221 | "inherits": "2.0.3",
2222 | "setprototypeof": "1.1.0",
2223 | "statuses": ">= 1.4.0 < 2"
2224 | }
2225 | },
2226 | "inherits": {
2227 | "version": "2.0.3",
2228 | "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
2229 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
2230 | "dev": true
2231 | },
2232 | "setprototypeof": {
2233 | "version": "1.1.0",
2234 | "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
2235 | "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
2236 | "dev": true
2237 | }
2238 | }
2239 | },
2240 | "restore-cursor": {
2241 | "version": "3.1.0",
2242 | "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz",
2243 | "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=",
2244 | "dev": true,
2245 | "requires": {
2246 | "onetime": "^5.1.0",
2247 | "signal-exit": "^3.0.2"
2248 | }
2249 | },
2250 | "reusify": {
2251 | "version": "1.0.4",
2252 | "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
2253 | "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
2254 | "dev": true
2255 | },
2256 | "rollup": {
2257 | "version": "2.35.1",
2258 | "resolved": "https://registry.npm.taobao.org/rollup/download/rollup-2.35.1.tgz?cache=0&sync_timestamp=1607953590995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup%2Fdownload%2Frollup-2.35.1.tgz",
2259 | "integrity": "sha1-5ryNEIk1VqY4Bm+J6Ml/Qi0Dlow=",
2260 | "dev": true,
2261 | "requires": {
2262 | "fsevents": "~2.1.2"
2263 | }
2264 | },
2265 | "rollup-plugin-dynamic-import-variables": {
2266 | "version": "1.1.0",
2267 | "resolved": "https://registry.npm.taobao.org/rollup-plugin-dynamic-import-variables/download/rollup-plugin-dynamic-import-variables-1.1.0.tgz",
2268 | "integrity": "sha1-SYHTiQekcbNSNDmKCQR770eiAGo=",
2269 | "dev": true,
2270 | "requires": {
2271 | "@rollup/pluginutils": "^3.0.9",
2272 | "estree-walker": "^2.0.1",
2273 | "globby": "^11.0.0",
2274 | "magic-string": "^0.25.7"
2275 | },
2276 | "dependencies": {
2277 | "@rollup/pluginutils": {
2278 | "version": "3.1.0",
2279 | "resolved": "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz?cache=0&sync_timestamp=1603767613737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-3.1.0.tgz",
2280 | "integrity": "sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=",
2281 | "dev": true,
2282 | "requires": {
2283 | "@types/estree": "0.0.39",
2284 | "estree-walker": "^1.0.1",
2285 | "picomatch": "^2.2.2"
2286 | },
2287 | "dependencies": {
2288 | "estree-walker": {
2289 | "version": "1.0.1",
2290 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-1.0.1.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-1.0.1.tgz",
2291 | "integrity": "sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=",
2292 | "dev": true
2293 | }
2294 | }
2295 | }
2296 | }
2297 | },
2298 | "rollup-plugin-terser": {
2299 | "version": "7.0.2",
2300 | "resolved": "https://registry.npm.taobao.org/rollup-plugin-terser/download/rollup-plugin-terser-7.0.2.tgz?cache=0&sync_timestamp=1599243234315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup-plugin-terser%2Fdownload%2Frollup-plugin-terser-7.0.2.tgz",
2301 | "integrity": "sha1-6Pu6SGmYGy3DWufopQLVxsBNMk0=",
2302 | "dev": true,
2303 | "requires": {
2304 | "@babel/code-frame": "^7.10.4",
2305 | "jest-worker": "^26.2.1",
2306 | "serialize-javascript": "^4.0.0",
2307 | "terser": "^5.0.0"
2308 | }
2309 | },
2310 | "rollup-plugin-vue": {
2311 | "version": "6.0.0",
2312 | "resolved": "https://registry.npm.taobao.org/rollup-plugin-vue/download/rollup-plugin-vue-6.0.0.tgz",
2313 | "integrity": "sha1-43npPlrpqGSFIvaYvi5FLoZyqvI=",
2314 | "dev": true,
2315 | "requires": {
2316 | "debug": "^4.1.1",
2317 | "hash-sum": "^2.0.0",
2318 | "rollup-pluginutils": "^2.8.2"
2319 | }
2320 | },
2321 | "rollup-plugin-web-worker-loader": {
2322 | "version": "1.5.0",
2323 | "resolved": "https://registry.npm.taobao.org/rollup-plugin-web-worker-loader/download/rollup-plugin-web-worker-loader-1.5.0.tgz?cache=0&sync_timestamp=1606753333929&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup-plugin-web-worker-loader%2Fdownload%2Frollup-plugin-web-worker-loader-1.5.0.tgz",
2324 | "integrity": "sha1-3yGXNCbG+VsjioRpiuJ/jYqra4M=",
2325 | "dev": true
2326 | },
2327 | "rollup-pluginutils": {
2328 | "version": "2.8.2",
2329 | "resolved": "https://registry.npm.taobao.org/rollup-pluginutils/download/rollup-pluginutils-2.8.2.tgz",
2330 | "integrity": "sha1-cvKvB0i1kjZNvTOJ5gDlqURKNR4=",
2331 | "dev": true,
2332 | "requires": {
2333 | "estree-walker": "^0.6.1"
2334 | },
2335 | "dependencies": {
2336 | "estree-walker": {
2337 | "version": "0.6.1",
2338 | "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-0.6.1.tgz?cache=0&sync_timestamp=1607445592953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festree-walker%2Fdownload%2Festree-walker-0.6.1.tgz",
2339 | "integrity": "sha1-UwSRQ/QMbrkYsjZx0f4yGfOhs2I=",
2340 | "dev": true
2341 | }
2342 | }
2343 | },
2344 | "run-parallel": {
2345 | "version": "1.1.10",
2346 | "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.1.10.tgz?cache=0&sync_timestamp=1603768307430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-parallel%2Fdownload%2Frun-parallel-1.1.10.tgz",
2347 | "integrity": "sha1-YKUbKug2Y2yBN33xbLEHNRvNE+8=",
2348 | "dev": true
2349 | },
2350 | "safe-buffer": {
2351 | "version": "5.1.2",
2352 | "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
2353 | "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
2354 | "dev": true
2355 | },
2356 | "selfsigned": {
2357 | "version": "1.10.8",
2358 | "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.8.tgz?cache=0&sync_timestamp=1600186082996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.8.tgz",
2359 | "integrity": "sha1-DRcgi30Swz+OrIXEGDXyf8PYGjA=",
2360 | "dev": true,
2361 | "requires": {
2362 | "node-forge": "^0.10.0"
2363 | }
2364 | },
2365 | "serialize-javascript": {
2366 | "version": "4.0.0",
2367 | "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1599740666792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz",
2368 | "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=",
2369 | "dev": true,
2370 | "requires": {
2371 | "randombytes": "^2.1.0"
2372 | }
2373 | },
2374 | "setprototypeof": {
2375 | "version": "1.1.1",
2376 | "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
2377 | "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=",
2378 | "dev": true
2379 | },
2380 | "shebang-command": {
2381 | "version": "2.0.0",
2382 | "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz",
2383 | "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=",
2384 | "dev": true,
2385 | "requires": {
2386 | "shebang-regex": "^3.0.0"
2387 | }
2388 | },
2389 | "shebang-regex": {
2390 | "version": "3.0.0",
2391 | "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz",
2392 | "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=",
2393 | "dev": true
2394 | },
2395 | "signal-exit": {
2396 | "version": "3.0.3",
2397 | "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz",
2398 | "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=",
2399 | "dev": true
2400 | },
2401 | "slash": {
2402 | "version": "3.0.0",
2403 | "resolved": "https://registry.npm.taobao.org/slash/download/slash-3.0.0.tgz",
2404 | "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=",
2405 | "dev": true
2406 | },
2407 | "source-map": {
2408 | "version": "0.6.1",
2409 | "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
2410 | "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
2411 | },
2412 | "source-map-support": {
2413 | "version": "0.5.19",
2414 | "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz",
2415 | "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=",
2416 | "dev": true,
2417 | "requires": {
2418 | "buffer-from": "^1.0.0",
2419 | "source-map": "^0.6.0"
2420 | }
2421 | },
2422 | "sourcemap-codec": {
2423 | "version": "1.4.8",
2424 | "resolved": "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz",
2425 | "integrity": "sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=",
2426 | "dev": true
2427 | },
2428 | "statuses": {
2429 | "version": "1.5.0",
2430 | "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
2431 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
2432 | "dev": true
2433 | },
2434 | "string-hash": {
2435 | "version": "1.1.3",
2436 | "resolved": "https://registry.npm.taobao.org/string-hash/download/string-hash-1.1.3.tgz",
2437 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
2438 | "dev": true
2439 | },
2440 | "strip-ansi": {
2441 | "version": "6.0.0",
2442 | "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1573280549549&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz",
2443 | "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
2444 | "dev": true,
2445 | "requires": {
2446 | "ansi-regex": "^5.0.0"
2447 | }
2448 | },
2449 | "strip-final-newline": {
2450 | "version": "2.0.0",
2451 | "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz",
2452 | "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=",
2453 | "dev": true
2454 | },
2455 | "supports-color": {
2456 | "version": "6.1.0",
2457 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz",
2458 | "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
2459 | "dev": true,
2460 | "requires": {
2461 | "has-flag": "^3.0.0"
2462 | }
2463 | },
2464 | "terser": {
2465 | "version": "5.5.1",
2466 | "resolved": "https://registry.npm.taobao.org/terser/download/terser-5.5.1.tgz?cache=0&sync_timestamp=1606492233311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-5.5.1.tgz",
2467 | "integrity": "sha1-VAyqJROdb0lv3qBW5BQoSIb7Iok=",
2468 | "dev": true,
2469 | "requires": {
2470 | "commander": "^2.20.0",
2471 | "source-map": "~0.7.2",
2472 | "source-map-support": "~0.5.19"
2473 | },
2474 | "dependencies": {
2475 | "source-map": {
2476 | "version": "0.7.3",
2477 | "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz",
2478 | "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
2479 | "dev": true
2480 | }
2481 | }
2482 | },
2483 | "to-fast-properties": {
2484 | "version": "2.0.0",
2485 | "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
2486 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
2487 | },
2488 | "to-regex-range": {
2489 | "version": "5.0.1",
2490 | "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
2491 | "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
2492 | "dev": true,
2493 | "requires": {
2494 | "is-number": "^7.0.0"
2495 | }
2496 | },
2497 | "toidentifier": {
2498 | "version": "1.0.0",
2499 | "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
2500 | "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
2501 | "dev": true
2502 | },
2503 | "tsscmp": {
2504 | "version": "1.0.6",
2505 | "resolved": "https://registry.npm.taobao.org/tsscmp/download/tsscmp-1.0.6.tgz",
2506 | "integrity": "sha1-hbmVg6w1iexL/vgltQAKqRHWBes=",
2507 | "dev": true
2508 | },
2509 | "type-is": {
2510 | "version": "1.6.18",
2511 | "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
2512 | "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
2513 | "dev": true,
2514 | "requires": {
2515 | "media-typer": "0.3.0",
2516 | "mime-types": "~2.1.24"
2517 | }
2518 | },
2519 | "uniq": {
2520 | "version": "1.0.1",
2521 | "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz",
2522 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
2523 | "dev": true
2524 | },
2525 | "universalify": {
2526 | "version": "1.0.0",
2527 | "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-1.0.0.tgz?cache=0&sync_timestamp=1603179970052&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-1.0.0.tgz",
2528 | "integrity": "sha1-thodoXPoQ1sv48Z9Kbmt+FlL0W0=",
2529 | "dev": true
2530 | },
2531 | "util-deprecate": {
2532 | "version": "1.0.2",
2533 | "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
2534 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2535 | "dev": true
2536 | },
2537 | "vary": {
2538 | "version": "1.1.2",
2539 | "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
2540 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
2541 | "dev": true
2542 | },
2543 | "vite": {
2544 | "version": "1.0.0-rc.13",
2545 | "resolved": "https://registry.npm.taobao.org/vite/download/vite-1.0.0-rc.13.tgz",
2546 | "integrity": "sha1-Dgs7YTiZih0MAkWZCKbE+y8pRyc=",
2547 | "dev": true,
2548 | "requires": {
2549 | "@babel/parser": "^7.12.7",
2550 | "@koa/cors": "^3.1.0",
2551 | "@rollup/plugin-commonjs": "^16.0.0",
2552 | "@rollup/plugin-json": "^4.1.0",
2553 | "@rollup/plugin-node-resolve": "^10.0.0",
2554 | "@rollup/pluginutils": "^4.1.0",
2555 | "@types/http-proxy": "^1.17.4",
2556 | "@types/koa": "^2.11.4",
2557 | "@types/lru-cache": "^5.1.0",
2558 | "@vue/compiler-dom": "^3.0.3",
2559 | "@vue/compiler-sfc": "^3.0.3",
2560 | "brotli-size": "^4.0.0",
2561 | "cac": "^6.6.1",
2562 | "chalk": "^4.1.0",
2563 | "chokidar": "^3.4.2",
2564 | "clean-css": "^4.2.3",
2565 | "debug": "^4.3.1",
2566 | "dotenv": "^8.2.0",
2567 | "dotenv-expand": "^5.1.0",
2568 | "es-module-lexer": "^0.3.25",
2569 | "esbuild": "^0.8.12",
2570 | "etag": "^1.8.1",
2571 | "execa": "^4.0.3",
2572 | "fs-extra": "^9.0.1",
2573 | "hash-sum": "^2.0.0",
2574 | "isbuiltin": "^1.0.0",
2575 | "klona": "^2.0.4",
2576 | "koa": "^2.13.0",
2577 | "koa-conditional-get": "^3.0.0",
2578 | "koa-etag": "^4.0.0",
2579 | "koa-proxies": "^0.11.0",
2580 | "koa-send": "^5.0.1",
2581 | "koa-static": "^5.0.0",
2582 | "lru-cache": "^6.0.0",
2583 | "magic-string": "^0.25.7",
2584 | "merge-source-map": "^1.1.0",
2585 | "mime-types": "^2.1.27",
2586 | "minimist": "^1.2.5",
2587 | "open": "^7.2.1",
2588 | "ora": "^5.1.0",
2589 | "p-map-series": "^2.1.0",
2590 | "postcss-discard-comments": "^4.0.2",
2591 | "postcss-import": "^12.0.1",
2592 | "postcss-load-config": "^3.0.0",
2593 | "resolve": "^1.17.0",
2594 | "rollup": "^2.32.1",
2595 | "rollup-plugin-dynamic-import-variables": "^1.1.0",
2596 | "rollup-plugin-terser": "^7.0.2",
2597 | "rollup-plugin-vue": "^6.0.0",
2598 | "rollup-plugin-web-worker-loader": "^1.3.1",
2599 | "selfsigned": "^1.10.8",
2600 | "slash": "^3.0.0",
2601 | "source-map": "^0.7.3",
2602 | "vue": "^3.0.3",
2603 | "ws": "^7.3.1"
2604 | },
2605 | "dependencies": {
2606 | "ansi-styles": {
2607 | "version": "4.3.0",
2608 | "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
2609 | "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
2610 | "dev": true,
2611 | "requires": {
2612 | "color-convert": "^2.0.1"
2613 | }
2614 | },
2615 | "chalk": {
2616 | "version": "4.1.0",
2617 | "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687028262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
2618 | "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
2619 | "dev": true,
2620 | "requires": {
2621 | "ansi-styles": "^4.1.0",
2622 | "supports-color": "^7.1.0"
2623 | }
2624 | },
2625 | "color-convert": {
2626 | "version": "2.0.1",
2627 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
2628 | "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
2629 | "dev": true,
2630 | "requires": {
2631 | "color-name": "~1.1.4"
2632 | }
2633 | },
2634 | "color-name": {
2635 | "version": "1.1.4",
2636 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
2637 | "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
2638 | "dev": true
2639 | },
2640 | "has-flag": {
2641 | "version": "4.0.0",
2642 | "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
2643 | "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
2644 | "dev": true
2645 | },
2646 | "lru-cache": {
2647 | "version": "6.0.0",
2648 | "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz?cache=0&sync_timestamp=1594427519396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-6.0.0.tgz",
2649 | "integrity": "sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=",
2650 | "dev": true,
2651 | "requires": {
2652 | "yallist": "^4.0.0"
2653 | }
2654 | },
2655 | "source-map": {
2656 | "version": "0.7.3",
2657 | "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz",
2658 | "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
2659 | "dev": true
2660 | },
2661 | "supports-color": {
2662 | "version": "7.2.0",
2663 | "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz",
2664 | "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
2665 | "dev": true,
2666 | "requires": {
2667 | "has-flag": "^4.0.0"
2668 | }
2669 | },
2670 | "yallist": {
2671 | "version": "4.0.0",
2672 | "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
2673 | "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
2674 | "dev": true
2675 | }
2676 | }
2677 | },
2678 | "vue": {
2679 | "version": "3.0.4",
2680 | "resolved": "https://registry.npm.taobao.org/vue/download/vue-3.0.4.tgz?cache=0&sync_timestamp=1606946160685&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-3.0.4.tgz",
2681 | "integrity": "sha1-hyxlwUP1cXvVOHxhYT2fVfTMD0M=",
2682 | "requires": {
2683 | "@vue/compiler-dom": "3.0.4",
2684 | "@vue/runtime-dom": "3.0.4",
2685 | "@vue/shared": "3.0.4"
2686 | }
2687 | },
2688 | "wcwidth": {
2689 | "version": "1.0.1",
2690 | "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz",
2691 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
2692 | "dev": true,
2693 | "requires": {
2694 | "defaults": "^1.0.3"
2695 | }
2696 | },
2697 | "which": {
2698 | "version": "2.0.2",
2699 | "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
2700 | "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
2701 | "dev": true,
2702 | "requires": {
2703 | "isexe": "^2.0.0"
2704 | }
2705 | },
2706 | "wrappy": {
2707 | "version": "1.0.2",
2708 | "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
2709 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2710 | "dev": true
2711 | },
2712 | "ws": {
2713 | "version": "7.4.1",
2714 | "resolved": "https://registry.npm.taobao.org/ws/download/ws-7.4.1.tgz?cache=0&sync_timestamp=1607113150914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-7.4.1.tgz",
2715 | "integrity": "sha1-ozO+Amlr0OVM6gQ04h3MiprClLs=",
2716 | "dev": true
2717 | },
2718 | "yallist": {
2719 | "version": "3.1.1",
2720 | "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz",
2721 | "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=",
2722 | "dev": true
2723 | },
2724 | "yaml": {
2725 | "version": "1.10.0",
2726 | "resolved": "https://registry.npm.taobao.org/yaml/download/yaml-1.10.0.tgz",
2727 | "integrity": "sha1-O1k63ZRIdgd9TWg/7gEIG9n/8x4=",
2728 | "dev": true
2729 | },
2730 | "ylru": {
2731 | "version": "1.2.1",
2732 | "resolved": "https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz",
2733 | "integrity": "sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8=",
2734 | "dev": true
2735 | }
2736 | }
2737 | }
2738 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flycart-in-action",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build"
7 | },
8 | "dependencies": {
9 | "vue": "^3.0.4"
10 | },
11 | "devDependencies": {
12 | "vite": "^1.0.0-rc.13",
13 | "@vue/compiler-sfc": "^3.0.4"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/src/assets/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/1.jpg
--------------------------------------------------------------------------------
/src/assets/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/2.jpg
--------------------------------------------------------------------------------
/src/assets/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/3.jpg
--------------------------------------------------------------------------------
/src/assets/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/4.jpg
--------------------------------------------------------------------------------
/src/assets/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/5.jpg
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/57code/flycard-in-vue3/a57e594608e38c710479fc26dd9076c4868cfef6/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/FlyCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
33 |
34 |
35 |
52 |
53 |
54 |
71 |
72 |
73 |
91 |
92 |
93 |
94 |
95 |
177 |
178 |
194 |
--------------------------------------------------------------------------------
/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ msg }}
3 |
4 | Edit components/HelloWorld.vue
to test hot module replacement.
5 |
6 |
7 |
20 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | #app {
2 | font-family: Avenir, Helvetica, Arial, sans-serif;
3 | -webkit-font-smoothing: antialiased;
4 | -moz-osx-font-smoothing: grayscale;
5 | text-align: center;
6 | color: #2c3e50;
7 | margin-top: 60px;
8 | }
9 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import './index.css'
4 |
5 | createApp(App).mount('#app')
6 |
--------------------------------------------------------------------------------
/src/use/touch.js:
--------------------------------------------------------------------------------
1 | import { onMounted, reactive, toRefs } from "vue";
2 |
3 | function getDistance(x1, y1, x2, y2) {
4 | var _x = Math.abs(x1 - x2);
5 | var _y = Math.abs(y1 - y2);
6 | return Math.sqrt(_x * _x + _y * _y);
7 | }
8 |
9 | function useTouch(props, {
10 | onDragStart,
11 | onDragMove,
12 | onDragStop,
13 | onThrowStart,
14 | onThrowDone,
15 | onThrowFail,
16 | }) {
17 | const cardOneState = reactive({
18 | left: 0,
19 | top: 0,
20 | startLeft: 0,
21 | startTop: 0,
22 | isDrag: false,
23 | isThrow: false,
24 | needBack: false,
25 | isAnimating: false,
26 | });
27 | function touchStart(e) {
28 | if (cardOneState.isAnimating) return;
29 |
30 | cardOneState.isDrag = true;
31 | cardOneState.needBack = false;
32 | cardOneState.isThrow = false;
33 | var curTouch = e.touches[0];
34 | cardOneState.startLeft = curTouch.clientX - cardOneState.left;
35 | cardOneState.startTop = curTouch.clientY - cardOneState.top;
36 |
37 | onDragStart();
38 | }
39 | function touchMove(e) {
40 | if (cardOneState.isAnimating) return;
41 |
42 | var curTouch = e.touches[0];
43 | if (
44 | props.dragDirection == "all" ||
45 | props.dragDirection == "horizontal"
46 | )
47 | cardOneState.left = curTouch.clientX - cardOneState.startLeft;
48 | if (
49 | props.dragDirection == "all" ||
50 | props.dragDirection == "vertical"
51 | )
52 | cardOneState.top = curTouch.clientY - cardOneState.startTop;
53 | var distance = getDistance(0, 0, cardOneState.left, cardOneState.top);
54 |
55 | onDragMove({
56 | left: cardOneState.left,
57 | top: cardOneState.top,
58 | distance: distance,
59 | });
60 | }
61 | function touchCancel(e) {
62 | var distance = getDistance(0, 0, cardOneState.left, cardOneState.top);
63 |
64 | cardOneState.isDrag = false;
65 | onDragStop({
66 | left: cardOneState.left,
67 | top: cardOneState.top,
68 | distance: distance,
69 | });
70 | if (cardOneState.isAnimating) return;
71 |
72 | var distance = getDistance(0, 0, cardOneState.left, cardOneState.top);
73 | if (distance > props.throwTriggerDistance) {
74 | makeCardThrow();
75 | } else {
76 | makeCardBack();
77 | }
78 | }
79 |
80 | const otherCardsState = reactive({
81 | left2: 0,
82 | top2: 0,
83 | width2: 0,
84 | height2: 0,
85 |
86 | left3: 0,
87 | top3: 0,
88 | width3: 0,
89 | height3: 0,
90 |
91 | left4: 0,
92 | top4: 0,
93 | width4: 0,
94 | height4: 0,
95 | opacity4: 0,
96 | });
97 | function resetAllCardDown() {
98 | cardOneState.left = 0;
99 | cardOneState.top = 0;
100 |
101 | otherCardsState.width2 = props.cardWidth - props.leftPad * 2;
102 | otherCardsState.height2 = props.cardHeight - props.topPad * 2;
103 | otherCardsState.left2 = props.leftPad;
104 | otherCardsState.top2 = props.topPad * 3;
105 |
106 | otherCardsState.width3 = props.cardWidth - props.leftPad * 4;
107 | otherCardsState.height3 = props.cardHeight - props.topPad * 4;
108 | otherCardsState.left3 = props.leftPad * 2;
109 | otherCardsState.top3 = props.topPad * 6;
110 |
111 | otherCardsState.width4 = props.cardWidth - props.leftPad * 6;
112 | otherCardsState.height4 = props.cardHeight - props.topPad * 6;
113 | otherCardsState.left4 = props.leftPad * 3;
114 | otherCardsState.top4 = props.topPad * 9;
115 | otherCardsState.opacity4 = 0;
116 | }
117 | function resetAllCard() {
118 | resetAllCardDown();
119 | }
120 | function makeCardThrow() {
121 | cardOneState.isThrow = true;
122 | cardOneState.needBack = false;
123 |
124 | var angle = Math.atan2(cardOneState.top - 0, cardOneState.left - 0);
125 | cardOneState.left = Math.cos(angle) * props.throwDistance;
126 | cardOneState.top = Math.sin(angle) * props.throwDistance;
127 |
128 | otherCardsState.width2 = props.cardWidth;
129 | otherCardsState.height2 = props.cardHeight;
130 | otherCardsState.left2 = 0;
131 | otherCardsState.top2 = 0;
132 |
133 | otherCardsState.width3 = props.cardWidth - props.leftPad * 2;
134 | otherCardsState.height3 = props.cardHeight - props.topPad * 2;
135 | otherCardsState.left3 = props.leftPad;
136 | otherCardsState.top3 = props.topPad * 3;
137 |
138 | otherCardsState.width4 = props.cardWidth - props.leftPad * 4;
139 | otherCardsState.height4 = props.cardHeight - props.topPad * 4;
140 | otherCardsState.left4 = props.leftPad * 2;
141 | otherCardsState.top4 = props.topPad * 6;
142 | otherCardsState.opacity4 = 1;
143 |
144 | cardOneState.isAnimating = true;
145 |
146 | onThrowStart();
147 | setTimeout(function () {
148 | cardOneState.isThrow = false;
149 | cardOneState.isAnimating = false;
150 | onThrowDone();
151 | resetAllCard();
152 | }, 400);
153 | }
154 | function makeCardBack() {
155 | cardOneState.isThrow = false;
156 | cardOneState.needBack = true;
157 |
158 | if (cardOneState.needBack) {
159 | cardOneState.left = 0;
160 | cardOneState.top = 0;
161 | }
162 |
163 | cardOneState.isAnimating = true;
164 | setTimeout(function () {
165 | onThrowFail();
166 | cardOneState.isAnimating = false;
167 | cardOneState.needBack = true;
168 | }, 600);
169 | }
170 | onMounted(() => {
171 | resetAllCard()
172 | })
173 |
174 | return {
175 | ...toRefs(cardOneState),
176 | ...toRefs(otherCardsState),
177 | touchStart,
178 | touchMove,
179 | touchCancel,
180 | };
181 | }
182 |
183 | export default useTouch;
184 |
--------------------------------------------------------------------------------
/src/views/demo-tantan.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 | {{ actionName }}
18 |
19 |
29 |
30 |
31 |
![]()
36 |
37 |
38 |
39 |
40 |
![]()
45 |
46 |
47 |
48 |
49 |
![]()
54 |
55 |
56 |
57 |
58 |
59 |
60 |
113 |
114 |
124 |
--------------------------------------------------------------------------------
/src/views/demo-zhihu.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
14 |
15 |
{{ cards[0].title }}
16 |
17 |
{{ cards[0].followcount }} 关注
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
{{ cards[1].title }}
28 |
29 |
{{ cards[1].followcount }} 关注
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
{{ cards[2].title }}
40 |
41 |
{{ cards[2].followcount }} 关注
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
91 |
92 |
127 |
--------------------------------------------------------------------------------