create-bubbles 0.1.22 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/index.mjs +5 -0
  2. package/index.js +1 -1
  3. package/package.json +25 -24
  4. package/template-taro-react-oxc/.env.development +1 -1
  5. package/template-taro-react-oxc/.env.production +1 -1
  6. package/template-taro-react-oxc/project.config.json +1 -1
  7. package/template-taro-vue-eslint/project.config.json +2 -2
  8. package/{template-vp-monorepo-react-nestjs → template-vp-monorepo-react-hono}/.spaces/server//347/231/273/345/275/225/JWT/344/270/216RefreshToken/350/275/256/346/215/242/351/211/264/346/235/203/346/236/266/346/236/204/345/256/236/347/216/260/346/214/207/345/215/227.md +588 -1133
  9. package/template-vp-monorepo-react-hono/.vite-hooks/commit-msg +2 -0
  10. package/template-vp-monorepo-react-hono/.vite-hooks/pre-commit +2 -0
  11. package/template-vp-monorepo-react-hono/.vscode/extensions.json +3 -0
  12. package/template-vp-monorepo-react-hono/.vscode/settings.json +23 -0
  13. package/template-vp-monorepo-react-hono/AGENTS.md +16 -0
  14. package/template-vp-monorepo-react-hono/README.md +54 -0
  15. package/template-vp-monorepo-react-hono/apps/server/.env.example +13 -0
  16. package/template-vp-monorepo-react-hono/apps/server/README.md +75 -0
  17. package/template-vp-monorepo-react-hono/apps/server/drizzle/0000_flaky_madame_masque.sql +18 -0
  18. package/template-vp-monorepo-react-hono/apps/server/drizzle/meta/0000_snapshot.json +153 -0
  19. package/template-vp-monorepo-react-hono/apps/server/drizzle/meta/_journal.json +13 -0
  20. package/template-vp-monorepo-react-hono/apps/server/drizzle.config.ts +19 -0
  21. package/template-vp-monorepo-react-hono/apps/server/package.json +46 -0
  22. package/template-vp-monorepo-react-hono/apps/server/src/app.test.ts +57 -0
  23. package/template-vp-monorepo-react-hono/apps/server/src/app.ts +68 -0
  24. package/template-vp-monorepo-react-hono/apps/server/src/common/errors/app-error.ts +23 -0
  25. package/template-vp-monorepo-react-hono/apps/server/src/common/http/response.ts +21 -0
  26. package/template-vp-monorepo-react-hono/apps/server/src/common/logger.ts +30 -0
  27. package/template-vp-monorepo-react-hono/apps/server/src/config/env.ts +54 -0
  28. package/template-vp-monorepo-react-hono/apps/server/src/index.bun.ts +60 -0
  29. package/template-vp-monorepo-react-hono/apps/server/src/index.ts +73 -0
  30. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/client.ts +46 -0
  31. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/schema/index.ts +1 -0
  32. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/schema/job-runs.ts +42 -0
  33. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/queue/connection.ts +6 -0
  34. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/redis/client.ts +39 -0
  35. package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/redis/options.ts +28 -0
  36. package/template-vp-monorepo-react-hono/apps/server/src/modules/health/health.routes.ts +17 -0
  37. package/template-vp-monorepo-react-hono/apps/server/src/modules/health/health.service.ts +59 -0
  38. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.queue.ts +46 -0
  39. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.repository.ts +101 -0
  40. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.routes.ts +46 -0
  41. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.schemas.ts +9 -0
  42. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.service.ts +57 -0
  43. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.types.ts +11 -0
  44. package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.worker.ts +108 -0
  45. package/template-vp-monorepo-react-hono/apps/server/src/runtime/shutdown.ts +38 -0
  46. package/template-vp-monorepo-react-hono/apps/server/src/worker.ts +48 -0
  47. package/template-vp-monorepo-react-hono/apps/server/tsconfig.json +15 -0
  48. package/template-vp-monorepo-react-hono/apps/server/vite.config.ts +15 -0
  49. package/template-vp-monorepo-react-hono/apps/web/.env +2 -0
  50. package/template-vp-monorepo-react-hono/apps/web/.env.dev +1 -0
  51. package/template-vp-monorepo-react-hono/apps/web/.env.prod +1 -0
  52. package/template-vp-monorepo-react-hono/apps/web/index.html +13 -0
  53. package/template-vp-monorepo-react-hono/apps/web/package.json +35 -0
  54. package/template-vp-monorepo-react-hono/apps/web/public/favicon.svg +1 -0
  55. package/template-vp-monorepo-react-hono/apps/web/public/icons.svg +24 -0
  56. package/template-vp-monorepo-react-hono/apps/web/src/App.tsx +25 -0
  57. package/template-vp-monorepo-react-hono/apps/web/src/assets/hero.png +0 -0
  58. package/template-vp-monorepo-react-hono/apps/web/src/assets/react.svg +1 -0
  59. package/template-vp-monorepo-react-hono/apps/web/src/assets/vite.svg +1 -0
  60. package/template-vp-monorepo-react-hono/apps/web/src/components/Loading/PageLoading.tsx +11 -0
  61. package/template-vp-monorepo-react-hono/apps/web/src/locales/en_US.json +4 -0
  62. package/template-vp-monorepo-react-hono/apps/web/src/locales/zh_CN.json +4 -0
  63. package/template-vp-monorepo-react-hono/apps/web/src/main.tsx +5 -0
  64. package/template-vp-monorepo-react-hono/apps/web/src/pages/home/index.tsx +47 -0
  65. package/template-vp-monorepo-react-hono/apps/web/src/router/index.tsx +25 -0
  66. package/template-vp-monorepo-react-hono/apps/web/src/router/modules/.gitkeep +0 -0
  67. package/template-vp-monorepo-react-hono/apps/web/src/styles/index.css +7 -0
  68. package/template-vp-monorepo-react-hono/apps/web/src/types/auto-imports.d.ts +58 -0
  69. package/template-vp-monorepo-react-hono/apps/web/src/utils/env/index.ts +6 -0
  70. package/template-vp-monorepo-react-hono/apps/web/src/utils/request/core/index.ts +420 -0
  71. package/template-vp-monorepo-react-hono/apps/web/src/utils/request/core/utils.ts +39 -0
  72. package/template-vp-monorepo-react-hono/apps/web/src/utils/request/index.ts +61 -0
  73. package/template-vp-monorepo-react-hono/apps/web/tsconfig.json +18 -0
  74. package/template-vp-monorepo-react-hono/apps/web/vite.config.ts +45 -0
  75. package/template-vp-monorepo-react-hono/commitlint.config.js +1 -0
  76. package/template-vp-monorepo-react-hono/docker-compose.yml +41 -0
  77. package/template-vp-monorepo-react-hono/mise.toml +4 -0
  78. package/template-vp-monorepo-react-hono/package.json +37 -0
  79. package/template-vp-monorepo-react-hono/packages/i18n/core/package.json +20 -0
  80. package/template-vp-monorepo-react-hono/packages/i18n/core/src/format.ts +9 -0
  81. package/template-vp-monorepo-react-hono/packages/i18n/core/src/i18n.ts +73 -0
  82. package/template-vp-monorepo-react-hono/packages/i18n/core/src/index.ts +24 -0
  83. package/template-vp-monorepo-react-hono/packages/i18n/core/src/storage.ts +47 -0
  84. package/template-vp-monorepo-react-hono/packages/i18n/core/src/store.ts +48 -0
  85. package/template-vp-monorepo-react-hono/packages/i18n/core/src/types.ts +36 -0
  86. package/template-vp-monorepo-react-hono/packages/i18n/core/tsconfig.json +4 -0
  87. package/template-vp-monorepo-react-hono/packages/i18n/core/vite.config.ts +13 -0
  88. package/template-vp-monorepo-react-hono/packages/i18n/react/package.json +28 -0
  89. package/template-vp-monorepo-react-hono/packages/i18n/react/src/index.tsx +26 -0
  90. package/template-vp-monorepo-react-hono/packages/i18n/react/src/use-store.ts +14 -0
  91. package/template-vp-monorepo-react-hono/packages/i18n/react/tsconfig.json +9 -0
  92. package/template-vp-monorepo-react-hono/packages/i18n/react/vite.config.ts +16 -0
  93. package/template-vp-monorepo-react-hono/packages/i18n/vue/package.json +27 -0
  94. package/template-vp-monorepo-react-hono/packages/i18n/vue/src/index.ts +52 -0
  95. package/template-vp-monorepo-react-hono/packages/i18n/vue/src/use-store.ts +19 -0
  96. package/template-vp-monorepo-react-hono/packages/i18n/vue/tsconfig.json +8 -0
  97. package/template-vp-monorepo-react-hono/packages/i18n/vue/vite.config.ts +16 -0
  98. package/template-vp-monorepo-react-hono/pnpm-workspace.yaml +57 -0
  99. package/template-vp-monorepo-react-hono/scripts/clean.mjs +48 -0
  100. package/template-vp-monorepo-react-hono/tsconfig.base.json +10 -0
  101. package/template-vp-monorepo-react-hono/tsconfig.bundler.json +12 -0
  102. package/template-vp-monorepo-react-hono/tsconfig.json +11 -0
  103. package/template-vp-monorepo-react-hono/tsconfig.lib.json +10 -0
  104. package/template-vp-monorepo-react-hono/vite.config.ts +20 -0
  105. package/template-vp-monorepo-react-nestjs/.spaces/server/todo.md +991 -0
  106. package/template-vp-monorepo-react-nestjs/.vscode/launch.json +16 -0
  107. package/template-vp-monorepo-react-nestjs/.vscode/settings.json +21 -17
  108. package/template-vp-monorepo-react-nestjs/apps/server/.env.development +3 -39
  109. package/template-vp-monorepo-react-nestjs/apps/server/.swcrc +8 -0
  110. package/template-vp-monorepo-react-nestjs/apps/server/drizzle.config.ts +8 -3
  111. package/template-vp-monorepo-react-nestjs/apps/server/nest-cli.json +8 -1
  112. package/template-vp-monorepo-react-nestjs/apps/server/package.json +11 -6
  113. package/template-vp-monorepo-react-nestjs/apps/server/src/app.controller.ts +2 -0
  114. package/template-vp-monorepo-react-nestjs/apps/server/src/app.module.ts +20 -15
  115. package/template-vp-monorepo-react-nestjs/apps/server/src/common/adapters/fastify.adapter.ts +16 -0
  116. package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/auth.ts +2 -0
  117. package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/response.ts +0 -4
  118. package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/session.constants.ts +28 -0
  119. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/current-auth.decorator.ts +16 -0
  120. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/public.decorator.ts +4 -0
  121. package/template-vp-monorepo-react-nestjs/apps/server/src/common/dto/api-failure.dto.ts +25 -0
  122. package/template-vp-monorepo-react-nestjs/apps/server/src/common/error/common.error.ts +40 -0
  123. package/template-vp-monorepo-react-nestjs/apps/server/src/common/exceptions/app.exception.ts +55 -0
  124. package/template-vp-monorepo-react-nestjs/apps/server/src/common/filters/global-exception.filter.ts +384 -0
  125. package/template-vp-monorepo-react-nestjs/apps/server/src/common/openapi/response-headers.ts +9 -0
  126. package/template-vp-monorepo-react-nestjs/apps/server/src/config/index.ts +1 -1
  127. package/template-vp-monorepo-react-nestjs/apps/server/src/config/session.config.ts +36 -0
  128. package/template-vp-monorepo-react-nestjs/apps/server/src/database/schema.ts +7 -8
  129. package/template-vp-monorepo-react-nestjs/apps/server/src/main.ts +29 -8
  130. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.controller.ts +55 -0
  131. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.errors.ts +42 -0
  132. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.module.ts +26 -0
  133. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.repository.ts +40 -0
  134. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.service.ts +129 -0
  135. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/auth-repsponse.dto.ts +31 -0
  136. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/login.dto.ts +11 -0
  137. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/register.dto.ts +17 -0
  138. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/guards/session-auth.guard.ts +50 -0
  139. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password.service.ts +24 -0
  140. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-store.service.ts +198 -0
  141. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-token.service.ts +29 -0
  142. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.script.ts +221 -0
  143. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.types.ts +24 -0
  144. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.controller.ts +1 -1
  145. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/dto/create-user.dto.ts +3 -5
  146. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.service.ts +1 -1
  147. package/template-vp-monorepo-react-nestjs/apps/server/src/utils/env-arr.ts +3 -0
  148. package/template-vp-monorepo-react-nestjs/apps/server/test/error-catalog.spec.ts +30 -0
  149. package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.build.json +11 -1
  150. package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.json +12 -20
  151. package/template-vp-monorepo-react-nestjs/apps/server/vite.config.ts +15 -0
  152. package/template-vp-monorepo-react-nestjs/apps/web/package.json +1 -0
  153. package/template-vp-monorepo-react-nestjs/apps/web/tsconfig.json +5 -15
  154. package/template-vp-monorepo-react-nestjs/apps/web-vue/commitlint.config.js +1 -1
  155. package/template-vp-monorepo-react-nestjs/apps/web-vue/lefthook.yml +1 -1
  156. package/template-vp-monorepo-react-nestjs/apps/web-vue/package.json +1 -3
  157. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/api/index.ts +5 -5
  158. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/components/Icon/svg-icon.vue +3 -3
  159. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/lib.ts +6 -6
  160. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/useEcharts.ts +34 -29
  161. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/i18n/instance.ts +2 -0
  162. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/index.vue +17 -32
  163. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/locales/en_US.json +4 -1
  164. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/locales/zh_CN.json +4 -1
  165. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/index.ts +3 -3
  166. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/permissionGuard.ts +7 -7
  167. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/index.ts +7 -7
  168. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/interface.ts +6 -6
  169. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/index.ts +6 -6
  170. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/modules/user.ts +9 -9
  171. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/styles/index.scss +3 -3
  172. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/types/antdv-next.d.ts +1 -0
  173. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/env.ts +1 -1
  174. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/index.ts +63 -45
  175. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/utils.ts +12 -6
  176. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/index.ts +1 -1
  177. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/config.ts +687 -687
  178. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/index.vue +7 -7
  179. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/tree-chart.vue +2 -7
  180. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/home/index.vue +13 -3
  181. package/template-vp-monorepo-react-nestjs/apps/web-vue/tsconfig.json +5 -17
  182. package/template-vp-monorepo-react-nestjs/apps/web-vue/uno.config.ts +5 -5
  183. package/template-vp-monorepo-react-nestjs/i18n.config.ts +22 -0
  184. package/template-vp-monorepo-react-nestjs/package.json +12 -1
  185. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/README.md +113 -0
  186. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/docs/excel-sync-plan.md +618 -0
  187. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/package.json +31 -0
  188. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/cli.ts +5 -0
  189. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/command.ts +512 -0
  190. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/config.ts +15 -0
  191. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/files.ts +67 -0
  192. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/index.ts +19 -0
  193. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/load-config.ts +228 -0
  194. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/report.ts +57 -0
  195. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.test.ts +81 -0
  196. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.ts +290 -0
  197. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/sync.ts +274 -0
  198. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/command.test.ts +209 -0
  199. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/config.test.ts +19 -0
  200. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/load-config.test.ts +194 -0
  201. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/report.test.ts +63 -0
  202. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/sync.test.ts +203 -0
  203. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/temporary-directory.ts +25 -0
  204. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/tsconfig.json +9 -0
  205. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/vite.config.ts +18 -0
  206. package/template-vp-monorepo-react-nestjs/packages/i18n/core/tsconfig.json +1 -12
  207. package/template-vp-monorepo-react-nestjs/packages/i18n/react/tsconfig.json +3 -10
  208. package/template-vp-monorepo-react-nestjs/packages/i18n/vue/tsconfig.json +3 -10
  209. package/template-vp-monorepo-react-nestjs/packages/shared/package.json +40 -0
  210. package/template-vp-monorepo-react-nestjs/packages/shared/src/index.ts +13 -0
  211. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/auth.ts +35 -0
  212. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/common.ts +11 -0
  213. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/index.ts +11 -0
  214. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/account.ts +5 -0
  215. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/index.ts +2 -0
  216. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/session-terminal.ts +11 -0
  217. package/template-vp-monorepo-react-nestjs/packages/shared/tsconfig.json +4 -0
  218. package/template-vp-monorepo-react-nestjs/packages/shared/vite.config.ts +17 -0
  219. package/template-vp-monorepo-react-nestjs/pnpm-workspace.yaml +6 -6
  220. package/template-vp-monorepo-react-nestjs/scripts/clean.mjs +48 -0
  221. package/template-vp-monorepo-react-nestjs/tsconfig.base.json +10 -0
  222. package/template-vp-monorepo-react-nestjs/tsconfig.bundler.json +12 -0
  223. package/template-vp-monorepo-react-nestjs/tsconfig.json +8 -6
  224. package/template-vp-monorepo-react-nestjs/tsconfig.lib.json +10 -0
  225. package/template-vp-monorepo-react-nestjs/vite.config.ts +2 -1
  226. package/template-vp-vue-eslint-vapor/.env +6 -0
  227. package/template-vp-vue-eslint-vapor/.env.development +2 -0
  228. package/template-vp-vue-eslint-vapor/.env.production +2 -0
  229. package/template-vp-vue-eslint-vapor/.vite-hooks/commit-msg +1 -0
  230. package/template-vp-vue-eslint-vapor/.vite-hooks/pre-commit +1 -0
  231. package/template-vp-vue-eslint-vapor/.vscode/extensions.json +3 -0
  232. package/template-vp-vue-eslint-vapor/AGENTS.md +16 -0
  233. package/template-vp-vue-eslint-vapor/README.md +93 -0
  234. package/template-vp-vue-eslint-vapor/commitlint.config.js +1 -0
  235. package/template-vp-vue-eslint-vapor/eslint.config.js +13 -0
  236. package/template-vp-vue-eslint-vapor/index.html +13 -0
  237. package/template-vp-vue-eslint-vapor/package.json +64 -0
  238. package/template-vp-vue-eslint-vapor/pnpm-workspace.yaml +2 -0
  239. package/template-vp-vue-eslint-vapor/public/vite.svg +1 -0
  240. package/template-vp-vue-eslint-vapor/src/App.vue +7 -0
  241. package/template-vp-vue-eslint-vapor/src/api/index.ts +12 -0
  242. package/template-vp-vue-eslint-vapor/src/assets/icon/home.svg +3 -0
  243. package/template-vp-vue-eslint-vapor/src/assets/icon/logo.svg +1 -0
  244. package/template-vp-vue-eslint-vapor/src/assets/image/.gitkeep +0 -0
  245. package/template-vp-vue-eslint-vapor/src/components/Icon/svg-icon.vue +29 -0
  246. package/template-vp-vue-eslint-vapor/src/hooks/chart/lib.ts +57 -0
  247. package/template-vp-vue-eslint-vapor/src/hooks/chart/useEcharts.ts +65 -0
  248. package/template-vp-vue-eslint-vapor/src/layout/default/header/index.vue +57 -0
  249. package/template-vp-vue-eslint-vapor/src/layout/default/index.vue +138 -0
  250. package/template-vp-vue-eslint-vapor/src/main.ts +19 -0
  251. package/template-vp-vue-eslint-vapor/src/router/guard/index.ts +7 -0
  252. package/template-vp-vue-eslint-vapor/src/router/guard/permissionGuard.ts +13 -0
  253. package/template-vp-vue-eslint-vapor/src/router/index.ts +18 -0
  254. package/template-vp-vue-eslint-vapor/src/router/interface.ts +9 -0
  255. package/template-vp-vue-eslint-vapor/src/router/modules/index.ts +33 -0
  256. package/template-vp-vue-eslint-vapor/src/store/index.ts +11 -0
  257. package/template-vp-vue-eslint-vapor/src/store/modules/user.ts +17 -0
  258. package/template-vp-vue-eslint-vapor/src/styles/font.scss +0 -0
  259. package/template-vp-vue-eslint-vapor/src/styles/index.scss +29 -0
  260. package/template-vp-vue-eslint-vapor/src/styles/variables.scss +3 -0
  261. package/template-vp-vue-eslint-vapor/src/types/vite-env.d.ts +15 -0
  262. package/template-vp-vue-eslint-vapor/src/utils/env.ts +11 -0
  263. package/template-vp-vue-eslint-vapor/src/utils/request/core/index.ts +425 -0
  264. package/template-vp-vue-eslint-vapor/src/utils/request/core/utils.ts +39 -0
  265. package/template-vp-vue-eslint-vapor/src/utils/request/index.ts +44 -0
  266. package/template-vp-vue-eslint-vapor/src/views/example/echart/config.ts +1794 -0
  267. package/template-vp-vue-eslint-vapor/src/views/example/echart/index.vue +20 -0
  268. package/template-vp-vue-eslint-vapor/src/views/example/tree-chart.vue +16 -0
  269. package/template-vp-vue-eslint-vapor/src/views/home/index.vue +16 -0
  270. package/template-vp-vue-eslint-vapor/src/views/login/index.vue +9 -0
  271. package/template-vp-vue-eslint-vapor/tsconfig.json +32 -0
  272. package/template-vp-vue-eslint-vapor/tsconfig.tsbuildinfo +1 -0
  273. package/template-vp-vue-eslint-vapor/uno.config.ts +17 -0
  274. package/template-vp-vue-eslint-vapor/vite.config.ts +66 -0
  275. package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/decorator.ts +0 -2
  276. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/bypass.ts +0 -12
  277. package/template-vp-monorepo-react-nestjs/apps/server/src/common/interceptors/transform.ts +0 -34
  278. package/template-vp-monorepo-react-nestjs/apps/server/src/common/model/response.ts +0 -23
  279. package/template-vp-monorepo-react-nestjs/apps/server/src/config/auth.config.ts +0 -64
  280. package/template-vp-monorepo-react-nestjs/apps/web-vue/pnpm-workspace.yaml +0 -16
  281. /package/{template-vp-monorepo-react-nestjs/apps/server/src/config/security.config.ts → template-vp-monorepo-react-hono/.agents/auth.config.ts} +0 -0
