├── .gitignore ├── .npmrc ├── LICENSE ├── README.md ├── build ├── base.config.ts ├── doc.config.ts └── lib.config.ts ├── dist ├── packages │ ├── Vertify │ │ ├── index.d.ts │ │ └── src │ │ │ ├── index.vue.d.ts │ │ │ └── tool.d.ts │ └── index.d.ts ├── src │ └── env.d.ts ├── style.css ├── vue-slider-vertify.es.js └── vue-slider-vertify.umd.js ├── docs ├── assets │ ├── README.f43c9627.js │ ├── index.660194a2.js │ ├── index.d8a07902.css │ └── vendor.6cf2b239.js ├── index.html └── packages │ ├── Vertify │ ├── docs │ │ ├── README.md │ │ └── demo.vue │ ├── index.ts │ └── src │ │ ├── index.vue │ │ └── tool.ts │ ├── index.ts │ └── list.json ├── index.html ├── package-lock.json ├── package.json ├── packages ├── Vertify │ ├── docs │ │ ├── README.md │ │ └── demo.vue │ ├── index.ts │ └── src │ │ ├── index.vue │ │ └── tool.ts ├── index.ts └── list.json ├── script ├── copyDir.js └── genNewComp │ ├── .template │ ├── docs │ │ ├── README.md.tpl │ │ └── demo.vue.tpl │ ├── index.ts.tpl │ ├── install.ts.tpl │ ├── router.ts.tpl │ └── src │ │ └── index.vue.tpl │ ├── index.js │ ├── infoCollector.js │ └── tplReplacer.js ├── src ├── App.vue ├── assets │ ├── markdown.css │ └── prism.css ├── components │ └── Preview.vue ├── env.d.ts ├── main.ts └── router.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry = "https://registry.npmjs.com/" 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 MrXujiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 基于Vue3的滑动验证码组件 2 | 3 | 4 | ## 安装 5 | 6 | ```bash 7 | yarn add vue-slider-vertify 8 | ``` 9 | 10 | ```html 11 | 16 | 17 | 20 | ``` 21 | 22 | ## 属性 23 | 24 | 25 | ## More Production 26 | 27 | | name | Description | 28 | | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | 29 | | [H5-Dooring](https://github.com/MrXujiang/h5-Dooring) | 让 H5 制作像搭积木一样简单, 轻松搭建 H5 页面, H5 网站, PC 端网站, LowCode 平台. | 30 | | [V6.Dooring](https://github.com/MrXujiang/v6.dooring.public) | 可视化大屏解决方案, 提供一套可视化编辑引擎, 助力个人或企业轻松定制自己的可视化大屏应用. | 31 | | [dooring-electron-lowcode](https://github.com/MrXujiang/dooring-electron-lowcode) | 基于 electron 的 H5-Dooring 编辑器桌面端. | 32 | | [DooringX](https://github.com/H5-Dooring/dooringx) | 快速高效搭建可视化拖拽平台. | 33 | | [Mitu](https://github.com/H5-Dooring/mitu-editor) | 一款轻量级且可扩展的图片/图形编辑器解决方案. | 34 | 35 | 36 | ## 赞助 | Sponsored 37 | 38 | 开源不易, 有了您的赞助, 我们会做的更好~ 39 | 40 | 41 | 42 | ## 技术反馈和交流群 | Technical feedback and communication 43 | 44 | 微信:beautifulFront 45 | 46 | 47 | -------------------------------------------------------------------------------- /build/base.config.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from 'path'; 2 | import { defineConfig } from 'vite'; 3 | import vue from '@vitejs/plugin-vue'; 4 | import Markdown from 'vite-plugin-md'; 5 | 6 | // 文档: https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | resolve: { 9 | alias: { 10 | '@': resolve(__dirname, '../src'), 11 | packages: resolve(__dirname, '../packages'), 12 | }, 13 | }, 14 | plugins: [ 15 | vue({ 16 | include: [/\.vue$/, /\.md$/], 17 | }), 18 | Markdown(), 19 | ], 20 | }); 21 | -------------------------------------------------------------------------------- /build/doc.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from './base.config'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | base: '/vue-slider-vertify', 7 | build: { 8 | outDir: 'docs', 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /build/lib.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from './base.config'; 2 | import { defineConfig } from 'vite'; 3 | import { resolve } from 'path'; 4 | import dts from 'vite-plugin-dts'; 5 | 6 | export default defineConfig({ 7 | ...baseConfig, 8 | build: { 9 | outDir: 'dist', 10 | lib: { 11 | entry: resolve(__dirname, '../packages/index.ts'), 12 | name: 'vue-slider-vertify', 13 | fileName: (format) => `vue-slider-vertify.${format}.js`, 14 | }, 15 | rollupOptions: { 16 | // 确保外部化处理那些你不想打包进库的依赖 17 | external: ['vue'], 18 | output: { 19 | // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量 20 | globals: { 21 | vue: 'Vue' 22 | } 23 | } 24 | } 25 | }, 26 | plugins: [ 27 | ...(baseConfig as any).plugins, 28 | dts(), 29 | ] 30 | }); 31 | -------------------------------------------------------------------------------- /dist/packages/Vertify/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from 'vue'; 2 | import Vertify from './src/index.vue'; 3 | export declare const VertifyPlugin: Plugin; 4 | export { Vertify }; 5 | -------------------------------------------------------------------------------- /dist/packages/Vertify/src/index.vue.d.ts: -------------------------------------------------------------------------------- 1 | interface VertifyType { 2 | spliced: boolean; 3 | verified: boolean; 4 | left: number; 5 | destX: number; 6 | } 7 | declare const _sfc_main: import("vue").DefineComponent<{ 8 | width: { 9 | type: NumberConstructor; 10 | required: false; 11 | default: number; 12 | }; 13 | visible: { 14 | type: BooleanConstructor; 15 | required: false; 16 | default: boolean; 17 | }; 18 | height: { 19 | type: NumberConstructor; 20 | required: false; 21 | default: number; 22 | }; 23 | refreshIcon: { 24 | type: StringConstructor; 25 | required: false; 26 | default: string; 27 | }; 28 | l: { 29 | type: NumberConstructor; 30 | required: false; 31 | default: number; 32 | }; 33 | r: { 34 | type: NumberConstructor; 35 | required: false; 36 | default: number; 37 | }; 38 | imgUrl: { 39 | type: StringConstructor; 40 | required: false; 41 | default: string; 42 | }; 43 | text: { 44 | type: StringConstructor; 45 | required: false; 46 | default: string; 47 | }; 48 | onDraw: { 49 | type: FunctionConstructor; 50 | required: false; 51 | }; 52 | onCustomVertify: { 53 | type: FunctionConstructor; 54 | required: false; 55 | }; 56 | onBeforeRefresh: { 57 | type: FunctionConstructor; 58 | required: false; 59 | }; 60 | onSuccess: { 61 | type: null; 62 | required: false; 63 | }; 64 | onFail: { 65 | type: null; 66 | required: false; 67 | }; 68 | onRefresh: { 69 | type: null; 70 | required: false; 71 | }; 72 | }, { 73 | props: { 74 | width: number; 75 | visible: boolean; 76 | height: number; 77 | refreshIcon: string; 78 | l: number; 79 | r: number; 80 | imgUrl: string; 81 | text: string; 82 | onDraw?: ((l: number) => {}) | undefined; 83 | onCustomVertify?: ((arg: VertifyType) => VertifyType) | undefined; 84 | onBeforeRefresh?: (() => void) | undefined; 85 | onSuccess?: VoidFunction | undefined; 86 | onFail?: VoidFunction | undefined; 87 | onRefresh?: VoidFunction | undefined; 88 | }; 89 | text: string; 90 | l: number; 91 | r: number; 92 | imgUrl: string; 93 | width: number; 94 | height: number; 95 | visible: boolean; 96 | onBeforeRefresh: (() => void) | undefined; 97 | onRefresh: VoidFunction | undefined; 98 | onFail: VoidFunction | undefined; 99 | onSuccess: VoidFunction | undefined; 100 | onCustomVertify: ((arg: VertifyType) => VertifyType) | undefined; 101 | onDraw: ((l: number) => {}) | undefined; 102 | isLoading: import("vue").Ref; 103 | sliderLeft: import("vue").Ref; 104 | sliderClass: import("vue").Ref; 105 | textTip: import("vue").Ref; 106 | canvasRef: any; 107 | blockRef: any; 108 | imgRef: any; 109 | isMouseDownRef: import("vue").Ref; 110 | trailRef: import("vue").Ref; 111 | originXRef: import("vue").Ref; 112 | originYRef: import("vue").Ref; 113 | xRef: import("vue").Ref; 114 | yRef: import("vue").Ref; 115 | PI: number; 116 | L: number; 117 | drawPath: (ctx: any, x: number, y: number, operation: "fill" | "clip") => void; 118 | getRandomImgSrc: () => string; 119 | createImg: (onload: VoidFunction) => HTMLImageElement; 120 | draw: (img: HTMLImageElement) => void; 121 | initImg: () => void; 122 | reset: () => void; 123 | handleRefresh: () => void; 124 | verify: () => { 125 | spliced: boolean; 126 | verified: boolean; 127 | left: number; 128 | destX: number; 129 | }; 130 | handleDragStart: (e: any) => void; 131 | handleDragMove: (e: any) => false | undefined; 132 | handleDragEnd: (e: any) => false | undefined; 133 | }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "click"[], "click", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{ 134 | width?: unknown; 135 | visible?: unknown; 136 | height?: unknown; 137 | refreshIcon?: unknown; 138 | l?: unknown; 139 | r?: unknown; 140 | imgUrl?: unknown; 141 | text?: unknown; 142 | onDraw?: unknown; 143 | onCustomVertify?: unknown; 144 | onBeforeRefresh?: unknown; 145 | onSuccess?: unknown; 146 | onFail?: unknown; 147 | onRefresh?: unknown; 148 | } & { 149 | width: number; 150 | visible: boolean; 151 | height: number; 152 | refreshIcon: string; 153 | l: number; 154 | r: number; 155 | imgUrl: string; 156 | text: string; 157 | } & { 158 | onDraw?: Function | undefined; 159 | onCustomVertify?: Function | undefined; 160 | onBeforeRefresh?: Function | undefined; 161 | onSuccess?: any; 162 | onFail?: any; 163 | onRefresh?: any; 164 | }> & { 165 | onClick?: ((...args: any[]) => any) | undefined; 166 | }, { 167 | width: number; 168 | visible: boolean; 169 | height: number; 170 | refreshIcon: string; 171 | l: number; 172 | r: number; 173 | imgUrl: string; 174 | text: string; 175 | }>; 176 | export default _sfc_main; 177 | -------------------------------------------------------------------------------- /dist/packages/Vertify/src/tool.d.ts: -------------------------------------------------------------------------------- 1 | declare function getRandomNumberByRange(start: number, end: number): number; 2 | declare function sum(x: number, y: number): number; 3 | declare function square(x: number): number; 4 | export { getRandomNumberByRange, sum, square }; 5 | -------------------------------------------------------------------------------- /dist/packages/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from 'vue'; 2 | declare const XiPlugin: Plugin; 3 | export default XiPlugin; 4 | export * from './Vertify'; 5 | -------------------------------------------------------------------------------- /dist/src/env.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import { DefineComponent } from 'vue'; 3 | const component: DefineComponent<{}, {}, any>; 4 | export default component; 5 | } 6 | 7 | declare module '*.md' { 8 | import { ComponentOptions } from 'vue'; 9 | const Component: ComponentOptions; 10 | export default Component; 11 | } -------------------------------------------------------------------------------- /dist/style.css: -------------------------------------------------------------------------------- 1 | .vertifyWrap[data-v-3d8a32f9]{position:relative}.vertifyWrap .block[data-v-3d8a32f9]{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.vertifyWrap .block[data-v-3d8a32f9]:active{cursor:grabbing}.vertifyWrap .sliderContainer[data-v-3d8a32f9]{position:relative;text-align:center;width:310px;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.vertifyWrap .sliderContainer_active .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #486cd6}.vertifyWrap .sliderContainer_active .sliderMask[data-v-3d8a32f9]{height:38px;border-width:1px}.vertifyWrap .sliderContainer_success .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #0db87f;background-color:#0ca14a!important}.vertifyWrap .sliderContainer_success .sliderMask[data-v-3d8a32f9]{height:38px;border:1px solid #0db87f;background-color:#d2f4ef}.vertifyWrap .sliderContainer_success .sliderIcon[data-v-3d8a32f9]{background-position:0 -26px!important}.vertifyWrap .sliderContainer_fail .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.vertifyWrap .sliderContainer_fail .sliderMask[data-v-3d8a32f9]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.vertifyWrap .sliderContainer_fail .sliderIcon[data-v-3d8a32f9]{top:14px;background-position:0 -82px!important}.vertifyWrap .sliderContainer_active .sliderText[data-v-3d8a32f9],.vertifyWrap .sliderContainer_success .sliderText[data-v-3d8a32f9],.vertifyWrap .sliderContainer_fail .sliderText[data-v-3d8a32f9]{display:none}.vertifyWrap .sliderMask[data-v-3d8a32f9]{position:absolute;left:0;top:0;height:40px;border:0 solid #486cd6;background:#d1e9fe}.vertifyWrap .slider[data-v-3d8a32f9]{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.vertifyWrap .slider[data-v-3d8a32f9]:active{cursor:grabbing}.vertifyWrap .slider[data-v-3d8a32f9]:hover{background:#486cd6}.vertifyWrap .sliderIcon[data-v-3d8a32f9]{font-size:18px;color:#000}.vertifyWrap .slider:hover .sliderIcon[data-v-3d8a32f9]{color:#fff}.vertifyWrap .refreshIcon[data-v-3d8a32f9]{position:absolute;right:5px;top:5px;width:30px;height:30px;cursor:pointer;background-size:32px}.vertifyWrap .loadingContainer[data-v-3d8a32f9]{position:absolute;left:0;top:0;width:310px;height:155px;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.vertifyWrap .loadingIcon[data-v-3d8a32f9]{width:32px;height:32px;margin-bottom:10px;background:url(http://cdn.dooring.cn/dr/icon12.png);background-size:32px;animation:loading-icon-rotate-3d8a32f9 .8s linear infinite}@keyframes loading-icon-rotate-3d8a32f9{0%{transform:rotate(0)}to{transform:rotate(360deg)}} 2 | -------------------------------------------------------------------------------- /dist/vue-slider-vertify.es.js: -------------------------------------------------------------------------------- 1 | import { defineComponent, ref, onMounted, watch, openBlock, createElementBlock, normalizeStyle, unref, createElementVNode, toDisplayString, pushScopeId, popScopeId } from "vue"; 2 | function getRandomNumberByRange(start, end) { 3 | return Math.round(Math.random() * (end - start) + start); 4 | } 5 | function sum(x, y) { 6 | return x + y; 7 | } 8 | function square(x) { 9 | return x * x; 10 | } 11 | var index_vue_vue_type_style_index_0_scoped_true_lang = ""; 12 | var _export_sfc = (sfc, props) => { 13 | const target = sfc.__vccOpts || sfc; 14 | for (const [key, val] of props) { 15 | target[key] = val; 16 | } 17 | return target; 18 | }; 19 | const _withScopeId = (n) => (pushScopeId("data-v-3d8a32f9"), n = n(), popScopeId(), n); 20 | const _hoisted_1 = { className: "canvasArea" }; 21 | const _hoisted_2 = ["width", "height"]; 22 | const _hoisted_3 = ["width", "height"]; 23 | const _hoisted_4 = ["className"]; 24 | const _hoisted_5 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { className: "sliderIcon" }, "\u2192", -1)); 25 | const _hoisted_6 = [ 26 | _hoisted_5 27 | ]; 28 | const _hoisted_7 = { className: "sliderText" }; 29 | const _hoisted_8 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { className: "loadingIcon" }, null, -1)); 30 | const _hoisted_9 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", null, "\u52A0\u8F7D\u4E2D...", -1)); 31 | const _hoisted_10 = [ 32 | _hoisted_8, 33 | _hoisted_9 34 | ]; 35 | const _sfc_main = /* @__PURE__ */ defineComponent({ 36 | props: { 37 | width: { default: 320 }, 38 | visible: { type: Boolean, default: true }, 39 | height: { default: 160 }, 40 | refreshIcon: { default: "http://cdn.dooring.cn/dr/icon12.png" }, 41 | l: { default: 42 }, 42 | r: { default: 9 }, 43 | imgUrl: { default: "" }, 44 | text: { default: "" }, 45 | onDraw: null, 46 | onCustomVertify: null, 47 | onBeforeRefresh: null, 48 | onSuccess: null, 49 | onFail: null, 50 | onRefresh: null 51 | }, 52 | emits: ["click"], 53 | setup(__props) { 54 | const props = __props; 55 | const { 56 | text, 57 | l, 58 | r, 59 | imgUrl, 60 | width, 61 | height, 62 | visible, 63 | onBeforeRefresh, 64 | onRefresh, 65 | onFail, 66 | onSuccess, 67 | onCustomVertify, 68 | onDraw 69 | } = props; 70 | const isLoading = ref(false); 71 | const sliderLeft = ref(0); 72 | const sliderClass = ref("sliderContainer"); 73 | const textTip = ref(text); 74 | const canvasRef = ref(null); 75 | const blockRef = ref(null); 76 | const imgRef = ref(null); 77 | const isMouseDownRef = ref(false); 78 | const trailRef = ref([]); 79 | const originXRef = ref(0); 80 | const originYRef = ref(0); 81 | const xRef = ref(0); 82 | const yRef = ref(0); 83 | const PI = Math.PI; 84 | const L = l + r * 2 + 3; 85 | const drawPath = (ctx, x, y, operation) => { 86 | ctx.beginPath(); 87 | ctx.moveTo(x, y); 88 | ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI); 89 | ctx.lineTo(x + l, y); 90 | ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI); 91 | ctx.lineTo(x + l, y + l); 92 | ctx.lineTo(x, y + l); 93 | ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true); 94 | ctx.lineTo(x, y); 95 | ctx.lineWidth = 2; 96 | ctx.fillStyle = "rgba(255, 255, 255, 0.7)"; 97 | ctx.strokeStyle = "rgba(255, 255, 255, 0.7)"; 98 | ctx.stroke(); 99 | ctx.globalCompositeOperation = "destination-over"; 100 | operation === "fill" ? ctx.fill() : ctx.clip(); 101 | }; 102 | const getRandomImgSrc = () => { 103 | return imgUrl || `https://picsum.photos/id/${getRandomNumberByRange(0, 1084)}/${width}/${height}`; 104 | }; 105 | const createImg = (onload) => { 106 | const img = new Image(); 107 | img.crossOrigin = "Anonymous"; 108 | img.onload = onload; 109 | img.onerror = () => { 110 | img.setSrc(getRandomImgSrc()); 111 | }; 112 | img.setSrc = (src) => { 113 | const isIE = window.navigator.userAgent.indexOf("Trident") > -1; 114 | if (isIE) { 115 | const xhr = new XMLHttpRequest(); 116 | xhr.onloadend = function(e) { 117 | const file = new FileReader(); 118 | file.readAsDataURL(e.target.response); 119 | file.onloadend = function(e2) { 120 | var _a; 121 | img.src = (_a = e2 == null ? void 0 : e2.target) == null ? void 0 : _a.result; 122 | }; 123 | }; 124 | xhr.open("GET", src); 125 | xhr.responseType = "blob"; 126 | xhr.send(); 127 | } else 128 | img.src = src; 129 | }; 130 | img.setSrc(getRandomImgSrc()); 131 | return img; 132 | }; 133 | const draw = (img) => { 134 | const canvasCtx = canvasRef.value.getContext("2d"); 135 | const blockCtx = blockRef.value.getContext("2d"); 136 | xRef.value = getRandomNumberByRange(L + 10, width - (L + 10)); 137 | yRef.value = getRandomNumberByRange(10 + r * 2, height - (L + 10)); 138 | drawPath(canvasCtx, xRef.value, yRef.value, "fill"); 139 | drawPath(blockCtx, xRef.value, yRef.value, "clip"); 140 | canvasCtx.drawImage(img, 0, 0, width, height); 141 | blockCtx.drawImage(img, 0, 0, width, height); 142 | const y1 = yRef.value - r * 2 - 1; 143 | const ImageData = blockCtx.getImageData(xRef.value - 3, y1, L, L); 144 | blockRef.value.width = L; 145 | blockCtx.putImageData(ImageData, 0, y1); 146 | }; 147 | const initImg = () => { 148 | const img = createImg(() => { 149 | isLoading.value = false; 150 | draw(img); 151 | }); 152 | imgRef.value = img; 153 | }; 154 | const reset = () => { 155 | const canvasCtx = canvasRef.value.getContext("2d"); 156 | const blockCtx = blockRef.value.getContext("2d"); 157 | sliderLeft.value = 0; 158 | sliderClass.value = "sliderContainer"; 159 | blockRef.value.width = width; 160 | blockRef.value.style.left = 0 + "px"; 161 | canvasCtx.clearRect(0, 0, width, height); 162 | blockCtx.clearRect(0, 0, width, height); 163 | onBeforeRefresh && onBeforeRefresh(); 164 | isLoading.value = true; 165 | imgRef.value.setSrc(getRandomImgSrc()); 166 | }; 167 | const handleRefresh = () => { 168 | reset(); 169 | typeof onRefresh === "function" && onRefresh(); 170 | }; 171 | const verify = () => { 172 | const arr = trailRef.value; 173 | const average = arr.reduce(sum) / arr.length; 174 | const deviations = arr.map((x) => x - average); 175 | const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length); 176 | const left = parseInt(blockRef.value.style.left); 177 | return { 178 | spliced: Math.abs(left - xRef.value) < 10, 179 | verified: stddev !== 0, 180 | left, 181 | destX: xRef.value 182 | }; 183 | }; 184 | const handleDragStart = function(e) { 185 | originXRef.value = e.clientX || e.touches[0].clientX; 186 | originYRef.value = e.clientY || e.touches[0].clientY; 187 | isMouseDownRef.value = true; 188 | }; 189 | const handleDragMove = (e) => { 190 | if (!isMouseDownRef.value) 191 | return false; 192 | e.preventDefault(); 193 | const eventX = e.clientX || e.touches[0].clientX; 194 | const eventY = e.clientY || e.touches[0].clientY; 195 | const moveX = eventX - originXRef.value; 196 | const moveY = eventY - originYRef.value; 197 | if (moveX < 0 || moveX + 38 >= width) 198 | return false; 199 | sliderLeft.value = moveX; 200 | const blockLeft = (width - 40 - 20) / (width - 40) * moveX; 201 | blockRef.value.style.left = blockLeft + "px"; 202 | sliderClass.value = "sliderContainer sliderContainer_active"; 203 | trailRef.value.push(moveY); 204 | onDraw && onDraw(blockLeft); 205 | }; 206 | const handleDragEnd = (e) => { 207 | if (!isMouseDownRef.value) 208 | return false; 209 | isMouseDownRef.value = false; 210 | const eventX = e.clientX || e.changedTouches[0].clientX; 211 | if (eventX === originXRef.value) 212 | return false; 213 | sliderClass.value = "sliderContainer"; 214 | const { spliced, verified } = onCustomVertify ? onCustomVertify(verify()) : verify(); 215 | if (spliced) { 216 | if (verified) { 217 | sliderClass.value = "sliderContainer sliderContainer_success"; 218 | typeof onSuccess === "function" && onSuccess(); 219 | } else { 220 | sliderClass.value = "sliderContainer sliderContainer_fail"; 221 | textTip.value = "\u8BF7\u518D\u8BD5\u4E00\u6B21"; 222 | reset(); 223 | } 224 | } else { 225 | sliderClass.value = "sliderContainer sliderContainer_fail"; 226 | typeof onFail === "function" && onFail(); 227 | setTimeout(reset.bind(this), 1e3); 228 | } 229 | }; 230 | onMounted(() => { 231 | initImg(); 232 | }); 233 | watch(() => visible, () => { 234 | if (visible) { 235 | imgRef.value ? reset() : initImg(); 236 | } 237 | }); 238 | return (_ctx, _cache) => { 239 | return openBlock(), createElementBlock("div", { 240 | className: "vertifyWrap", 241 | style: normalizeStyle({ 242 | width: unref(width) + "px", 243 | margin: "0 auto", 244 | display: unref(visible) ? "" : "none" 245 | }), 246 | onMousemove: handleDragMove, 247 | onMouseup: handleDragEnd, 248 | onTouchmove: handleDragMove, 249 | onTouchend: handleDragEnd 250 | }, [ 251 | createElementVNode("div", _hoisted_1, [ 252 | createElementVNode("canvas", { 253 | ref: (_value, _refs) => { 254 | _refs["canvasRef"] = _value; 255 | canvasRef.value = _value; 256 | }, 257 | width: unref(width), 258 | height: unref(height) 259 | }, null, 8, _hoisted_2), 260 | createElementVNode("canvas", { 261 | ref: (_value, _refs) => { 262 | _refs["blockRef"] = _value; 263 | blockRef.value = _value; 264 | }, 265 | className: "block", 266 | width: unref(width), 267 | height: unref(height), 268 | onMousedown: handleDragStart, 269 | onTouchstart: handleDragStart 270 | }, null, 40, _hoisted_3) 271 | ]), 272 | createElementVNode("div", { 273 | className: sliderClass.value, 274 | style: normalizeStyle({ 275 | pointerEvents: isLoading.value ? "none" : "auto", 276 | width: unref(width) + "px" 277 | }) 278 | }, [ 279 | createElementVNode("div", { 280 | className: "sliderMask", 281 | style: normalizeStyle({ width: sliderLeft.value + "px" }) 282 | }, [ 283 | createElementVNode("div", { 284 | className: "slider", 285 | style: normalizeStyle({ left: sliderLeft.value + "px" }), 286 | onMousedown: handleDragStart, 287 | onTouchstart: handleDragStart 288 | }, _hoisted_6, 36) 289 | ], 4), 290 | createElementVNode("div", _hoisted_7, toDisplayString(textTip.value), 1) 291 | ], 12, _hoisted_4), 292 | createElementVNode("div", { 293 | className: "refreshIcon", 294 | onClick: handleRefresh, 295 | style: normalizeStyle({ backgroundImage: `url(${__props.refreshIcon})` }) 296 | }, null, 4), 297 | createElementVNode("div", { 298 | className: "loadingContainer", 299 | style: normalizeStyle({ 300 | width: unref(width) + "px", 301 | height: unref(height) + "px", 302 | display: isLoading.value ? "" : "none" 303 | }) 304 | }, _hoisted_10, 4) 305 | ], 36); 306 | }; 307 | } 308 | }); 309 | var Vertify = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3d8a32f9"]]); 310 | const VertifyPlugin = { 311 | install(app) { 312 | app.component("vertify", Vertify); 313 | } 314 | }; 315 | const XiPlugin = { 316 | install(app) { 317 | var _a; 318 | (_a = VertifyPlugin.install) == null ? void 0 : _a.call(VertifyPlugin, app); 319 | } 320 | }; 321 | export { Vertify, VertifyPlugin, XiPlugin as default }; 322 | -------------------------------------------------------------------------------- /dist/vue-slider-vertify.umd.js: -------------------------------------------------------------------------------- 1 | (function(d,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(d=typeof globalThis!="undefined"?globalThis:d||self,e(d["vue-slider-vertify"]={},d.Vue))})(this,function(d,e){"use strict";function E(l,u){return Math.round(Math.random()*(u-l)+l)}function Y(l,u){return l+u}function Z(l){return l*l}var he="",ee=(l,u)=>{const w=l.__vccOpts||l;for(const[i,r]of u)w[i]=r;return w};const T=l=>(e.pushScopeId("data-v-3d8a32f9"),l=l(),e.popScopeId(),l),te={className:"canvasArea"},ne=["width","height"],oe=["width","height"],le=["className"],ae=[T(()=>e.createElementVNode("div",{className:"sliderIcon"},"\u2192",-1))],se={className:"sliderText"},ie=[T(()=>e.createElementVNode("div",{className:"loadingIcon"},null,-1)),T(()=>e.createElementVNode("span",null,"\u52A0\u8F7D\u4E2D...",-1))];var z=ee(e.defineComponent({props:{width:{default:320},visible:{type:Boolean,default:!0},height:{default:160},refreshIcon:{default:"http://cdn.dooring.cn/dr/icon12.png"},l:{default:42},r:{default:9},imgUrl:{default:""},text:{default:""},onDraw:null,onCustomVertify:null,onBeforeRefresh:null,onSuccess:null,onFail:null,onRefresh:null},emits:["click"],setup(l){const u=l,{text:w,l:i,r,imgUrl:ce,width:s,height:f,visible:V,onBeforeRefresh:L,onRefresh:P,onFail:A,onSuccess:F,onCustomVertify:O,onDraw:q}=u,C=e.ref(!1),N=e.ref(0),m=e.ref("sliderContainer"),$=e.ref(w),D=e.ref(null),h=e.ref(null),M=e.ref(null),I=e.ref(!1),x=e.ref([]),k=e.ref(0),U=e.ref(0),p=e.ref(0),R=e.ref(0),g=Math.PI,v=i+r*2+3,j=(t,n,o,a)=>{t.beginPath(),t.moveTo(n,o),t.arc(n+i/2,o-r+2,r,.72*g,2.26*g),t.lineTo(n+i,o),t.arc(n+i+r-2,o+i/2,r,1.21*g,2.78*g),t.lineTo(n+i,o+i),t.lineTo(n,o+i),t.arc(n+r-2,o+i/2,r+.4,2.76*g,1.24*g,!0),t.lineTo(n,o),t.lineWidth=2,t.fillStyle="rgba(255, 255, 255, 0.7)",t.strokeStyle="rgba(255, 255, 255, 0.7)",t.stroke(),t.globalCompositeOperation="destination-over",a==="fill"?t.fill():t.clip()},X=()=>ce||`https://picsum.photos/id/${E(0,1084)}/${s}/${f}`,de=t=>{const n=new Image;return n.crossOrigin="Anonymous",n.onload=t,n.onerror=()=>{n.setSrc(X())},n.setSrc=o=>{if(window.navigator.userAgent.indexOf("Trident")>-1){const c=new XMLHttpRequest;c.onloadend=function(_){const K=new FileReader;K.readAsDataURL(_.target.response),K.onloadend=function(B){var Q;n.src=(Q=B==null?void 0:B.target)==null?void 0:Q.result}},c.open("GET",o),c.responseType="blob",c.send()}else n.src=o},n.setSrc(X()),n},ue=t=>{const n=D.value.getContext("2d"),o=h.value.getContext("2d");p.value=E(v+10,s-(v+10)),R.value=E(10+r*2,f-(v+10)),j(n,p.value,R.value,"fill"),j(o,p.value,R.value,"clip"),n.drawImage(t,0,0,s,f),o.drawImage(t,0,0,s,f);const a=R.value-r*2-1,c=o.getImageData(p.value-3,a,v,v);h.value.width=v,o.putImageData(c,0,a)},W=()=>{const t=de(()=>{C.value=!1,ue(t)});M.value=t},S=()=>{const t=D.value.getContext("2d"),n=h.value.getContext("2d");N.value=0,m.value="sliderContainer",h.value.width=s,h.value.style.left=0+"px",t.clearRect(0,0,s,f),n.clearRect(0,0,s,f),L&&L(),C.value=!0,M.value.setSrc(X())},fe=()=>{S(),typeof P=="function"&&P()},G=()=>{const t=x.value,n=t.reduce(Y)/t.length,o=t.map(_=>_-n),a=Math.sqrt(o.map(Z).reduce(Y)/t.length),c=parseInt(h.value.style.left);return{spliced:Math.abs(c-p.value)<10,verified:a!==0,left:c,destX:p.value}},b=function(t){k.value=t.clientX||t.touches[0].clientX,U.value=t.clientY||t.touches[0].clientY,I.value=!0},H=t=>{if(!I.value)return!1;t.preventDefault();const n=t.clientX||t.touches[0].clientX,o=t.clientY||t.touches[0].clientY,a=n-k.value,c=o-U.value;if(a<0||a+38>=s)return!1;N.value=a;const _=(s-40-20)/(s-40)*a;h.value.style.left=_+"px",m.value="sliderContainer sliderContainer_active",x.value.push(c),q&&q(_)},J=t=>{if(!I.value||(I.value=!1,(t.clientX||t.changedTouches[0].clientX)===k.value))return!1;m.value="sliderContainer";const{spliced:o,verified:a}=O?O(G()):G();o?a?(m.value="sliderContainer sliderContainer_success",typeof F=="function"&&F()):(m.value="sliderContainer sliderContainer_fail",$.value="\u8BF7\u518D\u8BD5\u4E00\u6B21",S()):(m.value="sliderContainer sliderContainer_fail",typeof A=="function"&&A(),setTimeout(S.bind(this),1e3))};return e.onMounted(()=>{W()}),e.watch(()=>V,()=>{V&&(M.value?S():W())}),(t,n)=>(e.openBlock(),e.createElementBlock("div",{className:"vertifyWrap",style:e.normalizeStyle({width:e.unref(s)+"px",margin:"0 auto",display:e.unref(V)?"":"none"}),onMousemove:H,onMouseup:J,onTouchmove:H,onTouchend:J},[e.createElementVNode("div",te,[e.createElementVNode("canvas",{ref:(o,a)=>{a.canvasRef=o,D.value=o},width:e.unref(s),height:e.unref(f)},null,8,ne),e.createElementVNode("canvas",{ref:(o,a)=>{a.blockRef=o,h.value=o},className:"block",width:e.unref(s),height:e.unref(f),onMousedown:b,onTouchstart:b},null,40,oe)]),e.createElementVNode("div",{className:m.value,style:e.normalizeStyle({pointerEvents:C.value?"none":"auto",width:e.unref(s)+"px"})},[e.createElementVNode("div",{className:"sliderMask",style:e.normalizeStyle({width:N.value+"px"})},[e.createElementVNode("div",{className:"slider",style:e.normalizeStyle({left:N.value+"px"}),onMousedown:b,onTouchstart:b},ae,36)],4),e.createElementVNode("div",se,e.toDisplayString($.value),1)],12,le),e.createElementVNode("div",{className:"refreshIcon",onClick:fe,style:e.normalizeStyle({backgroundImage:`url(${l.refreshIcon})`})},null,4),e.createElementVNode("div",{className:"loadingContainer",style:e.normalizeStyle({width:e.unref(s)+"px",height:e.unref(f)+"px",display:C.value?"":"none"})},ie,4)],36))}}),[["__scopeId","data-v-3d8a32f9"]]);const y={install(l){l.component("vertify",z)}},re={install(l){var u;(u=y.install)==null||u.call(y,l)}};d.Vertify=z,d.VertifyPlugin=y,d.default=re,Object.defineProperty(d,"__esModule",{value:!0}),d[Symbol.toStringTag]="Module"}); 2 | -------------------------------------------------------------------------------- /docs/assets/README.f43c9627.js: -------------------------------------------------------------------------------- 1 | import{a as r,o as c,c as a,e as t,w as o,b as i,z as y}from"./vendor.6cf2b239.js";const h={setup(d){return(e,l)=>{const n=r("vertify");return c(),a("div",null,[t(n)])}}},_={class:"markdown-body"},g=i("h1",null,"\u6ED1\u52A8\u9A8C\u8BC1\u7801\u7EC4\u4EF6",-1),x=y('

