@ai-partner-x/aiko-boot-cli 0.1.4 → 0.1.5

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 (441) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/commands/add-api.js +9 -3
  3. package/dist/commands/add-app.js +0 -2
  4. package/dist/commands/env.d.ts +8 -0
  5. package/dist/commands/env.js +55 -0
  6. package/dist/commands/init.js +7 -9
  7. package/dist/core/project-config.d.ts +1 -0
  8. package/dist/core/prompts.d.ts +2 -0
  9. package/dist/core/prompts.js +33 -32
  10. package/dist/core/workspace.js +30 -9
  11. package/dist/scaffold.js +1 -1
  12. package/dist/usecases/add-api.usecase.d.ts +5 -2
  13. package/dist/usecases/add-api.usecase.js +83 -21
  14. package/dist/usecases/add-app.usecase.d.ts +0 -1
  15. package/dist/usecases/add-app.usecase.js +20 -10
  16. package/dist/usecases/add-feature.usecase.js +26 -23
  17. package/dist/usecases/env.usecase.d.ts +23 -0
  18. package/dist/usecases/env.usecase.js +284 -0
  19. package/dist/usecases/init-scaffold.usecase.d.ts +3 -4
  20. package/dist/usecases/init-scaffold.usecase.js +36 -49
  21. package/package.json +8 -3
  22. package/templates/api-clean/.env.example +3 -0
  23. package/templates/api-clean/app.config.ts +19 -0
  24. package/templates/{scaffold-default/packages/api → api-clean}/examples/security/README.md +2 -2
  25. package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/README.md +1 -1
  26. package/templates/{scaffold-default/packages/api → api-clean}/package.json +4 -16
  27. package/templates/api-clean/src/scripts/init-db.ts +50 -0
  28. package/templates/{scaffold-default/packages/api → api-clean}/src/server.ts +15 -11
  29. package/templates/api-clean/src/types/aiko-boot-starter-web.d.ts +8 -0
  30. package/templates/api-system/.env.example +11 -0
  31. package/templates/api-system/.eslintrc.json +6 -0
  32. package/templates/api-system/.swcrc +17 -0
  33. package/templates/api-system/app.config.ts +87 -0
  34. package/templates/api-system/docs/api-document.md +497 -0
  35. package/templates/api-system/docs/final-completion-report.md +565 -0
  36. package/templates/api-system/docs/permission-integration-summary.md +432 -0
  37. package/templates/api-system/examples/security/README.md +664 -0
  38. package/templates/api-system/examples/security/complete/.env.example +26 -0
  39. package/templates/api-system/examples/security/complete/PROJECT_STRUCTURE.md +220 -0
  40. package/templates/api-system/examples/security/complete/README.md +847 -0
  41. package/templates/api-system/examples/security/complete/app.config.ts +69 -0
  42. package/templates/api-system/examples/security/complete/app.ts +63 -0
  43. package/templates/api-system/examples/security/complete/controller/auth.controller.ts +131 -0
  44. package/templates/api-system/examples/security/complete/controller/index.ts +4 -0
  45. package/templates/api-system/examples/security/complete/controller/permission.controller.ts +41 -0
  46. package/templates/api-system/examples/security/complete/controller/role.controller.ts +53 -0
  47. package/templates/api-system/examples/security/complete/controller/user.controller.ts +53 -0
  48. package/templates/api-system/examples/security/complete/dto/change-password.dto.ts +10 -0
  49. package/templates/api-system/examples/security/complete/dto/create-permission.dto.ts +14 -0
  50. package/templates/api-system/examples/security/complete/dto/create-role.dto.ts +11 -0
  51. package/templates/api-system/examples/security/complete/dto/create-user.dto.ts +15 -0
  52. package/templates/api-system/examples/security/complete/dto/index.ts +7 -0
  53. package/templates/api-system/examples/security/complete/dto/login.dto.ts +10 -0
  54. package/templates/api-system/examples/security/complete/dto/oauth-profile.dto.ts +7 -0
  55. package/templates/api-system/examples/security/complete/dto/register.dto.ts +17 -0
  56. package/templates/api-system/examples/security/complete/entity/index.ts +6 -0
  57. package/templates/api-system/examples/security/complete/entity/oauth-account.entity.ts +39 -0
  58. package/templates/api-system/examples/security/complete/entity/permission.entity.ts +31 -0
  59. package/templates/api-system/examples/security/complete/entity/role-permission.entity.ts +19 -0
  60. package/templates/api-system/examples/security/complete/entity/role.entity.ts +25 -0
  61. package/templates/api-system/examples/security/complete/entity/user-role.entity.ts +19 -0
  62. package/templates/api-system/examples/security/complete/entity/user.entity.ts +46 -0
  63. package/templates/api-system/examples/security/complete/init.sql +81 -0
  64. package/templates/api-system/examples/security/complete/middleware/auth.interceptor.ts +39 -0
  65. package/templates/api-system/examples/security/complete/middleware/index.ts +2 -0
  66. package/templates/api-system/examples/security/complete/middleware/permission.interceptor.ts +61 -0
  67. package/templates/api-system/examples/security/complete/package.json +54 -0
  68. package/templates/api-system/examples/security/complete/seed.sql +42 -0
  69. package/templates/api-system/examples/security/complete/service/auth.service.ts +41 -0
  70. package/templates/api-system/examples/security/complete/service/index.ts +5 -0
  71. package/templates/api-system/examples/security/complete/service/oauth.service.ts +82 -0
  72. package/templates/api-system/examples/security/complete/service/permission.service.ts +113 -0
  73. package/templates/api-system/examples/security/complete/service/role.service.ts +85 -0
  74. package/templates/api-system/examples/security/complete/service/user.service.ts +132 -0
  75. package/templates/api-system/examples/security/complete/tests/TEST_REPORT.md +318 -0
  76. package/templates/api-system/examples/security/complete/tests/generate-report.js +335 -0
  77. package/templates/api-system/examples/security/complete/tests/helpers/api-helpers.ts +116 -0
  78. package/templates/api-system/examples/security/complete/tests/helpers/index.ts +2 -0
  79. package/templates/api-system/examples/security/complete/tests/helpers/test-helpers.ts +129 -0
  80. package/templates/api-system/examples/security/complete/tests/integration/auth.api.test.ts +429 -0
  81. package/templates/api-system/examples/security/complete/tests/integration/role.api.test.ts +400 -0
  82. package/templates/api-system/examples/security/complete/tests/integration/user.api.test.ts +459 -0
  83. package/templates/api-system/examples/security/complete/tests/jest.config.js +40 -0
  84. package/templates/api-system/examples/security/complete/tests/run-all-tests.js +135 -0
  85. package/templates/api-system/examples/security/complete/tests/run-tests.js +109 -0
  86. package/templates/api-system/examples/security/complete/tests/setup.ts +19 -0
  87. package/templates/api-system/examples/security/complete/tests/unit/auth.service.test.ts +199 -0
  88. package/templates/api-system/examples/security/complete/tests/unit/permission.service.test.ts +377 -0
  89. package/templates/api-system/examples/security/complete/tests/unit/user.service.test.ts +288 -0
  90. package/templates/api-system/examples/security/complete/tsconfig.json +35 -0
  91. package/templates/api-system/examples/security/jwt/README.md +424 -0
  92. package/templates/api-system/examples/security/local/README.md +499 -0
  93. package/templates/api-system/examples/security/oauth2/README.md +637 -0
  94. package/templates/api-system/examples/security/permission/README.md +943 -0
  95. package/templates/api-system/examples/security/session/README.md +753 -0
  96. package/templates/{api-base → api-system}/package.json +6 -5
  97. package/templates/{api-base → api-system}/scripts/codegen.cjs +0 -1
  98. package/templates/{api-base → api-system}/scripts/codegen.ts +0 -1
  99. package/templates/{scaffold-default/packages/api → api-system}/src/config/security-auto-configuration.ts +5 -2
  100. package/templates/api-system/src/scripts/simple-reset-admin.mjs +39 -0
  101. package/templates/api-system/src/server.ts +42 -0
  102. package/templates/api-system/src/types/aiko-boot-starter-web.d.ts +8 -0
  103. package/templates/api-system/src/types/sqljs.d.ts +18 -0
  104. package/templates/{api-base → api-system}/tsconfig.json +0 -1
  105. package/templates/api-system/tsup.config.ts +14 -0
  106. package/templates/api-system/uploads/.gitkeep +0 -0
  107. package/templates/app-admin/.env.example +18 -0
  108. package/templates/{scaffold-default/packages/admin → app-admin}/package.json +9 -3
  109. package/templates/{scaffold-default/packages/admin → app-admin}/tsconfig.json +1 -1
  110. package/templates/app-admin/vite.config.ts +31 -0
  111. package/templates/app-mobile/.env.example +5 -0
  112. package/templates/{scaffold-default/packages/mobile → app-mobile}/package.json +8 -2
  113. package/templates/{scaffold-default/packages/mobile → app-mobile}/src/main.tsx +2 -1
  114. package/templates/api-base/app.config.ts +0 -155
  115. package/templates/api-base/src/controller/auth.controller.ts +0 -160
  116. package/templates/api-base/src/controller/menu.controller.ts +0 -56
  117. package/templates/api-base/src/controller/role.controller.ts +0 -62
  118. package/templates/api-base/src/controller/user.controller.ts +0 -75
  119. package/templates/api-base/src/dto/auth.dto.ts +0 -31
  120. package/templates/api-base/src/dto/menu.dto.ts +0 -38
  121. package/templates/api-base/src/dto/role.dto.ts +0 -18
  122. package/templates/api-base/src/dto/user.dto.ts +0 -36
  123. package/templates/api-base/src/entity/menu.entity.ts +0 -35
  124. package/templates/api-base/src/entity/role-menu.entity.ts +0 -14
  125. package/templates/api-base/src/entity/role.entity.ts +0 -23
  126. package/templates/api-base/src/entity/user-role.entity.ts +0 -14
  127. package/templates/api-base/src/entity/user.entity.ts +0 -32
  128. package/templates/api-base/src/mapper/menu.mapper.ts +0 -7
  129. package/templates/api-base/src/mapper/role-menu.mapper.ts +0 -7
  130. package/templates/api-base/src/mapper/role.mapper.ts +0 -7
  131. package/templates/api-base/src/mapper/user-role.mapper.ts +0 -7
  132. package/templates/api-base/src/mapper/user.mapper.ts +0 -12
  133. package/templates/api-base/src/scripts/init-db.ts +0 -204
  134. package/templates/api-base/src/server.ts +0 -69
  135. package/templates/api-base/src/service/auth.service.ts +0 -144
  136. package/templates/api-base/src/service/log.request.service.ts +0 -72
  137. package/templates/api-base/src/service/menu.service.ts +0 -94
  138. package/templates/api-base/src/service/role.service.ts +0 -88
  139. package/templates/api-base/src/service/user.service.ts +0 -175
  140. package/templates/api-base/src/utils/jwt.util.ts +0 -39
  141. package/templates/scaffold-default/README.md +0 -114
  142. package/templates/scaffold-default/package.json +0 -26
  143. package/templates/scaffold-default/packages/admin/.env.dev +0 -1
  144. package/templates/scaffold-default/packages/admin/.env.prod +0 -4
  145. package/templates/scaffold-default/packages/admin/.env.stage +0 -4
  146. package/templates/scaffold-default/packages/admin/vite.config.ts +0 -26
  147. package/templates/scaffold-default/packages/api/app.config.ts +0 -163
  148. package/templates/scaffold-default/packages/api/src/controller/cache.controller.ts +0 -106
  149. package/templates/scaffold-default/packages/api/src/controller/mq.controller.ts +0 -35
  150. package/templates/scaffold-default/packages/api/src/controller/upload.controller.ts +0 -83
  151. package/templates/scaffold-default/packages/api/src/dto/cache.dto.ts +0 -24
  152. package/templates/scaffold-default/packages/api/src/dto/mq.dto.ts +0 -16
  153. package/templates/scaffold-default/packages/api/src/service/cache.service.ts +0 -80
  154. package/templates/scaffold-default/packages/api/src/service/log.request.service.ts +0 -158
  155. package/templates/scaffold-default/packages/api/src/service/log.service.ts +0 -123
  156. package/templates/scaffold-default/packages/api/src/service/mq.consumer.service.ts +0 -26
  157. package/templates/scaffold-default/pnpm-workspace.yaml +0 -2
  158. package/templates/scaffold-default/scripts/postinstall.cjs +0 -42
  159. package/templates/scaffold-default/scripts/rebuild-sqlite.cjs +0 -23
  160. /package/templates/{scaffold-default/packages/api → api-clean}/.eslintrc.json +0 -0
  161. /package/templates/{scaffold-default/packages/api → api-clean}/.swcrc +0 -0
  162. /package/templates/{scaffold-default/packages/api → api-clean}/docs/api-document.md +0 -0
  163. /package/templates/{scaffold-default/packages/api → api-clean}/docs/final-completion-report.md +0 -0
  164. /package/templates/{scaffold-default/packages/api → api-clean}/docs/permission-integration-summary.md +0 -0
  165. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/.env.example +0 -0
  166. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/PROJECT_STRUCTURE.md +0 -0
  167. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/app.config.ts +0 -0
  168. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/app.ts +0 -0
  169. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/controller/auth.controller.ts +0 -0
  170. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/controller/index.ts +0 -0
  171. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/controller/permission.controller.ts +0 -0
  172. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/controller/role.controller.ts +0 -0
  173. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/controller/user.controller.ts +0 -0
  174. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/change-password.dto.ts +0 -0
  175. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/create-permission.dto.ts +0 -0
  176. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/create-role.dto.ts +0 -0
  177. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/create-user.dto.ts +0 -0
  178. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/index.ts +0 -0
  179. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/login.dto.ts +0 -0
  180. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/oauth-profile.dto.ts +0 -0
  181. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/dto/register.dto.ts +0 -0
  182. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/index.ts +0 -0
  183. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/oauth-account.entity.ts +0 -0
  184. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/permission.entity.ts +0 -0
  185. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/role-permission.entity.ts +0 -0
  186. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/role.entity.ts +0 -0
  187. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/user-role.entity.ts +0 -0
  188. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/entity/user.entity.ts +0 -0
  189. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/init.sql +0 -0
  190. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/middleware/auth.interceptor.ts +0 -0
  191. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/middleware/index.ts +0 -0
  192. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/middleware/permission.interceptor.ts +0 -0
  193. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/package.json +0 -0
  194. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/seed.sql +0 -0
  195. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/auth.service.ts +0 -0
  196. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/index.ts +0 -0
  197. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/oauth.service.ts +0 -0
  198. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/permission.service.ts +0 -0
  199. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/role.service.ts +0 -0
  200. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/service/user.service.ts +0 -0
  201. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/TEST_REPORT.md +0 -0
  202. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/generate-report.js +0 -0
  203. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/helpers/api-helpers.ts +0 -0
  204. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/helpers/index.ts +0 -0
  205. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/helpers/test-helpers.ts +0 -0
  206. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/integration/auth.api.test.ts +0 -0
  207. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/integration/role.api.test.ts +0 -0
  208. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/integration/user.api.test.ts +0 -0
  209. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/jest.config.js +0 -0
  210. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/run-all-tests.js +0 -0
  211. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/run-tests.js +0 -0
  212. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/setup.ts +0 -0
  213. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/unit/auth.service.test.ts +0 -0
  214. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/unit/permission.service.test.ts +0 -0
  215. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tests/unit/user.service.test.ts +0 -0
  216. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/complete/tsconfig.json +0 -0
  217. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/jwt/README.md +0 -0
  218. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/local/README.md +0 -0
  219. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/oauth2/README.md +0 -0
  220. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/permission/README.md +0 -0
  221. /package/templates/{scaffold-default/packages/api → api-clean}/examples/security/session/README.md +0 -0
  222. /package/templates/{scaffold-default/packages/api → api-clean}/scripts/codegen.cjs +0 -0
  223. /package/templates/{scaffold-default/packages/api → api-clean}/scripts/codegen.ts +0 -0
  224. /package/templates/{scaffold-default/packages/api → api-clean}/src/scripts/simple-reset-admin.mjs +0 -0
  225. /package/templates/{scaffold-default/packages/api → api-clean}/src/types/sqljs.d.ts +0 -0
  226. /package/templates/{scaffold-default/packages/api → api-clean}/tsconfig.json +0 -0
  227. /package/templates/{scaffold-default/packages/api → api-clean}/tsup.config.ts +0 -0
  228. /package/templates/{scaffold-default/packages/api → api-clean}/uploads/.gitkeep +0 -0
  229. /package/templates/{scaffold-default/packages/api → api-system}/src/controller/auth.controller.ts +0 -0
  230. /package/templates/{scaffold-default/packages/api → api-system}/src/controller/menu.controller.ts +0 -0
  231. /package/templates/{scaffold-default/packages/api → api-system}/src/controller/role.controller.ts +0 -0
  232. /package/templates/{scaffold-default/packages/api → api-system}/src/controller/user.controller.ts +0 -0
  233. /package/templates/{scaffold-default/packages/api → api-system}/src/dto/auth.dto.ts +0 -0
  234. /package/templates/{scaffold-default/packages/api → api-system}/src/dto/menu.dto.ts +0 -0
  235. /package/templates/{scaffold-default/packages/api → api-system}/src/dto/role.dto.ts +0 -0
  236. /package/templates/{scaffold-default/packages/api → api-system}/src/dto/user.dto.ts +0 -0
  237. /package/templates/{scaffold-default/packages/api → api-system}/src/entity/menu.entity.ts +0 -0
  238. /package/templates/{scaffold-default/packages/api → api-system}/src/entity/role-menu.entity.ts +0 -0
  239. /package/templates/{scaffold-default/packages/api → api-system}/src/entity/role.entity.ts +0 -0
  240. /package/templates/{scaffold-default/packages/api → api-system}/src/entity/user-role.entity.ts +0 -0
  241. /package/templates/{scaffold-default/packages/api → api-system}/src/entity/user.entity.ts +0 -0
  242. /package/templates/{scaffold-default/packages/api → api-system}/src/mapper/menu.mapper.ts +0 -0
  243. /package/templates/{scaffold-default/packages/api → api-system}/src/mapper/role-menu.mapper.ts +0 -0
  244. /package/templates/{scaffold-default/packages/api → api-system}/src/mapper/role.mapper.ts +0 -0
  245. /package/templates/{scaffold-default/packages/api → api-system}/src/mapper/user-role.mapper.ts +0 -0
  246. /package/templates/{scaffold-default/packages/api → api-system}/src/mapper/user.mapper.ts +0 -0
  247. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/assign-role.ts +0 -0
  248. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/check-user-role.ts +0 -0
  249. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/check-users.mjs +0 -0
  250. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/demo-permissions.mjs +0 -0
  251. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/init-db.ts +0 -0
  252. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/reset-admin-password.mjs +0 -0
  253. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/reset-password.ts +0 -0
  254. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/test-db.ts +0 -0
  255. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/test-di.ts +0 -0
  256. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/test-permissions.mjs +0 -0
  257. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/update-admin-password.mjs +0 -0
  258. /package/templates/{scaffold-default/packages/api → api-system}/src/scripts/user-roles.ts +0 -0
  259. /package/templates/{scaffold-default/packages/api → api-system}/src/service/auth.service.ts +0 -0
  260. /package/templates/{scaffold-default/packages/api → api-system}/src/service/menu.service.ts +0 -0
  261. /package/templates/{scaffold-default/packages/api → api-system}/src/service/role.service.ts +0 -0
  262. /package/templates/{scaffold-default/packages/api → api-system}/src/service/user.service.ts +0 -0
  263. /package/templates/{scaffold-default/packages/api → api-system}/src/utils/auth.utils.js +0 -0
  264. /package/templates/{scaffold-default/packages/api → api-system}/src/utils/jwt.util.ts +0 -0
  265. /package/templates/{scaffold-default/packages/admin → app-admin}/Dockerfile +0 -0
  266. /package/templates/{scaffold-default/packages/admin → app-admin}/README.MD +0 -0
  267. /package/templates/{scaffold-default/packages/admin → app-admin}/components.json +0 -0
  268. /package/templates/{scaffold-default/packages/admin → app-admin}/eslint.config.js +0 -0
  269. /package/templates/{scaffold-default/packages/admin → app-admin}/index.html +0 -0
  270. /package/templates/{scaffold-default/packages/admin → app-admin}/public/vite.svg +0 -0
  271. /package/templates/{scaffold-default/packages/admin → app-admin}/src/App.css +0 -0
  272. /package/templates/{scaffold-default/packages/admin → app-admin}/src/App.tsx +0 -0
  273. /package/templates/{scaffold-default/packages/admin → app-admin}/src/app.config.ts +0 -0
  274. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/data-table/data-table-pagination.tsx +0 -0
  275. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/data-table/data-table-sorter.tsx +0 -0
  276. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/data-table/index.tsx +0 -0
  277. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/editable-table.tsx +0 -0
  278. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/form/input-password.tsx +0 -0
  279. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/form/sign-in-form.tsx +0 -0
  280. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/error-component.tsx +0 -0
  281. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/header.tsx +0 -0
  282. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/language-switcher.tsx +0 -0
  283. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/layout.tsx +0 -0
  284. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/loading-overlay.tsx +0 -0
  285. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/shell-bar.tsx +0 -0
  286. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/sidebar.tsx +0 -0
  287. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/layout/user-avatar.tsx +0 -0
  288. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/list-report.tsx +0 -0
  289. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/master-detail.tsx +0 -0
  290. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/notification/toaster.tsx +0 -0
  291. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/notification/undoable-notification.tsx +0 -0
  292. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/object-page.tsx +0 -0
  293. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/theme/theme-provider.tsx +0 -0
  294. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/theme/theme-select.tsx +0 -0
  295. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/admin-ui/theme/theme-toggle.tsx +0 -0
  296. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/accordion.tsx +0 -0
  297. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/alert-dialog.tsx +0 -0
  298. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/alert.tsx +0 -0
  299. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/aspect-ratio.tsx +0 -0
  300. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/avatar.tsx +0 -0
  301. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/badge.tsx +0 -0
  302. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/breadcrumb.tsx +0 -0
  303. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/button.tsx +0 -0
  304. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/calendar.tsx +0 -0
  305. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/card.tsx +0 -0
  306. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/carousel.tsx +0 -0
  307. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/chart.tsx +0 -0
  308. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/checkbox.tsx +0 -0
  309. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/collapsible.tsx +0 -0
  310. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/command.tsx +0 -0
  311. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/context-menu.tsx +0 -0
  312. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/dialog.tsx +0 -0
  313. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/drawer.tsx +0 -0
  314. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/dropdown-menu.tsx +0 -0
  315. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/form.tsx +0 -0
  316. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/hover-card.tsx +0 -0
  317. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/input-otp.tsx +0 -0
  318. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/input.tsx +0 -0
  319. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/label.tsx +0 -0
  320. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/menubar.tsx +0 -0
  321. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/navigation-menu.tsx +0 -0
  322. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/pagination.tsx +0 -0
  323. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/popover.tsx +0 -0
  324. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/progress.tsx +0 -0
  325. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/radio-group.tsx +0 -0
  326. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/resizable.tsx +0 -0
  327. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/scroll-area.tsx +0 -0
  328. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/select.tsx +0 -0
  329. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/separator.tsx +0 -0
  330. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/sheet.tsx +0 -0
  331. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/sidebar.tsx +0 -0
  332. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/skeleton.tsx +0 -0
  333. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/slider.tsx +0 -0
  334. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/sonner.tsx +0 -0
  335. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/switch.tsx +0 -0
  336. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/table.tsx +0 -0
  337. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/tabs.tsx +0 -0
  338. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/textarea.tsx +0 -0
  339. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/toggle-group.tsx +0 -0
  340. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/toggle.tsx +0 -0
  341. /package/templates/{scaffold-default/packages/admin → app-admin}/src/components/ui/tooltip.tsx +0 -0
  342. /package/templates/{scaffold-default/packages/admin → app-admin}/src/hooks/use-mobile.ts +0 -0
  343. /package/templates/{scaffold-default/packages/admin → app-admin}/src/i18n.ts +0 -0
  344. /package/templates/{scaffold-default/packages/admin → app-admin}/src/index.tsx +0 -0
  345. /package/templates/{scaffold-default/packages/admin → app-admin}/src/layouts/menu-layout.tsx +0 -0
  346. /package/templates/{scaffold-default/packages/admin → app-admin}/src/layouts/tile-layout.tsx +0 -0
  347. /package/templates/{scaffold-default/packages/admin → app-admin}/src/lib/utils.ts +0 -0
  348. /package/templates/{scaffold-default/packages/admin → app-admin}/src/locales/en.json +0 -0
  349. /package/templates/{scaffold-default/packages/admin → app-admin}/src/locales/zh.json +0 -0
  350. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/dashboard.tsx +0 -0
  351. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/goods-receipt/CreatePage.tsx +0 -0
  352. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/goods-receipt/EditPage.tsx +0 -0
  353. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/goods-receipt/ListPage.tsx +0 -0
  354. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/goods-receipt/ViewPage.tsx +0 -0
  355. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/goods-receipt/index.ts +0 -0
  356. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/home-page.tsx +0 -0
  357. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/cost-centers/index.tsx +0 -0
  358. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/currencies/index.tsx +0 -0
  359. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/materials/ListPage.tsx +0 -0
  360. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/materials/ViewPage.tsx +0 -0
  361. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/materials/index.ts +0 -0
  362. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/plants/ListPage.tsx +0 -0
  363. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/plants/ViewPage.tsx +0 -0
  364. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/plants/index.ts +0 -0
  365. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/purchase-organizations/index.tsx +0 -0
  366. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/units-of-measure/index.tsx +0 -0
  367. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/vendors/ListPage.tsx +0 -0
  368. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/vendors/ViewPage.tsx +0 -0
  369. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/master-data/vendors/index.ts +0 -0
  370. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/placeholder-page.tsx +0 -0
  371. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-orders/ListPage.tsx +0 -0
  372. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-orders/ViewPage.tsx +0 -0
  373. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-orders/index.ts +0 -0
  374. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/CreatePage.tsx +0 -0
  375. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/EditPage.tsx +0 -0
  376. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/ListPage.tsx +0 -0
  377. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/ViewPage.tsx +0 -0
  378. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/constants.ts +0 -0
  379. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/purchase-requisitions/index.ts +0 -0
  380. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/reports/PurchaseOrderReport.tsx +0 -0
  381. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/reports/PurchaseRequisitionReport.tsx +0 -0
  382. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/reports/index.ts +0 -0
  383. /package/templates/{scaffold-default/packages/admin → app-admin}/src/pages/settings-page.tsx +0 -0
  384. /package/templates/{scaffold-default/packages/admin → app-admin}/src/providers/app-config.tsx +0 -0
  385. /package/templates/{scaffold-default/packages/admin → app-admin}/src/providers/auth-provider.ts +0 -0
  386. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/auth.ts +0 -0
  387. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/index.ts +0 -0
  388. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/menu.ts +0 -0
  389. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/goods-receipt.ts +0 -0
  390. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/master-data.ts +0 -0
  391. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/purchase-orders.ts +0 -0
  392. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/purchase-requisitions.ts +0 -0
  393. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/reports.ts +0 -0
  394. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/modules/settings.ts +0 -0
  395. /package/templates/{scaffold-default/packages/admin → app-admin}/src/routes/withSuspense.tsx +0 -0
  396. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/amber.css +0 -0
  397. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/blue.css +0 -0
  398. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/default.css +0 -0
  399. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/fiori.css +0 -0
  400. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/green.css +0 -0
  401. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/index.css +0 -0
  402. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/rose.css +0 -0
  403. /package/templates/{scaffold-default/packages/admin → app-admin}/src/theme/violet.css +0 -0
  404. /package/templates/{scaffold-default/packages/admin → app-admin}/src/vite-env.d.ts +0 -0
  405. /package/templates/{scaffold-default/packages/admin → app-admin}/tsconfig.node.json +0 -0
  406. /package/templates/{scaffold-default/packages/core → app-core}/package.json +0 -0
  407. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/auth-client-middleware.ts +0 -0
  408. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/auth-constants.ts +0 -0
  409. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/auth-service.ts +0 -0
  410. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/backend-auth-provider.ts +0 -0
  411. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/default-auth-provider.ts +0 -0
  412. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/index.ts +0 -0
  413. /package/templates/{scaffold-default/packages/core → app-core}/src/auth/types.ts +0 -0
  414. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/authorization-client-middleware.ts +0 -0
  415. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/authorization-config.ts +0 -0
  416. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/authorization-provider.tsx +0 -0
  417. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/default-authorization-provider.ts +0 -0
  418. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/index.ts +0 -0
  419. /package/templates/{scaffold-default/packages/core → app-core}/src/authorization/types.ts +0 -0
  420. /package/templates/{scaffold-default/packages/core → app-core}/src/index.ts +0 -0
  421. /package/templates/{scaffold-default/packages/core → app-core}/src/utils/promise-result-cache.ts +0 -0
  422. /package/templates/{scaffold-default/packages/core → app-core}/tsconfig.json +0 -0
  423. /package/templates/{scaffold-default/packages/mobile → app-mobile}/README.md +0 -0
  424. /package/templates/{scaffold-default/packages/mobile → app-mobile}/index.html +0 -0
  425. /package/templates/{scaffold-default/packages/mobile → app-mobile}/postcss.config.mjs +0 -0
  426. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/App.tsx +0 -0
  427. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/app/globals.css +0 -0
  428. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/components/LoginForm.tsx +0 -0
  429. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/hooks/index.ts +0 -0
  430. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/lib/utils.ts +0 -0
  431. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/pages/HomePage.tsx +0 -0
  432. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/pages/LoginPage.tsx +0 -0
  433. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/pages/index.ts +0 -0
  434. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/routes/ProtectedRoute.tsx +0 -0
  435. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/routes/index.tsx +0 -0
  436. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/routes/routes.ts +0 -0
  437. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/types/index.ts +0 -0
  438. /package/templates/{scaffold-default/packages/mobile → app-mobile}/src/vite-env.d.ts +0 -0
  439. /package/templates/{scaffold-default/packages/mobile → app-mobile}/tsconfig.json +0 -0
  440. /package/templates/{scaffold-default/packages/mobile → app-mobile}/tsconfig.node.json +0 -0
  441. /package/templates/{scaffold-default/packages/mobile → app-mobile}/vite.config.ts +0 -0