@@ -1,4 +1,6 @@
1
1
  <script lang="ts" setup>
2
+ import type { MenuProps } from 'antdv-next'
3
+
2
4
  import type { MenuRouteRecordRawType } from '@/router/interface'
3
5
 
4
6
  import SvgIcon from '@/components/Icon/svg-icon.vue'
@@ -21,9 +23,9 @@ const openKeys = ref<string[]>([])
21
23
 
22
24
  watchEffect(() => {
23
25
  const matched = route.matched.map(item => item.name).filter(Boolean) as string[]
24
- if (matched.length > 1) {
25
- openKeys.value = [matched[0]]
26
- }
26
+ const parentKey = matched[0]
27
+
28
+ openKeys.value = matched.length > 1 && parentKey !== undefined ? [parentKey] : []
27
29
  })
28
30
 
29
31
  function handleMenuClick({ key }: { key: string }) {
@@ -43,22 +45,24 @@ function renderIcon(icon?: string) {
43
45
  return null
44
46
  }
45
47
 
46
- function getMenuItems(routes: MenuRouteRecordRawType[]) {
48
+ function getMenuItems(routes: MenuRouteRecordRawType[]): NonNullable<MenuProps['items']> {
47
49
  return routes
48
50
  .filter(item => !item.meta?.hideInMenu)
49
51
  .map((item) => {
50
52
  const hasChildren = item.children && item.children.length > 0
53
+ const key = String(item.name ?? item.path)
54
+ const label = item.meta?.title ?? key
51
55
  if (hasChildren) {
52
56
  return {
53
- key: item.name as string,
54
- label: item.meta?.title ?? item.name,
57
+ key,
58
+ label,
55
59
  icon: renderIcon(item.meta?.icon),
56
60
  children: getMenuItems(item.children as MenuRouteRecordRawType[]),
57
61
  }
58
62
  }
59
63
  return {
60
- key: item.name as string,
61
- label: item.meta?.title ?? item.name,
64
+ key,
65
+ label,
62
66
  icon: renderIcon(item.meta?.icon),
63
67
  }
64
68
  })
@@ -69,41 +73,22 @@ const menuItems = computed(() => getMenuItems(menuRoutes))
69
73
 
70
74
  <template>
71
75
  <ALayout class="h-screen">
72
- <ALayoutSider
73
- v-model:collapsed="collapsed"
74
- :trigger="null"
75
- collapsible
76
- :width="220"
77
- class="layout-sider"
78
- >
76
+ <ALayoutSider v-model:collapsed="collapsed" :trigger="null" collapsible :width="220" class="layout-sider">
79
77
  <div class="logo flex-center gap-2 h-[var(--header-height)]">
80
78
  <SvgIcon icon="logo" class="text-2xl" />
81
79
  <span v-show="!collapsed" class="text-lg text-white font-bold">
82
80
  Vue Template
83
81
  </span>
84
82
  </div>
85
- <AMenu
86
- v-model:selected-keys="selectedKeys"
87
- v-model:open-keys="openKeys"
88
- :items="menuItems"
89
- theme="dark"
90
- mode="inline"
91
- @click="handleMenuClick"
92
- />
83
+ <AMenu v-model:selected-keys="selectedKeys" v-model:open-keys="openKeys" :items="menuItems" theme="dark"
84
+ mode="inline" @click="handleMenuClick" />
93
85
  </ALayoutSider>
94
86
 
95
87
  <ALayout>
96
88
  <ALayoutHeader class="layout-header px-4 flex items-center justify-between">
97
89
  <div class="flex gap-3 items-center">
98
- <AButton
99
- type="text"
100
- class="flex-center"
101
- @click="collapsed = !collapsed"
102
- >
103
- <SvgIcon
104
- :icon="collapsed ? 'menu-unfold' : 'menu-fold'"
105
- style="font-size: 18px"
106
- />
90
+ <AButton type="text" class="flex-center" @click="collapsed = !collapsed">
91
+ <SvgIcon :icon="collapsed ? 'menu-unfold' : 'menu-fold'" style="font-size: 18px" />
107
92
  </AButton>
108
93
  </div>
109
94
  <Header />
@@ -1,4 +1,7 @@
1
1
  {
2
2
  "保存": "Save",
3
- "你好1": "Hello"
3
+ "你好1": "Hello",
4
+ "English": "English",
5
+ "中文": "中文",
6
+ "登录": "登录"
4
7
  }
@@ -1,4 +1,7 @@
1
1
  {
2
2
  "保存": "保存",
3
- "你好1": "你好"
3
+ "你好1": "你好",
4
+ "English": "English",
5
+ "中文": "中文",
6
+ "登录": "登录"
4
7
  }
@@ -1,7 +1,7 @@
1
- import type { Router } from "vue-router";
1
+ import type { Router } from 'vue-router'
2
2
 
3
- import { createPermissionGuard } from "./permissionGuard";
3
+ import { createPermissionGuard } from './permissionGuard'
4
4
 
5
5
  export function setupGuard(router: Router) {
6
- createPermissionGuard(router);
6
+ createPermissionGuard(router)
7
7
  }
@@ -1,13 +1,13 @@
1
- import type { Router } from "vue-router";
1
+ import type { Router } from 'vue-router'
2
2
 
3
- import NProgress from "nprogress";
3
+ import NProgress from 'nprogress'
4
4
 
5
5
  export function createPermissionGuard(router: Router) {
6
6
  router.beforeEach((_to, _from, next) => {
7
- NProgress.start();
8
- next();
9
- });
7
+ NProgress.start()
8
+ next()
9
+ })
10
10
  router.afterEach((_to, _from) => {
11
- NProgress.done();
12
- });
11
+ NProgress.done()
12
+ })
13
13
  }