\u5C5E\u6027

\u53C2\u6570\u8BF4\u660E\u7C7B\u578B\u53EF\u9009\u503C\u9ED8\u8BA4\u503C\u662F\u5426\u5FC5\u586B
arg1\u7B2C\u4E00\u4E2A\u53C2\u6570string-default\u5426
arg2\u7B2C\u4E8C\u4E2A\u53C2\u6570string-default\u5426
',2),p={setup(d,{expose:e}){return e({frontmatter:{}}),(n,m)=>{const s=r("Preview");return c(),a("div",_,[g,t(s,{"comp-name":"Vertify","demo-name":"demo"},{default:o(()=>[t(h)]),_:1}),x])}}};export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/assets/index.660194a2.js: -------------------------------------------------------------------------------- 1 | import{r as de,a as oe,o as b,c as E,b as c,F as fe,d as ve,u as p,e as he,f as pe,w as me,g as _e,t as A,h as ge,i as ye,j as we,k as v,l as Ce,m as ke,n as k,p as Ne,q as be,P as Re,s as Se,v as Ie,x as $e,y as De}from"./vendor.6cf2b239.js";const Te=function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))i(t);new MutationObserver(t=>{for(const l of t)if(l.type==="childList")for(const n of l.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function d(t){const l={};return t.integrity&&(l.integrity=t.integrity),t.referrerpolicy&&(l.referrerPolicy=t.referrerpolicy),t.crossorigin==="use-credentials"?l.credentials="include":t.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(t){if(t.ep)return;t.ep=!0;const l=d(t);fetch(t.href,l)}};Te();var Ee=[{compName:"Vertify",compZhName:"\u6ED1\u52A8\u9A8C\u8BC1\u7801",compDesc:"\u8FD9\u662F\u4E00\u4E2A\u6ED1\u52A8\u9A8C\u8BC1\u7801",compClassName:"vertify"}];const Me={class:"xi-doc"},Le={setup(o){const r=de({links:Ee.map(d=>({path:`/components/${d.compName}`,name:d.compZhName}))});return(d,i)=>{const t=oe("router-link"),l=oe("router-view");return b(),E("div",Me,[c("aside",null,[(b(!0),E(fe,null,ve(p(r).links,(n,f)=>(b(),pe(t,{key:f,to:n.path},{default:me(()=>[_e(A(n.name),1)]),_:2},1032,["to"]))),128))]),c("main",null,[he(l)])])}}},Pe="modulepreload",se={},xe="/MY-Kit/",Xe=function(r,d){return!d||d.length===0?r():Promise.all(d.map(i=>{if(i=`${xe}${i}`,i in se)return;se[i]=!0;const t=i.endsWith(".css"),l=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${i}"]${l}`))return;const n=document.createElement("link");if(n.rel=t?"stylesheet":Pe,t||(n.as="script",n.crossOrigin=""),n.href=i,document.head.appendChild(n),t)return new Promise((f,N)=>{n.addEventListener("load",f),n.addEventListener("error",N)})})).then(()=>r())},Ae=[{title:"\u6ED1\u52A8\u9A8C\u8BC1\u7801",name:"Vertify",path:"/components/Vertify",component:()=>Xe(()=>import("./README.f43c9627.js"),["assets/README.f43c9627.js","assets/vendor.6cf2b239.js"])}],Be={history:ge(),routes:Ae,scrollBehavior(o,r){if(o.path!==r.path)return{top:0}}},Ve=ye(Be);function B(o,r){return Math.round(Math.random()*(r-o)+o)}function ae(o,r){return o+r}function Oe(o){return o*o}var re=(o,r)=>{const d=o.__vccOpts||o;for(const[i,t]of r)d[i]=t;return d};const V=o=>(Ne("data-v-3d8a32f9"),o=o(),be(),o),Ye={className:"canvasArea"},qe=["width","height"],Fe=["width","height"],We=["className"],je=V(()=>c("div",{className:"sliderIcon"},"\u2192",-1)),He=[je],Ke={className:"sliderText"},Ue=V(()=>c("div",{className:"loadingIcon"},null,-1)),Ze=V(()=>c("span",null,"\u52A0\u8F7D\u4E2D...",-1)),ze=[Ue,Ze],Ge=we({props:{width:{default:320},visible:{type:Boolean,default:!0},height:{default:160},refreshIcon:{default:"http://cdn.dooring.cn/dr/icon12.png"},l:{default:42},r:{default:9},imgUrl:{default:""},text:{default:""},onDraw:null,onCustomVertify:null,onBeforeRefresh:null,onSuccess:null,onFail:null,onRefresh:null},emits:["click"],setup(o){const r=o,{text:d,l:i,r:t,imgUrl:l,width:n,height:f,visible:N,onBeforeRefresh:Y,onRefresh:q,onFail:F,onSuccess:W,onCustomVertify:j,onDraw:H}=r,R=v(!1),S=v(0),_=v("sliderContainer"),K=v(d),M=v(null),m=v(null),L=v(null),I=v(!1),U=v([]),P=v(0),Z=v(0),g=v(0),$=v(0),y=Math.PI,w=i+t*2+3,z=(e,s,a,u)=>{e.beginPath(),e.moveTo(s,a),e.arc(s+i/2,a-t+2,t,.72*y,2.26*y),e.lineTo(s+i,a),e.arc(s+i+t-2,a+i/2,t,1.21*y,2.78*y),e.lineTo(s+i,a+i),e.lineTo(s,a+i),e.arc(s+t-2,a+i/2,t+.4,2.76*y,1.24*y,!0),e.lineTo(s,a),e.lineWidth=2,e.fillStyle="rgba(255, 255, 255, 0.7)",e.strokeStyle="rgba(255, 255, 255, 0.7)",e.stroke(),e.globalCompositeOperation="destination-over",u==="fill"?e.fill():e.clip()},x=()=>l||`https://picsum.photos/id/${B(0,1084)}/${n}/${f}`,le=e=>{const s=new Image;return s.crossOrigin="Anonymous",s.onload=e,s.onerror=()=>{s.setSrc(x())},s.setSrc=a=>{if(window.navigator.userAgent.indexOf("Trident")>-1){const h=new XMLHttpRequest;h.onloadend=function(C){const te=new FileReader;te.readAsDataURL(C.target.response),te.onloadend=function(X){var ne;s.src=(ne=X==null?void 0:X.target)==null?void 0:ne.result}},h.open("GET",a),h.responseType="blob",h.send()}else s.src=a},s.setSrc(x()),s},ce=e=>{const s=M.value.getContext("2d"),a=m.value.getContext("2d");g.value=B(w+10,n-(w+10)),$.value=B(10+t*2,f-(w+10)),z(s,g.value,$.value,"fill"),z(a,g.value,$.value,"clip"),s.drawImage(e,0,0,n,f),a.drawImage(e,0,0,n,f);const u=$.value-t*2-1,h=a.getImageData(g.value-3,u,w,w);m.value.width=w,a.putImageData(h,0,u)},G=()=>{const e=le(()=>{R.value=!1,ce(e)});L.value=e},D=()=>{const e=M.value.getContext("2d"),s=m.value.getContext("2d");S.value=0,_.value="sliderContainer",m.value.width=n,m.value.style.left=0+"px",e.clearRect(0,0,n,f),s.clearRect(0,0,n,f),Y&&Y(),R.value=!0,L.value.setSrc(x())},ue=()=>{D(),typeof q=="function"&&q()},J=()=>{const e=U.value,s=e.reduce(ae)/e.length,a=e.map(C=>C-s),u=Math.sqrt(a.map(Oe).reduce(ae)/e.length),h=parseInt(m.value.style.left);return{spliced:Math.abs(h-g.value)<10,verified:u!==0,left:h,destX:g.value}},T=function(e){P.value=e.clientX||e.touches[0].clientX,Z.value=e.clientY||e.touches[0].clientY,I.value=!0},Q=e=>{if(!I.value)return!1;e.preventDefault();const s=e.clientX||e.touches[0].clientX,a=e.clientY||e.touches[0].clientY,u=s-P.value,h=a-Z.value;if(u<0||u+38>=n)return!1;S.value=u;const C=(n-40-20)/(n-40)*u;m.value.style.left=C+"px",_.value="sliderContainer sliderContainer_active",U.value.push(h),H&&H(C)},ee=e=>{if(!I.value||(I.value=!1,(e.clientX||e.changedTouches[0].clientX)===P.value))return!1;_.value="sliderContainer";const{spliced:a,verified:u}=j?j(J()):J();a?u?(_.value="sliderContainer sliderContainer_success",typeof W=="function"&&W()):(_.value="sliderContainer sliderContainer_fail",K.value="\u8BF7\u518D\u8BD5\u4E00\u6B21",D()):(_.value="sliderContainer sliderContainer_fail",typeof F=="function"&&F(),setTimeout(D.bind(this),1e3))};return Ce(()=>{G()}),ke(()=>N,()=>{N&&(L.value?D():G())}),(e,s)=>(b(),E("div",{className:"vertifyWrap",style:k({width:p(n)+"px",margin:"0 auto",display:p(N)?"":"none"}),onMousemove:Q,onMouseup:ee,onTouchmove:Q,onTouchend:ee},[c("div",Ye,[c("canvas",{ref:(a,u)=>{u.canvasRef=a,M.value=a},width:p(n),height:p(f)},null,8,qe),c("canvas",{ref:(a,u)=>{u.blockRef=a,m.value=a},className:"block",width:p(n),height:p(f),onMousedown:T,onTouchstart:T},null,40,Fe)]),c("div",{className:_.value,style:k({pointerEvents:R.value?"none":"auto",width:p(n)+"px"})},[c("div",{className:"sliderMask",style:k({width:S.value+"px"})},[c("div",{className:"slider",style:k({left:S.value+"px"}),onMousedown:T,onTouchstart:T},He,36)],4),c("div",Ke,A(K.value),1)],12,We),c("div",{className:"refreshIcon",onClick:ue,style:k({backgroundImage:`url(${o.refreshIcon})`})},null,4),c("div",{className:"loadingContainer",style:k({width:p(n)+"px",height:p(f)+"px",display:R.value?"":"none"})},ze,4)],36))}});var Je=re(Ge,[["__scopeId","data-v-3d8a32f9"]]);const O={install(o){o.component("vertify",Je)}},Qe={install(o){var r;(r=O.install)==null||r.call(O,o)}};const et={props:{compName:{type:String,default:"",require:!0},demoName:{type:String,default:"",require:!0}},data(){return{sourceCode:"",codeVisible:!1}},computed:{previewSourceCode(){return this.sourceCode.replace(/'\.\.\/\.\.\/index'/g,"'@tencent/my-kit'")}},async mounted(){this.compName&&this.demoName&&(this.sourceCode=await fetch(`/MY-Kit/packages/${this.compName}/docs/${this.demoName}.vue`).then(o=>o.text())),await this.$nextTick(),Re.highlightAll()},methods:{async copyCode(){},showSourceCode(){this.codeVisible=!this.codeVisible}}},tt={class:"mykit-preview"},nt={class:"source-code"},ot={class:"language-html"},st={class:"language-html"},at={class:"preview-bottom"};function rt(o,r,d,i,t,l){return b(),E("div",tt,[c("section",null,[Se(o.$slots,"default")]),Ie(c("div",nt,[c("pre",ot,[c("code",st,A(l.previewSourceCode),1)])],512),[[$e,t.codeVisible]]),c("div",at,[c("span",{name:"Code",onClick:r[0]||(r[0]=(...n)=>l.showSourceCode&&l.showSourceCode(...n))},"\u67E5\u770B\u4EE3\u7801")])])}var it=re(et,[["render",rt]]);const ie=De(Le);ie.component("Preview",it);ie.use(Qe).use(Ve).mount("#app"); 2 | -------------------------------------------------------------------------------- /docs/assets/index.d8a07902.css: -------------------------------------------------------------------------------- 1 | html,body{margin:0;padding:0}.xi-doc{display:flex;min-height:100vh}.xi-doc aside{width:200px;padding:15px;border-right:1px solid #ccc;display:flex;flex-direction:column}.xi-doc main{width:100%;flex:1;padding:15px}:root{--side-bar-bg-color: #fff;--control-text-color: #777;--font-sans-serif: "Ubuntu", "Source Sans Pro", sans-serif !important;--font-monospace: "Fira Code", "Roboto Mono", monospace !important}html{font-size:16px}body{font-family:var(--font-sans-serif);color:#34495e;-webkit-font-smoothing:antialiased;line-height:1.6rem;letter-spacing:0;margin:0;overflow-x:hidden}body>*:first-child{margin-top:0!important}body>*:last-child{margin-bottom:0!important}a{color:#42b983;font-weight:600;padding:0 2px;text-decoration:none}h1,h2,h3,h4,h5,h6{position:relative;margin-top:1rem;margin-bottom:1rem;font-weight:700;line-height:1.4;cursor:text}h1:hover a.anchor,h2:hover a.anchor,h3:hover a.anchor,h4:hover a.anchor,h5:hover a.anchor,h6:hover a.anchor{text-decoration:none}h1 tt,h1 code{font-size:inherit!important}h2 tt,h2 code{font-size:inherit!important}h3 tt,h3 code{font-size:inherit!important}h4 tt,h4 code{font-size:inherit!important}h5 tt,h5 code{font-size:inherit!important}h6 tt,h6 code{font-size:inherit!important}h2 a,h3 a{color:#34495e}h1{padding-bottom:.4rem;font-size:2.2rem;line-height:1.3}h2{font-size:1.75rem;line-height:1.225;margin:35px 0 15px;padding-bottom:.5em;border-bottom:1px solid #ddd}h3{font-size:1.4rem;line-height:1.43;margin:20px 0 7px}h4{font-size:1.2rem}h5{font-size:1rem}h6{font-size:1rem;color:#777}p,blockquote,ul,ol,dl,table{margin:.8em 0}li>ol,li>ul{margin:0}hr{height:2px;padding:0;margin:16px 0;background-color:#e7e7e7;border:0 none;overflow:hidden;box-sizing:content-box}body>h2:first-child{margin-top:0;padding-top:0}body>h1:first-child{margin-top:0;padding-top:0}body>h1:first-child+h2{margin-top:0;padding-top:0}body>h3:first-child,body>h4:first-child,body>h5:first-child,body>h6:first-child{margin-top:0;padding-top:0}a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6{margin-top:0;padding-top:0}h1 p,h2 p,h3 p,h4 p,h5 p,h6 p{margin-top:0}li p.first{display:inline-block}ul,ol{padding-left:30px}ul:first-child,ol:first-child{margin-top:0}ul:last-child,ol:last-child{margin-bottom:0}blockquote{border-left:4px solid #42b983;padding:10px 15px;color:#777;background-color:#42b9831a}table{padding:0;word-break:initial}table tr{border-top:1px solid #dfe2e5;margin:0;padding:0}table tr:nth-child(2n),thead{background-color:#fafafa}table tr th{font-weight:700;border:1px solid #dfe2e5;border-bottom:0;text-align:left;margin:0;padding:6px 13px}table tr td{border:1px solid #dfe2e5;text-align:left;margin:0;padding:6px 13px}table tr th:first-child,table tr td:first-child{margin-top:0}table tr th:last-child,table tr td:last-child{margin-bottom:0}code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:#1b1f230d;border-radius:3px}pre{max-height:500px}.vertifyWrap[data-v-3d8a32f9]{position:relative}.vertifyWrap .block[data-v-3d8a32f9]{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.vertifyWrap .block[data-v-3d8a32f9]:active{cursor:grabbing}.vertifyWrap .sliderContainer[data-v-3d8a32f9]{position:relative;text-align:center;width:310px;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.vertifyWrap .sliderContainer_active .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #486cd6}.vertifyWrap .sliderContainer_active .sliderMask[data-v-3d8a32f9]{height:38px;border-width:1px}.vertifyWrap .sliderContainer_success .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #0db87f;background-color:#0ca14a!important}.vertifyWrap .sliderContainer_success .sliderMask[data-v-3d8a32f9]{height:38px;border:1px solid #0db87f;background-color:#d2f4ef}.vertifyWrap .sliderContainer_success .sliderIcon[data-v-3d8a32f9]{background-position:0 -26px!important}.vertifyWrap .sliderContainer_fail .slider[data-v-3d8a32f9]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.vertifyWrap .sliderContainer_fail .sliderMask[data-v-3d8a32f9]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.vertifyWrap .sliderContainer_fail .sliderIcon[data-v-3d8a32f9]{top:14px;background-position:0 -82px!important}.vertifyWrap .sliderContainer_active .sliderText[data-v-3d8a32f9],.vertifyWrap .sliderContainer_success .sliderText[data-v-3d8a32f9],.vertifyWrap .sliderContainer_fail .sliderText[data-v-3d8a32f9]{display:none}.vertifyWrap .sliderMask[data-v-3d8a32f9]{position:absolute;left:0;top:0;height:40px;border:0 solid #486cd6;background:#d1e9fe}.vertifyWrap .slider[data-v-3d8a32f9]{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.vertifyWrap .slider[data-v-3d8a32f9]:active{cursor:grabbing}.vertifyWrap .slider[data-v-3d8a32f9]:hover{background:#486cd6}.vertifyWrap .sliderIcon[data-v-3d8a32f9]{font-size:18px;color:#000}.vertifyWrap .slider:hover .sliderIcon[data-v-3d8a32f9]{color:#fff}.vertifyWrap .refreshIcon[data-v-3d8a32f9]{position:absolute;right:5px;top:5px;width:30px;height:30px;cursor:pointer;background-size:32px}.vertifyWrap .loadingContainer[data-v-3d8a32f9]{position:absolute;left:0;top:0;width:310px;height:155px;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.vertifyWrap .loadingIcon[data-v-3d8a32f9]{width:32px;height:32px;margin-bottom:10px;background:url(http://cdn.dooring.cn/dr/icon12.png);background-size:32px;animation:loading-icon-rotate-3d8a32f9 .8s linear infinite}@keyframes loading-icon-rotate-3d8a32f9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}code[class*=language-],pre[class*=language-]{padding:0;background:hsl(230,1%,98%);color:#383a42;font-family:Fira Code,Fira Mono,Menlo,Consolas,DejaVu Sans Mono,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] *::-moz-selection,pre[class*=language-] *::-moz-selection{background:hsl(230,1%,90%);color:inherit}code[class*=language-]::selection,code[class*=language-] *::selection,pre[class*=language-] *::selection{background:hsl(230,1%,90%);color:inherit}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.cdata{color:#a0a1a7}.token.doctype,.token.punctuation,.token.entity{color:#383a42}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:#b76b01}.token.keyword{color:#a626a4}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:#e45649}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value>.token.punctuation{color:#50a14f}.token.variable,.token.operator,.token.function{color:#4078f2}.token.url{color:#0184bc}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#383a42}.language-css .token.selector{color:#e45649}.language-css .token.property{color:#383a42}.language-css .token.function,.language-css .token.url>.token.function{color:#0184bc}.language-css .token.url>.token.string.url{color:#50a14f}.language-css .token.important,.language-css .token.atrule .token.rule,.language-javascript .token.operator{color:#a626a4}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}.language-json .token.operator{color:#383a42}.language-json .token.null.keyword{color:#b76b01}.language-markdown .token.url,.language-markdown .token.url>.token.operator,.language-markdown .token.url-reference.url>.token.string{color:#383a42}.language-markdown .token.url>.token.content{color:#4078f2}.language-markdown .token.url>.token.url,.language-markdown .token.url-reference.url{color:#0184bc}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}.language-markdown .token.code-snippet{color:#50a14f}.language-markdown .token.bold .token.content{color:#b76b01}.language-markdown .token.italic .token.content{color:#a626a4}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#e45649}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:#383a4233}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:hsl(230,1%,90%);color:#696c77;padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus{background:hsl(230,1%,78%);color:#383a42}.line-highlight.line-highlight{background:hsla(230,8%,24%,.05)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:hsl(230,1%,90%);color:#383a42;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px #0003}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:#383a420d}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:#383a4233}.line-numbers .line-numbers-rows>span:before,.command-line .command-line-prompt>span:before{color:#9d9d9f}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e45649}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:#50a14f}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:#4078f2}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:#a626a4}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:#ff526626}pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) *::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection{background-color:#fb566940}pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) *::selection{background-color:#fb566940}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:#1aff5b26}pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) *::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection{background-color:#38e06240}pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) *::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) *::selection{background-color:#38e06240}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:hsl(0,0,95%)}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:hsl(0,0,95%)}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:hsl(0,0,95%)}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:hsl(0,0%,100%)}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:#383a42;stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:#383a42}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}pre{line-height:0}.mykit-preview{border:4px;border:1px dashed #e7e7e7;padding:10px;border-bottom:1px dashed #e7e7e7}.mykit-preview section{margin:15px}.source-code{max-height:500px}.language-html{margin:0;padding:0 15px}.preview-bottom{height:40px;display:flex;justify-content:center;align-items:center;border-top:1px dashed #e7e7e7} 2 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/packages/Vertify/docs/README.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | # 滑动验证码组件 6 | 7 | 8 | 9 | 10 | 11 | ## 属性 12 | 参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 13 | :-: | :-: | :-: | :-: | :-: | :-: 14 | `arg1` | 第一个参数 | string | - | `default` | 否 15 | `arg2` | 第二个参数 | string | - | `default` | 否 -------------------------------------------------------------------------------- /docs/packages/Vertify/docs/demo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /docs/packages/Vertify/index.ts: -------------------------------------------------------------------------------- 1 | import { App, Plugin } from 'vue'; 2 | import Vertify from './src/index.vue'; 3 | 4 | export const VertifyPlugin: Plugin = { 5 | install(app: App) { 6 | app.component('vertify', Vertify); 7 | }, 8 | }; 9 | 10 | export { Vertify }; -------------------------------------------------------------------------------- /docs/packages/Vertify/src/index.vue: -------------------------------------------------------------------------------- 1 | 275 | 276 | 337 | 338 | 502 | -------------------------------------------------------------------------------- /docs/packages/Vertify/src/tool.ts: -------------------------------------------------------------------------------- 1 | function getRandomNumberByRange(start: number, end: number) { 2 | return Math.round(Math.random() * (end - start) + start); 3 | } 4 | 5 | function sum(x: number, y: number) { 6 | return x + y; 7 | } 8 | 9 | function square(x: number) { 10 | return x * x; 11 | } 12 | 13 | export { getRandomNumberByRange, sum, square }; 14 | -------------------------------------------------------------------------------- /docs/packages/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { App, Plugin } from 'vue'; 3 | 4 | import { VertifyPlugin } from './Vertify'; 5 | 6 | const XiPlugin: Plugin = { 7 | install(app: App) { 8 | VertifyPlugin.install?.(app); 9 | }, 10 | }; 11 | 12 | export default XiPlugin; 13 | 14 | export * from './Vertify' -------------------------------------------------------------------------------- /docs/packages/list.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "compName": "Vertify", 4 | "compZhName": "滑动验证码", 5 | "compDesc": "这是一个滑动验证码", 6 | "compClassName": "vertify" 7 | } 8 | ] -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | vue-slider-vertify 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-slider-vertify", 3 | "version": "0.0.1", 4 | "author": "alex_xu", 5 | "description": "Slide verification component based on vue3", 6 | "keywords": [ 7 | "slider-vertify", 8 | "vue-slider-vertify", 9 | "component", 10 | "components", 11 | "design", 12 | "framework", 13 | "frontend", 14 | "vue", 15 | "vue-component", 16 | "ui", 17 | "徐小夕" 18 | ], 19 | "scripts": { 20 | "dev": "vite --config ./build/base.config.ts", 21 | "build:doc": "vue-tsc --noEmit && vite build --config ./build/doc.config.ts && node script/copyDir.js", 22 | "build:lib": "vue-tsc --noEmit && vite build --config ./build/lib.config.ts", 23 | "gen": "node ./script/genNewComp/index.js" 24 | }, 25 | "contributors": [ 26 | "alex_xu" 27 | ], 28 | "files": [ 29 | "dist" 30 | ], 31 | "main": "dist/vue-slider-vertify.es.js", 32 | "module": "dist/vue-slider-vertify.es.js", 33 | "typings": "dist/packages/index.d.ts", 34 | "homepage": "https://github.com/MrXujiang/vue-slider-vertify", 35 | "bugs": { 36 | "url": "https://github.com/MrXujiang/vue-slider-vertify/issues" 37 | }, 38 | "repository": { 39 | "type": "git", 40 | "url": "git+https://github.com:MrXujiang/vue-slider-vertify.git" 41 | }, 42 | "dependencies": { 43 | "prismjs": "^1.25.0", 44 | "vue": "^3.2.23" 45 | }, 46 | "devDependencies": { 47 | "@types/node": "^16.11.12", 48 | "@vitejs/plugin-vue": "^1.10.2", 49 | "fs-extra": "^10.0.0", 50 | "handlebars": "^4.7.7", 51 | "inquirer": "^8.2.0", 52 | "less": "^4.1.2", 53 | "typescript": "^4.4.4", 54 | "vite": "^2.7.0", 55 | "vite-plugin-copy": "^0.1.6", 56 | "vite-plugin-dts": "^0.9.6", 57 | "vite-plugin-md": "^0.11.4", 58 | "vue-router": "^4.0.12", 59 | "vue-tsc": "^0.28.10" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /packages/Vertify/docs/README.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | ## 基于Vue3的滑动验证码组件 6 | 7 | 8 | 9 | 10 | 11 | ## 属性 12 | 13 | 14 | ## More Production 15 | 16 | | name | Description | 17 | | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | 18 | | [H5-Dooring](https://github.com/MrXujiang/h5-Dooring) | 让 H5 制作像搭积木一样简单, 轻松搭建 H5 页面, H5 网站, PC 端网站, LowCode 平台. | 19 | | [V6.Dooring](https://github.com/MrXujiang/v6.dooring.public) | 可视化大屏解决方案, 提供一套可视化编辑引擎, 助力个人或企业轻松定制自己的可视化大屏应用. | 20 | | [dooring-electron-lowcode](https://github.com/MrXujiang/dooring-electron-lowcode) | 基于 electron 的 H5-Dooring 编辑器桌面端. | 21 | | [DooringX](https://github.com/H5-Dooring/dooringx) | 快速高效搭建可视化拖拽平台. | 22 | | [Mitu](https://github.com/H5-Dooring/mitu-editor) | 一款轻量级且可扩展的图片/图形编辑器解决方案. | 23 | 24 | ## Inspired by 25 | 26 | https://github.com/yeild/jigsaw 27 | 28 | ## 赞助 | Sponsored 29 | 30 | 开源不易, 有了您的赞助, 我们会做的更好~ 31 | 32 | 33 | 34 | ## 技术反馈和交流群 | Technical feedback and communication 35 | 36 | 微信:beautifulFront 37 | 38 | -------------------------------------------------------------------------------- /packages/Vertify/docs/demo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /packages/Vertify/index.ts: -------------------------------------------------------------------------------- 1 | import { App, Plugin } from 'vue'; 2 | import Vertify from './src/index.vue'; 3 | 4 | export const VertifyPlugin: Plugin = { 5 | install(app: App) { 6 | app.component('vertify', Vertify); 7 | }, 8 | }; 9 | 10 | export { Vertify }; -------------------------------------------------------------------------------- /packages/Vertify/src/index.vue: -------------------------------------------------------------------------------- 1 | 275 | 276 | 337 | 338 | 502 | -------------------------------------------------------------------------------- /packages/Vertify/src/tool.ts: -------------------------------------------------------------------------------- 1 | function getRandomNumberByRange(start: number, end: number) { 2 | return Math.round(Math.random() * (end - start) + start); 3 | } 4 | 5 | function sum(x: number, y: number) { 6 | return x + y; 7 | } 8 | 9 | function square(x: number) { 10 | return x * x; 11 | } 12 | 13 | export { getRandomNumberByRange, sum, square }; 14 | -------------------------------------------------------------------------------- /packages/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { App, Plugin } from 'vue'; 3 | 4 | import { VertifyPlugin } from './Vertify'; 5 | 6 | const XiPlugin: Plugin = { 7 | install(app: App) { 8 | VertifyPlugin.install?.(app); 9 | }, 10 | }; 11 | 12 | export default XiPlugin; 13 | 14 | export * from './Vertify' -------------------------------------------------------------------------------- /packages/list.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "compName": "Vertify", 4 | "compZhName": "滑动验证码", 5 | "compDesc": "这是一个滑动验证码", 6 | "compClassName": "vertify" 7 | } 8 | ] -------------------------------------------------------------------------------- /script/copyDir.js: -------------------------------------------------------------------------------- 1 | const child_process = require('child_process'); 2 | 3 | const copyDir = (src, dist) => { 4 | child_process.spawn('cp', ['-r', , src, dist]); 5 | }; 6 | 7 | copyDir('./packages', './docs'); 8 | -------------------------------------------------------------------------------- /script/genNewComp/.template/docs/README.md.tpl: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | # {{ compZhName }} 10 | 11 | {{ compDesc }} 12 | 13 | ## 基础用法 14 | 15 | 16 | 17 | 18 | ## 属性 19 | 参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 20 | :-: | :-: | :-: | :-: | :-: | :-: 21 | `arg1` | 第一个参数 | string | - | `default` | 否 22 | `arg2` | 第二个参数 | string | - | `default` | 否 23 | 24 | ## 事件 25 | 事件名 | 说明 | 参数列表 | 参数说明 26 | :-: | :-: | :-: | :-: 27 | `click` | 点击事件 | $event | 原生的 dom event 28 | `customEvent` | 自定义事件 | [a, b, c] | a:参数一;b:参数二;c:参数三 29 | -------------------------------------------------------------------------------- /script/genNewComp/.template/docs/demo.vue.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /script/genNewComp/.template/index.ts.tpl: -------------------------------------------------------------------------------- 1 | import { App, Plugin } from 'vue'; 2 | import {{ compName }} from './src/index.vue'; 3 | 4 | export const {{ compName }}Plugin: Plugin = { 5 | install(app: App) { 6 | app.component('my-{{ compClassName }}', {{ compName }}); 7 | }, 8 | }; 9 | 10 | export { 11 | {{ compName }}, 12 | }; 13 | -------------------------------------------------------------------------------- /script/genNewComp/.template/install.ts.tpl: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | /** 4 | * !--------- FBI WARNING ----------! 5 | * 6 | * 根据 /packages 目录下的组件所生成的模块导出,请勿手动修改 7 | */ 8 | import { App, Plugin } from 'vue'; 9 | 10 | {{ importPlugins }} 11 | 12 | const MYKitPlugin: Plugin = { 13 | install(app: App) { 14 | {{ installPlugins }} 15 | }, 16 | }; 17 | 18 | export default MYKitPlugin; 19 | 20 | {{ exportPlugins }} -------------------------------------------------------------------------------- /script/genNewComp/.template/router.ts.tpl: -------------------------------------------------------------------------------- 1 | /* eslint-disable prettier/prettier */ 2 | 3 | /** 4 | * !--------- FBI WARNING ----------! 5 | * 6 | * 根据 /packages 目录下的组件所生成的组件类侧边导航栏配置,请勿手动修改 7 | */ 8 | 9 | import { createRouter, createWebHashHistory, RouterOptions } from 'vue-router' 10 | 11 | const routes = [{{ routes }}]; 12 | 13 | const routerConfig = { 14 | history: createWebHashHistory(), 15 | routes, 16 | scrollBehavior(to: any, from: any) { 17 | if (to.path !== from.path) { 18 | return { top: 0 }; 19 | } 20 | }, 21 | }; 22 | 23 | const router = createRouter(routerConfig as RouterOptions); 24 | 25 | export default router; 26 | -------------------------------------------------------------------------------- /script/genNewComp/.template/src/index.vue.tpl: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /script/genNewComp/index.js: -------------------------------------------------------------------------------- 1 | const infoCollector = require('./infoCollector') 2 | const tplReplacer = require('./tplReplacer') 3 | 4 | async function run() { 5 | const meta = await infoCollector() 6 | tplReplacer(meta) 7 | } 8 | 9 | run() 10 | -------------------------------------------------------------------------------- /script/genNewComp/infoCollector.js: -------------------------------------------------------------------------------- 1 | const inquirer = require('inquirer') 2 | const fs = require('fs-extra') 3 | const { resolve } = require('path') 4 | 5 | const listFilePath = '../../packages/list.json' 6 | 7 | const RegxMap = { 8 | IS_COMP_NAME: /^[A-Z]/, 9 | IS_COMP_ZH_NAME: /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/ 10 | } 11 | 12 | const kebabCase = string => string 13 | .replace(/([a-z])([A-Z])/g, "$1-$2") 14 | .replace(/[\s_]+/g, '-') 15 | .toLowerCase(); 16 | 17 | module.exports = async () => { 18 | const meta = await inquirer 19 | .prompt([ 20 | { 21 | type: 'input', 22 | message: '请输入你要新建的组件名(纯英文,大写开头):', 23 | name: 'compName', 24 | validate(answer) { 25 | const done = this.async() 26 | const validateRes = RegxMap.IS_COMP_NAME.test(answer) 27 | if (!validateRes) { 28 | done('请按要求输入正确的组件名!') 29 | return 30 | } 31 | const listData = fs.readJSONSync(resolve(__dirname, listFilePath)) 32 | if (listData.find(item => item.compName === answer)) { 33 | done('已存在同名组件,请确认后更换名字再重试。') 34 | return 35 | } 36 | done(null, true) 37 | } 38 | }, 39 | { 40 | type: 'input', 41 | message: '请输入你要新建的组件名(中文):', 42 | name: 'compZhName', 43 | validate(answer) { 44 | const done = this.async() 45 | const validateRes = RegxMap.IS_COMP_ZH_NAME.test(answer) 46 | if (!validateRes) { 47 | done('请按要求输入正确的组件名!') 48 | return 49 | } 50 | done(null, true) 51 | } 52 | }, 53 | { 54 | type: 'input', 55 | message: '请输入组件的功能描述:', 56 | name: 'compDesc', 57 | default: '默认:这是一个新组件' 58 | } 59 | ]) 60 | const { compName } = meta 61 | meta.compClassName = kebabCase(compName) 62 | return meta 63 | } -------------------------------------------------------------------------------- /script/genNewComp/tplReplacer.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra') 2 | const handlebars = require('handlebars') 3 | const { resolve } = require('path') 4 | 5 | const getTplFilePath = (meta) => ({ 6 | // docs 目录 7 | readme: { 8 | from: './.template/docs/README.md.tpl', 9 | to: `../../packages/${meta.compName}/docs/README.md` 10 | }, 11 | demo: { 12 | from: './.template/docs/demo.vue.tpl', 13 | to: `../../packages/${meta.compName}/docs/demo.vue` 14 | }, 15 | // src 目录 16 | vue: { 17 | from: './.template/src/index.vue.tpl', 18 | to: `../../packages/${meta.compName}/src/index.vue` 19 | }, 20 | // 根目录 21 | install: { 22 | from: './.template/index.ts.tpl', 23 | to: `../../packages/${meta.compName}/index.ts` 24 | }, 25 | }) 26 | 27 | const compFilesTplReplacer = (meta) => { 28 | const filePaths = getTplFilePath(meta) 29 | Object.keys(filePaths).forEach(key => { 30 | const fileTpl = fs.readFileSync(resolve(__dirname, filePaths[key].from), 'utf-8') 31 | const fileContent = handlebars.compile(fileTpl)(meta) 32 | fs.outputFile(resolve(__dirname, filePaths[key].to), fileContent, err => { 33 | if (err) console.log(err) 34 | }) 35 | }) 36 | } 37 | 38 | // 读取 packages/list.json 并更新 39 | const listJsonTplReplacer = (meta) => { 40 | const listFilePath = '../../packages/list.json' 41 | const listFileTpl = fs.readFileSync(resolve(__dirname, listFilePath), 'utf-8') 42 | const listFileContent = JSON.parse(listFileTpl) 43 | listFileContent.push(meta) 44 | const newListFileContentFile = JSON.stringify(listFileContent, null, 2) 45 | fs.writeFile(resolve(__dirname, listFilePath), newListFileContentFile, err => { 46 | if (err) console.log(err) 47 | }) 48 | return listFileContent 49 | } 50 | 51 | // 更新 router.ts 52 | const routerTplReplacer = (listFileContent) => { 53 | const routerFileFrom = './.template/router.ts.tpl' 54 | const routerFileTo = '../../src/router.ts' 55 | const routerFileTpl = fs.readFileSync(resolve(__dirname, routerFileFrom), 'utf-8') 56 | const routerMeta = { 57 | routes: listFileContent.map(comp => { 58 | return `{ 59 | title: '${comp.compZhName}', 60 | name: '${comp.compName}', 61 | path: '/components/${comp.compName}', 62 | component: () => import('packages/${comp.compName}/docs/README.md'), 63 | }` 64 | }) 65 | } 66 | const routerFileContent = handlebars.compile(routerFileTpl, { noEscape: true })(routerMeta) 67 | fs.outputFile(resolve(__dirname, routerFileTo), routerFileContent, err => { 68 | if (err) console.log(err) 69 | }) 70 | } 71 | 72 | // 更新 install.ts 73 | const installTsTplReplacer = (listFileContent) => { 74 | const installFileFrom = './.template/install.ts.tpl' 75 | const installFileTo = '../../packages/index.ts' // 这里没有写错,别慌 76 | const installFileTpl = fs.readFileSync(resolve(__dirname, installFileFrom), 'utf-8') 77 | const installMeta = { 78 | importPlugins: listFileContent.map(({ compName }) => `import { ${compName}Plugin } from './${compName}';`).join('\n'), 79 | installPlugins: listFileContent.map(({ compName }) => `${compName}Plugin.install?.(app);`).join('\n '), 80 | exportPlugins: listFileContent.map(({ compName }) => `export * from './${compName}'`).join('\n'), 81 | } 82 | const installFileContent = handlebars.compile(installFileTpl, { noEscape: true })(installMeta) 83 | fs.outputFile(resolve(__dirname, installFileTo), installFileContent, err => { 84 | if (err) console.log(err) 85 | }) 86 | } 87 | 88 | module.exports = (meta) => { 89 | compFilesTplReplacer(meta) 90 | const listFileContent = listJsonTplReplacer(meta) 91 | routerTplReplacer(listFileContent) 92 | installTsTplReplacer(listFileContent) 93 | 94 | console.log(`组件新建完毕,请前往 packages/${meta.compName} 目录进行开发`); 95 | } 96 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 51 | 52 | 87 | -------------------------------------------------------------------------------- /src/assets/markdown.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --side-bar-bg-color: #fff; 3 | --control-text-color: #777; 4 | --font-sans-serif: 'Ubuntu', 'Source Sans Pro', sans-serif !important; 5 | --font-monospace: 'Fira Code', 'Roboto Mono', monospace !important; 6 | } 7 | 8 | html { 9 | font-size: 16px; 10 | } 11 | 12 | body { 13 | font-family: var(--font-sans-serif); 14 | color: #34495e; 15 | -webkit-font-smoothing: antialiased; 16 | line-height: 1.6rem; 17 | letter-spacing: 0; 18 | margin: 0; 19 | overflow-x: hidden; 20 | } 21 | 22 | body > *:first-child { 23 | margin-top: 0 !important; 24 | } 25 | 26 | body > *:last-child { 27 | margin-bottom: 0 !important; 28 | } 29 | 30 | a { 31 | color: #105fe7; 32 | font-weight: 600; 33 | padding: 0 2px; 34 | text-decoration: none; 35 | } 36 | 37 | h1, 38 | h2, 39 | h3, 40 | h4, 41 | h5, 42 | h6 { 43 | position: relative; 44 | margin-top: 1rem; 45 | margin-bottom: 1rem; 46 | font-weight: bold; 47 | line-height: 1.4; 48 | cursor: text; 49 | } 50 | 51 | h1:hover a.anchor, 52 | h2:hover a.anchor, 53 | h3:hover a.anchor, 54 | h4:hover a.anchor, 55 | h5:hover a.anchor, 56 | h6:hover a.anchor { 57 | text-decoration: none; 58 | } 59 | 60 | h1 tt, 61 | h1 code { 62 | font-size: inherit !important; 63 | } 64 | 65 | h2 tt, 66 | h2 code { 67 | font-size: inherit !important; 68 | } 69 | 70 | h3 tt, 71 | h3 code { 72 | font-size: inherit !important; 73 | } 74 | 75 | h4 tt, 76 | h4 code { 77 | font-size: inherit !important; 78 | } 79 | 80 | h5 tt, 81 | h5 code { 82 | font-size: inherit !important; 83 | } 84 | 85 | h6 tt, 86 | h6 code { 87 | font-size: inherit !important; 88 | } 89 | 90 | h2 a, 91 | h3 a { 92 | color: #1733e6; 93 | } 94 | 95 | h1 { 96 | padding-bottom: .4rem; 97 | font-size: 2.2rem; 98 | line-height: 1.3; 99 | } 100 | 101 | h2 { 102 | font-size: 1.75rem; 103 | line-height: 1.225; 104 | margin: 35px 0 15px; 105 | padding-bottom: 0.5em; 106 | border-bottom: 1px solid #ddd; 107 | } 108 | 109 | h3 { 110 | font-size: 1.4rem; 111 | line-height: 1.43; 112 | margin: 20px 0 7px; 113 | } 114 | 115 | h4 { 116 | font-size: 1.2rem; 117 | } 118 | 119 | h5 { 120 | font-size: 1rem; 121 | } 122 | 123 | h6 { 124 | font-size: 1rem; 125 | color: #777; 126 | } 127 | 128 | p, 129 | blockquote, 130 | ul, 131 | ol, 132 | dl, 133 | table { 134 | margin: 0.8em 0; 135 | } 136 | 137 | li > ol, 138 | li > ul { 139 | margin: 0 0; 140 | } 141 | 142 | hr { 143 | height: 2px; 144 | padding: 0; 145 | margin: 16px 0; 146 | background-color: #e7e7e7; 147 | border: 0 none; 148 | overflow: hidden; 149 | box-sizing: content-box; 150 | } 151 | 152 | body > h2:first-child { 153 | margin-top: 0; 154 | padding-top: 0; 155 | } 156 | 157 | body > h1:first-child { 158 | margin-top: 0; 159 | padding-top: 0; 160 | } 161 | 162 | body > h1:first-child + h2 { 163 | margin-top: 0; 164 | padding-top: 0; 165 | } 166 | 167 | body > h3:first-child, 168 | body > h4:first-child, 169 | body > h5:first-child, 170 | body > h6:first-child { 171 | margin-top: 0; 172 | padding-top: 0; 173 | } 174 | 175 | a:first-child h1, 176 | a:first-child h2, 177 | a:first-child h3, 178 | a:first-child h4, 179 | a:first-child h5, 180 | a:first-child h6 { 181 | margin-top: 0; 182 | padding-top: 0; 183 | } 184 | 185 | h1 p, 186 | h2 p, 187 | h3 p, 188 | h4 p, 189 | h5 p, 190 | h6 p { 191 | margin-top: 0; 192 | } 193 | 194 | li p.first { 195 | display: inline-block; 196 | } 197 | 198 | ul, 199 | ol { 200 | padding-left: 30px; 201 | } 202 | 203 | ul:first-child, 204 | ol:first-child { 205 | margin-top: 0; 206 | } 207 | 208 | ul:last-child, 209 | ol:last-child { 210 | margin-bottom: 0; 211 | } 212 | 213 | blockquote { 214 | border-left: 4px solid #42b983; 215 | padding: 10px 15px; 216 | color: #777; 217 | background-color: rgba(66, 185, 131, .1); 218 | } 219 | 220 | table { 221 | padding: 0; 222 | word-break: initial; 223 | } 224 | 225 | table tr { 226 | border-top: 1px solid #dfe2e5; 227 | margin: 0; 228 | padding: 0; 229 | } 230 | 231 | table tr:nth-child(2n), 232 | thead { 233 | background-color: #fafafa; 234 | } 235 | 236 | table tr th { 237 | font-weight: bold; 238 | border: 1px solid #dfe2e5; 239 | border-bottom: 0; 240 | text-align: left; 241 | margin: 0; 242 | padding: 6px 13px; 243 | } 244 | 245 | table tr td { 246 | border: 1px solid #dfe2e5; 247 | text-align: left; 248 | margin: 0; 249 | padding: 6px 13px; 250 | } 251 | 252 | table tr th:first-child, 253 | table tr td:first-child { 254 | margin-top: 0; 255 | } 256 | 257 | table tr th:last-child, 258 | table tr td:last-child { 259 | margin-bottom: 0; 260 | } 261 | 262 | code { 263 | color: #476582; 264 | padding: 0.25rem 0.5rem; 265 | margin: 0; 266 | font-size: .85em; 267 | background-color: rgba(27,31,35,.05); 268 | border-radius: 3px; 269 | } 270 | 271 | pre { 272 | max-height: 500px; 273 | } -------------------------------------------------------------------------------- /src/assets/prism.css: -------------------------------------------------------------------------------- 1 | /** 2 | * One Light theme for prism.js 3 | * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax 4 | */ 5 | 6 | /** 7 | * One Light colours (accurate as of commit eb064bf on 19 Feb 2021) 8 | * From colors.less 9 | * --mono-1: hsl(230, 8%, 24%); 10 | * --mono-2: hsl(230, 6%, 44%); 11 | * --mono-3: hsl(230, 4%, 64%) 12 | * --hue-1: hsl(198, 99%, 37%); 13 | * --hue-2: hsl(221, 87%, 60%); 14 | * --hue-3: hsl(301, 63%, 40%); 15 | * --hue-4: hsl(119, 34%, 47%); 16 | * --hue-5: hsl(5, 74%, 59%); 17 | * --hue-5-2: hsl(344, 84%, 43%); 18 | * --hue-6: hsl(35, 99%, 36%); 19 | * --hue-6-2: hsl(35, 99%, 40%); 20 | * --syntax-fg: hsl(230, 8%, 24%); 21 | * --syntax-bg: hsl(230, 1%, 98%); 22 | * --syntax-gutter: hsl(230, 1%, 62%); 23 | * --syntax-guide: hsla(230, 8%, 24%, 0.2); 24 | * --syntax-accent: hsl(230, 100%, 66%); 25 | * From syntax-variables.less 26 | * --syntax-selection-color: hsl(230, 1%, 90%); 27 | * --syntax-gutter-background-color-selected: hsl(230, 1%, 90%); 28 | * --syntax-cursor-line: hsla(230, 8%, 24%, 0.05); 29 | */ 30 | 31 | code[class*="language-"], 32 | pre[class*="language-"] { 33 | padding: 0; 34 | background: hsl(230, 1%, 98%); 35 | color: hsl(230, 8%, 24%); 36 | font-family: "Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace; 37 | direction: ltr; 38 | text-align: left; 39 | white-space: pre; 40 | word-spacing: normal; 41 | word-break: normal; 42 | line-height: 1.5; 43 | -moz-tab-size: 2; 44 | -o-tab-size: 2; 45 | tab-size: 2; 46 | -webkit-hyphens: none; 47 | -moz-hyphens: none; 48 | -ms-hyphens: none; 49 | hyphens: none; 50 | } 51 | 52 | /* Selection */ 53 | code[class*="language-"]::-moz-selection, 54 | code[class*="language-"] *::-moz-selection, 55 | pre[class*="language-"] *::-moz-selection { 56 | background: hsl(230, 1%, 90%); 57 | color: inherit; 58 | } 59 | 60 | code[class*="language-"]::selection, 61 | code[class*="language-"] *::selection, 62 | pre[class*="language-"] *::selection { 63 | background: hsl(230, 1%, 90%); 64 | color: inherit; 65 | } 66 | 67 | /* Code blocks */ 68 | pre[class*="language-"] { 69 | padding: 1em; 70 | margin: 0.5em 0; 71 | overflow: auto; 72 | border-radius: 0.3em; 73 | } 74 | 75 | /* Inline code */ 76 | :not(pre) > code[class*="language-"] { 77 | padding: 0.2em 0.3em; 78 | border-radius: 0.3em; 79 | white-space: normal; 80 | } 81 | 82 | .token.comment, 83 | .token.prolog, 84 | .token.cdata { 85 | color: hsl(230, 4%, 64%); 86 | } 87 | 88 | .token.doctype, 89 | .token.punctuation, 90 | .token.entity { 91 | color: hsl(230, 8%, 24%); 92 | } 93 | 94 | .token.attr-name, 95 | .token.class-name, 96 | .token.boolean, 97 | .token.constant, 98 | .token.number, 99 | .token.atrule { 100 | color: hsl(35, 99%, 36%); 101 | } 102 | 103 | .token.keyword { 104 | color: hsl(301, 63%, 40%); 105 | } 106 | 107 | .token.property, 108 | .token.tag, 109 | .token.symbol, 110 | .token.deleted, 111 | .token.important { 112 | color: hsl(5, 74%, 59%); 113 | } 114 | 115 | .token.selector, 116 | .token.string, 117 | .token.char, 118 | .token.builtin, 119 | .token.inserted, 120 | .token.regex, 121 | .token.attr-value, 122 | .token.attr-value > .token.punctuation { 123 | color: hsl(119, 34%, 47%); 124 | } 125 | 126 | .token.variable, 127 | .token.operator, 128 | .token.function { 129 | color: hsl(221, 87%, 60%); 130 | } 131 | 132 | .token.url { 133 | color: hsl(198, 99%, 37%); 134 | } 135 | 136 | /* HTML overrides */ 137 | .token.attr-value > .token.punctuation.attr-equals, 138 | .token.special-attr > .token.attr-value > .token.value.css { 139 | color: hsl(230, 8%, 24%); 140 | } 141 | 142 | /* CSS overrides */ 143 | .language-css .token.selector { 144 | color: hsl(5, 74%, 59%); 145 | } 146 | 147 | .language-css .token.property { 148 | color: hsl(230, 8%, 24%); 149 | } 150 | 151 | .language-css .token.function, 152 | .language-css .token.url > .token.function { 153 | color: hsl(198, 99%, 37%); 154 | } 155 | 156 | .language-css .token.url > .token.string.url { 157 | color: hsl(119, 34%, 47%); 158 | } 159 | 160 | .language-css .token.important, 161 | .language-css .token.atrule .token.rule { 162 | color: hsl(301, 63%, 40%); 163 | } 164 | 165 | /* JS overrides */ 166 | .language-javascript .token.operator { 167 | color: hsl(301, 63%, 40%); 168 | } 169 | 170 | .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation { 171 | color: hsl(344, 84%, 43%); 172 | } 173 | 174 | /* JSON overrides */ 175 | .language-json .token.operator { 176 | color: hsl(230, 8%, 24%); 177 | } 178 | 179 | .language-json .token.null.keyword { 180 | color: hsl(35, 99%, 36%); 181 | } 182 | 183 | /* MD overrides */ 184 | .language-markdown .token.url, 185 | .language-markdown .token.url > .token.operator, 186 | .language-markdown .token.url-reference.url > .token.string { 187 | color: hsl(230, 8%, 24%); 188 | } 189 | 190 | .language-markdown .token.url > .token.content { 191 | color: hsl(221, 87%, 60%); 192 | } 193 | 194 | .language-markdown .token.url > .token.url, 195 | .language-markdown .token.url-reference.url { 196 | color: hsl(198, 99%, 37%); 197 | } 198 | 199 | .language-markdown .token.blockquote.punctuation, 200 | .language-markdown .token.hr.punctuation { 201 | color: hsl(230, 4%, 64%); 202 | font-style: italic; 203 | } 204 | 205 | .language-markdown .token.code-snippet { 206 | color: hsl(119, 34%, 47%); 207 | } 208 | 209 | .language-markdown .token.bold .token.content { 210 | color: hsl(35, 99%, 36%); 211 | } 212 | 213 | .language-markdown .token.italic .token.content { 214 | color: hsl(301, 63%, 40%); 215 | } 216 | 217 | .language-markdown .token.strike .token.content, 218 | .language-markdown .token.strike .token.punctuation, 219 | .language-markdown .token.list.punctuation, 220 | .language-markdown .token.title.important > .token.punctuation { 221 | color: hsl(5, 74%, 59%); 222 | } 223 | 224 | /* General */ 225 | .token.bold { 226 | font-weight: bold; 227 | } 228 | 229 | .token.comment, 230 | .token.italic { 231 | font-style: italic; 232 | } 233 | 234 | .token.entity { 235 | cursor: help; 236 | } 237 | 238 | .token.namespace { 239 | opacity: 0.8; 240 | } 241 | 242 | /* Plugin overrides */ 243 | /* Selectors should have higher specificity than those in the plugins' default stylesheets */ 244 | 245 | /* Show Invisibles plugin overrides */ 246 | .token.token.tab:not(:empty):before, 247 | .token.token.cr:before, 248 | .token.token.lf:before, 249 | .token.token.space:before { 250 | color: hsla(230, 8%, 24%, 0.2); 251 | } 252 | 253 | /* Toolbar plugin overrides */ 254 | /* Space out all buttons and move them away from the right edge of the code block */ 255 | div.code-toolbar > .toolbar.toolbar > .toolbar-item { 256 | margin-right: 0.4em; 257 | } 258 | 259 | /* Styling the buttons */ 260 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > button, 261 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > a, 262 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > span { 263 | background: hsl(230, 1%, 90%); 264 | color: hsl(230, 6%, 44%); 265 | padding: 0.1em 0.4em; 266 | border-radius: 0.3em; 267 | } 268 | 269 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover, 270 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus, 271 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover, 272 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus, 273 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover, 274 | div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus { 275 | background: hsl(230, 1%, 78%); /* custom: darken(--syntax-bg, 20%) */ 276 | color: hsl(230, 8%, 24%); 277 | } 278 | 279 | /* Line Highlight plugin overrides */ 280 | /* The highlighted line itself */ 281 | .line-highlight.line-highlight { 282 | background: hsla(230, 8%, 24%, 0.05); 283 | } 284 | 285 | /* Default line numbers in Line Highlight plugin */ 286 | .line-highlight.line-highlight:before, 287 | .line-highlight.line-highlight[data-end]:after { 288 | background: hsl(230, 1%, 90%); 289 | color: hsl(230, 8%, 24%); 290 | padding: 0.1em 0.6em; 291 | border-radius: 0.3em; 292 | box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */ 293 | } 294 | 295 | /* Hovering over a linkable line number (in the gutter area) */ 296 | /* Requires Line Numbers plugin as well */ 297 | pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before { 298 | background-color: hsla(230, 8%, 24%, 0.05); 299 | } 300 | 301 | /* Line Numbers and Command Line plugins overrides */ 302 | /* Line separating gutter from coding area */ 303 | .line-numbers.line-numbers .line-numbers-rows, 304 | .command-line .command-line-prompt { 305 | border-right-color: hsla(230, 8%, 24%, 0.2); 306 | } 307 | 308 | /* Stuff in the gutter */ 309 | .line-numbers .line-numbers-rows > span:before, 310 | .command-line .command-line-prompt > span:before { 311 | color: hsl(230, 1%, 62%); 312 | } 313 | 314 | /* Match Braces plugin overrides */ 315 | /* Note: Outline colour is inherited from the braces */ 316 | .rainbow-braces .token.token.punctuation.brace-level-1, 317 | .rainbow-braces .token.token.punctuation.brace-level-5, 318 | .rainbow-braces .token.token.punctuation.brace-level-9 { 319 | color: hsl(5, 74%, 59%); 320 | } 321 | 322 | .rainbow-braces .token.token.punctuation.brace-level-2, 323 | .rainbow-braces .token.token.punctuation.brace-level-6, 324 | .rainbow-braces .token.token.punctuation.brace-level-10 { 325 | color: hsl(119, 34%, 47%); 326 | } 327 | 328 | .rainbow-braces .token.token.punctuation.brace-level-3, 329 | .rainbow-braces .token.token.punctuation.brace-level-7, 330 | .rainbow-braces .token.token.punctuation.brace-level-11 { 331 | color: hsl(221, 87%, 60%); 332 | } 333 | 334 | .rainbow-braces .token.token.punctuation.brace-level-4, 335 | .rainbow-braces .token.token.punctuation.brace-level-8, 336 | .rainbow-braces .token.token.punctuation.brace-level-12 { 337 | color: hsl(301, 63%, 40%); 338 | } 339 | 340 | /* Diff Highlight plugin overrides */ 341 | /* Taken from https://github.com/atom/github/blob/master/styles/variables.less */ 342 | pre.diff-highlight > code .token.token.deleted:not(.prefix), 343 | pre > code.diff-highlight .token.token.deleted:not(.prefix) { 344 | background-color: hsla(353, 100%, 66%, 0.15); 345 | } 346 | 347 | pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection, 348 | pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection, 349 | pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection, 350 | pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection { 351 | background-color: hsla(353, 95%, 66%, 0.25); 352 | } 353 | 354 | pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection, 355 | pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection, 356 | pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection, 357 | pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection { 358 | background-color: hsla(353, 95%, 66%, 0.25); 359 | } 360 | 361 | pre.diff-highlight > code .token.token.inserted:not(.prefix), 362 | pre > code.diff-highlight .token.token.inserted:not(.prefix) { 363 | background-color: hsla(137, 100%, 55%, 0.15); 364 | } 365 | 366 | pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection, 367 | pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection, 368 | pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection, 369 | pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection { 370 | background-color: hsla(135, 73%, 55%, 0.25); 371 | } 372 | 373 | pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection, 374 | pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection, 375 | pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection, 376 | pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection { 377 | background-color: hsla(135, 73%, 55%, 0.25); 378 | } 379 | 380 | /* Previewers plugin overrides */ 381 | /* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-light-ui */ 382 | /* Border around popup */ 383 | .prism-previewer.prism-previewer:before, 384 | .prism-previewer-gradient.prism-previewer-gradient div { 385 | border-color: hsl(0, 0, 95%); 386 | } 387 | 388 | /* Angle and time should remain as circles and are hence not included */ 389 | .prism-previewer-color.prism-previewer-color:before, 390 | .prism-previewer-gradient.prism-previewer-gradient div, 391 | .prism-previewer-easing.prism-previewer-easing:before { 392 | border-radius: 0.3em; 393 | } 394 | 395 | /* Triangles pointing to the code */ 396 | .prism-previewer.prism-previewer:after { 397 | border-top-color: hsl(0, 0, 95%); 398 | } 399 | 400 | .prism-previewer-flipped.prism-previewer-flipped.after { 401 | border-bottom-color: hsl(0, 0, 95%); 402 | } 403 | 404 | /* Background colour within the popup */ 405 | .prism-previewer-angle.prism-previewer-angle:before, 406 | .prism-previewer-time.prism-previewer-time:before, 407 | .prism-previewer-easing.prism-previewer-easing { 408 | background: hsl(0, 0%, 100%); 409 | } 410 | 411 | /* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */ 412 | /* For time, this is the alternate colour */ 413 | .prism-previewer-angle.prism-previewer-angle circle, 414 | .prism-previewer-time.prism-previewer-time circle { 415 | stroke: hsl(230, 8%, 24%); 416 | stroke-opacity: 1; 417 | } 418 | 419 | /* Stroke colours of the handle, direction point, and vector itself */ 420 | .prism-previewer-easing.prism-previewer-easing circle, 421 | .prism-previewer-easing.prism-previewer-easing path, 422 | .prism-previewer-easing.prism-previewer-easing line { 423 | stroke: hsl(230, 8%, 24%); 424 | } 425 | 426 | /* Fill colour of the handle */ 427 | .prism-previewer-easing.prism-previewer-easing circle { 428 | fill: transparent; 429 | } -------------------------------------------------------------------------------- /src/components/Preview.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 78 | 79 | 108 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import { DefineComponent } from 'vue'; 3 | const component: DefineComponent<{}, {}, any>; 4 | export default component; 5 | } 6 | 7 | declare module '*.md' { 8 | import { ComponentOptions } from 'vue'; 9 | const Component: ComponentOptions; 10 | export default Component; 11 | } -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | 5 | import './assets/markdown.css'; 6 | 7 | import Vertify from '../packages'; 8 | import Preview from './components/Preview.vue'; 9 | 10 | const app = createApp(App) 11 | app.component('Preview', Preview) 12 | app.use(Vertify).use(router).mount('#app') 13 | -------------------------------------------------------------------------------- /src/router.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable prettier/prettier */ 2 | 3 | /** 4 | * !--------- FBI WARNING ----------! 5 | * 6 | * 根据 /packages 目录下的组件所生成的组件类侧边导航栏配置,请勿手动修改 7 | */ 8 | 9 | import { createRouter, createWebHashHistory, RouterOptions } from 'vue-router' 10 | 11 | const routes = [{ 12 | title: '滑动验证码', 13 | name: 'Vertify', 14 | path: '/Vertify', 15 | component: () => import('packages/Vertify/docs/README.md'), 16 | }]; 17 | 18 | const routerConfig = { 19 | history: createWebHashHistory(), 20 | routes, 21 | scrollBehavior(to: any, from: any) { 22 | if (to.path !== from.path) { 23 | return { top: 0 }; 24 | } 25 | }, 26 | }; 27 | 28 | const router = createRouter(routerConfig as RouterOptions); 29 | 30 | export default router; 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "esModuleInterop": true, 12 | "allowJs": true, 13 | "lib": ["esnext", "dom"], 14 | "skipLibCheck": true, 15 | "paths": { 16 | "packages/*": ["./packages/*"] 17 | } 18 | }, 19 | "include": [ 20 | "*.ts", 21 | "src/**/*.ts", 22 | "src/**/*.d.ts", 23 | "src/**/*.tsx", 24 | "src/**/*.vue", 25 | "packages/**/*.ts", 26 | "packages/**/*.d.ts", 27 | "packages/**/*.tsx", 28 | "packages/**/*.vue" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/helper-validator-identifier@^7.15.7": 6 | version "7.15.7" 7 | resolved "https://mirrors.tencent.com/npm/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" 8 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 9 | 10 | "@babel/parser@^7.15.0", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": 11 | version "7.16.4" 12 | resolved "https://mirrors.tencent.com/npm/@babel%2fparser/-/parser-7.16.4.tgz" 13 | integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== 14 | 15 | "@babel/types@^7.6.1", "@babel/types@^7.9.6": 16 | version "7.16.0" 17 | resolved "https://mirrors.tencent.com/npm/@babel%2ftypes/-/types-7.16.0.tgz" 18 | integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== 19 | dependencies: 20 | "@babel/helper-validator-identifier" "^7.15.7" 21 | to-fast-properties "^2.0.0" 22 | 23 | "@emmetio/abbreviation@^2.2.2": 24 | version "2.2.2" 25 | resolved "https://mirrors.cloud.tencent.com/npm/@emmetio%2fabbreviation/-/abbreviation-2.2.2.tgz" 26 | integrity sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw== 27 | dependencies: 28 | "@emmetio/scanner" "^1.0.0" 29 | 30 | "@emmetio/css-abbreviation@^2.1.4": 31 | version "2.1.4" 32 | resolved "https://mirrors.cloud.tencent.com/npm/@emmetio%2fcss-abbreviation/-/css-abbreviation-2.1.4.tgz" 33 | integrity sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw== 34 | dependencies: 35 | "@emmetio/scanner" "^1.0.0" 36 | 37 | "@emmetio/scanner@^1.0.0": 38 | version "1.0.0" 39 | resolved "https://mirrors.cloud.tencent.com/npm/@emmetio%2fscanner/-/scanner-1.0.0.tgz" 40 | integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA== 41 | 42 | "@nodelib/fs.scandir@2.1.5": 43 | version "2.1.5" 44 | resolved "https://mirrors.tencent.com/npm/@nodelib%2ffs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 45 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 46 | dependencies: 47 | "@nodelib/fs.stat" "2.0.5" 48 | run-parallel "^1.1.9" 49 | 50 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 51 | version "2.0.5" 52 | resolved "https://mirrors.tencent.com/npm/@nodelib%2ffs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 53 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 54 | 55 | "@nodelib/fs.walk@^1.2.3": 56 | version "1.2.8" 57 | resolved "https://mirrors.tencent.com/npm/@nodelib%2ffs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 58 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 59 | dependencies: 60 | "@nodelib/fs.scandir" "2.1.5" 61 | fastq "^1.6.0" 62 | 63 | "@rollup/pluginutils@^4.1.1": 64 | version "4.1.1" 65 | resolved "http://mirrors.tencent.com/npm/@rollup%2fpluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 66 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 67 | dependencies: 68 | estree-walker "^2.0.1" 69 | picomatch "^2.2.2" 70 | 71 | "@ts-morph/common@~0.12.2": 72 | version "0.12.2" 73 | resolved "https://mirrors.tencent.com/npm/@ts-morph%2fcommon/-/common-0.12.2.tgz#61d07a47d622d231e833c44471ab306faaa41aed" 74 | integrity sha512-m5KjptpIf1K0t0QL38uE+ol1n+aNn9MgRq++G3Zym1FlqfN+rThsXlp3cAgib14pIeXF7jk3UtJQOviwawFyYg== 75 | dependencies: 76 | fast-glob "^3.2.7" 77 | minimatch "^3.0.4" 78 | mkdirp "^1.0.4" 79 | path-browserify "^1.0.1" 80 | 81 | "@types/linkify-it@*": 82 | version "3.0.2" 83 | resolved "https://mirrors.cloud.tencent.com/npm/@types%2flinkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" 84 | integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== 85 | 86 | "@types/markdown-it@^12.2.3": 87 | version "12.2.3" 88 | resolved "https://mirrors.cloud.tencent.com/npm/@types%2fmarkdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" 89 | integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== 90 | dependencies: 91 | "@types/linkify-it" "*" 92 | "@types/mdurl" "*" 93 | 94 | "@types/mdurl@*": 95 | version "1.0.2" 96 | resolved "https://mirrors.cloud.tencent.com/npm/@types%2fmdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" 97 | integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== 98 | 99 | "@types/node@^16.11.12": 100 | version "16.11.12" 101 | resolved "http://mirrors.tencent.com/npm/@types%2fnode/-/node-16.11.12.tgz" 102 | integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== 103 | 104 | "@vitejs/plugin-vue@^1.10.2": 105 | version "1.10.2" 106 | resolved "https://mirrors.tencent.com/npm/@vitejs%2fplugin-vue/-/plugin-vue-1.10.2.tgz" 107 | integrity sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw== 108 | 109 | "@volar/code-gen@0.28.10": 110 | version "0.28.10" 111 | resolved "https://mirrors.cloud.tencent.com/npm/@volar%2fcode-gen/-/code-gen-0.28.10.tgz" 112 | integrity sha512-MybgBubg1im4MiFoiTUMmxKTC+KZJQfIO5g/TVnysEsCr4ssG0lG1rF3Gg3lbQKefdMiqsH5FNuMyqLC/bsWQg== 113 | dependencies: 114 | "@volar/shared" "0.28.10" 115 | "@volar/source-map" "0.28.10" 116 | 117 | "@volar/html2pug@0.28.10": 118 | version "0.28.10" 119 | resolved "https://mirrors.cloud.tencent.com/npm/@volar%2fhtml2pug/-/html2pug-0.28.10.tgz" 120 | integrity sha512-orcNnKyUPZZVb7pRvRHU7R8gk4abKZQELT0zXt2T7EbC5B8usmWNav6Sis9kVzV5Etj5h/IYutv7Df7PiKwLOQ== 121 | dependencies: 122 | domelementtype "^2.2.0" 123 | domhandler "^4.2.2" 124 | htmlparser2 "^7.1.2" 125 | pug "^3.0.2" 126 | 127 | "@volar/shared@0.28.10": 128 | version "0.28.10" 129 | resolved "https://mirrors.cloud.tencent.com/npm/@volar%2fshared/-/shared-0.28.10.tgz" 130 | integrity sha512-MzBEfBM5E5q4EfOd8Gkqmo+XTfbXiuT8IEWtfmpS8ax3GVeofkeAgzK/TadkatW/Nb2cKOaCYkmILpFKvDnDRQ== 131 | dependencies: 132 | upath "^2.0.1" 133 | vscode-jsonrpc "^8.0.0-next.2" 134 | vscode-uri "^3.0.2" 135 | 136 | "@volar/source-map@0.28.10": 137 | version "0.28.10" 138 | resolved "https://mirrors.cloud.tencent.com/npm/@volar%2fsource-map/-/source-map-0.28.10.tgz" 139 | integrity sha512-hQ2gclwP7yvZIdaVEC1LixViDPIO6JGkCBxAS8Erg9p2d0ruTyzazfd0NLaLuHLoMnxExILYNK2W05yQmIpRIA== 140 | dependencies: 141 | "@volar/shared" "0.28.10" 142 | 143 | "@volar/transforms@0.28.10": 144 | version "0.28.10" 145 | resolved "https://mirrors.cloud.tencent.com/npm/@volar%2ftransforms/-/transforms-0.28.10.tgz" 146 | integrity sha512-GOQN3amI733oFweKKjuBBOEOMwy0e/aEAnnJNavrrHa7LY6Ke/JfNsoWhi9Pb2FAPYd+WyruDDFX8yKHjQE1xw== 147 | dependencies: 148 | "@volar/shared" "0.28.10" 149 | vscode-languageserver "^8.0.0-next.2" 150 | 151 | "@vscode/emmet-helper@^2.8.0": 152 | version "2.8.2" 153 | resolved "https://mirrors.cloud.tencent.com/npm/@vscode%2femmet-helper/-/emmet-helper-2.8.2.tgz" 154 | integrity sha512-A/+pkBYQq2JTow1A2flfTmEOmiF780KpdkoX7VBjQ7wujeA+CFUPd17YdeIa9aim20+J5Jp7SFujPDwVFiQucQ== 155 | dependencies: 156 | emmet "^2.3.0" 157 | jsonc-parser "^2.3.0" 158 | vscode-languageserver-textdocument "^1.0.1" 159 | vscode-languageserver-types "^3.15.1" 160 | vscode-nls "^5.0.0" 161 | vscode-uri "^2.1.2" 162 | 163 | "@vue/compiler-core@3.2.24": 164 | version "3.2.24" 165 | resolved "https://mirrors.tencent.com/npm/@vue%2fcompiler-core/-/compiler-core-3.2.24.tgz" 166 | integrity sha512-A0SxB2HAggKzP57LDin5gfgWOTwFyGCtQ5MTMNBADnfQYALWnYuC8kMI0DhRSplGTWRvn9Z2DAnG8f35BnojuA== 167 | dependencies: 168 | "@babel/parser" "^7.15.0" 169 | "@vue/shared" "3.2.24" 170 | estree-walker "^2.0.2" 171 | source-map "^0.6.1" 172 | 173 | "@vue/compiler-dom@3.2.24", "@vue/compiler-dom@^3.2.20": 174 | version "3.2.24" 175 | resolved "https://mirrors.tencent.com/npm/@vue%2fcompiler-dom/-/compiler-dom-3.2.24.tgz" 176 | integrity sha512-KQEm8r0JFsrNNIfbD28pcwMvHpcJcwjVR1XWFcD0yyQ8eREd7IXhT7J6j7iNCSE/TIo78NOvkwbyX+lnIm836w== 177 | dependencies: 178 | "@vue/compiler-core" "3.2.24" 179 | "@vue/shared" "3.2.24" 180 | 181 | "@vue/compiler-sfc@3.2.24": 182 | version "3.2.24" 183 | resolved "https://mirrors.tencent.com/npm/@vue%2fcompiler-sfc/-/compiler-sfc-3.2.24.tgz" 184 | integrity sha512-YGPcIvVJp2qTPkuT6kT43Eo1xjstyY4bmuiSV31my4bQMBFVR26ANmifUSt759Blok71gK0WzfIZHbcOKYOeKA== 185 | dependencies: 186 | "@babel/parser" "^7.15.0" 187 | "@vue/compiler-core" "3.2.24" 188 | "@vue/compiler-dom" "3.2.24" 189 | "@vue/compiler-ssr" "3.2.24" 190 | "@vue/ref-transform" "3.2.24" 191 | "@vue/shared" "3.2.24" 192 | estree-walker "^2.0.2" 193 | magic-string "^0.25.7" 194 | postcss "^8.1.10" 195 | source-map "^0.6.1" 196 | 197 | "@vue/compiler-ssr@3.2.24": 198 | version "3.2.24" 199 | resolved "https://mirrors.tencent.com/npm/@vue%2fcompiler-ssr/-/compiler-ssr-3.2.24.tgz" 200 | integrity sha512-E1HHShNsGVWXxs68LDOUuI+Bzak9W/Ier/366aKDBFuwvfwgruwq6abhMfj6pSDZpwZ/PXnfliyl/m7qBSq6gw== 201 | dependencies: 202 | "@vue/compiler-dom" "3.2.24" 203 | "@vue/shared" "3.2.24" 204 | 205 | "@vue/devtools-api@^6.0.0-beta.18": 206 | version "6.0.0-beta.20.1" 207 | resolved "http://mirrors.tencent.com/npm/@vue%2fdevtools-api/-/devtools-api-6.0.0-beta.20.1.tgz" 208 | integrity sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q== 209 | 210 | "@vue/reactivity@3.2.24", "@vue/reactivity@^3.2.20": 211 | version "3.2.24" 212 | resolved "https://mirrors.tencent.com/npm/@vue%2freactivity/-/reactivity-3.2.24.tgz" 213 | integrity sha512-5eVsO9wfQ5erCMSRBjpqLkkI+LglJS7E0oLZJs2gsChpvOjH2Uwt3Hk1nVv0ywStnWg71Ykn3SyQwtnl7PknOQ== 214 | dependencies: 215 | "@vue/shared" "3.2.24" 216 | 217 | "@vue/ref-transform@3.2.24": 218 | version "3.2.24" 219 | resolved "https://mirrors.tencent.com/npm/@vue%2fref-transform/-/ref-transform-3.2.24.tgz" 220 | integrity sha512-j6oNbsGLvea2rF8GQB9w6q7UFL1So7J+t6ducaMeWPSyjYZ+slWpwPVK6mmyghg5oGqC41R+HC5BV036Y0KhXQ== 221 | dependencies: 222 | "@babel/parser" "^7.15.0" 223 | "@vue/compiler-core" "3.2.24" 224 | "@vue/shared" "3.2.24" 225 | estree-walker "^2.0.2" 226 | magic-string "^0.25.7" 227 | 228 | "@vue/runtime-core@3.2.24": 229 | version "3.2.24" 230 | resolved "https://mirrors.tencent.com/npm/@vue%2fruntime-core/-/runtime-core-3.2.24.tgz" 231 | integrity sha512-ReI06vGgYuW0G8FlOcAOzMklVDJSxKuRhYzT8j+a8BTfs1945kxo1Th28BPvasyYx8J+LMeZ0HqpPH9yGXvWvg== 232 | dependencies: 233 | "@vue/reactivity" "3.2.24" 234 | "@vue/shared" "3.2.24" 235 | 236 | "@vue/runtime-dom@3.2.24": 237 | version "3.2.24" 238 | resolved "https://mirrors.tencent.com/npm/@vue%2fruntime-dom/-/runtime-dom-3.2.24.tgz" 239 | integrity sha512-piqsabtIEUKkMGSJlOyKUonZEDtdwOpR6teQ8EKbH8PX9sxfAt9snLnFJldUhhyYrLIyDtnjwajfJ7/XtpD4JA== 240 | dependencies: 241 | "@vue/runtime-core" "3.2.24" 242 | "@vue/shared" "3.2.24" 243 | csstype "^2.6.8" 244 | 245 | "@vue/server-renderer@3.2.24": 246 | version "3.2.24" 247 | resolved "https://mirrors.tencent.com/npm/@vue%2fserver-renderer/-/server-renderer-3.2.24.tgz" 248 | integrity sha512-DqiCRDxTbv67Hw5ImiqnLIQbPGtIwWLLfEcVHoEnu1f21EMTB6LfoS69EQddd8VyfN5kfX3Fmz27/hrFPpRaMQ== 249 | dependencies: 250 | "@vue/compiler-ssr" "3.2.24" 251 | "@vue/shared" "3.2.24" 252 | 253 | "@vue/shared@3.2.24", "@vue/shared@^3.2.20": 254 | version "3.2.24" 255 | resolved "https://mirrors.tencent.com/npm/@vue%2fshared/-/shared-3.2.24.tgz" 256 | integrity sha512-BUgRiZCkCrqDps5aQ9av05xcge3rn092ztKIh17tHkeEFgP4zfXMQWBA2zfdoCdCEdBL26xtOv+FZYiOp9RUDA== 257 | 258 | acorn@^7.1.1: 259 | version "7.4.1" 260 | resolved "https://mirrors.tencent.com/npm/acorn/-/acorn-7.4.1.tgz" 261 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 262 | 263 | ansi-escapes@^4.2.1: 264 | version "4.3.2" 265 | resolved "https://mirrors.tencent.com/npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 266 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 267 | dependencies: 268 | type-fest "^0.21.3" 269 | 270 | ansi-regex@^5.0.1: 271 | version "5.0.1" 272 | resolved "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 273 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 274 | 275 | ansi-styles@^4.1.0: 276 | version "4.3.0" 277 | resolved "https://mirrors.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 278 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 279 | dependencies: 280 | color-convert "^2.0.1" 281 | 282 | argparse@^1.0.7: 283 | version "1.0.10" 284 | resolved "http://mirrors.tencent.com/npm/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 285 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 286 | dependencies: 287 | sprintf-js "~1.0.2" 288 | 289 | argparse@^2.0.1: 290 | version "2.0.1" 291 | resolved "http://mirrors.tencent.com/npm/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 292 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 293 | 294 | asap@~2.0.3: 295 | version "2.0.6" 296 | resolved "https://mirrors.tencent.com/npm/asap/-/asap-2.0.6.tgz" 297 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= 298 | 299 | assert-never@^1.2.1: 300 | version "1.2.1" 301 | resolved "https://mirrors.tencent.com/npm/assert-never/-/assert-never-1.2.1.tgz" 302 | integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== 303 | 304 | babel-walk@3.0.0-canary-5: 305 | version "3.0.0-canary-5" 306 | resolved "https://mirrors.tencent.com/npm/babel-walk/-/babel-walk-3.0.0-canary-5.tgz" 307 | integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== 308 | dependencies: 309 | "@babel/types" "^7.9.6" 310 | 311 | balanced-match@^1.0.0: 312 | version "1.0.2" 313 | resolved "https://mirrors.tencent.com/npm/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 314 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 315 | 316 | base64-js@^1.3.1: 317 | version "1.5.1" 318 | resolved "https://mirrors.cloud.tencent.com/npm/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 319 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 320 | 321 | bl@^4.1.0: 322 | version "4.1.0" 323 | resolved "https://mirrors.cloud.tencent.com/npm/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 324 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 325 | dependencies: 326 | buffer "^5.5.0" 327 | inherits "^2.0.4" 328 | readable-stream "^3.4.0" 329 | 330 | brace-expansion@^1.1.7: 331 | version "1.1.11" 332 | resolved "https://mirrors.tencent.com/npm/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 333 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 334 | dependencies: 335 | balanced-match "^1.0.0" 336 | concat-map "0.0.1" 337 | 338 | braces@^3.0.1: 339 | version "3.0.2" 340 | resolved "https://mirrors.tencent.com/npm/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 341 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 342 | dependencies: 343 | fill-range "^7.0.1" 344 | 345 | buffer@^5.5.0: 346 | version "5.7.1" 347 | resolved "https://mirrors.cloud.tencent.com/npm/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 348 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 349 | dependencies: 350 | base64-js "^1.3.1" 351 | ieee754 "^1.1.13" 352 | 353 | call-bind@^1.0.2: 354 | version "1.0.2" 355 | resolved "https://mirrors.tencent.com/npm/call-bind/-/call-bind-1.0.2.tgz" 356 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 357 | dependencies: 358 | function-bind "^1.1.1" 359 | get-intrinsic "^1.0.2" 360 | 361 | chalk@^4.1.0, chalk@^4.1.1: 362 | version "4.1.2" 363 | resolved "https://mirrors.tencent.com/npm/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 364 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 365 | dependencies: 366 | ansi-styles "^4.1.0" 367 | supports-color "^7.1.0" 368 | 369 | character-parser@^2.2.0: 370 | version "2.2.0" 371 | resolved "https://mirrors.tencent.com/npm/character-parser/-/character-parser-2.2.0.tgz" 372 | integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= 373 | dependencies: 374 | is-regex "^1.0.3" 375 | 376 | chardet@^0.7.0: 377 | version "0.7.0" 378 | resolved "https://mirrors.cloud.tencent.com/npm/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 379 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 380 | 381 | cli-cursor@^3.1.0: 382 | version "3.1.0" 383 | resolved "https://mirrors.cloud.tencent.com/npm/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 384 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 385 | dependencies: 386 | restore-cursor "^3.1.0" 387 | 388 | cli-spinners@^2.5.0: 389 | version "2.6.1" 390 | resolved "https://mirrors.cloud.tencent.com/npm/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" 391 | integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== 392 | 393 | cli-width@^3.0.0: 394 | version "3.0.0" 395 | resolved "https://mirrors.cloud.tencent.com/npm/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" 396 | integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== 397 | 398 | clone@^1.0.2: 399 | version "1.0.4" 400 | resolved "https://mirrors.cloud.tencent.com/npm/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 401 | integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 402 | 403 | code-block-writer@^11.0.0: 404 | version "11.0.0" 405 | resolved "https://mirrors.tencent.com/npm/code-block-writer/-/code-block-writer-11.0.0.tgz#5956fb186617f6740e2c3257757fea79315dd7d4" 406 | integrity sha512-GEqWvEWWsOvER+g9keO4ohFoD3ymwyCnqY3hoTr7GZipYFwEhMHJw+TtV0rfgRhNImM6QWZGO2XYjlJVyYT62w== 407 | dependencies: 408 | tslib "2.3.1" 409 | 410 | color-convert@^2.0.1: 411 | version "2.0.1" 412 | resolved "https://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 413 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 414 | dependencies: 415 | color-name "~1.1.4" 416 | 417 | color-name@~1.1.4: 418 | version "1.1.4" 419 | resolved "https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 420 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 421 | 422 | concat-map@0.0.1: 423 | version "0.0.1" 424 | resolved "https://mirrors.tencent.com/npm/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 425 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 426 | 427 | constantinople@^4.0.1: 428 | version "4.0.1" 429 | resolved "https://mirrors.tencent.com/npm/constantinople/-/constantinople-4.0.1.tgz" 430 | integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== 431 | dependencies: 432 | "@babel/parser" "^7.6.0" 433 | "@babel/types" "^7.6.1" 434 | 435 | copy-anything@^2.0.1: 436 | version "2.0.3" 437 | resolved "https://mirrors.cloud.tencent.com/npm/copy-anything/-/copy-anything-2.0.3.tgz" 438 | integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== 439 | dependencies: 440 | is-what "^3.12.0" 441 | 442 | csstype@^2.6.8: 443 | version "2.6.19" 444 | resolved "https://mirrors.tencent.com/npm/csstype/-/csstype-2.6.19.tgz" 445 | integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== 446 | 447 | debug@^3.2.6: 448 | version "3.2.7" 449 | resolved "https://mirrors.tencent.com/npm/debug/-/debug-3.2.7.tgz" 450 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 451 | dependencies: 452 | ms "^2.1.1" 453 | 454 | defaults@^1.0.3: 455 | version "1.0.3" 456 | resolved "https://mirrors.cloud.tencent.com/npm/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 457 | integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 458 | dependencies: 459 | clone "^1.0.2" 460 | 461 | doctypes@^1.1.0: 462 | version "1.1.0" 463 | resolved "https://mirrors.tencent.com/npm/doctypes/-/doctypes-1.1.0.tgz" 464 | integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= 465 | 466 | dom-serializer@^1.0.1: 467 | version "1.3.2" 468 | resolved "https://mirrors.tencent.com/npm/dom-serializer/-/dom-serializer-1.3.2.tgz" 469 | integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== 470 | dependencies: 471 | domelementtype "^2.0.1" 472 | domhandler "^4.2.0" 473 | entities "^2.0.0" 474 | 475 | domelementtype@^2.0.1, domelementtype@^2.2.0: 476 | version "2.2.0" 477 | resolved "http://mirrors.tencent.com/npm/domelementtype/-/domelementtype-2.2.0.tgz" 478 | integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== 479 | 480 | domhandler@^4.2.0, domhandler@^4.2.2: 481 | version "4.3.0" 482 | resolved "http://mirrors.tencent.com/npm/domhandler/-/domhandler-4.3.0.tgz" 483 | integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== 484 | dependencies: 485 | domelementtype "^2.2.0" 486 | 487 | domutils@^2.8.0: 488 | version "2.8.0" 489 | resolved "https://mirrors.tencent.com/npm/domutils/-/domutils-2.8.0.tgz" 490 | integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== 491 | dependencies: 492 | dom-serializer "^1.0.1" 493 | domelementtype "^2.2.0" 494 | domhandler "^4.2.0" 495 | 496 | emmet@^2.3.0: 497 | version "2.3.4" 498 | resolved "https://mirrors.cloud.tencent.com/npm/emmet/-/emmet-2.3.4.tgz" 499 | integrity sha512-3IqSwmO+N2ZGeuhDyhV/TIOJFUbkChi53bcasSNRE7Yd+4eorbbYz4e53TpMECt38NtYkZNupQCZRlwdAYA42A== 500 | dependencies: 501 | "@emmetio/abbreviation" "^2.2.2" 502 | "@emmetio/css-abbreviation" "^2.1.4" 503 | 504 | emoji-regex@^8.0.0: 505 | version "8.0.0" 506 | resolved "https://mirrors.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 507 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 508 | 509 | entities@^2.0.0: 510 | version "2.2.0" 511 | resolved "https://mirrors.tencent.com/npm/entities/-/entities-2.2.0.tgz" 512 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 513 | 514 | entities@^3.0.1: 515 | version "3.0.1" 516 | resolved "https://mirrors.tencent.com/npm/entities/-/entities-3.0.1.tgz" 517 | integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== 518 | 519 | entities@~2.1.0: 520 | version "2.1.0" 521 | resolved "http://mirrors.tencent.com/npm/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" 522 | integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 523 | 524 | errno@^0.1.1: 525 | version "0.1.8" 526 | resolved "https://mirrors.tencent.com/npm/errno/-/errno-0.1.8.tgz" 527 | integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== 528 | dependencies: 529 | prr "~1.0.1" 530 | 531 | esbuild-android-arm64@0.13.15: 532 | version "0.13.15" 533 | resolved "http://mirrors.tencent.com/npm/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 534 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 535 | 536 | esbuild-darwin-64@0.13.15: 537 | version "0.13.15" 538 | resolved "https://mirrors.tencent.com/npm/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz" 539 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 540 | 541 | esbuild-darwin-arm64@0.13.15: 542 | version "0.13.15" 543 | resolved "http://mirrors.tencent.com/npm/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 544 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 545 | 546 | esbuild-freebsd-64@0.13.15: 547 | version "0.13.15" 548 | resolved "http://mirrors.tencent.com/npm/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 549 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 550 | 551 | esbuild-freebsd-arm64@0.13.15: 552 | version "0.13.15" 553 | resolved "http://mirrors.tencent.com/npm/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 554 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 555 | 556 | esbuild-linux-32@0.13.15: 557 | version "0.13.15" 558 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 559 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 560 | 561 | esbuild-linux-64@0.13.15: 562 | version "0.13.15" 563 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 564 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 565 | 566 | esbuild-linux-arm64@0.13.15: 567 | version "0.13.15" 568 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 569 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 570 | 571 | esbuild-linux-arm@0.13.15: 572 | version "0.13.15" 573 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 574 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 575 | 576 | esbuild-linux-mips64le@0.13.15: 577 | version "0.13.15" 578 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 579 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 580 | 581 | esbuild-linux-ppc64le@0.13.15: 582 | version "0.13.15" 583 | resolved "http://mirrors.tencent.com/npm/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 584 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 585 | 586 | esbuild-netbsd-64@0.13.15: 587 | version "0.13.15" 588 | resolved "http://mirrors.tencent.com/npm/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 589 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 590 | 591 | esbuild-openbsd-64@0.13.15: 592 | version "0.13.15" 593 | resolved "http://mirrors.tencent.com/npm/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 594 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 595 | 596 | esbuild-sunos-64@0.13.15: 597 | version "0.13.15" 598 | resolved "http://mirrors.tencent.com/npm/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 599 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 600 | 601 | esbuild-windows-32@0.13.15: 602 | version "0.13.15" 603 | resolved "http://mirrors.tencent.com/npm/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 604 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 605 | 606 | esbuild-windows-64@0.13.15: 607 | version "0.13.15" 608 | resolved "http://mirrors.tencent.com/npm/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 609 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 610 | 611 | esbuild-windows-arm64@0.13.15: 612 | version "0.13.15" 613 | resolved "http://mirrors.tencent.com/npm/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 614 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 615 | 616 | esbuild@^0.13.12: 617 | version "0.13.15" 618 | resolved "https://mirrors.tencent.com/npm/esbuild/-/esbuild-0.13.15.tgz" 619 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 620 | optionalDependencies: 621 | esbuild-android-arm64 "0.13.15" 622 | esbuild-darwin-64 "0.13.15" 623 | esbuild-darwin-arm64 "0.13.15" 624 | esbuild-freebsd-64 "0.13.15" 625 | esbuild-freebsd-arm64 "0.13.15" 626 | esbuild-linux-32 "0.13.15" 627 | esbuild-linux-64 "0.13.15" 628 | esbuild-linux-arm "0.13.15" 629 | esbuild-linux-arm64 "0.13.15" 630 | esbuild-linux-mips64le "0.13.15" 631 | esbuild-linux-ppc64le "0.13.15" 632 | esbuild-netbsd-64 "0.13.15" 633 | esbuild-openbsd-64 "0.13.15" 634 | esbuild-sunos-64 "0.13.15" 635 | esbuild-windows-32 "0.13.15" 636 | esbuild-windows-64 "0.13.15" 637 | esbuild-windows-arm64 "0.13.15" 638 | 639 | escape-string-regexp@^1.0.5: 640 | version "1.0.5" 641 | resolved "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 642 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 643 | 644 | esprima@^4.0.0: 645 | version "4.0.1" 646 | resolved "http://mirrors.tencent.com/npm/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 647 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 648 | 649 | estree-walker@^2.0.1, estree-walker@^2.0.2: 650 | version "2.0.2" 651 | resolved "https://mirrors.tencent.com/npm/estree-walker/-/estree-walker-2.0.2.tgz" 652 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 653 | 654 | extend-shallow@^2.0.1: 655 | version "2.0.1" 656 | resolved "http://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 657 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 658 | dependencies: 659 | is-extendable "^0.1.0" 660 | 661 | external-editor@^3.0.3: 662 | version "3.1.0" 663 | resolved "https://mirrors.cloud.tencent.com/npm/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 664 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 665 | dependencies: 666 | chardet "^0.7.0" 667 | iconv-lite "^0.4.24" 668 | tmp "^0.0.33" 669 | 670 | fast-glob@^3.2.7: 671 | version "3.2.7" 672 | resolved "https://mirrors.tencent.com/npm/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 673 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 674 | dependencies: 675 | "@nodelib/fs.stat" "^2.0.2" 676 | "@nodelib/fs.walk" "^1.2.3" 677 | glob-parent "^5.1.2" 678 | merge2 "^1.3.0" 679 | micromatch "^4.0.4" 680 | 681 | fastq@^1.6.0: 682 | version "1.13.0" 683 | resolved "https://mirrors.tencent.com/npm/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 684 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 685 | dependencies: 686 | reusify "^1.0.4" 687 | 688 | figures@^3.0.0: 689 | version "3.2.0" 690 | resolved "https://mirrors.cloud.tencent.com/npm/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 691 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 692 | dependencies: 693 | escape-string-regexp "^1.0.5" 694 | 695 | fill-range@^7.0.1: 696 | version "7.0.1" 697 | resolved "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 698 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 699 | dependencies: 700 | to-regex-range "^5.0.1" 701 | 702 | fs-extra@^10.0.0: 703 | version "10.0.0" 704 | resolved "https://mirrors.cloud.tencent.com/npm/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" 705 | integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== 706 | dependencies: 707 | graceful-fs "^4.2.0" 708 | jsonfile "^6.0.1" 709 | universalify "^2.0.0" 710 | 711 | fsevents@~2.3.2: 712 | version "2.3.2" 713 | resolved "http://mirrors.tencent.com/npm/fsevents/-/fsevents-2.3.2.tgz" 714 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 715 | 716 | function-bind@^1.1.1: 717 | version "1.1.1" 718 | resolved "https://mirrors.tencent.com/npm/function-bind/-/function-bind-1.1.1.tgz" 719 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 720 | 721 | get-intrinsic@^1.0.2: 722 | version "1.1.1" 723 | resolved "https://mirrors.tencent.com/npm/get-intrinsic/-/get-intrinsic-1.1.1.tgz" 724 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 725 | dependencies: 726 | function-bind "^1.1.1" 727 | has "^1.0.3" 728 | has-symbols "^1.0.1" 729 | 730 | glob-parent@^5.1.2: 731 | version "5.1.2" 732 | resolved "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 733 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 734 | dependencies: 735 | is-glob "^4.0.1" 736 | 737 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 738 | version "4.2.8" 739 | resolved "https://mirrors.tencent.com/npm/graceful-fs/-/graceful-fs-4.2.8.tgz" 740 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 741 | 742 | gray-matter@^4.0.3: 743 | version "4.0.3" 744 | resolved "http://mirrors.tencent.com/npm/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" 745 | integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== 746 | dependencies: 747 | js-yaml "^3.13.1" 748 | kind-of "^6.0.2" 749 | section-matter "^1.0.0" 750 | strip-bom-string "^1.0.0" 751 | 752 | handlebars@^4.7.7: 753 | version "4.7.7" 754 | resolved "https://mirrors.cloud.tencent.com/npm/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" 755 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== 756 | dependencies: 757 | minimist "^1.2.5" 758 | neo-async "^2.6.0" 759 | source-map "^0.6.1" 760 | wordwrap "^1.0.0" 761 | optionalDependencies: 762 | uglify-js "^3.1.4" 763 | 764 | has-flag@^4.0.0: 765 | version "4.0.0" 766 | resolved "https://mirrors.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 767 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 768 | 769 | has-symbols@^1.0.1, has-symbols@^1.0.2: 770 | version "1.0.2" 771 | resolved "https://mirrors.tencent.com/npm/has-symbols/-/has-symbols-1.0.2.tgz" 772 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 773 | 774 | has-tostringtag@^1.0.0: 775 | version "1.0.0" 776 | resolved "https://mirrors.tencent.com/npm/has-tostringtag/-/has-tostringtag-1.0.0.tgz" 777 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 778 | dependencies: 779 | has-symbols "^1.0.2" 780 | 781 | has@^1.0.3: 782 | version "1.0.3" 783 | resolved "https://mirrors.tencent.com/npm/has/-/has-1.0.3.tgz" 784 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 785 | dependencies: 786 | function-bind "^1.1.1" 787 | 788 | htmlparser2@^7.1.2: 789 | version "7.2.0" 790 | resolved "https://mirrors.tencent.com/npm/htmlparser2/-/htmlparser2-7.2.0.tgz" 791 | integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== 792 | dependencies: 793 | domelementtype "^2.0.1" 794 | domhandler "^4.2.2" 795 | domutils "^2.8.0" 796 | entities "^3.0.1" 797 | 798 | iconv-lite@^0.4.24, iconv-lite@^0.4.4: 799 | version "0.4.24" 800 | resolved "https://mirrors.tencent.com/npm/iconv-lite/-/iconv-lite-0.4.24.tgz" 801 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 802 | dependencies: 803 | safer-buffer ">= 2.1.2 < 3" 804 | 805 | ieee754@^1.1.13: 806 | version "1.2.1" 807 | resolved "https://mirrors.cloud.tencent.com/npm/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 808 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 809 | 810 | image-size@~0.5.0: 811 | version "0.5.5" 812 | resolved "https://mirrors.tencent.com/npm/image-size/-/image-size-0.5.5.tgz" 813 | integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= 814 | 815 | inherits@^2.0.3, inherits@^2.0.4: 816 | version "2.0.4" 817 | resolved "https://mirrors.tencent.com/npm/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 818 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 819 | 820 | inquirer@^8.2.0: 821 | version "8.2.0" 822 | resolved "https://mirrors.cloud.tencent.com/npm/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" 823 | integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== 824 | dependencies: 825 | ansi-escapes "^4.2.1" 826 | chalk "^4.1.1" 827 | cli-cursor "^3.1.0" 828 | cli-width "^3.0.0" 829 | external-editor "^3.0.3" 830 | figures "^3.0.0" 831 | lodash "^4.17.21" 832 | mute-stream "0.0.8" 833 | ora "^5.4.1" 834 | run-async "^2.4.0" 835 | rxjs "^7.2.0" 836 | string-width "^4.1.0" 837 | strip-ansi "^6.0.0" 838 | through "^2.3.6" 839 | 840 | is-core-module@^2.2.0: 841 | version "2.8.0" 842 | resolved "https://mirrors.tencent.com/npm/is-core-module/-/is-core-module-2.8.0.tgz" 843 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 844 | dependencies: 845 | has "^1.0.3" 846 | 847 | is-expression@^4.0.0: 848 | version "4.0.0" 849 | resolved "https://mirrors.tencent.com/npm/is-expression/-/is-expression-4.0.0.tgz" 850 | integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== 851 | dependencies: 852 | acorn "^7.1.1" 853 | object-assign "^4.1.1" 854 | 855 | is-extendable@^0.1.0: 856 | version "0.1.1" 857 | resolved "http://mirrors.tencent.com/npm/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 858 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 859 | 860 | is-extglob@^2.1.1: 861 | version "2.1.1" 862 | resolved "https://mirrors.tencent.com/npm/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 863 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 864 | 865 | is-fullwidth-code-point@^3.0.0: 866 | version "3.0.0" 867 | resolved "https://mirrors.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 868 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 869 | 870 | is-glob@^4.0.1: 871 | version "4.0.3" 872 | resolved "https://mirrors.tencent.com/npm/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 873 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 874 | dependencies: 875 | is-extglob "^2.1.1" 876 | 877 | is-interactive@^1.0.0: 878 | version "1.0.0" 879 | resolved "https://mirrors.cloud.tencent.com/npm/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" 880 | integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== 881 | 882 | is-number@^7.0.0: 883 | version "7.0.0" 884 | resolved "https://mirrors.tencent.com/npm/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 885 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 886 | 887 | is-promise@^2.0.0: 888 | version "2.2.2" 889 | resolved "https://mirrors.tencent.com/npm/is-promise/-/is-promise-2.2.2.tgz" 890 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== 891 | 892 | is-regex@^1.0.3: 893 | version "1.1.4" 894 | resolved "https://mirrors.tencent.com/npm/is-regex/-/is-regex-1.1.4.tgz" 895 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 896 | dependencies: 897 | call-bind "^1.0.2" 898 | has-tostringtag "^1.0.0" 899 | 900 | is-unicode-supported@^0.1.0: 901 | version "0.1.0" 902 | resolved "https://mirrors.cloud.tencent.com/npm/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 903 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 904 | 905 | is-what@^3.12.0: 906 | version "3.14.1" 907 | resolved "https://mirrors.tencent.com/npm/is-what/-/is-what-3.14.1.tgz" 908 | integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== 909 | 910 | js-stringify@^1.0.2: 911 | version "1.0.2" 912 | resolved "https://mirrors.tencent.com/npm/js-stringify/-/js-stringify-1.0.2.tgz" 913 | integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= 914 | 915 | js-yaml@^3.13.1: 916 | version "3.14.1" 917 | resolved "http://mirrors.tencent.com/npm/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 918 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 919 | dependencies: 920 | argparse "^1.0.7" 921 | esprima "^4.0.0" 922 | 923 | jsonc-parser@^2.3.0: 924 | version "2.3.1" 925 | resolved "https://mirrors.tencent.com/npm/jsonc-parser/-/jsonc-parser-2.3.1.tgz" 926 | integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== 927 | 928 | jsonc-parser@^3.0.0: 929 | version "3.0.0" 930 | resolved "https://mirrors.tencent.com/npm/jsonc-parser/-/jsonc-parser-3.0.0.tgz" 931 | integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== 932 | 933 | jsonfile@^6.0.1: 934 | version "6.1.0" 935 | resolved "https://mirrors.cloud.tencent.com/npm/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 936 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 937 | dependencies: 938 | universalify "^2.0.0" 939 | optionalDependencies: 940 | graceful-fs "^4.1.6" 941 | 942 | jstransformer@1.0.0: 943 | version "1.0.0" 944 | resolved "https://mirrors.tencent.com/npm/jstransformer/-/jstransformer-1.0.0.tgz" 945 | integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= 946 | dependencies: 947 | is-promise "^2.0.0" 948 | promise "^7.0.1" 949 | 950 | kind-of@^6.0.0, kind-of@^6.0.2: 951 | version "6.0.3" 952 | resolved "http://mirrors.tencent.com/npm/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 953 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 954 | 955 | less@^4.1.2: 956 | version "4.1.2" 957 | resolved "http://mirrors.cloud.tencent.com/npm/less/-/less-4.1.2.tgz" 958 | integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== 959 | dependencies: 960 | copy-anything "^2.0.1" 961 | parse-node-version "^1.0.1" 962 | tslib "^2.3.0" 963 | optionalDependencies: 964 | errno "^0.1.1" 965 | graceful-fs "^4.1.2" 966 | image-size "~0.5.0" 967 | make-dir "^2.1.0" 968 | mime "^1.4.1" 969 | needle "^2.5.2" 970 | source-map "~0.6.0" 971 | 972 | linkify-it@^3.0.1: 973 | version "3.0.3" 974 | resolved "https://mirrors.cloud.tencent.com/npm/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" 975 | integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== 976 | dependencies: 977 | uc.micro "^1.0.1" 978 | 979 | lodash@^4.17.21: 980 | version "4.17.21" 981 | resolved "https://mirrors.tencent.com/npm/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 982 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 983 | 984 | log-symbols@^4.1.0: 985 | version "4.1.0" 986 | resolved "https://mirrors.cloud.tencent.com/npm/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 987 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 988 | dependencies: 989 | chalk "^4.1.0" 990 | is-unicode-supported "^0.1.0" 991 | 992 | lru-cache@^6.0.0: 993 | version "6.0.0" 994 | resolved "https://mirrors.tencent.com/npm/lru-cache/-/lru-cache-6.0.0.tgz" 995 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 996 | dependencies: 997 | yallist "^4.0.0" 998 | 999 | magic-string@^0.25.7: 1000 | version "0.25.7" 1001 | resolved "https://mirrors.tencent.com/npm/magic-string/-/magic-string-0.25.7.tgz" 1002 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 1003 | dependencies: 1004 | sourcemap-codec "^1.4.4" 1005 | 1006 | make-dir@^2.1.0: 1007 | version "2.1.0" 1008 | resolved "https://mirrors.tencent.com/npm/make-dir/-/make-dir-2.1.0.tgz" 1009 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1010 | dependencies: 1011 | pify "^4.0.1" 1012 | semver "^5.6.0" 1013 | 1014 | markdown-it@^12.2.0: 1015 | version "12.3.0" 1016 | resolved "https://mirrors.cloud.tencent.com/npm/markdown-it/-/markdown-it-12.3.0.tgz#11490c61b412b8f41530319c005ecdcd4367171f" 1017 | integrity sha512-T345UZZ6ejQWTjG6PSEHplzNy5m4kF6zvUpHVDv8Snl/pEU0OxIK0jGg8YLVNwJvT8E0YJC7/2UvssJDk/wQCQ== 1018 | dependencies: 1019 | argparse "^2.0.1" 1020 | entities "~2.1.0" 1021 | linkify-it "^3.0.1" 1022 | mdurl "^1.0.1" 1023 | uc.micro "^1.0.5" 1024 | 1025 | mdurl@^1.0.1: 1026 | version "1.0.1" 1027 | resolved "http://mirrors.tencent.com/npm/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 1028 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 1029 | 1030 | merge2@^1.3.0: 1031 | version "1.4.1" 1032 | resolved "https://mirrors.tencent.com/npm/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1033 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1034 | 1035 | micromatch@^4.0.4: 1036 | version "4.0.4" 1037 | resolved "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 1038 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 1039 | dependencies: 1040 | braces "^3.0.1" 1041 | picomatch "^2.2.3" 1042 | 1043 | mime@^1.4.1: 1044 | version "1.6.0" 1045 | resolved "https://mirrors.tencent.com/npm/mime/-/mime-1.6.0.tgz" 1046 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1047 | 1048 | mimic-fn@^2.1.0: 1049 | version "2.1.0" 1050 | resolved "https://mirrors.cloud.tencent.com/npm/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1051 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1052 | 1053 | minimatch@^3.0.4: 1054 | version "3.0.4" 1055 | resolved "https://mirrors.tencent.com/npm/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1056 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1057 | dependencies: 1058 | brace-expansion "^1.1.7" 1059 | 1060 | minimist@^1.2.5: 1061 | version "1.2.5" 1062 | resolved "https://mirrors.tencent.com/npm/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1063 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1064 | 1065 | mkdirp@^1.0.4: 1066 | version "1.0.4" 1067 | resolved "https://mirrors.tencent.com/npm/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1068 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1069 | 1070 | ms@^2.1.1: 1071 | version "2.1.3" 1072 | resolved "https://mirrors.tencent.com/npm/ms/-/ms-2.1.3.tgz" 1073 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1074 | 1075 | mute-stream@0.0.8: 1076 | version "0.0.8" 1077 | resolved "https://mirrors.cloud.tencent.com/npm/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1078 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1079 | 1080 | nanoid@^3.1.30: 1081 | version "3.1.30" 1082 | resolved "https://mirrors.tencent.com/npm/nanoid/-/nanoid-3.1.30.tgz" 1083 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 1084 | 1085 | needle@^2.5.2: 1086 | version "2.9.1" 1087 | resolved "https://mirrors.tencent.com/npm/needle/-/needle-2.9.1.tgz" 1088 | integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== 1089 | dependencies: 1090 | debug "^3.2.6" 1091 | iconv-lite "^0.4.4" 1092 | sax "^1.2.4" 1093 | 1094 | neo-async@^2.6.0: 1095 | version "2.6.2" 1096 | resolved "https://mirrors.tencent.com/npm/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1097 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1098 | 1099 | object-assign@^4.1.1: 1100 | version "4.1.1" 1101 | resolved "https://mirrors.tencent.com/npm/object-assign/-/object-assign-4.1.1.tgz" 1102 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1103 | 1104 | onetime@^5.1.0: 1105 | version "5.1.2" 1106 | resolved "https://mirrors.tencent.com/npm/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1107 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1108 | dependencies: 1109 | mimic-fn "^2.1.0" 1110 | 1111 | ora@^5.4.1: 1112 | version "5.4.1" 1113 | resolved "https://mirrors.cloud.tencent.com/npm/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" 1114 | integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== 1115 | dependencies: 1116 | bl "^4.1.0" 1117 | chalk "^4.1.0" 1118 | cli-cursor "^3.1.0" 1119 | cli-spinners "^2.5.0" 1120 | is-interactive "^1.0.0" 1121 | is-unicode-supported "^0.1.0" 1122 | log-symbols "^4.1.0" 1123 | strip-ansi "^6.0.0" 1124 | wcwidth "^1.0.1" 1125 | 1126 | os-tmpdir@~1.0.2: 1127 | version "1.0.2" 1128 | resolved "https://mirrors.cloud.tencent.com/npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1129 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1130 | 1131 | parse-node-version@^1.0.1: 1132 | version "1.0.1" 1133 | resolved "https://mirrors.tencent.com/npm/parse-node-version/-/parse-node-version-1.0.1.tgz" 1134 | integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== 1135 | 1136 | path-browserify@^1.0.1: 1137 | version "1.0.1" 1138 | resolved "https://mirrors.tencent.com/npm/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" 1139 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== 1140 | 1141 | path-parse@^1.0.6: 1142 | version "1.0.7" 1143 | resolved "https://mirrors.tencent.com/npm/path-parse/-/path-parse-1.0.7.tgz" 1144 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1145 | 1146 | picocolors@^1.0.0: 1147 | version "1.0.0" 1148 | resolved "https://mirrors.tencent.com/npm/picocolors/-/picocolors-1.0.0.tgz" 1149 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1150 | 1151 | picomatch@^2.2.2, picomatch@^2.2.3: 1152 | version "2.3.0" 1153 | resolved "http://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1154 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1155 | 1156 | pify@^4.0.1: 1157 | version "4.0.1" 1158 | resolved "https://mirrors.tencent.com/npm/pify/-/pify-4.0.1.tgz" 1159 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1160 | 1161 | postcss@^8.1.10, postcss@^8.3.11: 1162 | version "8.4.4" 1163 | resolved "https://mirrors.tencent.com/npm/postcss/-/postcss-8.4.4.tgz" 1164 | integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q== 1165 | dependencies: 1166 | nanoid "^3.1.30" 1167 | picocolors "^1.0.0" 1168 | source-map-js "^1.0.1" 1169 | 1170 | prismjs@^1.25.0: 1171 | version "1.25.0" 1172 | resolved "http://mirrors.tencent.com/npm/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" 1173 | integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== 1174 | 1175 | promise@^7.0.1: 1176 | version "7.3.1" 1177 | resolved "https://mirrors.tencent.com/npm/promise/-/promise-7.3.1.tgz" 1178 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== 1179 | dependencies: 1180 | asap "~2.0.3" 1181 | 1182 | prr@~1.0.1: 1183 | version "1.0.1" 1184 | resolved "https://mirrors.tencent.com/npm/prr/-/prr-1.0.1.tgz" 1185 | integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= 1186 | 1187 | pug-attrs@^3.0.0: 1188 | version "3.0.0" 1189 | resolved "https://mirrors.tencent.com/npm/pug-attrs/-/pug-attrs-3.0.0.tgz" 1190 | integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== 1191 | dependencies: 1192 | constantinople "^4.0.1" 1193 | js-stringify "^1.0.2" 1194 | pug-runtime "^3.0.0" 1195 | 1196 | pug-code-gen@^3.0.2: 1197 | version "3.0.2" 1198 | resolved "https://mirrors.tencent.com/npm/pug-code-gen/-/pug-code-gen-3.0.2.tgz" 1199 | integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== 1200 | dependencies: 1201 | constantinople "^4.0.1" 1202 | doctypes "^1.1.0" 1203 | js-stringify "^1.0.2" 1204 | pug-attrs "^3.0.0" 1205 | pug-error "^2.0.0" 1206 | pug-runtime "^3.0.0" 1207 | void-elements "^3.1.0" 1208 | with "^7.0.0" 1209 | 1210 | pug-error@^2.0.0: 1211 | version "2.0.0" 1212 | resolved "https://mirrors.tencent.com/npm/pug-error/-/pug-error-2.0.0.tgz" 1213 | integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== 1214 | 1215 | pug-filters@^4.0.0: 1216 | version "4.0.0" 1217 | resolved "https://mirrors.tencent.com/npm/pug-filters/-/pug-filters-4.0.0.tgz" 1218 | integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== 1219 | dependencies: 1220 | constantinople "^4.0.1" 1221 | jstransformer "1.0.0" 1222 | pug-error "^2.0.0" 1223 | pug-walk "^2.0.0" 1224 | resolve "^1.15.1" 1225 | 1226 | pug-lexer@^5.0.1: 1227 | version "5.0.1" 1228 | resolved "https://mirrors.tencent.com/npm/pug-lexer/-/pug-lexer-5.0.1.tgz" 1229 | integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== 1230 | dependencies: 1231 | character-parser "^2.2.0" 1232 | is-expression "^4.0.0" 1233 | pug-error "^2.0.0" 1234 | 1235 | pug-linker@^4.0.0: 1236 | version "4.0.0" 1237 | resolved "https://mirrors.tencent.com/npm/pug-linker/-/pug-linker-4.0.0.tgz" 1238 | integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== 1239 | dependencies: 1240 | pug-error "^2.0.0" 1241 | pug-walk "^2.0.0" 1242 | 1243 | pug-load@^3.0.0: 1244 | version "3.0.0" 1245 | resolved "https://mirrors.tencent.com/npm/pug-load/-/pug-load-3.0.0.tgz" 1246 | integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== 1247 | dependencies: 1248 | object-assign "^4.1.1" 1249 | pug-walk "^2.0.0" 1250 | 1251 | pug-parser@^6.0.0: 1252 | version "6.0.0" 1253 | resolved "https://mirrors.tencent.com/npm/pug-parser/-/pug-parser-6.0.0.tgz" 1254 | integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== 1255 | dependencies: 1256 | pug-error "^2.0.0" 1257 | token-stream "1.0.0" 1258 | 1259 | pug-runtime@^3.0.0, pug-runtime@^3.0.1: 1260 | version "3.0.1" 1261 | resolved "https://mirrors.tencent.com/npm/pug-runtime/-/pug-runtime-3.0.1.tgz" 1262 | integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== 1263 | 1264 | pug-strip-comments@^2.0.0: 1265 | version "2.0.0" 1266 | resolved "https://mirrors.tencent.com/npm/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz" 1267 | integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== 1268 | dependencies: 1269 | pug-error "^2.0.0" 1270 | 1271 | pug-walk@^2.0.0: 1272 | version "2.0.0" 1273 | resolved "https://mirrors.tencent.com/npm/pug-walk/-/pug-walk-2.0.0.tgz" 1274 | integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== 1275 | 1276 | pug@^3.0.2: 1277 | version "3.0.2" 1278 | resolved "https://mirrors.tencent.com/npm/pug/-/pug-3.0.2.tgz" 1279 | integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== 1280 | dependencies: 1281 | pug-code-gen "^3.0.2" 1282 | pug-filters "^4.0.0" 1283 | pug-lexer "^5.0.1" 1284 | pug-linker "^4.0.0" 1285 | pug-load "^3.0.0" 1286 | pug-parser "^6.0.0" 1287 | pug-runtime "^3.0.1" 1288 | pug-strip-comments "^2.0.0" 1289 | 1290 | queue-microtask@^1.2.2: 1291 | version "1.2.3" 1292 | resolved "https://mirrors.tencent.com/npm/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1293 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1294 | 1295 | readable-stream@^3.4.0: 1296 | version "3.6.0" 1297 | resolved "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1298 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1299 | dependencies: 1300 | inherits "^2.0.3" 1301 | string_decoder "^1.1.1" 1302 | util-deprecate "^1.0.1" 1303 | 1304 | request-light@^0.5.4: 1305 | version "0.5.5" 1306 | resolved "https://mirrors.cloud.tencent.com/npm/request-light/-/request-light-0.5.5.tgz" 1307 | integrity sha512-AvjfJuhyT6dYfhtIBF+IpTPQco+Td1QJ6PsIJ5xui110vQ5p9HxHk+m1XJqXazLQT6CxxSx9eNv6R/+fu4bZig== 1308 | 1309 | resolve@^1.15.1, resolve@^1.20.0: 1310 | version "1.20.0" 1311 | resolved "https://mirrors.tencent.com/npm/resolve/-/resolve-1.20.0.tgz" 1312 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1313 | dependencies: 1314 | is-core-module "^2.2.0" 1315 | path-parse "^1.0.6" 1316 | 1317 | restore-cursor@^3.1.0: 1318 | version "3.1.0" 1319 | resolved "https://mirrors.cloud.tencent.com/npm/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1320 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1321 | dependencies: 1322 | onetime "^5.1.0" 1323 | signal-exit "^3.0.2" 1324 | 1325 | reusify@^1.0.4: 1326 | version "1.0.4" 1327 | resolved "https://mirrors.tencent.com/npm/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1328 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1329 | 1330 | rollup@^2.59.0: 1331 | version "2.61.0" 1332 | resolved "https://mirrors.tencent.com/npm/rollup/-/rollup-2.61.0.tgz" 1333 | integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA== 1334 | optionalDependencies: 1335 | fsevents "~2.3.2" 1336 | 1337 | run-async@^2.4.0: 1338 | version "2.4.1" 1339 | resolved "https://mirrors.cloud.tencent.com/npm/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 1340 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 1341 | 1342 | run-parallel@^1.1.9: 1343 | version "1.2.0" 1344 | resolved "https://mirrors.tencent.com/npm/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1345 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1346 | dependencies: 1347 | queue-microtask "^1.2.2" 1348 | 1349 | rxjs@^7.2.0: 1350 | version "7.4.0" 1351 | resolved "https://mirrors.cloud.tencent.com/npm/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" 1352 | integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== 1353 | dependencies: 1354 | tslib "~2.1.0" 1355 | 1356 | safe-buffer@~5.2.0: 1357 | version "5.2.1" 1358 | resolved "https://mirrors.tencent.com/npm/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1359 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1360 | 1361 | "safer-buffer@>= 2.1.2 < 3": 1362 | version "2.1.2" 1363 | resolved "https://mirrors.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz" 1364 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1365 | 1366 | sax@^1.2.4: 1367 | version "1.2.4" 1368 | resolved "https://mirrors.tencent.com/npm/sax/-/sax-1.2.4.tgz" 1369 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1370 | 1371 | section-matter@^1.0.0: 1372 | version "1.0.0" 1373 | resolved "http://mirrors.tencent.com/npm/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" 1374 | integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== 1375 | dependencies: 1376 | extend-shallow "^2.0.1" 1377 | kind-of "^6.0.0" 1378 | 1379 | semver@^5.6.0: 1380 | version "5.7.1" 1381 | resolved "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz" 1382 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1383 | 1384 | semver@^7.3.5: 1385 | version "7.3.5" 1386 | resolved "https://mirrors.tencent.com/npm/semver/-/semver-7.3.5.tgz" 1387 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1388 | dependencies: 1389 | lru-cache "^6.0.0" 1390 | 1391 | signal-exit@^3.0.2: 1392 | version "3.0.6" 1393 | resolved "https://mirrors.tencent.com/npm/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" 1394 | integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== 1395 | 1396 | source-map-js@^1.0.1: 1397 | version "1.0.1" 1398 | resolved "http://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.0.1.tgz" 1399 | integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== 1400 | 1401 | source-map@^0.6.1, source-map@~0.6.0: 1402 | version "0.6.1" 1403 | resolved "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz" 1404 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1405 | 1406 | sourcemap-codec@^1.4.4: 1407 | version "1.4.8" 1408 | resolved "https://mirrors.tencent.com/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" 1409 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1410 | 1411 | sprintf-js@~1.0.2: 1412 | version "1.0.3" 1413 | resolved "http://mirrors.tencent.com/npm/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1414 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1415 | 1416 | string-width@^4.1.0: 1417 | version "4.2.3" 1418 | resolved "https://mirrors.tencent.com/npm/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1419 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1420 | dependencies: 1421 | emoji-regex "^8.0.0" 1422 | is-fullwidth-code-point "^3.0.0" 1423 | strip-ansi "^6.0.1" 1424 | 1425 | string_decoder@^1.1.1: 1426 | version "1.3.0" 1427 | resolved "https://mirrors.cloud.tencent.com/npm/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1428 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1429 | dependencies: 1430 | safe-buffer "~5.2.0" 1431 | 1432 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1433 | version "6.0.1" 1434 | resolved "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1435 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1436 | dependencies: 1437 | ansi-regex "^5.0.1" 1438 | 1439 | strip-bom-string@^1.0.0: 1440 | version "1.0.0" 1441 | resolved "http://mirrors.tencent.com/npm/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" 1442 | integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= 1443 | 1444 | supports-color@^7.1.0: 1445 | version "7.2.0" 1446 | resolved "https://mirrors.tencent.com/npm/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1447 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1448 | dependencies: 1449 | has-flag "^4.0.0" 1450 | 1451 | through@^2.3.6: 1452 | version "2.3.8" 1453 | resolved "https://mirrors.cloud.tencent.com/npm/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1454 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1455 | 1456 | tmp@^0.0.33: 1457 | version "0.0.33" 1458 | resolved "https://mirrors.cloud.tencent.com/npm/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1459 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1460 | dependencies: 1461 | os-tmpdir "~1.0.2" 1462 | 1463 | to-fast-properties@^2.0.0: 1464 | version "2.0.0" 1465 | resolved "https://mirrors.tencent.com/npm/to-fast-properties/-/to-fast-properties-2.0.0.tgz" 1466 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1467 | 1468 | to-regex-range@^5.0.1: 1469 | version "5.0.1" 1470 | resolved "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1471 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1472 | dependencies: 1473 | is-number "^7.0.0" 1474 | 1475 | token-stream@1.0.0: 1476 | version "1.0.0" 1477 | resolved "https://mirrors.tencent.com/npm/token-stream/-/token-stream-1.0.0.tgz" 1478 | integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ= 1479 | 1480 | ts-morph@^13.0.0: 1481 | version "13.0.2" 1482 | resolved "https://mirrors.tencent.com/npm/ts-morph/-/ts-morph-13.0.2.tgz#55546023493ef82389d9e4f28848a556c784bac4" 1483 | integrity sha512-SjeeHaRf/mFsNeR3KTJnx39JyEOzT4e+DX28gQx5zjzEOuFs2eGrqeN2PLKs/+AibSxPmzV7RD8nJVKmFJqtLA== 1484 | dependencies: 1485 | "@ts-morph/common" "~0.12.2" 1486 | code-block-writer "^11.0.0" 1487 | 1488 | tslib@2.3.1, tslib@^2.3.0: 1489 | version "2.3.1" 1490 | resolved "https://mirrors.tencent.com/npm/tslib/-/tslib-2.3.1.tgz" 1491 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1492 | 1493 | tslib@~2.1.0: 1494 | version "2.1.0" 1495 | resolved "https://mirrors.tencent.com/npm/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" 1496 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== 1497 | 1498 | type-fest@^0.21.3: 1499 | version "0.21.3" 1500 | resolved "https://mirrors.tencent.com/npm/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 1501 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1502 | 1503 | typescript@^4.4.4: 1504 | version "4.5.3" 1505 | resolved "https://mirrors.tencent.com/npm/typescript/-/typescript-4.5.3.tgz" 1506 | integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ== 1507 | 1508 | uc.micro@^1.0.1, uc.micro@^1.0.5: 1509 | version "1.0.6" 1510 | resolved "https://mirrors.cloud.tencent.com/npm/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 1511 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 1512 | 1513 | uglify-js@^3.1.4: 1514 | version "3.14.4" 1515 | resolved "https://mirrors.cloud.tencent.com/npm/uglify-js/-/uglify-js-3.14.4.tgz#68756f17d1b90b9d289341736cb9a567d6882f90" 1516 | integrity sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA== 1517 | 1518 | universalify@^2.0.0: 1519 | version "2.0.0" 1520 | resolved "https://mirrors.cloud.tencent.com/npm/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 1521 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1522 | 1523 | upath@^2.0.1: 1524 | version "2.0.1" 1525 | resolved "http://mirrors.tencent.com/npm/upath/-/upath-2.0.1.tgz" 1526 | integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== 1527 | 1528 | util-deprecate@^1.0.1: 1529 | version "1.0.2" 1530 | resolved "https://mirrors.cloud.tencent.com/npm/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1531 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1532 | 1533 | vite-plugin-copy@^0.1.6: 1534 | version "0.1.6" 1535 | resolved "https://mirrors.tencent.com/npm/vite-plugin-copy/-/vite-plugin-copy-0.1.6.tgz#863ee81f7771b099122d24b954725d8e7e604a80" 1536 | integrity sha512-bqIaefZOE2Jx8P5wJuHKL5GzCERa/pcwdUQWaocyTNXgalN2xkxXH7LmqRJ34V2OlKF2F9E/zj0zITS7U6PpUg== 1537 | dependencies: 1538 | fast-glob "^3.2.7" 1539 | 1540 | vite-plugin-dts@^0.9.6: 1541 | version "0.9.6" 1542 | resolved "https://mirrors.tencent.com/npm/vite-plugin-dts/-/vite-plugin-dts-0.9.6.tgz#f8242171b0679bf2c21bfc2c1228d14bb9509833" 1543 | integrity sha512-urZnKLo6l3zLOEmKMpQd8HlvONqEfYuMLAeA5wrbtuTChaBUN/Sj7nl3UlJrrEWBisGA75xs0rLUBLfZLZ+AbQ== 1544 | dependencies: 1545 | fast-glob "^3.2.7" 1546 | fs-extra "^10.0.0" 1547 | ts-morph "^13.0.0" 1548 | 1549 | vite-plugin-md@^0.11.4: 1550 | version "0.11.4" 1551 | resolved "https://mirrors.cloud.tencent.com/npm/vite-plugin-md/-/vite-plugin-md-0.11.4.tgz#65ce8b88ebaf6377cd42389e1699041526432bd3" 1552 | integrity sha512-t24rdVSB72k8xeLcuMhwl0ku5hvsQkt7NfVNG1LEaTOykbXTgwcGD8OUTmryOsGGhCw2DuCZJvTs+qK07J7Gug== 1553 | dependencies: 1554 | "@rollup/pluginutils" "^4.1.1" 1555 | "@types/markdown-it" "^12.2.3" 1556 | gray-matter "^4.0.3" 1557 | markdown-it "^12.2.0" 1558 | 1559 | vite@^2.7.0: 1560 | version "2.7.1" 1561 | resolved "https://mirrors.tencent.com/npm/vite/-/vite-2.7.1.tgz" 1562 | integrity sha512-TDXXhcu5lyQ6uosK4ZWaOyB4VzOiizk0biitRzDzaEtgSUi8rVYPc4k1xgOjLSf0OuceDJmojFKXHOX9DB1WuQ== 1563 | dependencies: 1564 | esbuild "^0.13.12" 1565 | postcss "^8.3.11" 1566 | resolve "^1.20.0" 1567 | rollup "^2.59.0" 1568 | optionalDependencies: 1569 | fsevents "~2.3.2" 1570 | 1571 | void-elements@^3.1.0: 1572 | version "3.1.0" 1573 | resolved "https://mirrors.tencent.com/npm/void-elements/-/void-elements-3.1.0.tgz" 1574 | integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= 1575 | 1576 | vscode-css-languageservice@^5.1.7: 1577 | version "5.1.9" 1578 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-css-languageservice/-/vscode-css-languageservice-5.1.9.tgz" 1579 | integrity sha512-/tFOWeZBL3Oc9Zc+2MAi3rEwiXJTSZsvjB+M7nSjWLbGPUIjukUA7YzLgsBoUfR35sPJYnXWUkL56PdfIYM8GA== 1580 | dependencies: 1581 | vscode-languageserver-textdocument "^1.0.1" 1582 | vscode-languageserver-types "^3.16.0" 1583 | vscode-nls "^5.0.0" 1584 | vscode-uri "^3.0.2" 1585 | 1586 | vscode-html-languageservice@^4.1.0: 1587 | version "4.2.0" 1588 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-html-languageservice/-/vscode-html-languageservice-4.2.0.tgz" 1589 | integrity sha512-5ebk/5kMa7PrCPL3JuP27vo8h+coDgSkMP14pSlKz3ISXZxHm+nnCenhVrpy9Ayamtwb28YXeQuN8AqNQH8kVQ== 1590 | dependencies: 1591 | vscode-languageserver-textdocument "^1.0.1" 1592 | vscode-languageserver-types "^3.16.0" 1593 | vscode-nls "^5.0.0" 1594 | vscode-uri "^3.0.2" 1595 | 1596 | vscode-json-languageservice@^4.1.8: 1597 | version "4.1.10" 1598 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-json-languageservice/-/vscode-json-languageservice-4.1.10.tgz" 1599 | integrity sha512-IHliMEEYSY0tJjJt0ECb8ESx/nRXpoy9kN42WVQXgaqGyizFAf3jibSiezDQTrrY7f3kywXggCU+kkJEM+OLZQ== 1600 | dependencies: 1601 | jsonc-parser "^3.0.0" 1602 | vscode-languageserver-textdocument "^1.0.1" 1603 | vscode-languageserver-types "^3.16.0" 1604 | vscode-nls "^5.0.0" 1605 | vscode-uri "^3.0.2" 1606 | 1607 | vscode-jsonrpc@8.0.0-next.4, vscode-jsonrpc@^8.0.0-next.2: 1608 | version "8.0.0-next.4" 1609 | resolved "https://mirrors.tencent.com/npm/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.4.tgz" 1610 | integrity sha512-i+wvza5Wd0YV/t9qhnS8I+dJdhJ1fHIhRW4f262rXXM9Mgts5VZhYrRZufGcai4y99RlbZvwaZhplQ6diRXkaA== 1611 | 1612 | vscode-languageserver-protocol@3.17.0-next.11: 1613 | version "3.17.0-next.11" 1614 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.11.tgz" 1615 | integrity sha512-9FqHT7XvM6tWFsnLvRfuQA7Zh7wZZYAwA9dK85lYthA8M1aXpXEP9drXVvO/Fe03MUeJpKVf2e4/NvDaFUnttg== 1616 | dependencies: 1617 | vscode-jsonrpc "8.0.0-next.4" 1618 | vscode-languageserver-types "3.17.0-next.5" 1619 | 1620 | vscode-languageserver-textdocument@^1.0.1: 1621 | version "1.0.3" 1622 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz" 1623 | integrity sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A== 1624 | 1625 | vscode-languageserver-types@3.17.0-next.5: 1626 | version "3.17.0-next.5" 1627 | resolved "https://mirrors.tencent.com/npm/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.5.tgz" 1628 | integrity sha512-Zcfaw8BznhlJWB09LDR0dscXyxn9+liREqJnPF4pigeUCHwKxYapYqizwuCpMHQ/oLYiAvKwU+f28hPleYu7pA== 1629 | 1630 | vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.16.0: 1631 | version "3.16.0" 1632 | resolved "https://mirrors.tencent.com/npm/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz" 1633 | integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== 1634 | 1635 | vscode-languageserver@^8.0.0-next.2: 1636 | version "8.0.0-next.5" 1637 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-languageserver/-/vscode-languageserver-8.0.0-next.5.tgz" 1638 | integrity sha512-3E2W0eWtGKb6QAJqspOnD0thrBRRo8IGUMV5jpDNMcMKvmtkcxMwsBh0VxdvuWaZ51PiNyR4L+B+GUvkYsyFEg== 1639 | dependencies: 1640 | vscode-languageserver-protocol "3.17.0-next.11" 1641 | 1642 | vscode-nls@^5.0.0: 1643 | version "5.0.0" 1644 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-nls/-/vscode-nls-5.0.0.tgz" 1645 | integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== 1646 | 1647 | vscode-pug-languageservice@0.28.10: 1648 | version "0.28.10" 1649 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-pug-languageservice/-/vscode-pug-languageservice-0.28.10.tgz" 1650 | integrity sha512-zhpNmMxltAlid4ZWVq0YrCbD0v2Nk/OsUl2q1pZkSJheGVMj/ZAlcYqDvWjLbMfGPtpvoC6nPxhSCc6sIDN9XA== 1651 | dependencies: 1652 | "@volar/code-gen" "0.28.10" 1653 | "@volar/shared" "0.28.10" 1654 | "@volar/source-map" "0.28.10" 1655 | "@volar/transforms" "0.28.10" 1656 | pug-lexer "^5.0.1" 1657 | pug-parser "^6.0.0" 1658 | vscode-languageserver "^8.0.0-next.2" 1659 | 1660 | vscode-typescript-languageservice@0.28.10: 1661 | version "0.28.10" 1662 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.28.10.tgz" 1663 | integrity sha512-TTJSQss0YR784e0Rr8se5huxd0edqGzO7A51kejEQiPPhIcOlYCEeeFxDtqv3S+/fUUkeFVdRBZA9Ie7Jfrldw== 1664 | dependencies: 1665 | "@volar/shared" "0.28.10" 1666 | semver "^7.3.5" 1667 | upath "^2.0.1" 1668 | vscode-languageserver "^8.0.0-next.2" 1669 | vscode-languageserver-textdocument "^1.0.1" 1670 | 1671 | vscode-uri@^2.1.2: 1672 | version "2.1.2" 1673 | resolved "https://mirrors.tencent.com/npm/vscode-uri/-/vscode-uri-2.1.2.tgz" 1674 | integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== 1675 | 1676 | vscode-uri@^3.0.2: 1677 | version "3.0.2" 1678 | resolved "https://mirrors.tencent.com/npm/vscode-uri/-/vscode-uri-3.0.2.tgz" 1679 | integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA== 1680 | 1681 | vscode-vue-languageservice@0.28.10: 1682 | version "0.28.10" 1683 | resolved "https://mirrors.cloud.tencent.com/npm/vscode-vue-languageservice/-/vscode-vue-languageservice-0.28.10.tgz" 1684 | integrity sha512-xsA9aEiELiA9zHxzhI58Y6crcSfqxtt3EDKyey9rcNYe/bdY1NY0qLh3SRxdXF8YwoxzRvnn4iUw0oxCjHnFUQ== 1685 | dependencies: 1686 | "@volar/code-gen" "0.28.10" 1687 | "@volar/html2pug" "0.28.10" 1688 | "@volar/shared" "0.28.10" 1689 | "@volar/source-map" "0.28.10" 1690 | "@volar/transforms" "0.28.10" 1691 | "@vscode/emmet-helper" "^2.8.0" 1692 | "@vue/compiler-dom" "^3.2.20" 1693 | "@vue/reactivity" "^3.2.20" 1694 | "@vue/shared" "^3.2.20" 1695 | request-light "^0.5.4" 1696 | upath "^2.0.1" 1697 | vscode-css-languageservice "^5.1.7" 1698 | vscode-html-languageservice "^4.1.0" 1699 | vscode-json-languageservice "^4.1.8" 1700 | vscode-languageserver "^8.0.0-next.2" 1701 | vscode-languageserver-textdocument "^1.0.1" 1702 | vscode-pug-languageservice "0.28.10" 1703 | vscode-typescript-languageservice "0.28.10" 1704 | 1705 | vue-router@^4.0.12: 1706 | version "4.0.12" 1707 | resolved "http://mirrors.tencent.com/npm/vue-router/-/vue-router-4.0.12.tgz" 1708 | integrity sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg== 1709 | dependencies: 1710 | "@vue/devtools-api" "^6.0.0-beta.18" 1711 | 1712 | vue-tsc@^0.28.10: 1713 | version "0.28.10" 1714 | resolved "https://mirrors.cloud.tencent.com/npm/vue-tsc/-/vue-tsc-0.28.10.tgz" 1715 | integrity sha512-tGD7eC74MHqKH2/F66AYkC1zNiLrgnhMzeYWou3p/wApMaUEM4h29HqYoKN6uE+pq87uvq/penYqUSBXhIwLiA== 1716 | dependencies: 1717 | "@volar/shared" "0.28.10" 1718 | vscode-vue-languageservice "0.28.10" 1719 | 1720 | vue@^3.2.23: 1721 | version "3.2.24" 1722 | resolved "https://mirrors.tencent.com/npm/vue/-/vue-3.2.24.tgz" 1723 | integrity sha512-PvCklXNfcUMyeP/a9nME27C32IipwUDoS45rDyKn5+RQrWyjL+0JAJtf98HL6y9bfqQRTlYjSowWEB1nXxvG5Q== 1724 | dependencies: 1725 | "@vue/compiler-dom" "3.2.24" 1726 | "@vue/compiler-sfc" "3.2.24" 1727 | "@vue/runtime-dom" "3.2.24" 1728 | "@vue/server-renderer" "3.2.24" 1729 | "@vue/shared" "3.2.24" 1730 | 1731 | wcwidth@^1.0.1: 1732 | version "1.0.1" 1733 | resolved "https://mirrors.cloud.tencent.com/npm/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 1734 | integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 1735 | dependencies: 1736 | defaults "^1.0.3" 1737 | 1738 | with@^7.0.0: 1739 | version "7.0.2" 1740 | resolved "https://mirrors.tencent.com/npm/with/-/with-7.0.2.tgz" 1741 | integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== 1742 | dependencies: 1743 | "@babel/parser" "^7.9.6" 1744 | "@babel/types" "^7.9.6" 1745 | assert-never "^1.2.1" 1746 | babel-walk "3.0.0-canary-5" 1747 | 1748 | wordwrap@^1.0.0: 1749 | version "1.0.0" 1750 | resolved "https://mirrors.cloud.tencent.com/npm/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1751 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 1752 | 1753 | yallist@^4.0.0: 1754 | version "4.0.0" 1755 | resolved "https://mirrors.tencent.com/npm/yallist/-/yallist-4.0.0.tgz" 1756 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1757 | --------------------------------------------------------------------------------