@@ -10,7 +10,7 @@
10
10
  }
11
11
  },
12
12
  "scripts": {
13
- "dev": "concurrently -n codegen,server -c blue,green \"pnpm codegen:watch\" \"node --import @swc-node/register/esm-register --watch src/server.ts\"",
13
+ "dev": "node --import @swc-node/register/esm-register --watch src/server.ts",
14
14
  "dev:server": "node --import @swc-node/register/esm-register --watch src/server.ts",
15
15
  "codegen:watch": "node scripts/codegen.cjs --watch",
16
16
  "init-db": "node --import @swc-node/register/esm-register src/scripts/init-db.ts",
@@ -26,30 +26,31 @@
26
26
  "@ai-partner-x/aiko-boot-starter-validation": "workspace:*",
27
27
  "@ai-partner-x/aiko-boot-starter-web": "workspace:*",
28
28
  "@ai-partner-x/aiko-boot-starter-security": "workspace:*",
29
- "@ai-partner-x/aiko-boot-starter-log": "workspace:*",
30
29
  "bcryptjs": "^2.4.3",
31
30
  "jsonwebtoken": "^9.0.2",
32
31
  "better-sqlite3": "^12.6.2",
33
32
  "cors": "^2.8.5",
34
- "date-fns": "^4.1.0",
35
33
  "express": "^4.18.0",
36
34
  "axios": "^1.6.0",
37
- "reflect-metadata": "^0.2.1"
35
+ "reflect-metadata": "^0.2.1",
36
+ "dotenv": "^17.2.3"
38
37
  },