@@ -1,18 +1,18 @@
1
- import type { App } from "vue";
1
+ import type { App } from 'vue'
2
2
 
3
- import { createRouter, createWebHistory } from "vue-router";
3
+ import { createRouter, createWebHistory } from 'vue-router'
4
4
 
5
- import { setupGuard } from "./guard";
6
- import { routes } from "./modules";
5
+ import { setupGuard } from './guard'
6
+ import { routes } from './modules'
7
7
 
8
8
  export const router = createRouter({
9
9
  history: createWebHistory(import.meta.env.PUBLIC_PATH),
10
10
  routes,
11
11
  strict: true,
12
12
  scrollBehavior: () => ({ left: 0, top: 0 }),
13
- });
13
+ })
14
14
 
15
15
  export function setupRouter(app: App) {
16
- setupGuard(router);
17
- app.use(router);
16
+ setupGuard(router)
17
+ app.use(router)
18
18
  }
@@ -1,9 +1,9 @@
1
- import type { RouteRecordRaw } from "vue-router";
1
+ import type { RouteRecordRaw } from 'vue-router'
2
2
 
3
3
  export type MenuRouteRecordRawType = RouteRecordRaw & {
4
4
  meta?: {
5
- title?: string;
6
- icon?: string;
7
- hideInMenu?: boolean;
8
- };
9
- };
5
+ title?: string
6
+ icon?: string
7
+ hideInMenu?: boolean
8
+ }
9
+ }
@@ -1,11 +1,11 @@
1
- import type { App } from "vue";
1
+ import type { App } from 'vue'
2
2
 
