create-bubbles 0.1.25 → 0.1.27

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 (622) hide show
  1. package/dist/index.js +3 -9
  2. package/package.json +1 -1
  3. package/template-nextjs-vinext-eslint/Dockerfile +4 -4
  4. package/template-nextjs-vinext-eslint/README.md +6 -2
  5. package/template-nextjs-vinext-eslint/docker-compose.yaml +4 -4
  6. package/template-nextjs-vinext-eslint/eslint.config.js +2 -0
  7. package/template-nextjs-vinext-eslint/package.json +28 -26
  8. package/template-nextjs-vinext-eslint/pnpm-workspace.yaml +13 -1
  9. package/template-nextjs-vinext-eslint/src/utils/request/core/index.ts +63 -45
  10. package/template-nextjs-vinext-eslint/src/utils/request/core/utils.ts +12 -6
  11. package/template-nextjs-vinext-eslint/vite.config.ts +1 -1
  12. package/template-react-rsbuild-biome/.agents/rules/SVG/344/275/277/347/224/250.md +8 -0
  13. package/template-react-rsbuild-biome/AGENTS.md +11 -0
  14. package/template-react-rsbuild-biome/index.html +2 -2
  15. package/template-react-rsbuild-biome/package.json +25 -24
  16. package/template-react-rsbuild-biome/pnpm-workspace.yaml +5 -0
  17. package/template-react-rsbuild-biome/rsbuild.config.ts +1 -1
  18. package/template-react-rsbuild-biome/src/assets/icon/logo.svg +1 -1
  19. package/template-react-rsbuild-biome/src/assets/svg/draft.svg +4 -0
  20. package/template-react-rsbuild-biome/src/components/Icon/svg-icon/README.md +37 -0
  21. package/template-react-rsbuild-biome/src/components/Icon/svg-icon/SvgIcon.tsx +27 -0
  22. package/template-react-rsbuild-biome/src/env.d.ts +7 -0
  23. package/template-react-rsbuild-biome/src/utils/request/index.ts +3 -4
  24. package/template-react-rsbuild-biome/tsconfig.json +1 -2
  25. package/template-taro-react-oxc/.oxlintrc.json +0 -1
  26. package/template-taro-react-oxc/package.json +53 -52
  27. package/template-taro-react-oxc/pnpm-workspace.yaml +46 -0
  28. package/template-taro-vue-eslint/package.json +56 -56
  29. package/template-vp-monorepo-react-hono/apps/web/.agents/rules/SVG/344/275/277/347/224/250.md +8 -0
  30. package/template-vp-monorepo-react-hono/apps/web/AGENTS.md +11 -0
  31. package/template-vp-monorepo-react-hono/apps/web/package.json +1 -0
  32. package/template-vp-monorepo-react-hono/apps/web/src/assets/svg/draft.svg +4 -0
  33. package/template-vp-monorepo-react-hono/apps/web/src/components/Icon/svg-icon/README.md +37 -0
  34. package/template-vp-monorepo-react-hono/apps/web/src/components/Icon/svg-icon/SvgIcon.tsx +27 -0
  35. package/template-vp-monorepo-react-hono/apps/web/tsconfig.json +1 -1
  36. package/template-vp-monorepo-react-hono/apps/web/vite.config.ts +2 -0
  37. package/template-vp-monorepo-react-hono/pnpm-workspace.yaml +1 -0
  38. package/template-vp-monorepo-react-nestjs/.agents/rules//344/273/243/347/240/201/350/256/276/350/256/241.md +4 -0
  39. package/template-vp-monorepo-react-nestjs/.agents/rules//345/205/261/344/272/253/344/273/243/347/240/201.md +4 -0
  40. package/template-vp-monorepo-react-nestjs/.agents/rules//351/234/200/346/261/202/344/270/216/350/256/276/350/256/241/346/226/207/346/241/243.md +50 -0
  41. package/template-vp-monorepo-react-nestjs/.codegraph/.gitignore +5 -0
  42. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/PRD.md +121 -0
  43. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/cleanup-empty-preview.png +0 -0
  44. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/company-created.png +0 -0
  45. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/login-desktop.png +0 -0
  46. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/member-role-assigned.png +0 -0
  47. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/permission-revoked.png +0 -0
  48. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/platform-menu-recovery.png +0 -0
  49. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/project-created.png +0 -0
  50. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/project-member-home.png +0 -0
  51. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/replacement-administrator.png +0 -0
  52. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225/ui/workspace-empty.png +0 -0
  53. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/206/263/347/255/226/350/256/260/345/275/225.md +29 -0
  54. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/211/215/347/253/257/344/272/244/346/216/245.md +74 -0
  55. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//345/220/216/347/253/257/346/265/213/350/257/225/346/212/245/345/221/212.md +115 -0
  56. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/212/200/346/234/257/345/245/221/347/272/246.md +578 -0
  57. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/346/212/245/345/221/212.md +137 -0
  58. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/browser.json +84 -0
  59. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/http.json +108 -0
  60. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/legacy-http.json +18 -0
  61. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//346/265/213/350/257/225/350/257/201/346/215/256/legacy.json +24 -0
  62. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//350/201/224/350/260/203/350/256/260/345/275/225.md +76 -0
  63. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//350/277/220/350/241/214/350/257/264/346/230/216.md +117 -0
  64. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//346/235/203/351/231/220/344/270/216/350/217/234/345/215/225//351/234/200/346/261/202/346/226/207/346/241/243.md +275 -0
  65. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//345/206/263/347/255/226/350/256/260/345/275/225.md +35 -0
  66. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//346/212/200/346/234/257/345/245/221/347/272/246.md +744 -0
  67. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//346/265/213/350/257/225/346/212/245/345/221/212.md +174 -0
  68. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//350/201/224/350/260/203/350/256/260/345/275/225.md +137 -0
  69. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//350/256/276/350/256/241/346/226/271/346/241/210.md +215 -0
  70. package/template-vp-monorepo-react-nestjs/.spaces/01./344/274/201/344/270/232/347/272/247/351/241/271/347/233/256/347/272/247//347/273/204/347/273/207/346/236/266/346/236/204//351/234/200/346/261/202/346/226/207/346/241/243.md +421 -0
  71. package/template-vp-monorepo-react-nestjs/.spaces/02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//344/270/212/344/274/240/346/224/271/351/200/240//350/256/276/350/256/241/346/226/271/346/241/210.md +851 -0
  72. package/template-vp-monorepo-react-nestjs/.spaces/02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//344/270/212/344/274/240/346/270/205/347/220/206//350/256/276/350/256/241/346/226/271/346/241/210.md +1470 -0
  73. package/template-vp-monorepo-react-nestjs/.spaces/02./344/270/212/344/274/240/344/270/216/346/226/207/344/273/266//345/210/206/347/211/207/344/270/212/344/274/240//345/256/236/346/226/275/346/225/231/347/250/213.md +4507 -0
  74. package/template-vp-monorepo-react-nestjs/.spaces/03./344/273/273/345/212/241/351/230/237/345/210/227//345/205/254/345/205/261/351/230/237/345/210/227//350/256/276/350/256/241/346/226/271/346/241/210.md +1897 -0
  75. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-320.png +0 -0
  76. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-360.png +0 -0
  77. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/accounts-mobile-390.png +0 -0
  78. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-desktop-data.png +0 -0
  79. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-desktop-empty.png +0 -0
  80. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-320.png +0 -0
  81. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-360.png +0 -0
  82. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/companies-mobile-390.png +0 -0
  83. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-create-dialog.png +0 -0
  84. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-projects-1440.png +0 -0
  85. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/company-projects-390.png +0 -0
  86. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/login-1440.png +0 -0
  87. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/login-390.png +0 -0
  88. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/project-home-1440.png +0 -0
  89. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/project-home-390.png +0 -0
  90. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/register-1440.png +0 -0
  91. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/register-390.png +0 -0
  92. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-1440.png +0 -0
  93. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-390.png +0 -0
  94. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273/ui/workspaces-empty.png +0 -0
  95. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//345/267/245/345/205/267/fixtures.mjs +132 -0
  96. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//345/267/245/345/205/267/visual-check.mjs +274 -0
  97. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//346/265/213/350/257/225/350/257/201/346/215/256/visual-report.json +104 -0
  98. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//344/270/207/347/211/251/346/242/246/345/271/273//351/252/214/350/257/201/350/257/264/346/230/216.md +25 -0
  99. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//344/272/244/344/273/230/350/256/260/345/275/225.md +12 -0
  100. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//346/265/213/350/257/225/346/212/245/345/221/212.md +19 -0
  101. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//350/256/276/350/256/241/346/226/271/346/241/210.md +18 -0
  102. package/template-vp-monorepo-react-nestjs/.spaces/04./347/225/214/351/235/242/344/270/216/344/270/273/351/242/230//345/233/275/351/231/205/345/214/226//351/234/200/346/261/202/346/226/207/346/241/243.md +24 -0
  103. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//345/271/263/345/217/260/346/223/215/344/275/234/346/211/213/345/206/214.md +397 -0
  104. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/backup.dump +0 -0
  105. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/export-dump.ps1 +34 -0
  106. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//345/244/207/344/273/275/restore-dump.ps1 +73 -0
  107. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//346/223/215/344/275/234/346/214/207/345/215/227.md +227 -0
  108. package/template-vp-monorepo-react-nestjs/.spaces/05./350/277/220/350/241/214/347/273/264/346/212/244//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273//351/234/200/346/261/202/346/226/207/346/241/243.md +31 -0
  109. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/274/232/350/257/235/347/256/241/347/220/206//346/212/200/346/234/257/345/245/221/347/272/246.md +93 -0
  110. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/274/232/350/257/235/347/256/241/347/220/206//351/234/200/346/261/202/346/226/207/346/241/243.md +87 -0
  111. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201/PRD.md +55 -0
  112. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//346/212/200/346/234/257/345/245/221/347/272/246.md +92 -0
  113. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//346/265/213/350/257/225/346/212/245/345/221/212.md +38 -0
  114. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//350/201/224/350/260/203/350/256/260/345/275/225.md +26 -0
  115. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//350/256/276/350/256/241/346/226/271/346/241/210.md +53 -0
  116. package/template-vp-monorepo-react-nestjs/.spaces/06./350/256/244/350/257/201/344/270/216/344/274/232/350/257/235//344/277/256/346/224/271/345/257/206/347/240/201//351/234/200/346/261/202/346/226/207/346/241/243.md +63 -0
  117. package/template-vp-monorepo-react-nestjs/.spaces/07.API/344/270/216/351/224/231/350/257/257//346/212/200/346/234/257/345/245/221/347/272/246.md +95 -0
  118. package/template-vp-monorepo-react-nestjs/.spaces/README.md +85 -0
  119. package/template-vp-monorepo-react-nestjs/.spaces//346/226/207/346/241/243/350/247/204/350/214/203.md +97 -0
  120. package/template-vp-monorepo-react-nestjs/AGENTS.md +18 -10
  121. package/template-vp-monorepo-react-nestjs/README.md +3 -27
  122. package/template-vp-monorepo-react-nestjs/apps/server/.agents/rules/error-handling.md +84 -0
  123. package/template-vp-monorepo-react-nestjs/apps/server/.env.development +60 -0
  124. package/template-vp-monorepo-react-nestjs/apps/server/.env.production +16 -0
  125. package/template-vp-monorepo-react-nestjs/apps/server/AGENTS.md +9 -0
  126. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0000_military_colonel_america.sql +11 -0
  127. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0001_loud_siren.sql +27 -0
  128. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0002_enterprise_access.sql +182 -0
  129. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0003_cute_killmonger.sql +357 -0
  130. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0004_company-member-invitations.sql +25 -0
  131. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/0005_menu_svg_icons.sql +54 -0
  132. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0000_snapshot.json +97 -0
  133. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0001_snapshot.json +354 -0
  134. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0002_snapshot.json +1801 -0
  135. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0003_snapshot.json +3511 -0
  136. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/0004_snapshot.json +3713 -0
  137. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/meta/_journal.json +48 -0
  138. package/template-vp-monorepo-react-nestjs/apps/server/drizzle/rollback/0003_organization_backfill.sql +32 -0
  139. package/template-vp-monorepo-react-nestjs/apps/server/package.json +9 -3
  140. package/template-vp-monorepo-react-nestjs/apps/server/src/access-init.ts +45 -0
  141. package/template-vp-monorepo-react-nestjs/apps/server/src/app.controller.ts +3 -0
  142. package/template-vp-monorepo-react-nestjs/apps/server/src/app.module.ts +41 -6
  143. package/template-vp-monorepo-react-nestjs/apps/server/src/app.service.ts +3 -0
  144. package/template-vp-monorepo-react-nestjs/apps/server/src/common/adapters/fastify.adapter.ts +17 -0
  145. package/template-vp-monorepo-react-nestjs/apps/server/src/common/constants/session.constants.ts +9 -0
  146. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/access-policy.decorator.ts +18 -0
  147. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/current-auth.decorator.ts +4 -0
  148. package/template-vp-monorepo-react-nestjs/apps/server/src/common/decorators/public.decorator.ts +3 -0
  149. package/template-vp-monorepo-react-nestjs/apps/server/src/common/exceptions/app.exception.ts +9 -0
  150. package/template-vp-monorepo-react-nestjs/apps/server/src/common/filters/global-exception.filter.ts +38 -5
  151. package/template-vp-monorepo-react-nestjs/apps/server/src/common/security/password-security-event.ts +98 -0
  152. package/template-vp-monorepo-react-nestjs/apps/server/src/config/app.config.ts +3 -0
  153. package/template-vp-monorepo-react-nestjs/apps/server/src/config/database.config.ts +3 -0
  154. package/template-vp-monorepo-react-nestjs/apps/server/src/config/index.ts +2 -0
  155. package/template-vp-monorepo-react-nestjs/apps/server/src/config/llm.config.ts +3 -0
  156. package/template-vp-monorepo-react-nestjs/apps/server/src/config/queue.config.ts +119 -0
  157. package/template-vp-monorepo-react-nestjs/apps/server/src/config/redis.config.ts +3 -0
  158. package/template-vp-monorepo-react-nestjs/apps/server/src/config/session.config.ts +7 -0
  159. package/template-vp-monorepo-react-nestjs/apps/server/src/config/storage.config.ts +42 -0
  160. package/template-vp-monorepo-react-nestjs/apps/server/src/database/access.schema.ts +394 -0
  161. package/template-vp-monorepo-react-nestjs/apps/server/src/database/db.module.ts +3 -0
  162. package/template-vp-monorepo-react-nestjs/apps/server/src/database/organization.schema.ts +453 -0
  163. package/template-vp-monorepo-react-nestjs/apps/server/src/database/schema.ts +63 -1
  164. package/template-vp-monorepo-react-nestjs/apps/server/src/main.ts +5 -0
  165. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access-http.ts +29 -0
  166. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.errors.ts +130 -0
  167. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.guard.ts +63 -0
  168. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.module.ts +27 -0
  169. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.service.ts +441 -0
  170. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.store.ts +68 -0
  171. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/access.validation.ts +44 -0
  172. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.controller.ts +27 -0
  173. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.service.ts +260 -0
  174. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/maintenance/permissions-cleanup.validation.ts +7 -0
  175. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.controller.ts +80 -0
  176. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.service.ts +249 -0
  177. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/roles/roles.validation.ts +24 -0
  178. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/seed/access-seed.service.ts +183 -0
  179. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.controller.ts +28 -0
  180. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.service.ts +94 -0
  181. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/access/workspaces/workspaces.validation.ts +5 -0
  182. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.controller.ts +26 -0
  183. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.module.ts +11 -0
  184. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.service.ts +74 -0
  185. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/audit/audit.validation.ts +11 -0
  186. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.controller.ts +25 -0
  187. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.errors.ts +10 -0
  188. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.module.ts +1 -1
  189. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.repository.ts +60 -0
  190. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/auth.service.ts +69 -13
  191. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/auth-repsponse.dto.ts +2 -2
  192. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/dto/register.dto.ts +1 -1
  193. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/guards/session-auth.guard.ts +8 -0
  194. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password/change-password.dto.ts +17 -0
  195. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/password.service.ts +6 -0
  196. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-store.service.ts +46 -0
  197. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session-token.service.ts +12 -0
  198. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/auth/session/session.script.ts +7 -1
  199. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.controller.ts +105 -0
  200. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.module.ts +12 -0
  201. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/companies/companies.service.ts +523 -0
  202. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.controller.ts +72 -0
  203. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.service.ts +154 -0
  204. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/accounts.validation.ts +8 -0
  205. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/password-reset/password-reset.service.ts +81 -0
  206. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/accounts/password-reset/reset-password.validation.ts +13 -0
  207. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/administrators/administrators.service.ts +116 -0
  208. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/administrators/administrators.validation.ts +1 -0
  209. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/company-member-invitations.controller.ts +69 -0
  210. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitation-acceptance.controller.ts +23 -0
  211. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitations.service.ts +344 -0
  212. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/invitations/member-invitations.validation.ts +23 -0
  213. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.controller.ts +88 -0
  214. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.module.ts +31 -0
  215. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.service.ts +573 -0
  216. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/members/members.validation.ts +19 -0
  217. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.controller.ts +56 -0
  218. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.module.ts +11 -0
  219. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.service.ts +230 -0
  220. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/menus/menus.validation.ts +30 -0
  221. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/global-account/global-account-candidates.controller.ts +35 -0
  222. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/global-account/global-account-candidates.service.ts +109 -0
  223. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/member-candidates.controller.ts +60 -0
  224. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/candidates/member-candidates.service.ts +939 -0
  225. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/initialization/project-organization-initialization.service.ts +189 -0
  226. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.module.ts +34 -0
  227. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.store.ts +150 -0
  228. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/organization.validation.ts +23 -0
  229. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/positions/positions.controller.ts +160 -0
  230. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/positions/positions.service.ts +636 -0
  231. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.controller.ts +77 -0
  232. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.service.ts +501 -0
  233. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/templates/organization-templates.store.ts +163 -0
  234. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/units/organization-units.controller.ts +187 -0
  235. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/organization/units/organization-units.service.ts +947 -0
  236. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.controller.ts +94 -0
  237. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.module.ts +13 -0
  238. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/projects/projects.service.ts +369 -0
  239. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/queue-worker.bootstrap.ts +27 -0
  240. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.constants.ts +24 -0
  241. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.contracts.ts +39 -0
  242. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.module.ts +61 -0
  243. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.processor.ts +75 -0
  244. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/task-queue/task-queue.service.ts +67 -0
  245. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.controller.ts +9 -0
  246. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/db/db.service.ts +9 -0
  247. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/error-catelog.spec.ts +34 -0
  248. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.controller.ts +9 -0
  249. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/test/redis/redis.service.ts +18 -0
  250. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/dto/initiate-mutipart-upload.dto.ts +26 -0
  251. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/dto/upload-params.dto.ts +15 -0
  252. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/exact-size.transform.ts +77 -0
  253. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/minio-storage.adapter.ts +276 -0
  254. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/storage/storage.port.ts +82 -0
  255. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.constants.ts +32 -0
  256. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.controller.ts +134 -0
  257. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.errors.ts +80 -0
  258. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.module.ts +20 -0
  259. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.reponsitory.ts +193 -0
  260. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/upload.service.ts +774 -0
  261. package/template-vp-monorepo-react-nestjs/apps/server/src/modules/upload/utils/object-key.ts +14 -0
  262. package/template-vp-monorepo-react-nestjs/apps/server/src/utils/server-address.ts +6 -0
  263. package/template-vp-monorepo-react-nestjs/apps/server/test/access/access-policy.spec.ts +95 -0
  264. package/template-vp-monorepo-react-nestjs/apps/server/test/access/access.integration.spec.ts +2250 -0
  265. package/template-vp-monorepo-react-nestjs/apps/server/test/access/member-onboarding.validation.spec.ts +78 -0
  266. package/template-vp-monorepo-react-nestjs/apps/server/test/auth/password-operations.spec.ts +433 -0
  267. package/template-vp-monorepo-react-nestjs/apps/server/test/auth/password.integration.spec.ts +300 -0
  268. package/template-vp-monorepo-react-nestjs/apps/server/test/error-catalog.spec.ts +6 -1
  269. package/template-vp-monorepo-react-nestjs/apps/server/test/menus.validation.spec.ts +28 -0
  270. package/template-vp-monorepo-react-nestjs/apps/server/test/organization/organization-domain.spec.ts +260 -0
  271. package/template-vp-monorepo-react-nestjs/apps/server/test/task-queue.integration.spec.ts +120 -0
  272. package/template-vp-monorepo-react-nestjs/apps/server/test/task-queue.processor.spec.ts +63 -0
  273. package/template-vp-monorepo-react-nestjs/apps/server/test/task-queue.service.spec.ts +106 -0
  274. package/template-vp-monorepo-react-nestjs/apps/server/tsconfig.scripts.json +5 -0
  275. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules/SVG/344/275/277/347/224/250.md +8 -0
  276. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//345/274/271/347/252/227/347/273/204/344/273/266.md +4 -0
  277. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//346/226/207/344/273/266/346/213/206/345/210/206.md +4 -0
  278. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//347/273/204/344/273/266/345/221/275/345/220/215.md +3 -0
  279. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//347/273/204/344/273/266/345/244/215/347/224/250.md +7 -0
  280. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//350/241/250/345/215/225/345/233/236/345/241/253.md +4 -0
  281. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//350/241/250/346/240/274/351/241/265/351/235/242.md +11 -0
  282. package/template-vp-monorepo-react-nestjs/apps/web/.agents/rules//351/241/265/351/235/242/346/216/245/345/217/243.md +3 -0
  283. package/template-vp-monorepo-react-nestjs/apps/web/.env.dev +1 -1
  284. package/template-vp-monorepo-react-nestjs/apps/web/AGENTS.md +25 -0
  285. package/template-vp-monorepo-react-nestjs/apps/web/README.MD +181 -0
  286. package/template-vp-monorepo-react-nestjs/apps/web/index.html +3 -2
  287. package/template-vp-monorepo-react-nestjs/apps/web/package.json +7 -1
  288. package/template-vp-monorepo-react-nestjs/apps/web/public/favicon.svg +9 -1
  289. package/template-vp-monorepo-react-nestjs/apps/web/src/App.module.css +5 -0
  290. package/template-vp-monorepo-react-nestjs/apps/web/src/App.tsx +30 -12
  291. package/template-vp-monorepo-react-nestjs/apps/web/src/api/auth.ts +22 -0
  292. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/accounts.svg +4 -0
  293. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/audit-log.svg +4 -0
  294. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/companies.svg +5 -0
  295. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/dashboard.svg +6 -0
  296. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/draft.svg +4 -0
  297. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/home.svg +4 -0
  298. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/members.svg +4 -0
  299. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/menu-item.svg +4 -0
  300. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/menus.svg +6 -0
  301. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/organization-template.svg +4 -0
  302. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/organization.svg +6 -0
  303. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/positions.svg +4 -0
  304. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/profile.svg +5 -0
  305. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/projects.svg +4 -0
  306. package/template-vp-monorepo-react-nestjs/apps/web/src/assets/svg/roles.svg +4 -0
  307. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Brand/Brand.module.css +125 -0
  308. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Brand/Brand.tsx +56 -0
  309. package/template-vp-monorepo-react-nestjs/apps/web/src/components/DraftProTable/DraftProTable.module.css +78 -0
  310. package/template-vp-monorepo-react-nestjs/apps/web/src/components/DraftProTable/DraftProTable.tsx +105 -0
  311. package/template-vp-monorepo-react-nestjs/apps/web/src/components/DraftProTable/README.md +34 -0
  312. package/template-vp-monorepo-react-nestjs/apps/web/src/components/FullHeightProTable/FullHeightProTable.module.css +54 -0
  313. package/template-vp-monorepo-react-nestjs/apps/web/src/components/FullHeightProTable/FullHeightProTable.tsx +41 -0
  314. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/IconSelector.tsx +38 -0
  315. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/SvgAssetIcon.tsx +14 -0
  316. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/SvgAssetRegistry.ts +32 -0
  317. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/SvgAsset/index.ts +10 -0
  318. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/svg-icon/README.md +37 -0
  319. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Icon/svg-icon/SvgIcon.tsx +25 -0
  320. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Loading/PageLoading.module.css +7 -0
  321. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Loading/PageLoading.tsx +6 -1
  322. package/template-vp-monorepo-react-nestjs/apps/web/src/components/LocaleSwitch/LocaleSwitch.tsx +52 -0
  323. package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/ChangePasswordDialog.tsx +90 -0
  324. package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/PasswordFields.module.css +12 -0
  325. package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/PasswordFields.tsx +54 -0
  326. package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/ResetAccountPasswordDialog.tsx +100 -0
  327. package/template-vp-monorepo-react-nestjs/apps/web/src/components/PasswordActions/change-password-session.ts +13 -0
  328. package/template-vp-monorepo-react-nestjs/apps/web/src/components/RouteTransition/RouteTransition.css +60 -0
  329. package/template-vp-monorepo-react-nestjs/apps/web/src/components/RouteTransition/RouteTransition.tsx +44 -0
  330. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelector.tsx +218 -0
  331. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelectorSelection.ts +91 -0
  332. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/BasicTableSelectorTypes.ts +60 -0
  333. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/README.md +110 -0
  334. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/BasicTableSelector/index.ts +7 -0
  335. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/GlobalAccountSelect.tsx +211 -0
  336. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/GlobalAccountSelectTypes.ts +75 -0
  337. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/README.md +35 -0
  338. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/GlobalAccountSelect/index.ts +9 -0
  339. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberBrowser.tsx +146 -0
  340. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberCandidateColumns.tsx +137 -0
  341. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberFilterPanel.tsx +209 -0
  342. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberSelector.tsx +196 -0
  343. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/OrganizationMemberSelectorTypes.ts +103 -0
  344. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/README.md +8 -0
  345. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/OrganizationMemberSelector/index.ts +13 -0
  346. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/README.md +13 -0
  347. package/template-vp-monorepo-react-nestjs/apps/web/src/components/Selector/index.ts +30 -0
  348. package/template-vp-monorepo-react-nestjs/apps/web/src/config/theme.ts +52 -0
  349. package/template-vp-monorepo-react-nestjs/apps/web/src/hooks/useLatestDialogRequest.ts +71 -0
  350. package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/config.ts +40 -0
  351. package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/index.ts +10 -0
  352. package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/instance.ts +36 -0
  353. package/template-vp-monorepo-react-nestjs/apps/web/src/i18n/ui-locale.ts +30 -0
  354. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/BasicLayout/index.tsx +113 -0
  355. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/components/WorkspaceNavigationBoundary.tsx +50 -0
  356. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/index.tsx +196 -0
  357. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace-landing.css +119 -0
  358. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace-surfaces.css +110 -0
  359. package/template-vp-monorepo-react-nestjs/apps/web/src/layouts/WorkspaceLayout/workspace.css +223 -0
  360. package/template-vp-monorepo-react-nestjs/apps/web/src/locales/en_US.json +639 -1
  361. package/template-vp-monorepo-react-nestjs/apps/web/src/locales/zh_CN.json +621 -1
  362. package/template-vp-monorepo-react-nestjs/apps/web/src/main.tsx +8 -2
  363. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/api.ts +226 -0
  364. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/audit.tsx +169 -0
  365. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/AdministratorDialog.tsx +128 -0
  366. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/CleanupDialog.tsx +140 -0
  367. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/CompanyHierarchyDialog.tsx +244 -0
  368. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntityFormDialog.tsx +285 -0
  369. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntitySelectors/index.ts +6 -0
  370. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/EntitySelectors/selector-requests.ts +59 -0
  371. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/MemberOrganizationsDialog.tsx +188 -0
  372. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/MemberPositionsDialog.tsx +116 -0
  373. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/affiliation-loaders.ts +18 -0
  374. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberAffiliations/index.ts +5 -0
  375. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/AddProjectMemberDialog.tsx +75 -0
  376. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/CompanyMemberInvitationDialog.tsx +246 -0
  377. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/InvitationRecordsTable.tsx +152 -0
  378. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/CompanyMemberInvitation/invitation-link.ts +9 -0
  379. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/MemberOnboardingActions.tsx +79 -0
  380. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/RegisterCompanyMember/RegisterCompanyMemberDialog.module.css +12 -0
  381. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberOnboarding/RegisterCompanyMember/RegisterCompanyMemberDialog.tsx +122 -0
  382. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberRolesDialog.tsx +80 -0
  383. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/MemberTableColumns.tsx +234 -0
  384. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/index.ts +2 -0
  385. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MemberTable/member-candidate-cache.ts +12 -0
  386. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/MenuFormDialog.tsx +251 -0
  387. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/RoleFormDialog.tsx +73 -0
  388. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/components/RolePermissionsDialog.tsx +185 -0
  389. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/entities.tsx +268 -0
  390. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/home.tsx +67 -0
  391. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/members.tsx +310 -0
  392. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/menus/api.ts +74 -0
  393. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/menus/index.tsx +325 -0
  394. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/profile.tsx +160 -0
  395. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/roles.tsx +173 -0
  396. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/access/use-access.ts +35 -0
  397. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/error/404.tsx +20 -0
  398. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/error/error.tsx +42 -0
  399. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/i18n/index.module.css +23 -0
  400. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/i18n/index.tsx +35 -0
  401. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/components/ProjectFormDialog.tsx +137 -0
  402. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/config/columns.tsx +126 -0
  403. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/config/index.ts +87 -0
  404. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/components/DraftProjectFormDialog.tsx +147 -0
  405. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/config/columns.tsx +134 -0
  406. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/config/index.ts +39 -0
  407. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/config/projects.ts +56 -0
  408. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/index.module.css +49 -0
  409. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/draft/index.tsx +183 -0
  410. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/index.module.css +53 -0
  411. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/examples/pro-table/index.tsx +150 -0
  412. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/home/index.module.css +23 -0
  413. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/home/index.tsx +28 -42
  414. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/api.ts +14 -0
  415. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/index.tsx +163 -0
  416. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/login-form.css +199 -0
  417. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/login/login.css +186 -0
  418. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/accept.css +47 -0
  419. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/accept.tsx +143 -0
  420. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/member-invitations/api.ts +20 -0
  421. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/api.ts +91 -0
  422. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/MoveOrganizationUnitDialog.tsx +82 -0
  423. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationMemberColumns.tsx +87 -0
  424. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationMemberHeader.tsx +102 -0
  425. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationTreeModel.tsx +59 -0
  426. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/OrganizationTreePanel.tsx +88 -0
  427. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/index.ts +11 -0
  428. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/organization-loaders.ts +47 -0
  429. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationBrowser/organization-member-filter-loaders.ts +187 -0
  430. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationMembersDialog.tsx +207 -0
  431. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/components/OrganizationUnitDialog.tsx +110 -0
  432. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization/index.tsx +258 -0
  433. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/api.ts +53 -0
  434. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/TemplateDefinitionTabs.tsx +189 -0
  435. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/index.tsx +135 -0
  436. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/components/OrganizationTemplateDialog/types.ts +25 -0
  437. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/organization-templates/index.tsx +201 -0
  438. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/api.ts +81 -0
  439. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/components/PositionFormDialog.tsx +86 -0
  440. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/components/PositionMembersDialog.tsx +102 -0
  441. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/index.tsx +198 -0
  442. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/positions/loaders.ts +35 -0
  443. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/register/api.ts +14 -0
  444. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/register/index.tsx +157 -0
  445. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/api.ts +32 -0
  446. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/index.tsx +146 -0
  447. package/template-vp-monorepo-react-nestjs/apps/web/src/pages/workspaces/state.ts +24 -0
  448. package/template-vp-monorepo-react-nestjs/apps/web/src/router/AGENTS.MD +6 -0
  449. package/template-vp-monorepo-react-nestjs/apps/web/src/router/index.tsx +3 -23
  450. package/template-vp-monorepo-react-nestjs/apps/web/src/router/lazy-load/index.tsx +26 -0
  451. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/README.md +23 -0
  452. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/auth.ts +6 -0
  453. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/index.ts +4 -0
  454. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/access.ts +23 -0
  455. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/data.ts +55 -0
  456. package/template-vp-monorepo-react-nestjs/apps/web/src/router/middleware/workspace/entry.ts +52 -0
  457. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/access/page.tsx +20 -0
  458. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/auth.tsx +17 -0
  459. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/company.tsx +30 -0
  460. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/entry.tsx +20 -0
  461. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/examples.tsx +23 -0
  462. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/fallback.tsx +13 -0
  463. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/index.tsx +32 -0
  464. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/platform.tsx +27 -0
  465. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/project.tsx +28 -0
  466. package/template-vp-monorepo-react-nestjs/apps/web/src/router/page-registry.tsx +94 -0
  467. package/template-vp-monorepo-react-nestjs/apps/web/src/styles/dream.css +34 -0
  468. package/template-vp-monorepo-react-nestjs/apps/web/src/styles/index.css +17 -4
  469. package/template-vp-monorepo-react-nestjs/apps/web/src/types/auto-imports.d.ts +26 -0
  470. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/organization-assignment.ts +66 -0
  471. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/core/index.ts +101 -58
  472. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/core/utils.ts +5 -0
  473. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/index.ts +16 -6
  474. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/request/workspace.ts +82 -0
  475. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/safe-next.ts +36 -0
  476. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/storage/cookie.ts +51 -0
  477. package/template-vp-monorepo-react-nestjs/apps/web/src/utils/storage/session.ts +34 -0
  478. package/template-vp-monorepo-react-nestjs/apps/web/test/draft-projects.spec.ts +89 -0
  479. package/template-vp-monorepo-react-nestjs/apps/web/test/i18n-locale.spec.ts +22 -0
  480. package/template-vp-monorepo-react-nestjs/apps/web/test/icon-selector.spec.tsx +23 -0
  481. package/template-vp-monorepo-react-nestjs/apps/web/test/latest-dialog-request.spec.ts +89 -0
  482. package/template-vp-monorepo-react-nestjs/apps/web/test/member-invitation-navigation.spec.ts +34 -0
  483. package/template-vp-monorepo-react-nestjs/apps/web/test/organization-assignment.spec.ts +137 -0
  484. package/template-vp-monorepo-react-nestjs/apps/web/test/password-actions.spec.ts +40 -0
  485. package/template-vp-monorepo-react-nestjs/apps/web/test/password-reset-action.spec.ts +64 -0
  486. package/template-vp-monorepo-react-nestjs/apps/web/test/request.spec.ts +146 -0
  487. package/template-vp-monorepo-react-nestjs/apps/web/test/router/access.spec.ts +136 -0
  488. package/template-vp-monorepo-react-nestjs/apps/web/test/router/config.ts +140 -0
  489. package/template-vp-monorepo-react-nestjs/apps/web/test/router/entry.spec.ts +179 -0
  490. package/template-vp-monorepo-react-nestjs/apps/web/test/router/workspace-data.spec.ts +112 -0
  491. package/template-vp-monorepo-react-nestjs/apps/web/test/selector/global-account-select.spec.ts +311 -0
  492. package/template-vp-monorepo-react-nestjs/apps/web/test/selector/organization-member-selector.spec.ts +454 -0
  493. package/template-vp-monorepo-react-nestjs/apps/web/test/selector/selector-selection.spec.ts +132 -0
  494. package/template-vp-monorepo-react-nestjs/apps/web/test/storage.spec.ts +109 -0
  495. package/template-vp-monorepo-react-nestjs/apps/web/test/tsconfig.json +7 -0
  496. package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-navigation-boundary.spec.tsx +169 -0
  497. package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-navigation.spec.ts +105 -0
  498. package/template-vp-monorepo-react-nestjs/apps/web/test/workspace-requests.spec.ts +174 -0
  499. package/template-vp-monorepo-react-nestjs/apps/web/test/workspaces-password-entry.spec.tsx +71 -0
  500. package/template-vp-monorepo-react-nestjs/apps/web/tsconfig.json +1 -1
  501. package/template-vp-monorepo-react-nestjs/apps/web/vite.config.ts +85 -29
  502. package/template-vp-monorepo-react-nestjs/apps/web-vue/package.json +2 -0
  503. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/api/index.ts +1 -0
  504. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/hooks/chart/useEcharts.ts +13 -1
  505. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/header/index.vue +1 -0
  506. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/layout/default/index.vue +6 -2
  507. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/index.ts +1 -0
  508. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/guard/permissionGuard.ts +1 -0
  509. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/router/index.ts +1 -0
  510. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/index.ts +1 -0
  511. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/store/modules/user.ts +1 -0
  512. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/types/auto-import.d.ts +2 -0
  513. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/index.ts +30 -0
  514. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/core/utils.ts +5 -0
  515. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/utils/request/index.ts +2 -0
  516. package/template-vp-monorepo-react-nestjs/apps/web-vue/src/views/example/echart/config.ts +1 -0
  517. package/template-vp-monorepo-react-nestjs/apps/web-vue/tsconfig.tsbuildinfo +1 -0
  518. package/template-vp-monorepo-react-nestjs/docker-compose.yml +19 -0
  519. package/template-vp-monorepo-react-nestjs/mise.toml +1 -1
  520. package/template-vp-monorepo-react-nestjs/package.json +1 -13
  521. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/command.ts +22 -2
  522. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/config.ts +1 -0
  523. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/files.ts +1 -0
  524. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/load-config.ts +8 -0
  525. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/report.ts +2 -0
  526. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/scanner.ts +11 -0
  527. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/src/sync.ts +12 -0
  528. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/command.test.ts +1 -0
  529. package/template-vp-monorepo-react-nestjs/packages/i18n/cli/test/temporary-directory.ts +5 -0
  530. package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/format.ts +1 -0
  531. package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/i18n.ts +14 -0
  532. package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/storage.ts +8 -0
  533. package/template-vp-monorepo-react-nestjs/packages/i18n/core/src/store.ts +9 -0
  534. package/template-vp-monorepo-react-nestjs/packages/i18n/react/src/index.tsx +5 -0
  535. package/template-vp-monorepo-react-nestjs/packages/i18n/react/src/use-store.ts +3 -0
  536. package/template-vp-monorepo-react-nestjs/packages/i18n/vue/src/index.ts +6 -0
  537. package/template-vp-monorepo-react-nestjs/packages/i18n/vue/src/use-store.ts +3 -0
  538. package/template-vp-monorepo-react-nestjs/packages/shared/package.json +5 -1
  539. package/template-vp-monorepo-react-nestjs/packages/shared/src/index.ts +2 -13
  540. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-maintenance.ts +68 -0
  541. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-menus.ts +94 -0
  542. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access-resources.ts +168 -0
  543. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/access.ts +71 -0
  544. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/auth.ts +23 -0
  545. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/index.ts +9 -0
  546. package/template-vp-monorepo-react-nestjs/packages/shared/src/types/organization/models.ts +361 -0
  547. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/access-catalog.ts +304 -0
  548. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/access-scope.ts +97 -0
  549. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/account.ts +1 -0
  550. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/index.ts +65 -0
  551. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/organization/contracts.ts +237 -0
  552. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/record.ts +10 -0
  553. package/template-vp-monorepo-react-nestjs/packages/shared/src/utils/session-terminal.ts +1 -0
  554. package/template-vp-monorepo-react-nestjs/packages/shared/test/access.spec.ts +194 -0
  555. package/template-vp-monorepo-react-nestjs/packages/shared/test/organization.spec.ts +168 -0
  556. package/template-vp-monorepo-react-nestjs/pnpm-workspace.yaml +110 -68
  557. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/browser.mjs +696 -0
  558. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/http-support.mjs +105 -0
  559. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/http.mjs +1091 -0
  560. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/legacy-http.mjs +140 -0
  561. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/legacy.mjs +196 -0
  562. package/template-vp-monorepo-react-nestjs/scripts/enterprise-qa/runtime.mjs +110 -0
  563. package/template-vp-monorepo-react-nestjs/scripts/with-enterprise-test-env.mjs +80 -0
  564. package/template-vp-monorepo-react-nestjs/src/types/auto-imports.d.ts +60 -0
  565. package/template-vp-react/.vscode/settings.json +8 -1
  566. package/template-vp-react/commitlint.config.js +0 -0
  567. package/template-vp-react/package.json +21 -26
  568. package/template-vp-react/pnpm-workspace.yaml +6 -0
  569. package/template-vp-react/src/assets/svg/draft.svg +4 -0
  570. package/template-vp-react/src/components/Icon/svg-icon/README.md +37 -0
  571. package/template-vp-react/src/components/Icon/svg-icon/SvgIcon.tsx +27 -0
  572. package/template-vp-react/src/types/auto-imports.d.ts +2 -0
  573. package/template-vp-react/src/utils/request/index.ts +18 -5
  574. package/template-vp-react/tsconfig.json +2 -3
  575. package/template-vp-react/vite.config.ts +2 -0
  576. package/template-vp-react-shadcn/.agents/rules/SVG/344/275/277/347/224/250.md +8 -0
  577. package/template-vp-react-shadcn/.vscode/settings.json +2 -2
  578. package/template-vp-react-shadcn/{agents.md → AGENTS.md} +12 -2
  579. package/template-vp-react-shadcn/README.md +41 -0
  580. package/template-vp-react-shadcn/commitlint.config.js +1 -1
  581. package/template-vp-react-shadcn/components.json +1 -1
  582. package/template-vp-react-shadcn/package.json +25 -32
  583. package/template-vp-react-shadcn/pnpm-workspace.yaml +10 -0
  584. package/template-vp-react-shadcn/src/App.tsx +10 -10
  585. package/template-vp-react-shadcn/src/assets/svg/draft.svg +4 -0
  586. package/template-vp-react-shadcn/src/components/Icon/svg-icon/README.md +37 -0
  587. package/template-vp-react-shadcn/src/components/Icon/svg-icon/SvgIcon.tsx +27 -0
  588. package/template-vp-react-shadcn/src/components/Loading/PageLoading.tsx +4 -4
  589. package/template-vp-react-shadcn/src/components/Player/VideoJS/index.tsx +94 -78
  590. package/template-vp-react-shadcn/src/components/Player/index.ts +1 -1
  591. package/template-vp-react-shadcn/src/components/ui/button.tsx +25 -32
  592. package/template-vp-react-shadcn/src/components/ui/spinner.tsx +8 -7
  593. package/template-vp-react-shadcn/src/components/ui/toast.tsx +229 -0
  594. package/template-vp-react-shadcn/src/lib/utils.ts +3 -3
  595. package/template-vp-react-shadcn/src/main.tsx +5 -4
  596. package/template-vp-react-shadcn/src/pages/home/index.tsx +43 -35
  597. package/template-vp-react-shadcn/src/router/index.tsx +15 -15
  598. package/template-vp-react-shadcn/src/styles/index.css +4 -4
  599. package/template-vp-react-shadcn/src/styles/shadcn.css +2 -2
  600. package/template-vp-react-shadcn/src/utils/env/index.tsx +2 -2
  601. package/template-vp-react-shadcn/src/utils/request/alova-core/index.ts +102 -30
  602. package/template-vp-react-shadcn/src/utils/request/alova-core/utils.ts +5 -2
  603. package/template-vp-react-shadcn/src/utils/request/index.ts +32 -19
  604. package/template-vp-react-shadcn/src/utils/request/readme.md +41 -38
  605. package/template-vp-react-shadcn/tsconfig.json +2 -3
  606. package/template-vp-react-shadcn/vite.config.ts +29 -15
  607. package/template-vp-vue-eslint-vapor/package.json +29 -36
  608. package/template-vp-vue-eslint-vapor/pnpm-workspace.yaml +29 -1
  609. package/template-vue-vp-eslint/README.md +3 -10
  610. package/template-vue-vp-eslint/package.json +27 -34
  611. package/template-vue-vp-eslint/pnpm-workspace.yaml +27 -2
  612. package/template-vue-vp-eslint/src/layout/default/index.vue +4 -3
  613. package/template-vp-monorepo-react-nestjs/.agents/auth.config.ts +0 -0
  614. package/template-vp-monorepo-react-nestjs/.spaces/server/todo.md +0 -991
  615. package/template-vp-monorepo-react-nestjs/apps/server/README.md +0 -3
  616. package/template-vp-monorepo-react-nestjs/apps/web/src/router/modules/.gitkeep +0 -0
  617. package/template-vp-react-shadcn/.oxfmtrc.jsonc +0 -8
  618. package/template-vp-react-shadcn/.oxlintrc.jsonc +0 -3
  619. package/template-vp-react-shadcn/src/components/ui/sonner.tsx +0 -43
  620. /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{hero.png → image/hero.png} +0 -0
  621. /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{react.svg → svg/react.svg} +0 -0
  622. /package/template-vp-monorepo-react-nestjs/apps/web/src/assets/{vite.svg → svg/vite.svg} +0 -0