39
38
  "devDependencies": {
40
39
  "concurrently": "^9.2.1",
41
40
  "sql.js": "^1.11.0",
42
41
  "@swc-node/register": "^1.11.1",
43
42
  "@swc/core": "^1.15.18",
43
+ "@ai-partner-x/eslint-plugin-aiko-boot": "workspace:*",
44
44
  "@types/bcryptjs": "^2.4.6",
45
45
  "@types/better-sqlite3": "^7.6.13",
46
46
  "@types/cors": "^2.8.17",
47
47
  "@types/express": "^4.17.21",
48
48
  "@types/jsonwebtoken": "^9.0.5",
49
49
  "@types/node": "^20.11.0",
50
+ "@typescript-eslint/parser": "^6.21.0",
51
+ "eslint": "^8.57.1",
50
52
  "tsup": "^8.0.0",
51
53
  "tsx": "^4.7.0",
52
54
  "typescript": "^5.3.0"
53
55
  }
54
56
  }
55
-
@@ -27,4 +27,3 @@ if (isWatch) {
27
27
  handleError(error);
28
28
  }
29
29
  }
30
-
@@ -7,4 +7,3 @@ if (isWatch) {
7
7
  } else {
8
8
  generateApiClient();
9
9
  }
10
-
@@ -9,7 +9,6 @@ import { Component } from '@ai-partner-x/aiko-boot';
9
9
  import { getExpressApp } from '@ai-partner-x/aiko-boot-starter-web';