3
- import { createPinia } from "pinia";
4
- import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
3
+ import { createPinia } from 'pinia'
4
+ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
5
5
 
6
- export const store = createPinia();
7
- store.use(piniaPluginPersistedstate);
6
+ export const store = createPinia()
7
+ store.use(piniaPluginPersistedstate)
8
8
 
9
9
  export function setupStore(app: App) {
10
- app.use(store);
10
+ app.use(store)
11
11
  }
@@ -1,17 +1,17 @@
1
- import { defineStore } from "pinia";
1
+ import { defineStore } from 'pinia'
2
2
 
3
- import { store } from "..";
3
+ import { store } from '..'
4
4
 
5
- export const useUserStore = defineStore("user", {
5
+ export const useUserStore = defineStore('user', {
6
6
  state: () => {
7
7
  return {
8
- name: "admin",
9
- token: "admin",
10
- avatar: "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
11
- };
8
+ name: 'admin',
9
+ token: 'admin',
10
+ avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
11
+ }
12
12
  },
13
- });
13
+ })
14
14
 
15
15
  export function useUserStoreWithOut() {
16
- return useUserStore(store);
16
+ return useUserStore(store)
17
17
  }
@@ -1,12 +1,12 @@
1
- @use "./font.scss";
2
- @use "./variables.scss";
1
+ @use './font.scss';
2
+ @use './variables.scss';
3
3
 