@@ -2,6 +2,7 @@ import request from '@/utils/request'
2
2
 
3
3
  export const EXPIRE_TIME = 60 * 10 * 1000
4
4
 
5
+ /** 创建树形示例数据请求,使用可恢复缓存并设置十分钟有效期。 */
5
6
  export function getTree() {
6
7
  return request.Get('/xxx/xx', {
7
8
  cacheFor: {
@@ -8,6 +8,11 @@ import echarts from './lib'
8
8
 
9
9
  type setOptionsType = (options: EChartsOption, clear?: boolean) => void
10
10
 
11
+ /**
12
+ * 管理图表的懒初始化、容器尺寸监听和组件卸载清理。
13
+ * @param elRef 图表容器引用,容器尚未挂载时延后初始化。
14
+ * @returns 设置图表配置、调整尺寸和获取实例的方法及 ECharts 模块。
15
+ */
11
16
  export function useECharts(
12
17
  elRef: Ref<HTMLDivElement> | Readonly<ShallowRef<HTMLDivElement | null>>,
13
18
  ) {
@@ -18,6 +23,7 @@ export function useECharts(
18
23
  chartInstance?.resize()
19
24
  }
20
25
 
26
+ /** 容器就绪后创建图表,并以防抖监听容器尺寸变化。 */
21
27
  const initCharts = () => {
22
28
  if (!elRef)
23
29
  return
@@ -38,6 +44,11 @@ export function useECharts(
38
44
  chartInstance = echarts.init(el)
39
45
  }
40
46
 
47
+ /**
48
+ * 确保图表已初始化后应用配置;容器未就绪时忽略本次设置。
49
+ * @param options ECharts 图表配置。
50
+ * @param clear 是否先清空已有图表,默认为 `true`。
51
+ */
41
52
  const setOptions: setOptionsType = (options, clear = true) => {
42
53
  if (!chartInstance) {
43
54
  initCharts()
@@ -49,13 +60,14 @@ export function useECharts(
49
60
  chartInstance?.setOption(options)
50
61
  }
51
62
 
63
+ /** 按需初始化并返回图表实例;容器未就绪时返回 `null`。 */
52
64
  const getInstance: () => echarts.ECharts | null = () => {
53
65
  if (!chartInstance)
54
66
  initCharts()
55
67
  return chartInstance
56
68
  }
57
69
 
58
- onUnmounted(() => {
70
+ onUnmounted(/** 释放图表和尺寸观察器,防止卸载后继续监听。 */ () => {
59
71
  chartInstance?.dispose()
60
72
  resizeObserver?.disconnect()
61
73
  resizeObserver = undefined
@@ -4,6 +4,7 @@ import { useUserStoreWithOut } from '@/store/modules/user'
4
4
  const userStore = useUserStoreWithOut()
5
5
  const router = useRouter()
6
6
 
7
+ /** 处理用户菜单;退出登录时重置用户状态并跳转到登录页。 */
7
8
  function handleMenuClick({ key }: { key: string }) {
8
9
  if (key === 'logout') {
9
10
  userStore.$reset()
@@ -14,6 +14,7 @@ const router = useRouter()
14
14
 
15
15
  const collapsed = ref(false)
16
16
 
17
+ /** 根据当前路由匹配链计算菜单选中项。 */
17
18
  const selectedKeys = computed(() => {
18
19
  const matched = route.matched.map(item => item.name)
19
20
  return matched.filter(Boolean) as string[]
@@ -21,17 +22,19 @@ const selectedKeys = computed(() => {
21
22
 
22
23
  const openKeys = ref<string[]>([])
23
24
 
24
- watchEffect(() => {
25
+ watchEffect(/** 路由变化时同步父菜单展开状态。 */ () => {
25
26
  const matched = route.matched.map(item => item.name).filter(Boolean) as string[]
26
27
  const parentKey = matched[0]
27
28
 
28
29
  openKeys.value = matched.length > 1 && parentKey !== undefined ? [parentKey] : []
29
30
  })
30
31
 
32
+ /** 按菜单项的路由名称跳转。 */
31
33
  function handleMenuClick({ key }: { key: string }) {
32
34
  router.push({ name: key })
33
35
  }
34
36
 
37
+ /** 将 `svg-` 前缀的菜单图标转换为图标组件,其余图标返回 `null`。 */
35
38
  function renderIcon(icon?: string) {
36
39
  if (!icon)
37
40
  return null
@@ -45,10 +48,11 @@ function renderIcon(icon?: string) {
45
48
  return null
46
49
  }
47
50
 
51
+ /** 递归将可见路由转换为菜单项,保留标题、图标和子菜单层级。 */
48
52
  function getMenuItems(routes: MenuRouteRecordRawType[]): NonNullable<MenuProps['items']> {
49
53
  return routes
50
54
  .filter(item => !item.meta?.hideInMenu)
51
- .map((item) => {
55
+ .map(/** 生成当前路由的菜单项,并递归构造可见子菜单。 */ (item) => {
52
56
  const hasChildren = item.children && item.children.length > 0
53
57
  const key = String(item.name ?? item.path)
54
58
  const label = item.meta?.title ?? key
@@ -2,6 +2,7 @@ import type { Router } from 'vue-router'
2
2
 
3
3
  import { createPermissionGuard } from './permissionGuard'
4
4
 
5
+ /** 为路由实例注册应用级导航守卫。 */
5
6
  export function setupGuard(router: Router) {
6
7
  createPermissionGuard(router)
7
8
  }
@@ -2,6 +2,7 @@ import type { Router } from 'vue-router'
2
2
 
3
3
  import NProgress from 'nprogress'
4
4
 
5
+ /** 注册导航进度条的开始与结束钩子;当前不执行登录或权限校验。 */
5
6
  export function createPermissionGuard(router: Router) {
6
7
  router.beforeEach((_to, _from, next) => {
7
8
  NProgress.start()
@@ -12,6 +12,7 @@ export const router = createRouter({
12
12
  scrollBehavior: () => ({ left: 0, top: 0 }),
13
13
  })
14
14
 
15
+ /** 先注册导航守卫,再将路由安装到 Vue 应用。 */
15
16
  export function setupRouter(app: App) {
16
17
  setupGuard(router)
17
18
  app.use(router)
@@ -6,6 +6,7 @@ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
6
6
  export const store = createPinia()
7
7
  store.use(piniaPluginPersistedstate)
8
8
 
9
+ /** 将已配置持久化插件的 Pinia 实例安装到 Vue 应用。 */
9
10
  export function setupStore(app: App) {
10
11
  app.use(store)
11
12
  }
@@ -12,6 +12,7 @@ export const useUserStore = defineStore('user', {
12
12
  },
13
13
  })
14
14
 
15
+ /** 显式绑定全局 Pinia 实例,供组件外部读取或修改用户状态。 */
15
16
  export function useUserStoreWithOut() {
16
17
  return useUserStore(store)
17
18
  }
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable */
2
2
  /* prettier-ignore */
3
+ /* oxlint-disable */
4
+ /* oxfmt-ignore */
3
5
  // @ts-nocheck
4
6
  // noinspection JSUnusedGlobalSymbols
5
7
  // Generated by unplugin-auto-import
@@ -145,16 +145,19 @@ const defaultRequestOption: BaseRequestOption<any, any, any, any> = {
145
145
  requestAdapter: adapterFetch() as AlovaRequestAdapter<any, any, any>,
146
146
  }
147
147
 
148
+ /** 优先读取请求配置中的元数据,兼容直接挂在方法实例上的元数据。 */
148
149
  function getMethodMeta(method: unknown): RequestMeta {
149
150
  const methodRecord = method as { meta?: RequestMeta, config?: { meta?: RequestMeta } } | undefined
150
151
  return methodRecord?.config?.meta ?? methodRecord?.meta ?? {}
151
152
  }
152
153
 
154
+ /** 获取单次请求的布尔开关;未显式设置布尔值时使用全局默认值。 */
153
155
  function getMetaFlag(meta: RequestMeta, key: keyof RequestMeta, fallback: boolean): boolean {
154
156
  const value = meta[key]
155
157
  return typeof value === 'boolean' ? value : fallback
156
158
  }
157
159
 
160
+ /** 按数值、列表或自定义函数匹配 HTTP 状态;未配置时接受所有 2xx。 */
158
161
  function isMatchedStatus<RE>(
159
162
  status: number,
160
163
  matcher: StatusMatcher<RE> | undefined,
@@ -169,6 +172,7 @@ function isMatchedStatus<RE>(
169
172
  return Array.isArray(matcher) ? matcher.includes(status) : matcher === status
170
173
  }
171
174
 
175
+ /** 将业务码转成字符串比较;未配置匹配列表时视为匹配。 */
172
176
  function isMatchedCode(code: unknown, matcher: CodeMatcher | undefined): boolean {
173
177
  if (!matcher?.length)
174
178
  return true
@@ -176,12 +180,14 @@ function isMatchedCode(code: unknown, matcher: CodeMatcher | undefined): boolean
176
180
  return matcher.some(item => String(item) === String(code))
177
181
  }
178
182
 
183
+ /** 兼容适配器的 `statusCode` 与 `status` 字段,统一返回数值状态码。 */
179
184
  function getResponseStatus(response: unknown): number {
180
185
  const responseRecord = response as { status?: unknown, statusCode?: unknown }
181
186
  const status = responseRecord.statusCode ?? responseRecord.status
182
187
  return typeof status === 'number' ? status : Number(status)
183
188
  }
184
189
 
190
+ /** 按配置字段及常见消息字段读取提示文本,无有效值时使用默认提示。 */
185
191
  function getResponseMessage(data: unknown, messageKey: string, defaultMessage: string): string {
186
192
  if (!isPlainObject(data))
187
193
  return defaultMessage
@@ -195,10 +201,15 @@ function getResponseMessage(data: unknown, messageKey: string, defaultMessage: s
195
201
  return defaultMessage
196
202
  }
197
203
 
204
+ /** 从对象响应中读取指定业务字段,非对象响应返回 `undefined`。 */
198
205
  function getResponseField(data: unknown, key: string): unknown {
199
206
  return isPlainObject(data) ? data[key] : undefined
200
207
  }
201
208
 
209
+ /**
210
+ * 根据状态码和内容类型解析 Fetch 响应,支持克隆时先克隆以保留原响应体。
211
+ * 无内容响应返回 `undefined`;类型未知时尝试 JSON 再尝试文本。
212
+ */
202
213
  async function parseFetchResponse(response: {
203
214
  status?: number
204
215
  body?: unknown
@@ -234,6 +245,7 @@ async function parseFetchResponse(response: {
234
245
  return undefined
235
246
  }
236
247
 
248
+ /** 从 Headers 或记录对象读取响应头,兼容原键、全小写及全大写键。 */
237
249
  function getHeaderValue(
238
250
  headers: Headers | Record<string, unknown> | undefined,
239
251
  key: string,
@@ -250,6 +262,7 @@ function getHeaderValue(
250
262
  return typeof value === 'string' ? value : ''
251
263
  }
252
264
 
265
+ /** 统一提取 Axios 的 data 或解析 Fetch 响应,无法识别的响应原样返回。 */
253
266
  async function getResponseData(response: unknown): Promise<unknown> {
254
267
  const responseRecord = response as {
255
268
  body?: unknown
@@ -272,6 +285,7 @@ async function getResponseData(response: unknown): Promise<unknown> {
272
285
  return response
273
286
  }
274
287
 
288
+ /** 求值可异步的请求头配置,将有效值转为字符串并忽略空值。 */
275
289
  async function resolveHeaderValue(value: HeaderValue): Promise<string | undefined> {
276
290
  const resolved = typeof value === 'function' ? await value() : value
277
291
  if (resolved === null || resolved === undefined)
@@ -279,6 +293,7 @@ async function resolveHeaderValue(value: HeaderValue): Promise<string | undefine
279
293
  return String(resolved)
280
294
  }
281
295
 
296
+ /** 将请求头写入 Headers、键值对数组或普通记录,适配不同请求适配器。 */
282
297
  function setHeader(target: unknown, key: string, value: string): void {
283
298
  if (typeof Headers !== 'undefined' && target instanceof Headers) {
284
299
  target.set(key, value)
@@ -293,12 +308,18 @@ function setHeader(target: unknown, key: string, value: string): void {
293
308
  ;(target as Record<string, string>)[key] = value
294
309
  }
295
310
 
311
+ /** 将自定义请求选项递归合并到默认配置,补全响应解析和提示开关。 */
296
312
  function resolveConfig<RC extends object, RE, RH, SE extends StatesExport<any>>(
297
313
  option: BaseRequestOption<RC, RE, RH, SE>,
298
314
  ): ResolvedRequestOption<RC, RE, RH, SE> {
299
315
  return deepMergeObject(defaultRequestOption, option) as ResolvedRequestOption<RC, RE, RH, SE>
300
316
  }
301
317
 
318
+ /**
319
+ * 创建带统一请求头、响应解包、业务码校验和消息提示的 Alova 实例。
320
+ * @param option 覆盖默认行为的请求、缓存和适配器配置。
321
+ * @returns 配置完成的请求实例,HTTP 或业务校验失败时拒绝对应请求。
322
+ */
302
323
  export function createInstance<
303
324
  RC extends object = FetchRequestInit,
304
325
  RE = Response,
@@ -316,6 +337,7 @@ export function createInstance<
316
337
  requestAdapter: config.requestAdapter!,
317
338
  l1Cache: config.l1Cache,
318
339
  l2Cache: config.l2Cache ?? config.storageAdapter,
340
+ /** 每次发送前求值公共请求头,并写入本次请求的头部容器。 */
319
341
  beforeRequest: async (method) => {
320
342
  const methodConfig = method.config as { headers?: unknown }
321
343
  const headers = methodConfig.headers ?? {}
@@ -328,6 +350,7 @@ export function createInstance<
328
350
  }
329
351
  },
330
352
  responded: {
353
+ /** 按请求元数据控制响应转换,校验状态与业务码并处理提示和未授权回调。 */
331
354
  onSuccess: async (response, method) => {
332
355
  const meta = getMethodMeta(method)
333
356
  const shouldTransform = getMetaFlag(meta, 'isTransformResponse', config.isTransformResponse)
@@ -384,6 +407,7 @@ export function createInstance<
384
407
 
385
408
  return responseData
386
409
  },
410
+ /** 按请求设置显示错误信息,并继续向调用方传播原始错误。 */
387
411
  onError: (error, method) => {
388
412
  const meta = getMethodMeta(method)
389
413
  const showError = getMetaFlag(meta, 'isShowErrorMessage', config.isShowErrorMessage)
@@ -416,6 +440,11 @@ export type DualCallInstance<
416
440
  > = RequestInstance<RC, RE, RH, SE>
417
441
  & ((option?: RequestOption<RC, RE, RH, SE>) => RequestInstance<RC, RE, RH, SE>)
418
442
 
443
+ /**
444
+ * 创建同时支持直接调用 HTTP 方法和按配置派生实例的请求入口。
445
+ * @param baseConfig 默认实例与派生实例共用的基础配置。
446
+ * @returns 无参数调用时复用默认实例,传入配置时创建新实例的可调用对象。
447
+ */
419
448
  export function createDualCallInstance<
420
449
  RC extends object = FetchRequestInit,
421
450
  RE = Response,
@@ -423,6 +452,7 @@ export function createDualCallInstance<
423
452
  SE extends StatesExport<any> = StatesExport<any>,
424
453
  >(baseConfig: BaseRequestOption<RC, RE, RH, SE>): DualCallInstance<RC, RE, RH, SE> {
425
454
  const defaultInstance = createInstance(baseConfig)
455
+ /** 无覆盖配置时返回默认实例,否则基于公共配置创建独立实例。 */
426
456
  const dualInstance = ((option?: RequestOption<RC, RE, RH, SE>) => {
427
457
  if (!option)
428
458
  return defaultInstance
@@ -1,4 +1,6 @@
1
+ /** 递归合并请求配置中的对象字段;数组和普通值由目标值替换。 */
1
2
  export function deepMergeObject<T = any>(source: T, target: Partial<T>): T {
3
+ /** 复制并合并当前层级,目标整体为 `undefined` 时保留来源值。 */
2
4
  const merge = (src: any, tgt: any): any => {
3
5
  if (!isPlainObject(src) || !isPlainObject(tgt))
4
6
  return tgt === undefined ? src : tgt
@@ -15,16 +17,19 @@ export function deepMergeObject<T = any>(source: T, target: Partial<T>): T {
15
17
  return merge(source, target)
16
18
  }
17
19
 
20
+ /** 根据对象标签判断是否为可按键读取和合并的对象。 */
18
21
  export function isPlainObject(data: unknown): data is Record<string, any> {
19
22
  return Object.prototype.toString.call(data) === '[object Object]'
20
23
  }
21
24
 
25
+ /** 在当前环境支持流 API 时判断响应体是否为可读流。 */
22
26
  export function isReadableStream(data: unknown): boolean {
23
27
  if (typeof ReadableStream === 'undefined')
24
28
  return false
25
29
  return data instanceof ReadableStream
26
30
  }
27
31
 
32
+ /** 尝试解析对象或数组形式的 JSON 字符串,其他输入或解析失败时原样返回。 */
28
33
  export function tryParseJsonString(data: unknown): unknown {
29
34
  if (typeof data !== 'string')
30
35
  return data
@@ -7,6 +7,7 @@ import { router } from '@/router'
7
7
  import { envVariables } from '../env'
8
8
  import { createDualCallInstance } from './core'
9
9
 
10
+ /** 组合 Vue 请求适配器、业务响应字段、消息提示和未授权跳转配置。 */
10
11
  function getBaseConfig() {
11
12
  return {
12
13
  baseUrl: `/${envVariables.API_AFFIX}`,
@@ -30,6 +31,7 @@ function getBaseConfig() {
30
31
  errorMessageFunc: (msg: string) => {
31
32
  message.error(msg)
32
33
  },
34
+ /** 未授权时跳转登录页,并提示当前会话失效。 */
33
35
  unAuthorizedResponseFunc: () => {
34
36
  void router.push('/login')
35
37
  message.error('登录过期或未登录')
@@ -1745,6 +1745,7 @@ export const graph = {
1745
1745
  ],
1746
1746
  }
1747
1747
 
1748
+ /** 根据《悲惨世界》人物关系数据生成支持漫游和邻接高亮的关系图配置。 */
1748
1749
  export function getOption(): EChartsOption {
1749
1750
  return {
1750
1751
  title: {
@@ -0,0 +1 @@
1
+ {"root":["./src/main.ts","./src/api/index.ts","./src/hooks/chart/lib.ts","./src/hooks/chart/useecharts.ts","./src/i18n/instance.ts","./src/router/index.ts","./src/router/interface.ts","./src/router/guard/index.ts","./src/router/guard/permissionguard.ts","./src/router/modules/index.ts","./src/store/index.ts","./src/store/modules/user.ts","./src/types/antdv-next.d.ts","./src/types/auto-import.d.ts","./src/types/components.d.ts","./src/types/vite-env.d.ts","./src/utils/env.ts","./src/utils/request/index.ts","./src/utils/request/core/index.ts","./src/utils/request/core/utils.ts","./src/views/example/echart/config.ts","./src/app.vue","./src/components/icon/svg-icon.vue","./src/layout/default/index.vue","./src/layout/default/header/index.vue","./src/views/example/tree-chart.vue","./src/views/example/echart/index.vue","./src/views/home/index.vue","./src/views/login/index.vue"],"version":"6.0.3"}
@@ -34,6 +34,25 @@ services:
34
34
  - '9001:9001'
35
35
  volumes:
36
36
  - minio-data:/data
37
+ minio-init:
38
+ image: quay.io/minio/mc:latest
39
+ container_name: vp-minio-init
40
+ depends_on:
41
+ minio:
42
+ condition: service_started
43
+ environment:
44
+ MINIO_ROOT_USER: minio
45
+ MINIO_ROOT_PASSWORD: minio123456
46
+ MINIO_BUCKET: uploads
47
+ entrypoint: >
48
+ /bin/sh -c "
49
+ until mc alias set local http://minio:9000 $$MINIO_ROOT_USER
50
+ $$MINIO_ROOT_PASSWORD;
51
+ do sleep 1; done;
52
+ mc mb --ignore-existing local/$$MINIO_BUCKET;
53
+ mc anonymous set none local/$$MINIO_BUCKET;
54
+ "
55
+ restart: 'no'
37
56
 
38
57
  volumes:
39
58
  postgres18-data:
@@ -1,3 +1,3 @@
1
1
  [tools]
2
2
  node = "26"
3
- pnpm = "11"
3
+ pnpm = "12"
@@ -5,7 +5,7 @@
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "ready": "vp check && vp run -r test && vp run -r build",
8
- "dev": "pnpm run -r --stream dev",
8
+ "dev": "pnpm run -r --parallel --stream dev",
9
9
  "prepare": "vp config",
10
10
  "clean": "node scripts/clean.mjs",
11
11
  "reinstall": "vp install --force",
@@ -20,17 +20,5 @@
20
20
  "typescript": "catalog:",
21
21
  "vite": "catalog:",
22
22
  "vite-plus": "catalog:"
23
- },
24
- "devEngines": {
25
- "packageManager": {
26
- "name": "pnpm",
27
- "version": "11.9.0",
28
- "onFail": "download"
29
- },
30
- "runtime": {
31
- "name": "node",
32
- "version": ">=22.18.0",
33
- "onFail": "download"
34
- }
35
23
  }
36
24
  }
@@ -68,6 +68,7 @@ const helpText = `用法:
68
68
  项目的 include 未匹配到任何源文件时,--clean 始终拒绝执行。
69
69
  已有翻译保持不变;新增项默认使用 key 作为翻译值。`
70
70
 
71
+ /** 解析命令并执行词条扫描、语言包校验与可选同步,输出报告和摘要,返回命令退出码。 */
71
72
  export async function runCli(
72
73
  arguments_: readonly string[],
73
74
  environment: CliEnvironment = {},
@@ -104,7 +105,7 @@ export async function runCli(
104
105
 
105
106
  const projectEntries = selectProjects(loaded.config.projects, options.projects)
106
107
  const executions = await Promise.all(
107
- projectEntries.map(async ([name, project]): Promise<ProjectExecution> => {
108
+ projectEntries.map(/** 扫描词条并拦截无源文件的清理。 */ async ([name, project]): Promise<ProjectExecution> => {
108
109
  const scan = await scanFiles({
109
110
  rootDir: loaded.rootDir,
110
111
  include: project.include,
@@ -203,6 +204,7 @@ export async function runCli(
203
204
  return 0
204
205
  }
205
206
 
207
+ /** 运行命令入口,统一输出异常与用法提示;执行异常时返回退出码 2。 */
206
208
  export async function main(
207
209
  arguments_: readonly string[] = process.argv.slice(2),
208
210
  environment: CliEnvironment = {},
@@ -220,6 +222,7 @@ export async function main(
220
222
  }
221
223
  }
222
224
 
225
+ /** 解析同步或检查命令的选项,校验必填值、未知选项和互斥组合。 */
223
226
  function parseArguments(arguments_: readonly string[]): ParsedArguments {
224
227
  const command = arguments_[0]
225
228
  if (command !== 'sync' && command !== 'check') {
@@ -285,6 +288,7 @@ function parseArguments(arguments_: readonly string[]): ParsedArguments {
285
288
  }
286
289
  }
287
290
 
291
+ /** 读取独立命令选项后的值,并返回已消费位置;缺失值时抛出用法错误。 */
288
292
  function readOptionValue(
289
293
  arguments_: readonly string[],
290
294
  index: number,
@@ -298,6 +302,7 @@ function readOptionValue(
298
302
  return [value, index + 1]
299
303
  }
300
304
 
305
+ /** 读取等号形式的命令选项值,空值时抛出用法错误。 */
301
306
  function readInlineOptionValue(argument: string, option: string): string {
302
307
  const value = argument.slice(option.length + 1)
303
308
  if (value.length === 0) {
@@ -307,6 +312,7 @@ function readInlineOptionValue(argument: string, option: string): string {
307
312
  return value
308
313
  }
309
314
 
315
+ /** 按名称选择待处理项目;未指定时返回全部项目,未知项目名抛出用法错误。 */
310
316
  function selectProjects(
311
317
  projects: Readonly<Record<string, I18nProjectConfig>>,
312
318
  selectedNames: readonly string[],
@@ -315,7 +321,7 @@ function selectProjects(
315
321
  return Object.entries(projects)
316
322
  }
317
323
 
318
- return selectedNames.map((name) => {
324
+ return selectedNames.map(/** 校验项目存在及配置有效后返回名称和配置。 */ (name) => {
319
325
  if (!Object.prototype.hasOwnProperty.call(projects, name)) {
320
326
  throw new CliUsageError(
321
327
  `Unknown project "${name}". Available projects: ${Object.keys(projects).join(', ')}.`,
@@ -331,6 +337,7 @@ function selectProjects(
331
337
  })
332
338
  }
333
339
 
340
+ /** 将每种语言的语言包路径统一解析为相对配置根目录的绝对路径。 */
334
341
  function resolveCatalogs(
335
342
  rootDir: string,
336
343
  catalogs: Readonly<Record<string, string>>,
@@ -340,10 +347,12 @@ function resolveCatalogs(
340
347
  )
341
348
  }
342
349
 
350
+ /** 保留绝对路径,或基于配置根目录解析相对路径。 */
343
351
  function resolveFromRoot(rootDir: string, path: string): string {
344
352
  return isAbsolute(path) ? resolve(path) : resolve(rootDir, path)
345
353
  }
346
354
 
355
+ /** 检查语言包路径是否重复,并防止报告路径覆盖语言包或配置文件。 */
347
356
  function validateOutputPaths(
348
357
  projects: readonly ProjectCatalogs[],
349
358
  reportPath: string | undefined,
@@ -374,6 +383,7 @@ function validateOutputPaths(
374
383
  }
375
384
  }
376
385
 
386
+ /** 允许创建报告或覆盖已有同步报告,拒绝覆盖其他已存在的文件。 */
377
387
  async function assertSafeReportTarget(reportPath: string): Promise<void> {
378
388
  let source: string
379
389
 
@@ -398,6 +408,7 @@ async function assertSafeReportTarget(reportPath: string): Promise<void> {
398
408
  }
399
409
  }
400
410
 
411
+ /** 确认报告目标不在已扫描源码中,避免报告写入覆盖业务源码。 */
401
412
  function assertReportIsNotSourceFile(
402
413
  executions: readonly ProjectExecution[],
403
414
  reportPath: string,
@@ -417,17 +428,20 @@ function assertReportIsNotSourceFile(
417
428
  }
418
429
  }
419
430
 
431
+ /** 规范化比较用的绝对路径,在 Windows 上忽略路径大小写。 */
420
432
  function normalizeComparablePath(path: string): string {
421
433
  const normalized = resolve(path)
422
434
  return process.platform === 'win32' ? normalized.toLowerCase() : normalized
423
435
  }
424
436
 
437
+ /** 生成展示用的相对路径,统一使用正斜杠,根目录自身显示为句点。 */
425
438
  function toPortablePath(rootDir: string, path: string): string {
426
439
  const relativePath = relative(rootDir, path)
427
440
  const displayPath = relativePath === '' ? '.' : relativePath
428
441
  return displayPath.split(sep).join('/')
429
442
  }
430
443
 
444
+ /** 汇总所有语言包的新增、未使用、删除和保持不变的词条数量。 */
431
445
  function summarize(files: readonly SyncFileReport[]): SummaryTotals {
432
446
  return files.reduce<SummaryTotals>(
433
447
  (totals, file) => ({
@@ -440,6 +454,7 @@ function summarize(files: readonly SyncFileReport[]): SummaryTotals {
440
454
  )
441
455
  }
442
456
 
457
+ /** 按项目和语言输出扫描及同步结果,并展示总计与可选报告路径。 */
443
458
  function printSummary(options: {
444
459
  command: CliCommand
445
460
  dryRun: boolean
@@ -477,14 +492,17 @@ function printSummary(options: {
477
492
  }
478
493
  }
479
494
 
495
+ /** 向标准输出写入一行命令结果。 */
480
496
  function defaultStdout(message: string): void {
481
497
  process.stdout.write(`${message}\n`)
482
498
  }
483
499
 
500
+ /** 向标准错误输出写入一行诊断信息。 */
484
501
  function defaultStderr(message: string): void {
485
502
  process.stderr.write(`${message}\n`)
486
503
  }
487
504
 
505
+ /** 将异常及其 cause 链递归拼接为可读的命令错误信息。 */
488
506
  function errorMessage(error: unknown): string {
489
507
  if (!(error instanceof Error)) {
490
508
  return String(error)
@@ -494,6 +512,7 @@ function errorMessage(error: unknown): string {
494
512
  return cause === undefined ? error.message : `${error.message}: ${errorMessage(cause)}`
495
513
  }
496
514
 
515
+ /** 按命令类型与文件列表字段识别已有同步报告的基本结构。 */
497
516
  function isSyncReportLike(value: unknown): boolean {
498
517
  if (typeof value !== 'object' || value === null || Array.isArray(value)) {
499
518
  return false
@@ -503,6 +522,7 @@ function isSyncReportLike(value: unknown): boolean {
503
522
  return (report.command === 'sync' || report.command === 'check') && Array.isArray(report.files)
504
523
  }
505
524
 
525
+ /** 识别目标文件不存在或路径中间项不是目录的错误。 */
506
526
  function isMissingPathError(error: unknown): boolean {
507
527
  return (
508
528
  error instanceof Error &&
@@ -10,6 +10,7 @@ export interface I18nConfig {
10
10
  report?: string
11
11
  }
12
12
 
13
+ /** 原样返回国际化配置,同时保留字面量类型以提供配置校验和编辑器提示。 */
13
14
  export function defineConfig<const Config extends I18nConfig>(config: Config): Config {
14
15
  return config
15
16
  }
@@ -32,6 +32,7 @@ const defaultExcludes = [
32
32
  '**/node_modules/**',
33
33
  ]
34
34
 
35
+ /** 按项目的包含和排除规则扫描源码,跳过含空字节的文件并收集去重词条及出现位置。 */
35
36
  export async function scanFiles(options: ScanFilesOptions): Promise<ScanFilesResult> {
36
37
  const files = await fg([...options.include], {
37
38
  absolute: true,