10
10
  import { AuthInterceptor } from '@ai-partner-x/aiko-boot-starter-security';
11
11
  import { PermissionInterceptor } from '@ai-partner-x/aiko-boot-starter-security';
12
- import { getLogger } from '@ai-partner-x/aiko-boot-starter-log';
13
12
 
14
13
  /**
15
14
  * 自定义安全自动配置
@@ -18,7 +17,11 @@ import { getLogger } from '@ai-partner-x/aiko-boot-starter-log';
18
17
  @AutoConfiguration({ order: 150 }) // 在WebAutoConfiguration之前执行(order: 200)
19
18
  @Component()
20
19
  export class SecurityAutoConfiguration {
21
- private logger = getLogger('security-auto-configuration');
20
+ private logger = {
21
+ info: (...args: unknown[]) => console.log('[security-auto-configuration]', ...args),
22
+ warn: (...args: unknown[]) => console.warn('[security-auto-configuration]', ...args),
23
+ error: (...args: unknown[]) => console.error('[security-auto-configuration]', ...args),
24
+ };
22
25
 
23
26
  @OnApplicationReady({ order: 30 }) // 在WebAutoConfiguration之前(order: 50)
24
27
  async configureSecurityMiddleware(): Promise<void> {
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * 简单脚本:重新初始化数据库以设置admin123密码
5
+ */
6
+
7
+ const { execSync } = await import('child_process');
8
+
9
+ async function simpleReset() {
10
+ try {
11
+ console.log('🔄 Re-initializing database with admin123 password...');
12
+ console.log('⏰ This will take about 10-15 seconds...');
13
+
14
+ const result = execSync('node --import @swc-node/register/esm-register src/scripts/init-db.ts', {
15
+ cwd: process.cwd(),
16
+ stdio: 'inherit',
17
+ timeout: 30000
18
+ });
19
+
20
+ if (result.status === 0) {
21
+ console.log('');
22
+ console.log('🎉 Database initialization completed successfully!');
23
+ console.log('🎉 Admin password has been set to: admin123');
24
+ console.log('🎉 You can now login with: admin / admin123');
25
+ console.log('');
26
+ console.log('🔐 Please restart the server for changes to take effect.');
27
+ console.log('');
28
+ } else {
29
+ console.error('❌ Database initialization failed with code:', result.status);
30
+ console.error('Error output:', result.stderr);
31
+ process.exit(1);
32
+ }
33
+ } catch (error) {
34
+ console.error('❌ Error during reset:', error);
35
+ process.exit(1);
36
+ }
37
+ }
38
+
39
+ simpleReset();
@@ -0,0 +1,42 @@
1
+ import 'reflect-metadata';
2
+ import express from 'express';
3
+ import { createApp } from '@ai-partner-x/aiko-boot';
4
+ import { config as loadDotenv } from 'dotenv';
5
+ import { existsSync } from 'fs';
6
+ import { join } from 'path';
7
+
8
+ const projectDir = process.cwd();
9
+ const appEnv = process.env.APP_ENV || 'dev';
10
+ const envFile = join(projectDir, `.env.${appEnv}`);
11
+ if (existsSync(envFile)) {
12
+ loadDotenv({ path: envFile, override: false });
13
+ console.log(`Loaded env file: ${envFile}`);
14
+ } else {
15
+ console.warn(`Env file not found: ${envFile}`);
16
+ }
17
+
18
+ const srcDir = join(projectDir, 'src'); // Framework scans for controller/service/mapper relative to srcDir
19
+ const configPath = projectDir; // configPath should point to the directory with node_modules
20
+ const context = await createApp({ srcDir, configPath, verbose: true });
21
+
22
+ if (!context) {
23
+ console.warn('ApplicationContext not available');
24
+ } else {
25
+ console.log('Security enabled: ' + context.config.get('security.enabled', true));
26
+ }
27
+
28
+ const expressApp = await import('@ai-partner-x/aiko-boot-starter-web').then(m => m.getExpressApp());
29
+
30
+ if (!expressApp) {
31
+ console.error('Express app not available');
32
+ process.exit(1);
33
+ }
34
+
35
+ expressApp.use(express.json());
36
+
37
+ const port = context.config.get('server.port', 3001);
38
+
39
+ expressApp.listen(port, () => {
40
+ console.log('API Server started on port ' + port);
41
+ console.log('📡 API: http://localhost:' + port + '/api');
42
+ });
@@ -0,0 +1,8 @@
1
+ declare module '@ai-partner-x/aiko-boot-starter-web' {
2
+ /**
3
+ * aiko-boot-starter-web is a workspace dependency without published TS types.
4
+ * We only need the `getExpressApp()` export for this project.
5
+ */
6
+ export function getExpressApp(): any;
7
+ }
8
+
@@ -0,0 +1,18 @@
1
+ declare module 'sql.js' {
2
+ export interface SqlJsInitConfig {
3
+ locateFile?: (file: string, prefix: string) => string;
4
+ }
5
+
6
+ export interface SqlJsDatabase {
7
+ run(sql: string, params?: unknown[]): void;
8
+ export(): Uint8Array;
9
+ close(): void;
10
+ }
11
+
12
+ export interface SqlJsStatic {
13
+ Database: new () => SqlJsDatabase;
14
+ }
15
+
16
+ export default function initSqlJs(config?: SqlJsInitConfig): Promise<SqlJsStatic>;
17
+ }
18
+
@@ -15,4 +15,3 @@
15
15
  "include": ["src/**/*"],
