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.
- package/dist/index.mjs +5 -0
- package/index.js +1 -1
- package/package.json +25 -24
- package/template-taro-react-oxc/.env.development +1 -1
- package/template-taro-react-oxc/.env.production +1 -1
- package/template-taro-react-oxc/project.config.json +1 -1
- package/template-taro-vue-eslint/project.config.json +2 -2
- 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
- package/template-vp-monorepo-react-hono/.vite-hooks/commit-msg +2 -0
- package/template-vp-monorepo-react-hono/.vite-hooks/pre-commit +2 -0
- package/template-vp-monorepo-react-hono/.vscode/extensions.json +3 -0
- package/template-vp-monorepo-react-hono/.vscode/settings.json +23 -0
- package/template-vp-monorepo-react-hono/AGENTS.md +16 -0
- package/template-vp-monorepo-react-hono/README.md +54 -0
- package/template-vp-monorepo-react-hono/apps/server/.env.example +13 -0
- package/template-vp-monorepo-react-hono/apps/server/README.md +75 -0
- package/template-vp-monorepo-react-hono/apps/server/drizzle/0000_flaky_madame_masque.sql +18 -0
- package/template-vp-monorepo-react-hono/apps/server/drizzle/meta/0000_snapshot.json +153 -0
- package/template-vp-monorepo-react-hono/apps/server/drizzle/meta/_journal.json +13 -0
- package/template-vp-monorepo-react-hono/apps/server/drizzle.config.ts +19 -0
- package/template-vp-monorepo-react-hono/apps/server/package.json +46 -0
- package/template-vp-monorepo-react-hono/apps/server/src/app.test.ts +57 -0
- package/template-vp-monorepo-react-hono/apps/server/src/app.ts +68 -0
- package/template-vp-monorepo-react-hono/apps/server/src/common/errors/app-error.ts +23 -0
- package/template-vp-monorepo-react-hono/apps/server/src/common/http/response.ts +21 -0
- package/template-vp-monorepo-react-hono/apps/server/src/common/logger.ts +30 -0
- package/template-vp-monorepo-react-hono/apps/server/src/config/env.ts +54 -0
- package/template-vp-monorepo-react-hono/apps/server/src/index.bun.ts +60 -0
- package/template-vp-monorepo-react-hono/apps/server/src/index.ts +73 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/client.ts +46 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/schema/index.ts +1 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/database/schema/job-runs.ts +42 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/queue/connection.ts +6 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/redis/client.ts +39 -0
- package/template-vp-monorepo-react-hono/apps/server/src/infrastructure/redis/options.ts +28 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/health/health.routes.ts +17 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/health/health.service.ts +59 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.queue.ts +46 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.repository.ts +101 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.routes.ts +46 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.schemas.ts +9 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.service.ts +57 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.types.ts +11 -0
- package/template-vp-monorepo-react-hono/apps/server/src/modules/jobs/jobs.worker.ts +108 -0
- package/template-vp-monorepo-react-hono/apps/server/src/runtime/shutdown.ts +38 -0
- package/template-vp-monorepo-react-hono/apps/server/src/worker.ts +48 -0
- package/template-vp-monorepo-react-hono/apps/server/tsconfig.json +15 -0
- package/template-vp-monorepo-react-hono/apps/server/vite.config.ts +15 -0
- package/template-vp-monorepo-react-hono/apps/web/.env +2 -0
- package/template-vp-monorepo-react-hono/apps/web/.env.dev +1 -0
- package/template-vp-monorepo-react-hono/apps/web/.env.prod +1 -0
- package/template-vp-monorepo-react-hono/apps/web/index.html +13 -0
- package/template-vp-monorepo-react-hono/apps/web/package.json +35 -0
- package/template-vp-monorepo-react-hono/apps/web/public/favicon.svg +1 -0
- package/template-vp-monorepo-react-hono/apps/web/public/icons.svg +24 -0
- package/template-vp-monorepo-react-hono/apps/web/src/App.tsx +25 -0
- package/template-vp-monorepo-react-hono/apps/web/src/assets/hero.png +0 -0
- package/template-vp-monorepo-react-hono/apps/web/src/assets/react.svg +1 -0
- package/template-vp-monorepo-react-hono/apps/web/src/assets/vite.svg +1 -0
- package/template-vp-monorepo-react-hono/apps/web/src/components/Loading/PageLoading.tsx +11 -0
- package/template-vp-monorepo-react-hono/apps/web/src/locales/en_US.json +4 -0
- package/template-vp-monorepo-react-hono/apps/web/src/locales/zh_CN.json +4 -0
- package/template-vp-monorepo-react-hono/apps/web/src/main.tsx +5 -0
- package/template-vp-monorepo-react-hono/apps/web/src/pages/home/index.tsx +47 -0
- package/template-vp-monorepo-react-hono/apps/web/src/router/index.tsx +25 -0
- package/template-vp-monorepo-react-hono/apps/web/src/router/modules/.gitkeep +0 -0
- package/template-vp-monorepo-react-hono/apps/web/src/styles/index.css +7 -0
- package/template-vp-monorepo-react-hono/apps/web/src/types/auto-imports.d.ts +58 -0
- package/template-vp-monorepo-react-hono/apps/web/src/utils/env/index.ts +6 -0
- package/template-vp-monorepo-react-hono/apps/web/src/utils/request/core/index.ts +420 -0
- package/template-vp-monorepo-react-hono/apps/web/src/utils/request/core/utils.ts +39 -0
- package/template-vp-monorepo-react-hono/apps/web/src/utils/request/index.ts +61 -0
- package/template-vp-monorepo-react-hono/apps/web/tsconfig.json +18 -0
- package/template-vp-monorepo-react-hono/apps/web/vite.config.ts +45 -0
- package/template-vp-monorepo-react-hono/commitlint.config.js +1 -0
- package/template-vp-monorepo-react-hono/docker-compose.yml +41 -0
- package/template-vp-monorepo-react-hono/mise.toml +4 -0
- package/template-vp-monorepo-react-hono/package.json +37 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/package.json +20 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/format.ts +9 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/i18n.ts +73 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/index.ts +24 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/storage.ts +47 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/store.ts +48 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/src/types.ts +36 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/tsconfig.json +4 -0
- package/template-vp-monorepo-react-hono/packages/i18n/core/vite.config.ts +13 -0
- package/template-vp-monorepo-react-hono/packages/i18n/react/package.json +28 -0
- package/template-vp-monorepo-react-hono/packages/i18n/react/src/index.tsx +26 -0
- package/template-vp-monorepo-react-hono/packages/i18n/react/src/use-store.ts +14 -0
- package/template-vp-monorepo-react-hono/packages/i18n/react/tsconfig.json +9 -0
- package/template-vp-monorepo-react-hono/packages/i18n/react/vite.config.ts +16 -0
- package/template-vp-monorepo-react-hono/packages/i18n/vue/package.json +27 -0
- package/template-vp-monorepo-react-hono/packages/i18n/vue/src/index.ts +52 -0
- package/template-vp-monorepo-react-hono/packages/i18n/vue/src/use-store.ts +19 -0
- package/template-vp-monorepo-react-hono/packages/i18n/vue/tsconfig.json +8 -0
- package/template-vp-monorepo-react-hono/packages/i18n/vue/vite.config.ts +16 -0
- package/template-vp-monorepo-react-hono/pnpm-workspace.yaml +57 -0
- package/template-vp-monorepo-react-hono/scripts/clean.mjs +48 -0
- package/template-vp-monorepo-react-hono/tsconfig.base.json +10 -0
- package/template-vp-monorepo-react-hono/tsconfig.bundler.json +12 -0
- package/template-vp-monorepo-react-hono/tsconfig.json +11 -0
- package/template-vp-monorepo-react-hono/tsconfig.lib.json +10 -0
- package/template-vp-monorepo-react-hono/vite.config.ts +20 -0
- package/template-vp-monorepo-react-nestjs/.spaces/server/todo.md +991 -0
- package/template-vp-monorepo-react-nestjs/.vscode/launch.json +16 -0
- package/template-vp-monorepo-react-nestjs/.vscode/settings.json +21 -17
- package/template-vp-monorepo-react-nestjs/apps/server/.env.development +3 -39
- package/template-vp-monorepo-react-nestjs/apps/server/.swcrc +8 -0
- package/template-vp-monorepo-react-nestjs/apps/server/drizzle.config.ts +8 -3
- package/template-vp-monorepo-react-nestjs/apps/server/nest-cli.json +8 -1
- package/template-vp-monorepo-react-nestjs/apps/server/package.json +11 -6
- package/template-vp-monorepo-react-nestjs/apps/server/src/app.controller.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/app.module.ts +20 -15
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/adapters/fastify.adapter.ts +16 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/auth.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/response.ts +0 -4
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/session.constants.ts +28 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/current-auth.decorator.ts +16 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/public.decorator.ts +4 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/dto/api-failure.dto.ts +25 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/error/common.error.ts +40 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/exceptions/app.exception.ts +55 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/filters/global-exception.filter.ts +384 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/openapi/response-headers.ts +9 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/index.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/session.config.ts +36 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/database/schema.ts +7 -8
- package/template-vp-monorepo-react-nestjs/apps/server/src/main.ts +29 -8
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.controller.ts +55 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.errors.ts +42 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.module.ts +26 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.repository.ts +40 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.service.ts +129 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/auth-repsponse.dto.ts +31 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/login.dto.ts +11 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/register.dto.ts +17 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/guards/session-auth.guard.ts +50 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password.service.ts +24 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-store.service.ts +198 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-token.service.ts +29 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.script.ts +221 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.types.ts +24 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.controller.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/dto/create-user.dto.ts +3 -5
- package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.service.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/server/src/utils/env-arr.ts +3 -0
- package/template-vp-monorepo-react-nestjs/apps/server/test/error-catalog.spec.ts +30 -0
- package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.build.json +11 -1
- package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.json +12 -20
- package/template-vp-monorepo-react-nestjs/apps/server/vite.config.ts +15 -0
- package/template-vp-monorepo-react-nestjs/apps/web/package.json +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web/tsconfig.json +5 -15
- package/template-vp-monorepo-react-nestjs/apps/web-vue/commitlint.config.js +1 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/lefthook.yml +1 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/package.json +1 -3
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/api/index.ts +5 -5
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/components/Icon/svg-icon.vue +3 -3
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/lib.ts +6 -6
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/useEcharts.ts +34 -29
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/i18n/instance.ts +2 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/index.vue +17 -32
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/locales/en_US.json +4 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/locales/zh_CN.json +4 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/index.ts +3 -3
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/permissionGuard.ts +7 -7
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/index.ts +7 -7
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/interface.ts +6 -6
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/index.ts +6 -6
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/modules/user.ts +9 -9
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/styles/index.scss +3 -3
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/types/antdv-next.d.ts +1 -0
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/env.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/index.ts +63 -45
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/utils.ts +12 -6
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/index.ts +1 -1
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/config.ts +687 -687
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/index.vue +7 -7
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/tree-chart.vue +2 -7
- package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/home/index.vue +13 -3
- package/template-vp-monorepo-react-nestjs/apps/web-vue/tsconfig.json +5 -17
- package/template-vp-monorepo-react-nestjs/apps/web-vue/uno.config.ts +5 -5
- package/template-vp-monorepo-react-nestjs/i18n.config.ts +22 -0
- package/template-vp-monorepo-react-nestjs/package.json +12 -1
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/README.md +113 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/docs/excel-sync-plan.md +618 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/package.json +31 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/cli.ts +5 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/command.ts +512 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/config.ts +15 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/files.ts +67 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/index.ts +19 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/load-config.ts +228 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/report.ts +57 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.test.ts +81 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.ts +290 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/sync.ts +274 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/command.test.ts +209 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/config.test.ts +19 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/load-config.test.ts +194 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/report.test.ts +63 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/sync.test.ts +203 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/temporary-directory.ts +25 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/tsconfig.json +9 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/cli/vite.config.ts +18 -0
- package/template-vp-monorepo-react-nestjs/packages/i18n/core/tsconfig.json +1 -12
- package/template-vp-monorepo-react-nestjs/packages/i18n/react/tsconfig.json +3 -10
- package/template-vp-monorepo-react-nestjs/packages/i18n/vue/tsconfig.json +3 -10
- package/template-vp-monorepo-react-nestjs/packages/shared/package.json +40 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/index.ts +13 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/auth.ts +35 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/common.ts +11 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/types/index.ts +11 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/account.ts +5 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/index.ts +2 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/session-terminal.ts +11 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/tsconfig.json +4 -0
- package/template-vp-monorepo-react-nestjs/packages/shared/vite.config.ts +17 -0
- package/template-vp-monorepo-react-nestjs/pnpm-workspace.yaml +6 -6
- package/template-vp-monorepo-react-nestjs/scripts/clean.mjs +48 -0
- package/template-vp-monorepo-react-nestjs/tsconfig.base.json +10 -0
- package/template-vp-monorepo-react-nestjs/tsconfig.bundler.json +12 -0
- package/template-vp-monorepo-react-nestjs/tsconfig.json +8 -6
- package/template-vp-monorepo-react-nestjs/tsconfig.lib.json +10 -0
- package/template-vp-monorepo-react-nestjs/vite.config.ts +2 -1
- package/template-vp-vue-eslint-vapor/.env +6 -0
- package/template-vp-vue-eslint-vapor/.env.development +2 -0
- package/template-vp-vue-eslint-vapor/.env.production +2 -0
- package/template-vp-vue-eslint-vapor/.vite-hooks/commit-msg +1 -0
- package/template-vp-vue-eslint-vapor/.vite-hooks/pre-commit +1 -0
- package/template-vp-vue-eslint-vapor/.vscode/extensions.json +3 -0
- package/template-vp-vue-eslint-vapor/AGENTS.md +16 -0
- package/template-vp-vue-eslint-vapor/README.md +93 -0
- package/template-vp-vue-eslint-vapor/commitlint.config.js +1 -0
- package/template-vp-vue-eslint-vapor/eslint.config.js +13 -0
- package/template-vp-vue-eslint-vapor/index.html +13 -0
- package/template-vp-vue-eslint-vapor/package.json +64 -0
- package/template-vp-vue-eslint-vapor/pnpm-workspace.yaml +2 -0
- package/template-vp-vue-eslint-vapor/public/vite.svg +1 -0
- package/template-vp-vue-eslint-vapor/src/App.vue +7 -0
- package/template-vp-vue-eslint-vapor/src/api/index.ts +12 -0
- package/template-vp-vue-eslint-vapor/src/assets/icon/home.svg +3 -0
- package/template-vp-vue-eslint-vapor/src/assets/icon/logo.svg +1 -0
- package/template-vp-vue-eslint-vapor/src/assets/image/.gitkeep +0 -0
- package/template-vp-vue-eslint-vapor/src/components/Icon/svg-icon.vue +29 -0
- package/template-vp-vue-eslint-vapor/src/hooks/chart/lib.ts +57 -0
- package/template-vp-vue-eslint-vapor/src/hooks/chart/useEcharts.ts +65 -0
- package/template-vp-vue-eslint-vapor/src/layout/default/header/index.vue +57 -0
- package/template-vp-vue-eslint-vapor/src/layout/default/index.vue +138 -0
- package/template-vp-vue-eslint-vapor/src/main.ts +19 -0
- package/template-vp-vue-eslint-vapor/src/router/guard/index.ts +7 -0
- package/template-vp-vue-eslint-vapor/src/router/guard/permissionGuard.ts +13 -0
- package/template-vp-vue-eslint-vapor/src/router/index.ts +18 -0
- package/template-vp-vue-eslint-vapor/src/router/interface.ts +9 -0
- package/template-vp-vue-eslint-vapor/src/router/modules/index.ts +33 -0
- package/template-vp-vue-eslint-vapor/src/store/index.ts +11 -0
- package/template-vp-vue-eslint-vapor/src/store/modules/user.ts +17 -0
- package/template-vp-vue-eslint-vapor/src/styles/font.scss +0 -0
- package/template-vp-vue-eslint-vapor/src/styles/index.scss +29 -0
- package/template-vp-vue-eslint-vapor/src/styles/variables.scss +3 -0
- package/template-vp-vue-eslint-vapor/src/types/vite-env.d.ts +15 -0
- package/template-vp-vue-eslint-vapor/src/utils/env.ts +11 -0
- package/template-vp-vue-eslint-vapor/src/utils/request/core/index.ts +425 -0
- package/template-vp-vue-eslint-vapor/src/utils/request/core/utils.ts +39 -0
- package/template-vp-vue-eslint-vapor/src/utils/request/index.ts +44 -0
- package/template-vp-vue-eslint-vapor/src/views/example/echart/config.ts +1794 -0
- package/template-vp-vue-eslint-vapor/src/views/example/echart/index.vue +20 -0
- package/template-vp-vue-eslint-vapor/src/views/example/tree-chart.vue +16 -0
- package/template-vp-vue-eslint-vapor/src/views/home/index.vue +16 -0
- package/template-vp-vue-eslint-vapor/src/views/login/index.vue +9 -0
- package/template-vp-vue-eslint-vapor/tsconfig.json +32 -0
- package/template-vp-vue-eslint-vapor/tsconfig.tsbuildinfo +1 -0
- package/template-vp-vue-eslint-vapor/uno.config.ts +17 -0
- package/template-vp-vue-eslint-vapor/vite.config.ts +66 -0
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/decorator.ts +0 -2
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/bypass.ts +0 -12
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/interceptors/transform.ts +0 -34
- package/template-vp-monorepo-react-nestjs/apps/server/src/common/model/response.ts +0 -23
- package/template-vp-monorepo-react-nestjs/apps/server/src/config/auth.config.ts +0 -64
- package/template-vp-monorepo-react-nestjs/apps/web-vue/pnpm-workspace.yaml +0 -16
- /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
|
-
|
|
25
|
-
|
|
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
|
|
54
|
-
label
|
|
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
|
|
61
|
-
label
|
|
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
|
-
|
|
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
|
-
|
|
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,7 +1,7 @@
|
|
|
1
|
-
import type { Router } from
|
|
1
|
+
import type { Router } from 'vue-router'
|
|
2
2
|
|
|
3
|
-
import { createPermissionGuard } from
|
|
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
|
|
1
|
+
import type { Router } from 'vue-router'
|
|
2
2
|
|
|
3
|
-
import NProgress from
|
|
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
|
|
1
|
+
import type { App } from 'vue'
|
|
2
2
|
|
|
3
|
-
import { createRouter, createWebHistory } from
|
|
3
|
+
import { createRouter, createWebHistory } from 'vue-router'
|
|
4
4
|
|
|
5
|
-
import { setupGuard } from
|
|
6
|
-
import { routes } from
|
|
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
|
|
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
|
|
1
|
+
import type { App } from 'vue'
|
|
2
2
|
|
|
3
|
-
import { createPinia } from
|
|
4
|
-
import piniaPluginPersistedstate from
|
|
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
|
|
1
|
+
import { defineStore } from 'pinia'
|
|
2
2
|
|
|
3
|
-
import { store } from
|
|
3
|
+
import { store } from '..'
|
|
4
4
|
|
|
5
|
-
export const useUserStore = defineStore(
|
|
5
|
+
export const useUserStore = defineStore('user', {
|
|
6
6
|
state: () => {
|
|
7
7
|
return {
|
|
8
|
-
name:
|
|
9
|
-
token:
|
|
10
|
-
avatar:
|
|
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
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'antdv-next/global'
|
|
@@ -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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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)
|
|
163
|
+
if (matcher === undefined)
|
|
164
|
+
return status >= 200 && status < 300
|
|
164
165
|
|
|
165
|
-
if (typeof matcher === 'function')
|
|
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)
|
|
173
|
+
if (!matcher?.length)
|
|
174
|
+
return true
|
|
172
175
|
|
|
173
|
-
return matcher.some(
|
|
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
|
|
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))
|
|
186
|
+
if (!isPlainObject(data))
|
|
187
|
+
return defaultMessage
|
|
184
188
|
|
|
185
189
|
const message = data[messageKey] ?? data.message ?? data.msg
|
|
186
|
-
if (typeof message === 'string')
|
|
187
|
-
|
|
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)
|
|
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
|
-
}
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
219
227
|
// Fall through to text parsing.
|
|
220
228
|
}
|
|
221
229
|
}
|
|
222
230
|
|
|
223
|
-
if (typeof reader.text === 'function')
|
|
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)
|
|
241
|
+
if (!headers)
|
|
242
|
+
return ''
|
|
233
243
|
|
|
234
|
-
if (typeof Headers !== 'undefined' && headers instanceof Headers)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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))
|
|
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)
|
|
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)
|
|
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))
|
|
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')
|
|
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')
|
|
29
|
+
if (typeof data !== 'string')
|
|
30
|
+
return data
|
|
28
31
|
|
|
29
32
|
const value = data.trim()
|
|
30
|
-
if (!value)
|
|
33
|
+
if (!value)
|
|
34
|
+
return data
|
|
31
35
|
|
|
32
|
-
if (!value.startsWith('{') && !value.startsWith('['))
|
|
36
|
+
if (!value.startsWith('{') && !value.startsWith('['))
|
|
37
|
+
return data
|
|
33
38
|
|
|
34
39
|
try {
|
|
35
40
|
return JSON.parse(value)
|
|
36
|
-
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
37
43
|
return data
|
|
38
44
|
}
|
|
39
45
|
}
|