4
4
  html,
5
5
  body,
6
6
  #root {
7
7
  width: 100%;
8
8
  height: 100%;
9
- font-family: "SourceHanSansCN";
9
+ font-family: 'SourceHanSansCN';
10
10
  }
11
11
 
12
12
  *,
@@ -0,0 +1 @@
1
+ import 'antdv-next/global'
@@ -8,4 +8,4 @@ export const envVariables = {
8
8
  APP_NAME: import.meta.env.VITE_APP_NAME,
9
9
  /** 后端接口前缀 */
10
10
  API_AFFIX: import.meta.env.VITE_API_AFFIX,
11
- };
11
+ }
@@ -1,9 +1,3 @@
1
- import {
2
- deepMergeObject,
3
- isPlainObject,
4
- isReadableStream,
5
- tryParseJsonString,
6
- } from './utils'
7
1
  import type {
8
2
  AlovaGlobalCacheAdapter,
9
3
  AlovaOptions,
@@ -12,18 +6,24 @@ import type {
12
6
  StatesExport,
13
7
  StatesHook,
14
8
  } from 'alova'
15
- import { createAlova } from 'alova'
16
9
  import type { FetchRequestInit } from 'alova/fetch'
10
+ import { createAlova } from 'alova'
17
11
  import adapterFetch from 'alova/fetch'
12
+ import {
13
+ deepMergeObject,
14
+ isPlainObject,
15
+ isReadableStream,
16
+ tryParseJsonString,
17
+ } from './utils'
18
18
 
19
19
  type MaybePromise<T> = T | Promise<T>
20
- type HeaderValue =
21
- | string
22
- | number
23
- | boolean
24
- | null
25
- | undefined
26
- | (() => MaybePromise<string | number | boolean | null | undefined>)
20
+ type HeaderValue
21
+ = | string
22
+ | number
23
+ | boolean
24
+ | null
25
+ | undefined
26
+ | (() => MaybePromise<string | number | boolean | null | undefined>)
27
27
  type StatusMatcher<RE> = number | number[] | ((status: number, response: RE) => boolean)
28
28
  type CodeMatcher = Array<number | string>
29
29
 
@@ -86,7 +86,7 @@ export type RequestOption<
86
86
  SE extends StatesExport<any> = StatesExport<any>,
87
87
  > = BaseRequestOption<RC, RE, RH, SE>
88
88
 
89
- type RequestAlovaGenerics<RC extends object, RE, RH, SE extends StatesExport<any>> = {
89
+ interface RequestAlovaGenerics<RC extends object, RE, RH, SE extends StatesExport<any>> {
90
90
  Responded: unknown
91
91
  Transformed: unknown
92
92
  RequestConfig: RC
@@ -114,8 +114,8 @@ type ResolvedRequestOption<RC extends object, RE, RH, SE extends StatesExport<an
114
114
  | 'errorDefaultMessage'
115
115
  | 'cacheLogger'
116
116
  >
117
- > &
118
- BaseRequestOption<RC, RE, RH, SE>
117
+ >
118
+ & BaseRequestOption<RC, RE, RH, SE>
119
119
 
120
120
  const DEFAULT_SUCCESS_MESSAGE = '操作成功'
121
121
  const DEFAULT_ERROR_MESSAGE = '服务异常'
@@ -146,7 +146,7 @@ const defaultRequestOption: BaseRequestOption<any, any, any, any> = {
146
146
  }
147
147
 
148
148
  function getMethodMeta(method: unknown): RequestMeta {
149
- const methodRecord = method as { meta?: RequestMeta; config?: { meta?: RequestMeta } } | undefined
149
+ const methodRecord = method as { meta?: RequestMeta, config?: { meta?: RequestMeta } } | undefined
150
150
  return methodRecord?.config?.meta ?? methodRecord?.meta ?? {}
151
151
  }
152
152
 
@@ -160,31 +160,37 @@ function isMatchedStatus<RE>(
160
160
  matcher: StatusMatcher<RE> | undefined,
161
161
  response: RE,
162
162
  ): boolean {
163
- if (matcher === undefined) return status >= 200 && status < 300
163
+ if (matcher === undefined)
164
+ return status >= 200 && status < 300
164
165
 
165
- if (typeof matcher === 'function') return matcher(status, response)
166
+ if (typeof matcher === 'function')
167
+ return matcher(status, response)
166
168
 
167
169
  return Array.isArray(matcher) ? matcher.includes(status) : matcher === status
168
170
  }
169
171
 
170
172
  function isMatchedCode(code: unknown, matcher: CodeMatcher | undefined): boolean {
171
- if (!matcher?.length) return true
173
+ if (!matcher?.length)
174
+ return true
172
175
 
173
- return matcher.some((item) => String(item) === String(code))
176
+ return matcher.some(item => String(item) === String(code))
174
177
  }
175
178
 
176
179
  function getResponseStatus(response: unknown): number {
177
- const responseRecord = response as { status?: unknown; statusCode?: unknown }
180
+ const responseRecord = response as { status?: unknown, statusCode?: unknown }
178
181
  const status = responseRecord.statusCode ?? responseRecord.status
179
182
  return typeof status === 'number' ? status : Number(status)
180
183
  }
181
184
 
182
185
  function getResponseMessage(data: unknown, messageKey: string, defaultMessage: string): string {
183
- if (!isPlainObject(data)) return defaultMessage
186
+ if (!isPlainObject(data))
187
+ return defaultMessage
184
188
 
185
189
  const message = data[messageKey] ?? data.message ?? data.msg
186
- if (typeof message === 'string') return message || defaultMessage
187
- if (typeof message === 'number') return String(message)
190
+ if (typeof message === 'string')
191
+ return message || defaultMessage
192
+ if (typeof message === 'number')
193
+ return String(message)
188
194
 
189
195
  return defaultMessage
190
196
  }
@@ -201,7 +207,8 @@ async function parseFetchResponse(response: {
201
207
  json?: () => Promise<unknown>
202
208
  text?: () => Promise<string>
203
209
  }): Promise<unknown> {
204
- if (response.status === 204) return undefined
210
+ if (response.status === 204)
211
+ return undefined
205
212
 
206
213
  const reader = typeof response.clone === 'function' ? response.clone() : response
207
214
  const contentType = getHeaderValue(response.headers, 'content-type')
@@ -215,12 +222,14 @@ async function parseFetchResponse(response: {
215
222
  if (typeof reader.json === 'function') {
216
223
  try {
217
224
  return await reader.json()
218
- } catch {
225
+ }
226
+ catch {
219
227
  // Fall through to text parsing.
220
228
  }
221
229
  }
222
230
 
223
- if (typeof reader.text === 'function') return tryParseJsonString(await reader.text())
231
+ if (typeof reader.text === 'function')
232
+ return tryParseJsonString(await reader.text())
224
233
 
225
234
  return undefined
226
235
  }
@@ -229,13 +238,15 @@ function getHeaderValue(
229
238
  headers: Headers | Record<string, unknown> | undefined,
230
239
  key: string,
231
240
  ): string {
232
- if (!headers) return ''
241
+ if (!headers)
242
+ return ''
233
243
 
234
- if (typeof Headers !== 'undefined' && headers instanceof Headers) return headers.get(key) ?? ''
244
+ if (typeof Headers !== 'undefined' && headers instanceof Headers)
245
+ return headers.get(key) ?? ''
235
246
 
236
247
  const headerRecord = headers as Record<string, unknown>
237
- const value =
238
- headerRecord[key] ?? headerRecord[key.toLowerCase()] ?? headerRecord[key.toUpperCase()]
248
+ const value
249
+ = headerRecord[key] ?? headerRecord[key.toLowerCase()] ?? headerRecord[key.toUpperCase()]
239
250
  return typeof value === 'string' ? value : ''
240
251
  }
241
252
 
@@ -251,9 +262,9 @@ async function getResponseData(response: unknown): Promise<unknown> {
251
262
  return tryParseJsonString(responseRecord.data)
252
263
 
253
264
  if (
254
- isReadableStream(responseRecord.body) ||
255
- typeof responseRecord.json === 'function' ||
256
- typeof responseRecord.text === 'function'
265
+ isReadableStream(responseRecord.body)
266
+ || typeof responseRecord.json === 'function'
267
+ || typeof responseRecord.text === 'function'
257
268
  ) {
258
269
  return parseFetchResponse(responseRecord)
259
270
  }
@@ -263,7 +274,8 @@ async function getResponseData(response: unknown): Promise<unknown> {
263
274
 
264
275
  async function resolveHeaderValue(value: HeaderValue): Promise<string | undefined> {
265
276
  const resolved = typeof value === 'function' ? await value() : value
266
- if (resolved === null || resolved === undefined) return undefined
277
+ if (resolved === null || resolved === undefined)
278
+ return undefined
267
279
  return String(resolved)
268
280
  }
269
281
 
@@ -311,7 +323,8 @@ export function createInstance<
311
323
 
312
324
  for (const [key, value] of Object.entries(config.commonHeaders?.() ?? {})) {
313
325
  const resolvedValue = await resolveHeaderValue(value)
314
- if (resolvedValue !== undefined) setHeader(headers, key, resolvedValue)
326
+ if (resolvedValue !== undefined)
327
+ setHeader(headers, key, resolvedValue)
315
328
  }
316
329
  },
317
330
  responded: {
@@ -322,7 +335,8 @@ export function createInstance<
322
335
  const showError = getMetaFlag(meta, 'isShowErrorMessage', config.isShowErrorMessage)
323
336
  const isWrapped = getMetaFlag(meta, 'isWrapped', config.isWrapped)
324
337
 
325
- if (!shouldTransform) return response
338
+ if (!shouldTransform)
339
+ return response
326
340
 
327
341
  const status = getResponseStatus(response)
328
342
  const data = await getResponseData(response)
@@ -340,7 +354,8 @@ export function createInstance<
340
354
  }
341
355
 
342
356
  if (!isWrapped) {
343
- if (showSuccess) config.successMessageFunc?.(config.successDefaultMessage)
357
+ if (showSuccess)
358
+ config.successMessageFunc?.(config.successDefaultMessage)
344
359
  return data
345
360
  }
346
361
 
@@ -353,7 +368,8 @@ export function createInstance<
353
368
  )
354
369
 
355
370
  if (!isMatchedCode(code, config.codeMap.success)) {
356
- if (isMatchedCode(code, config.codeMap.unAuthorized)) config.unAuthorizedResponseFunc?.()
371
+ if (isMatchedCode(code, config.codeMap.unAuthorized))
372
+ config.unAuthorizedResponseFunc?.()
357
373
 
358
374
  if (showError) {
359
375
  config.errorMessageFunc?.(
@@ -363,7 +379,8 @@ export function createInstance<
363
379
  return Promise.reject(response)
364
380
  }
365
381
 
366
- if (showSuccess) config.successMessageFunc?.(responseMessage)
382
+ if (showSuccess)
383
+ config.successMessageFunc?.(responseMessage)
367
384
 
368
385
  return responseData
369
386
  },
@@ -396,8 +413,8 @@ export type DualCallInstance<
396
413
  RE = Response,
397
414
  RH = Headers,
398
415
  SE extends StatesExport<any> = StatesExport<any>,
399
- > = RequestInstance<RC, RE, RH, SE> &
400
- ((option?: RequestOption<RC, RE, RH, SE>) => RequestInstance<RC, RE, RH, SE>)
416
+ > = RequestInstance<RC, RE, RH, SE>
417
+ & ((option?: RequestOption<RC, RE, RH, SE>) => RequestInstance<RC, RE, RH, SE>)
401
418
 
402
419
  export function createDualCallInstance<
403
420
  RC extends object = FetchRequestInit,
@@ -407,7 +424,8 @@ export function createDualCallInstance<
407
424
  >(baseConfig: BaseRequestOption<RC, RE, RH, SE>): DualCallInstance<RC, RE, RH, SE> {
408
425
  const defaultInstance = createInstance(baseConfig)
409
426
  const dualInstance = ((option?: RequestOption<RC, RE, RH, SE>) => {
410
- if (!option) return defaultInstance
427
+ if (!option)
428
+ return defaultInstance
411
429
  return createInstance(deepMergeObject(baseConfig, option))
412
430
  }) as DualCallInstance<RC, RE, RH, SE>
413
431
 
@@ -1,6 +1,7 @@
1
1
  export function deepMergeObject<T = any>(source: T, target: Partial<T>): T {
2
2
  const merge = (src: any, tgt: any): any => {
3
- if (!isPlainObject(src) || !isPlainObject(tgt)) return tgt === undefined ? src : tgt
3
+ if (!isPlainObject(src) || !isPlainObject(tgt))
4
+ return tgt === undefined ? src : tgt
4
5
 
5
6
  const result = { ...src }
6
7
  for (const key of Object.keys(tgt)) {
@@ -19,21 +20,26 @@ export function isPlainObject(data: unknown): data is Record<string, any> {
19
20
  }
20
21
 
21
22
  export function isReadableStream(data: unknown): boolean {
22
- if (typeof ReadableStream === 'undefined') return false
23
+ if (typeof ReadableStream === 'undefined')
24
+ return false
23
25
  return data instanceof ReadableStream
24
26
  }
25
27
 
26
28
  export function tryParseJsonString(data: unknown): unknown {
27
- if (typeof data !== 'string') return data
29
+ if (typeof data !== 'string')
30
+ return data
28
31
 
29
32
  const value = data.trim()
30
- if (!value) return data
33
+ if (!value)
34
+ return data
31
35
 
32
- if (!value.startsWith('{') && !value.startsWith('[')) return data
36
+ if (!value.startsWith('{') && !value.startsWith('['))
37
+ return data
33
38
 
34
39
  try {
35
40
  return JSON.parse(value)
36
- } catch {
41
+ }
42
+ catch {
37
43
  return data
38
44
  }
39
45
  }
@@ -31,7 +31,7 @@ function getBaseConfig() {
31
31
  message.error(msg)
32
32
  },
33
33
  unAuthorizedResponseFunc: () => {
34
- router.push('/login')
34
+ void router.push('/login')
35
35
  message.error('登录过期或未登录')
36
36
  },
37
37
  statesHook: vueHook,