16
16
  "exclude": ["node_modules", "dist"]
17
17
  }
18
-
@@ -0,0 +1,14 @@
1
+ import { defineConfig } from 'tsup';
2
+
3
+ export default defineConfig({
4
+ entry: ['src/server.ts'],
5
+ format: ['esm'],
6
+ dts: false,
7
+ clean: true,
8
+ external: [/^@ai-partner-x\//, 'reflect-metadata', 'express', 'cors'],
9
+ // Don't bundle to keep directory structure for Aiko Boot runtime discovery
10
+ bundle: false,
11
+ treeshake: false,
12
+ // Keep TypeScript source files for runtime discovery
13
+ splitting: false,
14
+ });
File without changes
@@ -0,0 +1,18 @@
1
+ # scaffold/admin 环境模板
2
+ # 用法:复制为 .env.<mode>(如 .env.dev/.env.stage/.env.prod)后,填写真实地址与回调信息。
3
+
4
+ APP_ENV=dev
5
+
6
+ # 未授权时 redirect 的登录地址。
7
+ # 建议保持为前端内部路径 /login(admin 内已有该路由),若使用外部 SSO 则改为完整 URL。
8
+ VITE_APP_LOGIN=/login
9
+
10
+ # 后端 API Base URL(不包含 /api 前缀)
11
+ VITE_API_URL=http://localhost:3001
12
+
13
+ # Vite dev server 代理目标(用于将前端请求的 /api 转发到后端)
14
+ VITE_API_PROXY_TARGET=http://localhost:3001
15
+
16
+ # 是否启用前端守卫(需要根据自身鉴权策略调整)
17
+ VITE_APP_USE_GUARD=false
18
+
@@ -4,12 +4,18 @@
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
7
- "dev": "vite",
8
- "build": "tsc && vite build --mode prod",
7
+ "dev": "vite --mode dev",
8
+ "dev:dev": "vite --mode dev",
9
+ "dev:stage": "vite --mode stage",
10
+ "dev:prod": "vite --mode prod",
11
+ "build": "pnpm build:prod",
12
+ "build:dev": "tsc && vite build --mode dev",
13
+ "build:stage": "tsc && vite build --mode stage",
14
+ "build:prod": "tsc && vite build --mode prod",
9
15
  "preview": "vite preview"
10
16
  },
