mirror of
https://gitee.com/bootx/dax-pay-h5
synced 2026-08-06 21:36:24 +08:00
chore(h5): 整理 git 跟踪文件与依赖位置
- auto-imports.d.ts 改为忽略(unplugin-auto-import 自动生成产物) - .gitignore 补全 tsbuildinfo/history/stats.html 等 - @types/lodash-es 从 dependencies 迁移到 devDependencies - 用户授权协议文件重命名为英文 USER-AGREEMENT.txt(内容不变) - 删除 MIGRATION-PLAN.md 过程文档(分支历史已留存)
This commit is contained in:
14
.gitignore
vendored
14
.gitignore
vendored
@@ -15,7 +15,7 @@ dist-ssr
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
/.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
@@ -25,3 +25,15 @@ dist-ssr
|
||||
/components.d.ts
|
||||
.agents/
|
||||
skills-lock.json
|
||||
|
||||
# 自动生成的类型声明(unplugin-auto-import 产物,dev/build 时重新生成)
|
||||
/types/auto-imports.d.ts
|
||||
|
||||
# TypeScript 增量构建缓存
|
||||
*.tsbuildinfo
|
||||
|
||||
# VSCode Local History 插件
|
||||
.history/
|
||||
|
||||
# 构建分析报告(rollup-plugin-visualizer 产物)
|
||||
/stats.html
|
||||
|
||||
@@ -1,172 +0,0 @@
|
||||
# DaxPay H5 升级迁移方案
|
||||
|
||||
> 基于 [vue3-vant4-mobile](https://github.com/xiangshu233/vue3-vant4-mobile) 重建 H5 端脚手架。
|
||||
> 旧版业务代码(收银台/订单/业务组件/crypto 签名)**不迁移**,后续将重新实现。
|
||||
> 本方案仅产出干净的、带完整基础设施的 DaxPay H5 空壳项目。
|
||||
|
||||
## 一、目标与原则
|
||||
|
||||
**目标**:以 `vue3-vant4-mobile@main` 为新脚手架重建 `dax-pay-h5`,拿到 Vite 8 / Pinia 3 / Vue Router 5 / UnoCSS 66 的架构红利 + Dark Mode + 系统主题色 + keep-alive/routeStore + http 分层封装,产出等待业务开发的干净基座。
|
||||
|
||||
**原则**:
|
||||
|
||||
1. 模板作基座,裁掉所有 demo 演示业务(dashboard / example / message / my 演示页、ECharts、Mock)。
|
||||
2. 现有 DaxPay 业务资产(收银台、订单、22 个业务组件、crypto、api、views、router modules、store.user 等)**全部不迁移**,后续重新实现。
|
||||
3. 保留模板的完整基础设施(Dark Mode、主题色、keep-alive、http 分层),但 http 分层保留**通用版**,不植入业务拦截器逻辑(token 头等留待业务阶段定)。
|
||||
4. 分阶段可验证,每个阶段结束都能 `pnpm dev` 起来且 `pnpm type:check` 通过。
|
||||
5. 保留 DaxPay 品牌与环境:应用名 `DaxPay`、端口 `9100`、代理 `/server` → `http://127.0.0.1:19999/`、`VITE_GLOB_*` 环境变量体系。
|
||||
|
||||
## 二、最终技术栈锁定
|
||||
|
||||
| 类别 | 版本 | 来源 |
|
||||
| ------------------------------------- | -------------------------------- | ------------------------------------- |
|
||||
| Vite | ^8.0.2 | 模板 |
|
||||
| Vue | ^3.5.30 | 模板 |
|
||||
| Vue Router | ^5.0.4 | 模板 |
|
||||
| Pinia | ^3.0.4 | 模板 |
|
||||
| pinia-plugin-persistedstate | ^4.7.1 | 模板(替代旧 `pinia-plugin-persist`) |
|
||||
| Vant | ^4.9.22 | 模板 |
|
||||
| UnoCSS | ^66.6.7(含 `@unocss/*` 同版本) | 模板 |
|
||||
| TypeScript | ^5.9.3 | 模板 |
|
||||
| vue-tsc | ^3.2.6 | 模板 |
|
||||
| @vitejs/plugin-vue | ^6.0.5 | 模板 |
|
||||
| @vueuse/core | ^14.2.1 | 模板 |
|
||||
| unplugin-auto-import / vue-components | ^21 / ^32 | 模板 |
|
||||
| tsx | ^4.21 | 模板(替代 `esno`) |
|
||||
| terser | ^5.46 | 模板(drop console) |
|
||||
| vconsole + vite-plugin-vconsole | 保留现有版本 | 开发期调试工具 |
|
||||
| **Node** | **>=22.12.0** | 用户要求(engines 锁定 22) |
|
||||
| pnpm | >=9.0.2 | monorepo 约定 |
|
||||
|
||||
**不安装**:`echarts`、`mockjs`、`vue-qr`(业务重写后按需再加)。
|
||||
|
||||
## 三、纳入 / 裁剪 / 迁入清单
|
||||
|
||||
### 从模板纳入
|
||||
|
||||
- 构建脚本:`build/` 全套(`script/buildConf.ts`、`postBuild.ts`、`getConfigFileName.ts`、`vite/plugin/*`)
|
||||
- `vite.config.ts`(`rolldownOptions` + oxc/terser minify)
|
||||
- `main.ts`(按需 vant 样式 + `setupStore`/`setupRouter` 异步 mount)
|
||||
- `store/index.ts`(`setupStore` + `persistedstate`)
|
||||
- `router/`(`base` + `index` + `modules` + `router-guards` + `routeStore`)
|
||||
- `utils/http/axios/`(分层封装,全套 7 文件,保留通用版)
|
||||
- `hooks/`(`core`/`event`/`setting`/`web` 分层,移除 `useECharts`)
|
||||
- `layout/`(`index.vue` + `FloatingNavBar`)
|
||||
- Dark Mode + 主题色体系:`store/modules/designSetting.ts` + `settings/designSetting.ts` + `hooks/setting/useDesignSetting.ts` + `views/my/ThemeSetting.vue` + `styles/entry.css` + `styles/vant.less` + `App.vue`
|
||||
- `enums/`(breakpointEnum / cacheEnum / httpEnum / pageEnum)
|
||||
- `utils/`(Storage、dateUtil、domUtils、env、is、urlUtils、log、index)
|
||||
- `types/`(auto-imports.d.ts、config.d.ts、global.d.ts、index.d.ts、modules.d.ts)
|
||||
- `uno.config.ts`(webfonts provider 改回 `none`)
|
||||
- `eslint.config.js`、`commitlint.config.cjs`、`.editorconfig`、`simple-git-hooks`
|
||||
|
||||
### 从模板裁剪
|
||||
|
||||
- `src/views/dashboard/`、`example/`、`message/`(含 barChart/lineChart/pieChart)、`my/` 演示页(**保留 `ThemeSetting.vue`** 作为主题设置页骨架)
|
||||
- `src/hooks/web/useECharts.ts` + `src/utils/lib/echarts.ts`
|
||||
- `mock/` 目录 + `build/vite/plugin/mock.ts` + `vite-plugin-mock` + `mockjs` + `@types/mockjs` 依赖 + `VITE_GLOB_PROD_MOCK`
|
||||
- `vercel.json`、`public/_redirects`、`.github/workflows/`
|
||||
- `uno.config.ts` 的演示 safelist、`webfonts` provider(改 `none`)
|
||||
|
||||
### 从现有项目迁入(仅非业务资产)
|
||||
|
||||
- `.env` / `.env.development` / `.env.production`(端口 9100、代理 `/server`、`VITE_V_CONSOLE`、`VITE_DROP_CONSOLE`、`VITE_BUILD_COMPRESS`)
|
||||
- `用户授权使用协议.txt`
|
||||
- `README.md`(业务说明保留,技术说明换新栈)
|
||||
- `.git/`(保留提交历史)
|
||||
- `index.html` 的 DaxPay 品牌(title / meta)
|
||||
|
||||
### 明确丢弃(不迁移,重新实现)
|
||||
|
||||
`src/api/*`、`views/*`、`components/*`(22 个业务组件)、`utils/{axios,crypto,format,validate}.ts`、`router/{guard,modules}/*`、`store/modules/user.ts`、`hooks/{useConfig,useUser,useTheme,useDevice,useRequest,useCountdown}.ts`、`layout/{Default,IndexTabBar,Helper}*`、`vue-qr` 依赖——全部不迁。
|
||||
|
||||
> 旧版完整业务代码已保留在备份分支 `h5-legacy`(tag `h5-legacy-v3.0.0`),供重新实现时参考。
|
||||
|
||||
## 四、交付物定义
|
||||
|
||||
产出一个**干净的 DaxPay H5 脚手架**:
|
||||
|
||||
- 基于 vue3-vant4-mobile,裁掉所有 demo 演示页。
|
||||
- 保留完整基础设施:Dark Mode + 主题色 + keep-alive/routeStore + http 分层 + vconsole。
|
||||
- 品牌定制:应用名 DaxPay、端口 9100、代理 `/server` → `127.0.0.1:19999`。
|
||||
- 只保留一个占位首页(登录后落地,最简),等待业务开发。
|
||||
- `pnpm dev` / `pnpm type:check` / `pnpm lint` / `pnpm build` 全绿。
|
||||
|
||||
## 五、分阶段执行计划
|
||||
|
||||
### 阶段 0:准备(0.3 天)
|
||||
|
||||
- [x] `dax-pay-h5` 打 tag `h5-legacy-v3.0.0`(旧业务最后状态)
|
||||
- [x] 切备份分支 `h5-legacy`(保留全部旧业务供后续参考)
|
||||
- [x] Node 版本确认 ≥ 22.12.0(实测 v24.17.0)
|
||||
- [x] 记录现网基础配置:端口 9100、代理 `/server` → `http://127.0.0.1:19999/`
|
||||
|
||||
### 阶段 1:脚手架搭建(0.5 天)
|
||||
|
||||
- [ ] 克隆 `vue3-vant4-mobile`,整体替换 `dax-pay-h5`(保留 `.git/`、协议文件、`README.md`、本文件)
|
||||
- [ ] `package.json`:`name=daxpay-gateway-ui`、`version=3.1.0`、`engines.node=">=22.12.0"`、`engines.pnpm=">=9.0.2"`
|
||||
- [ ] 删除演示业务:`src/views/{dashboard,example,message,my}`(`my/ThemeSetting.vue` 单独保留)、`src/hooks/web/useECharts.ts`、`src/utils/lib/`、`mock/`、`build/vite/plugin/mock.ts`、`vercel.json`、`.github/`、`public/_redirects`
|
||||
- [ ] 删除依赖:`echarts`、`mockjs`、`@types/mockjs`、`vite-plugin-mock`、`@oxc-parser/binding-win32-x64-msvc`
|
||||
- [ ] 加回依赖:`vconsole`、`vite-plugin-vconsole`,新建 `build/vite/plugin/vconsole.ts` 注册
|
||||
- [ ] `src/views/` 只留一个占位首页 `views/home/index.vue`
|
||||
- [ ] `uno.config.ts`:webfonts provider 改 `none`、清空演示 safelist
|
||||
- [ ] `pnpm install && pnpm dev` 验证脚手架自洽
|
||||
- **验证**:`dev` / `type:check` / `build` 三绿
|
||||
|
||||
### 阶段 2:基础设施定制(0.5 天)
|
||||
|
||||
- [ ] 环境变量:用现有 `.env*` 覆盖(端口 9100、代理、`VITE_V_CONSOLE=true`、`VITE_DROP_CONSOLE`、`VITE_BUILD_COMPRESS`),删 `VITE_GLOB_PROD_MOCK`
|
||||
- [ ] `build/utils.ts` 的 `wrapperEnv` 同步调整校验项
|
||||
- [ ] `router/modules.ts`:清空 demo 路由,只留登录页 + 占位首页 + 404
|
||||
- [ ] `store/modules/user.ts`:保留模板默认骨架(供后续业务用)
|
||||
- [ ] `main.ts`:加回 vconsole 开发环境初始化
|
||||
- [ ] HTTP 分层:保留模板通用版,不植业务拦截器
|
||||
- **验证**:dev 起来,登录页/占位首页可访问,Dark Mode + 主题色切换生效
|
||||
|
||||
### 阶段 3:样式与适配(0.3 天)
|
||||
|
||||
- [ ] `postcss.config.js`:采用模板版(去掉现有 `exclude:[/src/]` 这个疑似 bug 的配置)
|
||||
- [ ] 合并 `styles/var.less`,确认 vant 主题变量
|
||||
- [ ] Dark Mode 下占位页自查
|
||||
|
||||
### 阶段 4:质量验证(0.2 天)
|
||||
|
||||
- [ ] `pnpm type:check`(vue-tsc 3)零错误
|
||||
- [ ] `pnpm lint`(@antfu/eslint-config 2)零 error
|
||||
- [ ] `pnpm build` 成功,记录产物体积基线
|
||||
- [ ] `npx simple-git-hooks` 装 hooks
|
||||
- [ ] 真机扫描进 H5,验证 viewport 适配 + Dark Mode
|
||||
|
||||
**工期估算**:约 1.8 人天
|
||||
|
||||
## 六、关键 Breaking Change 应对手册
|
||||
|
||||
| 变更点 | 现状 | 新版应对 |
|
||||
| ----------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| Vite 8 移除 CJS Node API | 配置已 ESM | 确认所有 `.js` 配置含 ESM 导出;`postcss.config.js` 保持 `import` |
|
||||
| `rollupOptions` → `rolldownOptions` | rollupOptions | `vite.config.ts` 改名(模板已示范) |
|
||||
| esbuild drop 失效 | `esbuild.drop` | 改 `minify:'terser'` + `terserOptions.compress.drop_console`(模板已示范) |
|
||||
| Pinia 3 持久化 | `pinia-plugin-persist` | 换 `pinia-plugin-persistedstate`,`persist:true` 写法基本兼容 |
|
||||
| Vue Router 4 → 5 | v4 | `createRouter`/`createWebHashHistory` 兼容;守卫 API 复核 |
|
||||
| UnoCSS 0.58 → 66 | 分散包 0.58 | 统一升 66,preset/transformer 导入路径不变,配置语法兼容 |
|
||||
| @vueuse 10 → 14 | v10 | 业务重写后按需核对(本项目不迁旧 hooks,影响小) |
|
||||
| vue-tsc 1 → 3 | v1 | CLI 兼容;TS 需 ≥5.5 |
|
||||
| vant 全量 → 按需 | `app.use(Vant)` | `main.ts` 删 `app.use(Vant)`,靠 unplugin-vue-components 自动注册 + 手动导 4 个副作用样式 |
|
||||
| esno → tsx | `esno ./build/script/postBuild.ts` | script 改 `tsx ./build/script/postBuild.ts` |
|
||||
|
||||
## 七、风险与回滚
|
||||
|
||||
| 风险 | 等级 | 缓解 |
|
||||
| ------------------------------------------- | ---- | ------------------------------------ |
|
||||
| UnoCSS 66 与业务原子类不兼容 | 中 | 阶段 1 先跑通,出问题可临时锁回 0.58 |
|
||||
| Pinia 3 persistedstate 持久化行为差异 | 中 | 阶段 2 测主题/设置持久化 |
|
||||
| vant 按需导入漏样式(Toast/Dialog 等) | 中 | `main.ts` 显式导 4 个,其余用到再补 |
|
||||
| Vite 8 三方插件未跟进(vconsole/svg-icons) | 中 | 阶段 1 验证,必要时锁版本 |
|
||||
|
||||
**回滚**:`h5-legacy` 分支随时可切回;每个阶段结束提交一次,便于二分定位。
|
||||
|
||||
## 八、约定备忘
|
||||
|
||||
- `node` 锁定 `>=22.12.0`,`pnpm` `>=9.0.2`。
|
||||
- 路由模式:`createWebHashHistory`(H5 嵌入支付场景更稳)。
|
||||
- 接口 token 头约定:`Accesstoken`(Sa-Token,来自 DaxPay 后端约定),待业务阶段在 http transform 中实现。
|
||||
- 不自动提交代码,每阶段结束询问是否提交。
|
||||
@@ -26,7 +26,6 @@
|
||||
"lint:lint-staged": "lint-staged"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@vueuse/core": "^14.2.1",
|
||||
"axios": "^1.4.0",
|
||||
"date-fns": "^3.0.6",
|
||||
@@ -47,6 +46,7 @@
|
||||
"@iconify/json": "^2.2.188",
|
||||
"@oxc-parser/binding-win32-x64-msvc": "0.115.0",
|
||||
"@types/fs-extra": "^11.0.4",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^25.5.0",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/qs": "^6.9.11",
|
||||
|
||||
319
types/auto-imports.d.ts
vendored
319
types/auto-imports.d.ts
vendored
@@ -1,319 +0,0 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
// biome-ignore lint: disable
|
||||
export {}
|
||||
declare global {
|
||||
const EffectScope: typeof import('vue').EffectScope
|
||||
const acceptHMRUpdate: typeof import('pinia').acceptHMRUpdate
|
||||
const asyncComputed: typeof import('@vueuse/core').asyncComputed
|
||||
const autoResetRef: typeof import('@vueuse/core').autoResetRef
|
||||
const computed: typeof import('vue').computed
|
||||
const computedAsync: typeof import('@vueuse/core').computedAsync
|
||||
const computedEager: typeof import('@vueuse/core').computedEager
|
||||
const computedInject: typeof import('@vueuse/core').computedInject
|
||||
const computedWithControl: typeof import('@vueuse/core').computedWithControl
|
||||
const controlledComputed: typeof import('@vueuse/core').controlledComputed
|
||||
const controlledRef: typeof import('@vueuse/core').controlledRef
|
||||
const createApp: typeof import('vue').createApp
|
||||
const createEventHook: typeof import('@vueuse/core').createEventHook
|
||||
const createGlobalState: typeof import('@vueuse/core').createGlobalState
|
||||
const createInjectionState: typeof import('@vueuse/core').createInjectionState
|
||||
const createPinia: typeof import('pinia').createPinia
|
||||
const createReactiveFn: typeof import('@vueuse/core').createReactiveFn
|
||||
const createRef: typeof import('@vueuse/core').createRef
|
||||
const createReusableTemplate: typeof import('@vueuse/core').createReusableTemplate
|
||||
const createSharedComposable: typeof import('@vueuse/core').createSharedComposable
|
||||
const createTemplatePromise: typeof import('@vueuse/core').createTemplatePromise
|
||||
const createUnrefFn: typeof import('@vueuse/core').createUnrefFn
|
||||
const customRef: typeof import('vue').customRef
|
||||
const debouncedRef: typeof import('@vueuse/core').debouncedRef
|
||||
const debouncedWatch: typeof import('@vueuse/core').debouncedWatch
|
||||
const defineAsyncComponent: typeof import('vue').defineAsyncComponent
|
||||
const defineComponent: typeof import('vue').defineComponent
|
||||
const defineStore: typeof import('pinia').defineStore
|
||||
const eagerComputed: typeof import('@vueuse/core').eagerComputed
|
||||
const effectScope: typeof import('vue').effectScope
|
||||
const extendRef: typeof import('@vueuse/core').extendRef
|
||||
const getActivePinia: typeof import('pinia').getActivePinia
|
||||
const getCurrentInstance: typeof import('vue').getCurrentInstance
|
||||
const getCurrentScope: typeof import('vue').getCurrentScope
|
||||
const getCurrentWatcher: typeof import('vue').getCurrentWatcher
|
||||
const h: typeof import('vue').h
|
||||
const ignorableWatch: typeof import('@vueuse/core').ignorableWatch
|
||||
const inject: typeof import('vue').inject
|
||||
const injectLocal: typeof import('@vueuse/core').injectLocal
|
||||
const isDefined: typeof import('@vueuse/core').isDefined
|
||||
const isProxy: typeof import('vue').isProxy
|
||||
const isReactive: typeof import('vue').isReactive
|
||||
const isReadonly: typeof import('vue').isReadonly
|
||||
const isRef: typeof import('vue').isRef
|
||||
const isShallow: typeof import('vue').isShallow
|
||||
const makeDestructurable: typeof import('@vueuse/core').makeDestructurable
|
||||
const mapActions: typeof import('pinia').mapActions
|
||||
const mapGetters: typeof import('pinia').mapGetters
|
||||
const mapState: typeof import('pinia').mapState
|
||||
const mapStores: typeof import('pinia').mapStores
|
||||
const mapWritableState: typeof import('pinia').mapWritableState
|
||||
const markRaw: typeof import('vue').markRaw
|
||||
const nextTick: typeof import('vue').nextTick
|
||||
const onActivated: typeof import('vue').onActivated
|
||||
const onBeforeMount: typeof import('vue').onBeforeMount
|
||||
const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave
|
||||
const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate
|
||||
const onBeforeUnmount: typeof import('vue').onBeforeUnmount
|
||||
const onBeforeUpdate: typeof import('vue').onBeforeUpdate
|
||||
const onClickOutside: typeof import('@vueuse/core').onClickOutside
|
||||
const onDeactivated: typeof import('vue').onDeactivated
|
||||
const onElementRemoval: typeof import('@vueuse/core').onElementRemoval
|
||||
const onErrorCaptured: typeof import('vue').onErrorCaptured
|
||||
const onKeyStroke: typeof import('@vueuse/core').onKeyStroke
|
||||
const onLongPress: typeof import('@vueuse/core').onLongPress
|
||||
const onMounted: typeof import('vue').onMounted
|
||||
const onRenderTracked: typeof import('vue').onRenderTracked
|
||||
const onRenderTriggered: typeof import('vue').onRenderTriggered
|
||||
const onScopeDispose: typeof import('vue').onScopeDispose
|
||||
const onServerPrefetch: typeof import('vue').onServerPrefetch
|
||||
const onStartTyping: typeof import('@vueuse/core').onStartTyping
|
||||
const onUnmounted: typeof import('vue').onUnmounted
|
||||
const onUpdated: typeof import('vue').onUpdated
|
||||
const onWatcherCleanup: typeof import('vue').onWatcherCleanup
|
||||
const pausableWatch: typeof import('@vueuse/core').pausableWatch
|
||||
const provide: typeof import('vue').provide
|
||||
const provideLocal: typeof import('@vueuse/core').provideLocal
|
||||
const reactify: typeof import('@vueuse/core').reactify
|
||||
const reactifyObject: typeof import('@vueuse/core').reactifyObject
|
||||
const reactive: typeof import('vue').reactive
|
||||
const reactiveComputed: typeof import('@vueuse/core').reactiveComputed
|
||||
const reactiveOmit: typeof import('@vueuse/core').reactiveOmit
|
||||
const reactivePick: typeof import('@vueuse/core').reactivePick
|
||||
const readonly: typeof import('vue').readonly
|
||||
const ref: typeof import('vue').ref
|
||||
const refAutoReset: typeof import('@vueuse/core').refAutoReset
|
||||
const refDebounced: typeof import('@vueuse/core').refDebounced
|
||||
const refDefault: typeof import('@vueuse/core').refDefault
|
||||
const refManualReset: typeof import('@vueuse/core').refManualReset
|
||||
const refThrottled: typeof import('@vueuse/core').refThrottled
|
||||
const refWithControl: typeof import('@vueuse/core').refWithControl
|
||||
const resolveComponent: typeof import('vue').resolveComponent
|
||||
const resolveRef: typeof import('@vueuse/core').resolveRef
|
||||
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
||||
const setActivePinia: typeof import('pinia').setActivePinia
|
||||
const setMapStoreSuffix: typeof import('pinia').setMapStoreSuffix
|
||||
const shallowReactive: typeof import('vue').shallowReactive
|
||||
const shallowReadonly: typeof import('vue').shallowReadonly
|
||||
const shallowRef: typeof import('vue').shallowRef
|
||||
const storeToRefs: typeof import('pinia').storeToRefs
|
||||
const syncRef: typeof import('@vueuse/core').syncRef
|
||||
const syncRefs: typeof import('@vueuse/core').syncRefs
|
||||
const templateRef: typeof import('@vueuse/core').templateRef
|
||||
const throttledRef: typeof import('@vueuse/core').throttledRef
|
||||
const throttledWatch: typeof import('@vueuse/core').throttledWatch
|
||||
const toRaw: typeof import('vue').toRaw
|
||||
const toReactive: typeof import('@vueuse/core').toReactive
|
||||
const toRef: typeof import('vue').toRef
|
||||
const toRefs: typeof import('vue').toRefs
|
||||
const toValue: typeof import('vue').toValue
|
||||
const triggerRef: typeof import('vue').triggerRef
|
||||
const tryOnBeforeMount: typeof import('@vueuse/core').tryOnBeforeMount
|
||||
const tryOnBeforeUnmount: typeof import('@vueuse/core').tryOnBeforeUnmount
|
||||
const tryOnMounted: typeof import('@vueuse/core').tryOnMounted
|
||||
const tryOnScopeDispose: typeof import('@vueuse/core').tryOnScopeDispose
|
||||
const tryOnUnmounted: typeof import('@vueuse/core').tryOnUnmounted
|
||||
const unref: typeof import('vue').unref
|
||||
const unrefElement: typeof import('@vueuse/core').unrefElement
|
||||
const until: typeof import('@vueuse/core').until
|
||||
const useActiveElement: typeof import('@vueuse/core').useActiveElement
|
||||
const useAnimate: typeof import('@vueuse/core').useAnimate
|
||||
const useArrayDifference: typeof import('@vueuse/core').useArrayDifference
|
||||
const useArrayEvery: typeof import('@vueuse/core').useArrayEvery
|
||||
const useArrayFilter: typeof import('@vueuse/core').useArrayFilter
|
||||
const useArrayFind: typeof import('@vueuse/core').useArrayFind
|
||||
const useArrayFindIndex: typeof import('@vueuse/core').useArrayFindIndex
|
||||
const useArrayFindLast: typeof import('@vueuse/core').useArrayFindLast
|
||||
const useArrayIncludes: typeof import('@vueuse/core').useArrayIncludes
|
||||
const useArrayJoin: typeof import('@vueuse/core').useArrayJoin
|
||||
const useArrayMap: typeof import('@vueuse/core').useArrayMap
|
||||
const useArrayReduce: typeof import('@vueuse/core').useArrayReduce
|
||||
const useArraySome: typeof import('@vueuse/core').useArraySome
|
||||
const useArrayUnique: typeof import('@vueuse/core').useArrayUnique
|
||||
const useAsyncQueue: typeof import('@vueuse/core').useAsyncQueue
|
||||
const useAsyncState: typeof import('@vueuse/core').useAsyncState
|
||||
const useAttrs: typeof import('vue').useAttrs
|
||||
const useBase64: typeof import('@vueuse/core').useBase64
|
||||
const useBattery: typeof import('@vueuse/core').useBattery
|
||||
const useBluetooth: typeof import('@vueuse/core').useBluetooth
|
||||
const useBreakpoints: typeof import('@vueuse/core').useBreakpoints
|
||||
const useBroadcastChannel: typeof import('@vueuse/core').useBroadcastChannel
|
||||
const useBrowserLocation: typeof import('@vueuse/core').useBrowserLocation
|
||||
const useCached: typeof import('@vueuse/core').useCached
|
||||
const useClipboard: typeof import('@vueuse/core').useClipboard
|
||||
const useClipboardItems: typeof import('@vueuse/core').useClipboardItems
|
||||
const useCloned: typeof import('@vueuse/core').useCloned
|
||||
const useColorMode: typeof import('@vueuse/core').useColorMode
|
||||
const useConfirmDialog: typeof import('@vueuse/core').useConfirmDialog
|
||||
const useCountdown: typeof import('@vueuse/core').useCountdown
|
||||
const useCounter: typeof import('@vueuse/core').useCounter
|
||||
const useCssModule: typeof import('vue').useCssModule
|
||||
const useCssSupports: typeof import('@vueuse/core').useCssSupports
|
||||
const useCssVar: typeof import('@vueuse/core').useCssVar
|
||||
const useCssVars: typeof import('vue').useCssVars
|
||||
const useCurrentElement: typeof import('@vueuse/core').useCurrentElement
|
||||
const useCycleList: typeof import('@vueuse/core').useCycleList
|
||||
const useDark: typeof import('@vueuse/core').useDark
|
||||
const useDateFormat: typeof import('@vueuse/core').useDateFormat
|
||||
const useDebounce: typeof import('@vueuse/core').useDebounce
|
||||
const useDebounceFn: typeof import('@vueuse/core').useDebounceFn
|
||||
const useDebouncedRefHistory: typeof import('@vueuse/core').useDebouncedRefHistory
|
||||
const useDeviceMotion: typeof import('@vueuse/core').useDeviceMotion
|
||||
const useDeviceOrientation: typeof import('@vueuse/core').useDeviceOrientation
|
||||
const useDevicePixelRatio: typeof import('@vueuse/core').useDevicePixelRatio
|
||||
const useDevicesList: typeof import('@vueuse/core').useDevicesList
|
||||
const useDisplayMedia: typeof import('@vueuse/core').useDisplayMedia
|
||||
const useDocumentVisibility: typeof import('@vueuse/core').useDocumentVisibility
|
||||
const useDraggable: typeof import('@vueuse/core').useDraggable
|
||||
const useDropZone: typeof import('@vueuse/core').useDropZone
|
||||
const useElementBounding: typeof import('@vueuse/core').useElementBounding
|
||||
const useElementByPoint: typeof import('@vueuse/core').useElementByPoint
|
||||
const useElementHover: typeof import('@vueuse/core').useElementHover
|
||||
const useElementSize: typeof import('@vueuse/core').useElementSize
|
||||
const useElementVisibility: typeof import('@vueuse/core').useElementVisibility
|
||||
const useEventBus: typeof import('@vueuse/core').useEventBus
|
||||
const useEventListener: typeof import('@vueuse/core').useEventListener
|
||||
const useEventSource: typeof import('@vueuse/core').useEventSource
|
||||
const useEyeDropper: typeof import('@vueuse/core').useEyeDropper
|
||||
const useFavicon: typeof import('@vueuse/core').useFavicon
|
||||
const useFetch: typeof import('@vueuse/core').useFetch
|
||||
const useFileDialog: typeof import('@vueuse/core').useFileDialog
|
||||
const useFileSystemAccess: typeof import('@vueuse/core').useFileSystemAccess
|
||||
const useFocus: typeof import('@vueuse/core').useFocus
|
||||
const useFocusWithin: typeof import('@vueuse/core').useFocusWithin
|
||||
const useFps: typeof import('@vueuse/core').useFps
|
||||
const useFullscreen: typeof import('@vueuse/core').useFullscreen
|
||||
const useGamepad: typeof import('@vueuse/core').useGamepad
|
||||
const useGeolocation: typeof import('@vueuse/core').useGeolocation
|
||||
const useId: typeof import('vue').useId
|
||||
const useIdle: typeof import('@vueuse/core').useIdle
|
||||
const useImage: typeof import('@vueuse/core').useImage
|
||||
const useInfiniteScroll: typeof import('@vueuse/core').useInfiniteScroll
|
||||
const useIntersectionObserver: typeof import('@vueuse/core').useIntersectionObserver
|
||||
const useInterval: typeof import('@vueuse/core').useInterval
|
||||
const useIntervalFn: typeof import('@vueuse/core').useIntervalFn
|
||||
const useKeyModifier: typeof import('@vueuse/core').useKeyModifier
|
||||
const useLastChanged: typeof import('@vueuse/core').useLastChanged
|
||||
const useLink: typeof import('vue-router').useLink
|
||||
const useLocalStorage: typeof import('@vueuse/core').useLocalStorage
|
||||
const useMagicKeys: typeof import('@vueuse/core').useMagicKeys
|
||||
const useManualRefHistory: typeof import('@vueuse/core').useManualRefHistory
|
||||
const useMediaControls: typeof import('@vueuse/core').useMediaControls
|
||||
const useMediaQuery: typeof import('@vueuse/core').useMediaQuery
|
||||
const useMemoize: typeof import('@vueuse/core').useMemoize
|
||||
const useMemory: typeof import('@vueuse/core').useMemory
|
||||
const useModel: typeof import('vue').useModel
|
||||
const useMounted: typeof import('@vueuse/core').useMounted
|
||||
const useMouse: typeof import('@vueuse/core').useMouse
|
||||
const useMouseInElement: typeof import('@vueuse/core').useMouseInElement
|
||||
const useMousePressed: typeof import('@vueuse/core').useMousePressed
|
||||
const useMutationObserver: typeof import('@vueuse/core').useMutationObserver
|
||||
const useNavigatorLanguage: typeof import('@vueuse/core').useNavigatorLanguage
|
||||
const useNetwork: typeof import('@vueuse/core').useNetwork
|
||||
const useNow: typeof import('@vueuse/core').useNow
|
||||
const useObjectUrl: typeof import('@vueuse/core').useObjectUrl
|
||||
const useOffsetPagination: typeof import('@vueuse/core').useOffsetPagination
|
||||
const useOnline: typeof import('@vueuse/core').useOnline
|
||||
const usePageLeave: typeof import('@vueuse/core').usePageLeave
|
||||
const useParallax: typeof import('@vueuse/core').useParallax
|
||||
const useParentElement: typeof import('@vueuse/core').useParentElement
|
||||
const usePerformanceObserver: typeof import('@vueuse/core').usePerformanceObserver
|
||||
const usePermission: typeof import('@vueuse/core').usePermission
|
||||
const usePointer: typeof import('@vueuse/core').usePointer
|
||||
const usePointerLock: typeof import('@vueuse/core').usePointerLock
|
||||
const usePointerSwipe: typeof import('@vueuse/core').usePointerSwipe
|
||||
const usePreferredColorScheme: typeof import('@vueuse/core').usePreferredColorScheme
|
||||
const usePreferredContrast: typeof import('@vueuse/core').usePreferredContrast
|
||||
const usePreferredDark: typeof import('@vueuse/core').usePreferredDark
|
||||
const usePreferredLanguages: typeof import('@vueuse/core').usePreferredLanguages
|
||||
const usePreferredReducedMotion: typeof import('@vueuse/core').usePreferredReducedMotion
|
||||
const usePreferredReducedTransparency: typeof import('@vueuse/core').usePreferredReducedTransparency
|
||||
const usePrevious: typeof import('@vueuse/core').usePrevious
|
||||
const useRafFn: typeof import('@vueuse/core').useRafFn
|
||||
const useRefHistory: typeof import('@vueuse/core').useRefHistory
|
||||
const useResizeObserver: typeof import('@vueuse/core').useResizeObserver
|
||||
const useRoute: typeof import('vue-router').useRoute
|
||||
const useRouter: typeof import('vue-router').useRouter
|
||||
const useSSRWidth: typeof import('@vueuse/core').useSSRWidth
|
||||
const useScreenOrientation: typeof import('@vueuse/core').useScreenOrientation
|
||||
const useScreenSafeArea: typeof import('@vueuse/core').useScreenSafeArea
|
||||
const useScriptTag: typeof import('@vueuse/core').useScriptTag
|
||||
const useScroll: typeof import('@vueuse/core').useScroll
|
||||
const useScrollLock: typeof import('@vueuse/core').useScrollLock
|
||||
const useSessionStorage: typeof import('@vueuse/core').useSessionStorage
|
||||
const useShare: typeof import('@vueuse/core').useShare
|
||||
const useSlots: typeof import('vue').useSlots
|
||||
const useSorted: typeof import('@vueuse/core').useSorted
|
||||
const useSpeechRecognition: typeof import('@vueuse/core').useSpeechRecognition
|
||||
const useSpeechSynthesis: typeof import('@vueuse/core').useSpeechSynthesis
|
||||
const useStepper: typeof import('@vueuse/core').useStepper
|
||||
const useStorage: typeof import('@vueuse/core').useStorage
|
||||
const useStorageAsync: typeof import('@vueuse/core').useStorageAsync
|
||||
const useStyleTag: typeof import('@vueuse/core').useStyleTag
|
||||
const useSupported: typeof import('@vueuse/core').useSupported
|
||||
const useSwipe: typeof import('@vueuse/core').useSwipe
|
||||
const useTemplateRef: typeof import('vue').useTemplateRef
|
||||
const useTemplateRefsList: typeof import('@vueuse/core').useTemplateRefsList
|
||||
const useTextDirection: typeof import('@vueuse/core').useTextDirection
|
||||
const useTextSelection: typeof import('@vueuse/core').useTextSelection
|
||||
const useTextareaAutosize: typeof import('@vueuse/core').useTextareaAutosize
|
||||
const useThrottle: typeof import('@vueuse/core').useThrottle
|
||||
const useThrottleFn: typeof import('@vueuse/core').useThrottleFn
|
||||
const useThrottledRefHistory: typeof import('@vueuse/core').useThrottledRefHistory
|
||||
const useTimeAgo: typeof import('@vueuse/core').useTimeAgo
|
||||
const useTimeAgoIntl: typeof import('@vueuse/core').useTimeAgoIntl
|
||||
const useTimeout: typeof import('@vueuse/core').useTimeout
|
||||
const useTimeoutFn: typeof import('@vueuse/core').useTimeoutFn
|
||||
const useTimeoutPoll: typeof import('@vueuse/core').useTimeoutPoll
|
||||
const useTimestamp: typeof import('@vueuse/core').useTimestamp
|
||||
const useTitle: typeof import('@vueuse/core').useTitle
|
||||
const useToNumber: typeof import('@vueuse/core').useToNumber
|
||||
const useToString: typeof import('@vueuse/core').useToString
|
||||
const useToggle: typeof import('@vueuse/core').useToggle
|
||||
const useTransition: typeof import('@vueuse/core').useTransition
|
||||
const useUrlSearchParams: typeof import('@vueuse/core').useUrlSearchParams
|
||||
const useUserMedia: typeof import('@vueuse/core').useUserMedia
|
||||
const useVModel: typeof import('@vueuse/core').useVModel
|
||||
const useVModels: typeof import('@vueuse/core').useVModels
|
||||
const useVibrate: typeof import('@vueuse/core').useVibrate
|
||||
const useVirtualList: typeof import('@vueuse/core').useVirtualList
|
||||
const useWakeLock: typeof import('@vueuse/core').useWakeLock
|
||||
const useWebNotification: typeof import('@vueuse/core').useWebNotification
|
||||
const useWebSocket: typeof import('@vueuse/core').useWebSocket
|
||||
const useWebWorker: typeof import('@vueuse/core').useWebWorker
|
||||
const useWebWorkerFn: typeof import('@vueuse/core').useWebWorkerFn
|
||||
const useWindowFocus: typeof import('@vueuse/core').useWindowFocus
|
||||
const useWindowScroll: typeof import('@vueuse/core').useWindowScroll
|
||||
const useWindowSize: typeof import('@vueuse/core').useWindowSize
|
||||
const watch: typeof import('vue').watch
|
||||
const watchArray: typeof import('@vueuse/core').watchArray
|
||||
const watchAtMost: typeof import('@vueuse/core').watchAtMost
|
||||
const watchDebounced: typeof import('@vueuse/core').watchDebounced
|
||||
const watchDeep: typeof import('@vueuse/core').watchDeep
|
||||
const watchEffect: typeof import('vue').watchEffect
|
||||
const watchIgnorable: typeof import('@vueuse/core').watchIgnorable
|
||||
const watchImmediate: typeof import('@vueuse/core').watchImmediate
|
||||
const watchOnce: typeof import('@vueuse/core').watchOnce
|
||||
const watchPausable: typeof import('@vueuse/core').watchPausable
|
||||
const watchPostEffect: typeof import('vue').watchPostEffect
|
||||
const watchSyncEffect: typeof import('vue').watchSyncEffect
|
||||
const watchThrottled: typeof import('@vueuse/core').watchThrottled
|
||||
const watchTriggerable: typeof import('@vueuse/core').watchTriggerable
|
||||
const watchWithFilter: typeof import('@vueuse/core').watchWithFilter
|
||||
const whenever: typeof import('@vueuse/core').whenever
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
||||
import('vue')
|
||||
}
|
||||
Reference in New Issue
Block a user