11
17
  "dependencies": {
12
- "@scaffold/api": "workspace:*",
18
+ "@scaffold/system": "workspace:*",
13
19
  "@scaffold/core": "workspace:*",
14
20
  "@hookform/resolvers": "^5.0.1",
15
21
  "@radix-ui/react-accordion": "^1.2.8",
@@ -20,7 +20,7 @@
20
20
  "baseUrl": ".",
21
21
  "paths": {
22
22
  "@/*": ["./src/*"],
23
- "@scaffold/api/client": ["../api/dist/client/index.ts"],
23
+ "@scaffold/system/client": ["../system/dist/client/index.ts"],
24
24
  "@scaffold/core": ["../core/src/index.ts"]
25
25
  }
26
26
  },
@@ -0,0 +1,31 @@
1
+ import tailwindcss from "@tailwindcss/vite"
2
+ import react from "@vitejs/plugin-react"
3
+ import path from "path"
4
+ import { defineConfig, loadEnv } from "vite"
5
+
6
+ // https://vite.dev/config/
7
+ export default defineConfig(({ mode }) => {
8
+ const env = loadEnv(mode, process.cwd(), "")
9
+ const proxyTarget = env.VITE_API_PROXY_TARGET || "http://localhost:3001"
10
+
11
+ return {
12
+ plugins: [react(), tailwindcss()],
13
+ resolve: {
14
+ alias: {
15
+ "@": path.resolve(__dirname, "./src"),
16
+ "@scaffold/system/client": path.resolve(__dirname, "../system/dist/client/index.ts"),
17
+ "@scaffold/core": path.resolve(__dirname, "../core/src/index.ts"),
18
+ },
19
+ },
20
+ server: {
21
+ port: 4200,
22
+ proxy: {
23
+ "/api": {
24
+ target: proxyTarget,
25
+ changeOrigin: true,
26
+ // rewrite: (path) => path.replace(/^\/api/, ''),
27
+ },
28
+ },
29
+ },
30
+ }
31
+ })
@@ -0,0 +1,5 @@
1
+ # copy this file to .env.dev/.env.stage/.env.prod and fill secure values
2
+ NODE_ENV=development
3
+ APP_ENV=dev
4
+ VITE_API_URL=http://localhost:3001
5
+ VITE_APP_LOGIN=/login
@@ -4,8 +4,14 @@
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
7
- "dev": "vite --port 3002",
8
- "build": "tsc --noEmit && vite build",
7
+ "dev": "vite --mode dev --port 3002",
8
+ "dev:dev": "vite --mode dev --port 3002",
9
+ "dev:stage": "vite --mode stage --port 3002",
10
+ "dev:prod": "vite --mode prod --port 3002",
11
+ "build": "pnpm build:prod",
12
+ "build:dev": "tsc --noEmit && vite build --mode dev",
13
+ "build:stage": "tsc --noEmit && vite build --mode stage",
14
+ "build:prod": "tsc --noEmit && vite build --mode prod",
9
15
  "preview": "vite preview",
10
16
  "lint": "eslint src"
11
17
  },
@@ -9,8 +9,9 @@ const root = createRoot(container);
9
9
 
10
10
  // Mobile 默认不配置 env 时,约定后端 API 在 scaffold/api 的默认端口 3001
11
11
  const apiBaseUrl = (import.meta.env.VITE_API_URL as string | undefined) ?? 'http://localhost:3001';
12
+ const loginUrl = (import.meta.env.VITE_APP_LOGIN as string | undefined) ?? '/login';
12
13
 
13
- appAuth.setup(createBackendAuthProvider(apiBaseUrl, { loginUrl: '/login' })).then(() => {
14
+ appAuth.setup(createBackendAuthProvider(apiBaseUrl, { loginUrl })).then(() => {
14
15
  root.render(
15
16
  <StrictMode>
16
17
  <App />
@@ -1,155 +0,0 @@
1
- import type { AppConfig } from '@ai-partner-x/aiko-boot';
2
-
3
- export default {
4
- server: {
5
- port: Number(process.env.PORT) || 3001,
6
- servlet: {
7
- contextPath: '/api',
8
- },
9
- shutdown: 'graceful',
10
- },
11
- logging: {
12
- // 日志级别:error, warn, info, http, verbose, debug, silly
13
- level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
14
-
15
- // 输出格式:json, cli, pretty, simple
16
- format: process.env.NODE_ENV === 'production' ? 'json' : 'cli',
17
-
18
- // 是否启用颜色
19
- colorize: process.env.NODE_ENV !== 'production',
20
-
21
- // 是否显示时间戳
22
- timestamp: true,
23
-
24
- // 默认元数据
25
- defaultMeta: {
26
- service: 'scaffold-api',
27
- version: '0.1.0',
28
- env: process.env.NODE_ENV || 'development',
29
- },
30
-
31
- // 传输配置
32
- transports: [
33
- {
34
- type: 'console',
35
- enabled: true,
36
- level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
37
- format: process.env.NODE_ENV === 'production' ? 'json' : 'cli',
38
- colorize: process.env.NODE_ENV !== 'production',
39
- },
40
- {
41
- type: 'file',
42
- enabled: true,
43
- filename: './logs/log-{date}.log',
44
- level: 'info',
45
- maxSize: '10m',
46
- maxFiles: 7,
47
- format: 'json',
48
- rotateByDate: true,
49
- retentionDays: 30,
50
- maxFileSize: 100,
51
- },
52
- {
53
- type: 'file',
54
- enabled: true,
55
- filename: './logs/error-{date}.log',
56
- level: 'error',
57
- maxSize: '10m',
58
- maxFiles: 30,
59
- format: 'json',
60
- rotateByDate: true,
61
- retentionDays: 30,
62
- maxFileSize: 100,
63
- },
64
- ],
65
- },
66
-
67
- database: {
68
- type: 'sqlite',
69
- filename: './data/app.db',
70
- },
71
- validation: {
72
- enabled: true,
73
- failFast: false,
74
- },
75
- security: {
76
- enabled: true,
77
- jwt: {
78
- secret:
79
- process.env.JWT_SECRET ||
80
- (() => {
81
- console.warn('⚠️ Using default JWT secret in development!');
82
- return 'dev-only-secret';
83
- })(),
84
- expiresIn: '1h',
85
- },
86
- session: {
87
- secret:
88
- process.env.SESSION_SECRET ||
89
- (() => {
90
- console.warn('⚠️ Using default session secret in development!');
91
- return 'dev-only-session-secret';
92
- })(),
93
- maxAge: 86400000,
94
- resave: false,
95
- saveUninitialized: false,
96
- cookie: {
97
- secure: process.env.NODE_ENV === 'production',
98
- httpOnly: true,
99
- sameSite: 'strict',
100
- maxAge: 86400000,
101
- },
102
- },
103
- oauth2: {
104
- github: {
105
- clientID:
106
- process.env.GITHUB_CLIENT_ID ||
107
- (() => {
108
- console.warn('⚠️ Using default GitHub client ID in development!');
109
- return 'your-github-client-id';
110
- })(),
111
- clientSecret:
112
- process.env.GITHUB_CLIENT_SECRET ||
113
- (() => {
114
- console.warn('⚠️ Using default GitHub client secret in development!');
115
- return 'your-github-client-secret';
116
- })(),
117
- callbackURL:
118
- process.env.GITHUB_CALLBACK_URL ||
119
- 'http://localhost:3001/api/auth/github/callback',
120
- },
121
- google: {
122
- clientID:
123
- process.env.GOOGLE_CLIENT_ID ||
124
- (() => {
125
- console.warn('⚠️ Using default Google client ID in development!');
126
- return 'your-google-client-id';
127
- })(),
128
- clientSecret:
129
- process.env.GOOGLE_CLIENT_SECRET ||
130
- (() => {
131
- console.warn('⚠️ Using default Google client secret in development!');
132
- return 'your-google-client-secret';
133
- })(),
134
- callbackURL:
135
- process.env.GOOGLE_CALLBACK_URL ||
136
- 'http://localhost:3001/api/auth/google/callback',
137
- },
138
- },
139
- publicPaths: [
140
- '/api/auth/login',
141
- '/api/auth/register',
142
- '/api/auth/github',
143
- '/api/auth/google',
144
- '/api/auth/github/callback',
145
- '/api/auth/google/callback',
146
- '/api/public',
147
- ],
148
- cors: {
149
- enabled: true,
150
- origin: process.env.CORS_ORIGIN || '*',
151
- credentials: true,
152
- },
153
- },
154
- } satisfies AppConfig;
155
-
@@ -1,160 +0,0 @@
1
- import 'reflect-metadata';
2
- import {
3
- RestController,
4
- PostMapping,
5
- GetMapping,
6
- RequestBody,
7
- RequestParam,
8
- QueryParam,
9
- } from '@ai-partner-x/aiko-boot-starter-web';
10
- import { Autowired } from '@ai-partner-x/aiko-boot';
11
- import { Public } from '@ai-partner-x/aiko-boot-starter-security';
12
- import { AuthService } from '../service/auth.service.js';
13
- import type {
14
- LoginDto,
15
- LoginResultDto,
16
- RefreshTokenDto,
17
- } from '../dto/auth.dto.js';
18
- import axios from 'axios';
19
-
20
- @RestController({ path: '/auth' })
21
- export class AuthController {
22
- @Autowired()
23
- private authService!: AuthService;
24
-
25
- @PostMapping('/login')
26
- @Public()
27
- async login(@RequestBody() dto: LoginDto): Promise<LoginResultDto> {
28
- return this.authService.login(dto);
29
- }
30
-
31
- @PostMapping('/refresh')
32
- @Public()
33
- async refresh(
34
- @RequestBody() dto: RefreshTokenDto,
35
- ): Promise<{ accessToken: string }> {
36
- return this.authService.refreshToken(dto.refreshToken);
37
- }
38
-
39
- @GetMapping('/info')
40
- async getUserInfo(
41
- @RequestParam('_uid') userId: string,
42
- ): Promise<LoginResultDto['userInfo']> {
43
- return this.authService.getUserInfo(Number(userId));
44
- }
45
-
46
- @PostMapping('/logout')
47
- async logout(@RequestBody() body: { token: string }): Promise<any> {
48
- return this.authService.logout(body.token);
49
- }
50
-
51
- @GetMapping('/github')
52
- @Public()
53
- async githubAuth(@QueryParam('redirect') redirect?: string): Promise<any> {
54
- const clientId = process.env.GITHUB_CLIENT_ID;
55
- const redirectUri = process.env.GITHUB_CALLBACK_URL;
56
- const scope = 'user:email';
57
-
58
- const authUrl = `https://github.com/login/oauth/authorize?client_id=${clientId}&redirect_uri=${encodeURIComponent(
59
- redirectUri!,
60
- )}&scope=${scope}${
61
- redirect ? `&redirect_uri=${encodeURIComponent(redirect)}` : ''
62
- }`;
63
-
64
- return { authUrl };
65
- }
66
-
67
- @GetMapping('/github/callback')
68
- @Public()
69
- async githubCallback(@QueryParam('code') code: string): Promise<any> {
70
- try {
71
- const clientId = process.env.GITHUB_CLIENT_ID;
72
- const clientSecret = process.env.GITHUB_CLIENT_SECRET;
73
- const redirectUri = process.env.GITHUB_CALLBACK_URL;
74
-
75
- const tokenResponse = await axios.post(
76
- 'https://github.com/login/oauth/access_token',
77
- {
78
- client_id: clientId,
79
- client_secret: clientSecret,
80
- code: code,
81
- redirect_uri: redirectUri,
82
- },
83
- {
84
- headers: { Accept: 'application/json' },
85
- },
86
- );
87
-
88
- const tokens = tokenResponse.data;
89
-
90
- const userResponse = await axios.get('https://api.github.com/user', {
91
- headers: { Authorization: `Bearer ${tokens.access_token}` },
92
- });
93
-
94
- const profile = {
95
- ...userResponse.data,
96
- provider: 'github',
97
- };
98
-
99
- return this.authService.handleOAuthCallback(profile, tokens);
100
- } catch (error) {
101
- throw new Error('GitHub OAuth token exchange failed');
102
- }
103
- }
104
-
105
- @GetMapping('/google')
106
- @Public()
107
- async googleAuth(@QueryParam('redirect') redirect?: string): Promise<any> {
108
- const clientId = process.env.GOOGLE_CLIENT_ID;
109
- const redirectUri = process.env.GOOGLE_CALLBACK_URL;
110
- const scope = 'profile email';
111
-
112
- const authUrl = `https://accounts.google.com/o/oauth2/v2/auth?client_id=${clientId}&redirect_uri=${encodeURIComponent(
113
- redirectUri!,
114
- )}&scope=${encodeURIComponent(scope)}&response_type=code${
115
- redirect ? `&redirect_uri=${encodeURIComponent(redirect)}` : ''
116
- }`;
117
-
118
- return { authUrl };
119
- }
120
-
121
- @GetMapping('/google/callback')
122
- @Public()
123
- async googleCallback(@QueryParam('code') code: string): Promise<any> {
124
- try {
125
- const clientId = process.env.GOOGLE_CLIENT_ID;
126
- const clientSecret = process.env.GOOGLE_CLIENT_SECRET;
127
- const redirectUri = process.env.GOOGLE_CALLBACK_URL;
128
-
129
- const tokenResponse = await axios.post(
130
- 'https://oauth2.googleapis.com/token',
131
- {
132
- client_id: clientId,
133
- client_secret: clientSecret,
134
- code: code,
135
- redirect_uri: redirectUri,
136
- grant_type: 'authorization_code',
137
- },
138
- );
139
-
140
- const tokens = tokenResponse.data;
141
-
142
- const userResponse = await axios.get(
143
- 'https://www.googleapis.com/oauth2/v2/userinfo',
144
- {
145
- headers: { Authorization: `Bearer ${tokens.access_token}` },
146
- },
147
- );
148
-
149
- const profile = {
150
- ...userResponse.data,
151
- provider: 'google',
152
- };
153
-
154
- return this.authService.handleOAuthCallback(profile, tokens);
155
- } catch (error) {
156
- throw new Error('Google OAuth token exchange failed');
157
- }
158
- }
159
- }
160
-