@gaias/basenode 1.0.13 → 1.0.40

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 (399) hide show
  1. package/CLAUDE.md +8 -5
  2. package/README.md +574 -39
  3. package/cfg/apisix.yml +1 -0
  4. package/cfg/application.development.yml +1 -0
  5. package/cfg/application.yml +5 -0
  6. package/cfg/database.yml +7 -0
  7. package/cfg/logger.yml +5 -0
  8. package/cfg/openapiCfg.yml +1 -0
  9. package/cfg/rabbitmq.yml +1 -0
  10. package/cfg/redis.yml +6 -0
  11. package/dist/example/app.d.ts +2 -0
  12. package/dist/example/app.d.ts.map +1 -0
  13. package/dist/example/app.js +57 -0
  14. package/dist/example/app.js.map +1 -0
  15. package/dist/example/controllers/UserController.d.ts +42 -0
  16. package/dist/example/controllers/UserController.d.ts.map +1 -0
  17. package/dist/example/controllers/UserController.js +243 -0
  18. package/dist/example/controllers/UserController.js.map +1 -0
  19. package/dist/example/controllers/index.d.ts +2 -0
  20. package/dist/example/controllers/index.d.ts.map +1 -0
  21. package/dist/example/controllers/index.js +18 -0
  22. package/dist/example/controllers/index.js.map +1 -0
  23. package/dist/example/entities/CasbinRule.d.ts +12 -0
  24. package/dist/example/entities/CasbinRule.d.ts.map +1 -0
  25. package/dist/example/entities/CasbinRule.js +56 -0
  26. package/dist/example/entities/CasbinRule.js.map +1 -0
  27. package/dist/example/entities/Role.d.ts +11 -0
  28. package/dist/example/entities/Role.d.ts.map +1 -0
  29. package/dist/example/entities/Role.js +56 -0
  30. package/dist/example/entities/Role.js.map +1 -0
  31. package/dist/example/entities/User.d.ts +18 -0
  32. package/dist/example/entities/User.d.ts.map +1 -0
  33. package/dist/example/entities/User.js +91 -0
  34. package/dist/example/entities/User.js.map +1 -0
  35. package/dist/example/entities/UserRole.d.ts +7 -0
  36. package/dist/example/entities/UserRole.d.ts.map +1 -0
  37. package/dist/example/entities/UserRole.js +36 -0
  38. package/dist/example/entities/UserRole.js.map +1 -0
  39. package/dist/example/entities/index.d.ts +5 -0
  40. package/dist/example/entities/index.d.ts.map +1 -0
  41. package/dist/example/entities/index.js +21 -0
  42. package/dist/example/entities/index.js.map +1 -0
  43. package/dist/example/events/TestEventHandler.d.ts +6 -0
  44. package/dist/example/events/TestEventHandler.d.ts.map +1 -0
  45. package/dist/example/events/TestEventHandler.js +36 -0
  46. package/dist/example/events/TestEventHandler.js.map +1 -0
  47. package/dist/example/events/index.d.ts +2 -0
  48. package/dist/example/events/index.d.ts.map +1 -0
  49. package/dist/example/events/index.js +18 -0
  50. package/dist/example/events/index.js.map +1 -0
  51. package/dist/example/repositories/CasbinRuleRepo.d.ts +6 -0
  52. package/dist/example/repositories/CasbinRuleRepo.d.ts.map +1 -0
  53. package/dist/example/repositories/CasbinRuleRepo.js +30 -0
  54. package/dist/example/repositories/CasbinRuleRepo.js.map +1 -0
  55. package/dist/example/repositories/RoleRepo.d.ts +11 -0
  56. package/dist/example/repositories/RoleRepo.d.ts.map +1 -0
  57. package/dist/example/repositories/RoleRepo.js +52 -0
  58. package/dist/example/repositories/RoleRepo.js.map +1 -0
  59. package/dist/example/repositories/UserRepo.d.ts +6 -0
  60. package/dist/example/repositories/UserRepo.d.ts.map +1 -0
  61. package/dist/example/repositories/UserRepo.js +30 -0
  62. package/dist/example/repositories/UserRepo.js.map +1 -0
  63. package/dist/example/repositories/UserRoleRepo.d.ts +6 -0
  64. package/dist/example/repositories/UserRoleRepo.d.ts.map +1 -0
  65. package/dist/example/repositories/UserRoleRepo.js +30 -0
  66. package/dist/example/repositories/UserRoleRepo.js.map +1 -0
  67. package/dist/example/repositories/index.d.ts +5 -0
  68. package/dist/example/repositories/index.d.ts.map +1 -0
  69. package/dist/example/repositories/index.js +21 -0
  70. package/dist/example/repositories/index.js.map +1 -0
  71. package/dist/example/services/UserService.d.ts +24 -0
  72. package/dist/example/services/UserService.d.ts.map +1 -0
  73. package/dist/example/services/UserService.js +114 -0
  74. package/dist/example/services/UserService.js.map +1 -0
  75. package/dist/example/utils/MyUtils.d.ts +17 -0
  76. package/dist/example/utils/MyUtils.d.ts.map +1 -0
  77. package/dist/example/utils/MyUtils.js +142 -0
  78. package/dist/example/utils/MyUtils.js.map +1 -0
  79. package/dist/example/utils/index.d.ts +2 -0
  80. package/dist/example/utils/index.d.ts.map +1 -0
  81. package/dist/example/utils/index.js +18 -0
  82. package/dist/example/utils/index.js.map +1 -0
  83. package/dist/example/vo/Roles.d.ts +37 -0
  84. package/dist/example/vo/Roles.d.ts.map +1 -0
  85. package/dist/example/vo/Roles.js +167 -0
  86. package/dist/example/vo/Roles.js.map +1 -0
  87. package/dist/example/vo/UserVo.d.ts +16 -0
  88. package/dist/example/vo/UserVo.d.ts.map +1 -0
  89. package/dist/example/vo/UserVo.js +68 -0
  90. package/dist/example/vo/UserVo.js.map +1 -0
  91. package/dist/example/vo/index.d.ts +3 -0
  92. package/dist/example/vo/index.d.ts.map +1 -0
  93. package/dist/example/vo/index.js +19 -0
  94. package/dist/example/vo/index.js.map +1 -0
  95. package/dist/example/wsControllers/EmployeesWSController.d.ts +8 -0
  96. package/dist/example/wsControllers/EmployeesWSController.d.ts.map +1 -0
  97. package/dist/example/wsControllers/EmployeesWSController.js +56 -0
  98. package/dist/example/wsControllers/EmployeesWSController.js.map +1 -0
  99. package/dist/example/wsControllers/index.d.ts +2 -0
  100. package/dist/example/wsControllers/index.d.ts.map +1 -0
  101. package/dist/example/wsControllers/index.js +18 -0
  102. package/dist/example/wsControllers/index.js.map +1 -0
  103. package/dist/gen_db.json +7 -0
  104. package/dist/tools/DBSchemaGenerator.d.ts +2 -0
  105. package/dist/tools/DBSchemaGenerator.d.ts.map +1 -0
  106. package/dist/tools/DBSchemaGenerator.js +104 -0
  107. package/dist/tools/DBSchemaGenerator.js.map +1 -0
  108. package/dist/tools/RepositoryGenerator.d.ts +2 -0
  109. package/dist/tools/RepositoryGenerator.d.ts.map +1 -0
  110. package/dist/tools/RepositoryGenerator.js +121 -0
  111. package/dist/tools/RepositoryGenerator.js.map +1 -0
  112. package/package.json +34 -9
  113. package/tools/repository.mst +13 -0
  114. package/README.adoc +0 -44
  115. package/SECURITY.md +0 -296
  116. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  117. /package/dist/{index.d.ts.map → src/index.d.ts.map} +0 -0
  118. /package/dist/{index.js → src/index.js} +0 -0
  119. /package/dist/{index.js.map → src/index.js.map} +0 -0
  120. /package/dist/{libs → src/libs}/apisix/ApisixTemplate.d.ts +0 -0
  121. /package/dist/{libs → src/libs}/apisix/ApisixTemplate.d.ts.map +0 -0
  122. /package/dist/{libs → src/libs}/apisix/ApisixTemplate.js +0 -0
  123. /package/dist/{libs → src/libs}/apisix/ApisixTemplate.js.map +0 -0
  124. /package/dist/{libs → src/libs}/apisix/HttpPutter.d.ts +0 -0
  125. /package/dist/{libs → src/libs}/apisix/HttpPutter.d.ts.map +0 -0
  126. /package/dist/{libs → src/libs}/apisix/HttpPutter.js +0 -0
  127. /package/dist/{libs → src/libs}/apisix/HttpPutter.js.map +0 -0
  128. /package/dist/{libs → src/libs}/apisix/index.d.ts +0 -0
  129. /package/dist/{libs → src/libs}/apisix/index.d.ts.map +0 -0
  130. /package/dist/{libs → src/libs}/apisix/index.js +0 -0
  131. /package/dist/{libs → src/libs}/apisix/index.js.map +0 -0
  132. /package/dist/{libs → src/libs}/cache/CacheService.d.ts +0 -0
  133. /package/dist/{libs → src/libs}/cache/CacheService.d.ts.map +0 -0
  134. /package/dist/{libs → src/libs}/cache/CacheService.js +0 -0
  135. /package/dist/{libs → src/libs}/cache/CacheService.js.map +0 -0
  136. /package/dist/{libs → src/libs}/cache/Timer.d.ts +0 -0
  137. /package/dist/{libs → src/libs}/cache/Timer.d.ts.map +0 -0
  138. /package/dist/{libs → src/libs}/cache/Timer.js +0 -0
  139. /package/dist/{libs → src/libs}/cache/Timer.js.map +0 -0
  140. /package/dist/{libs → src/libs}/cache/index.d.ts +0 -0
  141. /package/dist/{libs → src/libs}/cache/index.d.ts.map +0 -0
  142. /package/dist/{libs → src/libs}/cache/index.js +0 -0
  143. /package/dist/{libs → src/libs}/cache/index.js.map +0 -0
  144. /package/dist/{libs → src/libs}/configure/ApplicationConfig.d.ts +0 -0
  145. /package/dist/{libs → src/libs}/configure/ApplicationConfig.d.ts.map +0 -0
  146. /package/dist/{libs → src/libs}/configure/ApplicationConfig.js +0 -0
  147. /package/dist/{libs → src/libs}/configure/ApplicationConfig.js.map +0 -0
  148. /package/dist/{libs → src/libs}/configure/ConfigManager.d.ts +0 -0
  149. /package/dist/{libs → src/libs}/configure/ConfigManager.d.ts.map +0 -0
  150. /package/dist/{libs → src/libs}/configure/ConfigManager.js +0 -0
  151. /package/dist/{libs → src/libs}/configure/ConfigManager.js.map +0 -0
  152. /package/dist/{libs → src/libs}/configure/index.d.ts +0 -0
  153. /package/dist/{libs → src/libs}/configure/index.d.ts.map +0 -0
  154. /package/dist/{libs → src/libs}/configure/index.js +0 -0
  155. /package/dist/{libs → src/libs}/configure/index.js.map +0 -0
  156. /package/dist/{libs → src/libs}/deps/Libs.d.ts +0 -0
  157. /package/dist/{libs → src/libs}/deps/Libs.d.ts.map +0 -0
  158. /package/dist/{libs → src/libs}/deps/Libs.js +0 -0
  159. /package/dist/{libs → src/libs}/deps/Libs.js.map +0 -0
  160. /package/dist/{libs → src/libs}/deps/index.d.ts +0 -0
  161. /package/dist/{libs → src/libs}/deps/index.d.ts.map +0 -0
  162. /package/dist/{libs → src/libs}/deps/index.js +0 -0
  163. /package/dist/{libs → src/libs}/deps/index.js.map +0 -0
  164. /package/dist/{libs → src/libs}/error/BizError.d.ts +0 -0
  165. /package/dist/{libs → src/libs}/error/BizError.d.ts.map +0 -0
  166. /package/dist/{libs → src/libs}/error/BizError.js +0 -0
  167. /package/dist/{libs → src/libs}/error/BizError.js.map +0 -0
  168. /package/dist/{libs → src/libs}/error/index.d.ts +0 -0
  169. /package/dist/{libs → src/libs}/error/index.d.ts.map +0 -0
  170. /package/dist/{libs → src/libs}/error/index.js +0 -0
  171. /package/dist/{libs → src/libs}/error/index.js.map +0 -0
  172. /package/dist/{libs → src/libs}/gateway/ApiGatewayLoader.d.ts +0 -0
  173. /package/dist/{libs → src/libs}/gateway/ApiGatewayLoader.d.ts.map +0 -0
  174. /package/dist/{libs → src/libs}/gateway/ApiGatewayLoader.js +0 -0
  175. /package/dist/{libs → src/libs}/gateway/ApiGatewayLoader.js.map +0 -0
  176. /package/dist/{libs → src/libs}/gateway/index.d.ts +0 -0
  177. /package/dist/{libs → src/libs}/gateway/index.d.ts.map +0 -0
  178. /package/dist/{libs → src/libs}/gateway/index.js +0 -0
  179. /package/dist/{libs → src/libs}/gateway/index.js.map +0 -0
  180. /package/dist/{libs → src/libs}/generator/IdGenerator.d.ts +0 -0
  181. /package/dist/{libs → src/libs}/generator/IdGenerator.d.ts.map +0 -0
  182. /package/dist/{libs → src/libs}/generator/IdGenerator.js +0 -0
  183. /package/dist/{libs → src/libs}/generator/IdGenerator.js.map +0 -0
  184. /package/dist/{libs → src/libs}/generator/IndexCreator.d.ts +0 -0
  185. /package/dist/{libs → src/libs}/generator/IndexCreator.d.ts.map +0 -0
  186. /package/dist/{libs → src/libs}/generator/IndexCreator.js +0 -0
  187. /package/dist/{libs → src/libs}/generator/IndexCreator.js.map +0 -0
  188. /package/dist/{libs → src/libs}/generator/index.d.ts +0 -0
  189. /package/dist/{libs → src/libs}/generator/index.d.ts.map +0 -0
  190. /package/dist/{libs → src/libs}/generator/index.js +0 -0
  191. /package/dist/{libs → src/libs}/generator/index.js.map +0 -0
  192. /package/dist/{libs → src/libs}/healthcheck/HealthCheckController.d.ts +0 -0
  193. /package/dist/{libs → src/libs}/healthcheck/HealthCheckController.d.ts.map +0 -0
  194. /package/dist/{libs → src/libs}/healthcheck/HealthCheckController.js +0 -0
  195. /package/dist/{libs → src/libs}/healthcheck/HealthCheckController.js.map +0 -0
  196. /package/dist/{libs → src/libs}/healthcheck/index.d.ts +0 -0
  197. /package/dist/{libs → src/libs}/healthcheck/index.d.ts.map +0 -0
  198. /package/dist/{libs → src/libs}/healthcheck/index.js +0 -0
  199. /package/dist/{libs → src/libs}/healthcheck/index.js.map +0 -0
  200. /package/dist/{libs → src/libs}/index.d.ts +0 -0
  201. /package/dist/{libs → src/libs}/index.d.ts.map +0 -0
  202. /package/dist/{libs → src/libs}/index.js +0 -0
  203. /package/dist/{libs → src/libs}/index.js.map +0 -0
  204. /package/dist/{libs → src/libs}/koa/KoaControllerReturnHandler.d.ts +0 -0
  205. /package/dist/{libs → src/libs}/koa/KoaControllerReturnHandler.d.ts.map +0 -0
  206. /package/dist/{libs → src/libs}/koa/KoaControllerReturnHandler.js +0 -0
  207. /package/dist/{libs → src/libs}/koa/KoaControllerReturnHandler.js.map +0 -0
  208. /package/dist/{libs → src/libs}/koa/KoaLoader.d.ts +0 -0
  209. /package/dist/{libs → src/libs}/koa/KoaLoader.d.ts.map +0 -0
  210. /package/dist/{libs → src/libs}/koa/KoaLoader.js +0 -0
  211. /package/dist/{libs → src/libs}/koa/KoaLoader.js.map +0 -0
  212. /package/dist/{libs → src/libs}/koa/KoaLoaderOption.d.ts +0 -0
  213. /package/dist/{libs → src/libs}/koa/KoaLoaderOption.d.ts.map +0 -0
  214. /package/dist/{libs → src/libs}/koa/KoaLoaderOption.js +0 -0
  215. /package/dist/{libs → src/libs}/koa/KoaLoaderOption.js.map +0 -0
  216. /package/dist/{libs → src/libs}/koa/index.d.ts +0 -0
  217. /package/dist/{libs → src/libs}/koa/index.d.ts.map +0 -0
  218. /package/dist/{libs → src/libs}/koa/index.js +0 -0
  219. /package/dist/{libs → src/libs}/koa/index.js.map +0 -0
  220. /package/dist/{libs → src/libs}/koa/setupRestfulControllers.d.ts +0 -0
  221. /package/dist/{libs → src/libs}/koa/setupRestfulControllers.d.ts.map +0 -0
  222. /package/dist/{libs → src/libs}/koa/setupRestfulControllers.js +0 -0
  223. /package/dist/{libs → src/libs}/koa/setupRestfulControllers.js.map +0 -0
  224. /package/dist/{libs → src/libs}/koa/setupSocketControllers.d.ts +0 -0
  225. /package/dist/{libs → src/libs}/koa/setupSocketControllers.d.ts.map +0 -0
  226. /package/dist/{libs → src/libs}/koa/setupSocketControllers.js +0 -0
  227. /package/dist/{libs → src/libs}/koa/setupSocketControllers.js.map +0 -0
  228. /package/dist/{libs → src/libs}/leader/Leader.d.ts +0 -0
  229. /package/dist/{libs → src/libs}/leader/Leader.d.ts.map +0 -0
  230. /package/dist/{libs → src/libs}/leader/Leader.js +0 -0
  231. /package/dist/{libs → src/libs}/leader/Leader.js.map +0 -0
  232. /package/dist/{libs → src/libs}/leader/LeaderOptions.d.ts +0 -0
  233. /package/dist/{libs → src/libs}/leader/LeaderOptions.d.ts.map +0 -0
  234. /package/dist/{libs → src/libs}/leader/LeaderOptions.js +0 -0
  235. /package/dist/{libs → src/libs}/leader/LeaderOptions.js.map +0 -0
  236. /package/dist/{libs → src/libs}/leader/index.d.ts +0 -0
  237. /package/dist/{libs → src/libs}/leader/index.d.ts.map +0 -0
  238. /package/dist/{libs → src/libs}/leader/index.js +0 -0
  239. /package/dist/{libs → src/libs}/leader/index.js.map +0 -0
  240. /package/dist/{libs → src/libs}/logger/Logger.d.ts +0 -0
  241. /package/dist/{libs → src/libs}/logger/Logger.d.ts.map +0 -0
  242. /package/dist/{libs → src/libs}/logger/Logger.js +0 -0
  243. /package/dist/{libs → src/libs}/logger/Logger.js.map +0 -0
  244. /package/dist/{libs → src/libs}/logger/index.d.ts +0 -0
  245. /package/dist/{libs → src/libs}/logger/index.d.ts.map +0 -0
  246. /package/dist/{libs → src/libs}/logger/index.js +0 -0
  247. /package/dist/{libs → src/libs}/logger/index.js.map +0 -0
  248. /package/dist/{libs → src/libs}/network/getLocalIpAddress.d.ts +0 -0
  249. /package/dist/{libs → src/libs}/network/getLocalIpAddress.d.ts.map +0 -0
  250. /package/dist/{libs → src/libs}/network/getLocalIpAddress.js +0 -0
  251. /package/dist/{libs → src/libs}/network/getLocalIpAddress.js.map +0 -0
  252. /package/dist/{libs → src/libs}/network/index.d.ts +0 -0
  253. /package/dist/{libs → src/libs}/network/index.d.ts.map +0 -0
  254. /package/dist/{libs → src/libs}/network/index.js +0 -0
  255. /package/dist/{libs → src/libs}/network/index.js.map +0 -0
  256. /package/dist/{libs → src/libs}/orm/BaseRepository.d.ts +0 -0
  257. /package/dist/{libs → src/libs}/orm/BaseRepository.d.ts.map +0 -0
  258. /package/dist/{libs → src/libs}/orm/BaseRepository.js +0 -0
  259. /package/dist/{libs → src/libs}/orm/BaseRepository.js.map +0 -0
  260. /package/dist/{libs → src/libs}/orm/TypeormLoader.d.ts +0 -0
  261. /package/dist/{libs → src/libs}/orm/TypeormLoader.d.ts.map +0 -0
  262. /package/dist/{libs → src/libs}/orm/TypeormLoader.js +0 -0
  263. /package/dist/{libs → src/libs}/orm/TypeormLoader.js.map +0 -0
  264. /package/dist/{libs → src/libs}/orm/index.d.ts +0 -0
  265. /package/dist/{libs → src/libs}/orm/index.d.ts.map +0 -0
  266. /package/dist/{libs → src/libs}/orm/index.js +0 -0
  267. /package/dist/{libs → src/libs}/orm/index.js.map +0 -0
  268. /package/dist/{libs → src/libs}/pagination/Pagination.d.ts +0 -0
  269. /package/dist/{libs → src/libs}/pagination/Pagination.d.ts.map +0 -0
  270. /package/dist/{libs → src/libs}/pagination/Pagination.js +0 -0
  271. /package/dist/{libs → src/libs}/pagination/Pagination.js.map +0 -0
  272. /package/dist/{libs → src/libs}/pagination/index.d.ts +0 -0
  273. /package/dist/{libs → src/libs}/pagination/index.d.ts.map +0 -0
  274. /package/dist/{libs → src/libs}/pagination/index.js +0 -0
  275. /package/dist/{libs → src/libs}/pagination/index.js.map +0 -0
  276. /package/dist/{libs → src/libs}/rabbitmq/DistributedEvents.d.ts +0 -0
  277. /package/dist/{libs → src/libs}/rabbitmq/DistributedEvents.d.ts.map +0 -0
  278. /package/dist/{libs → src/libs}/rabbitmq/DistributedEvents.js +0 -0
  279. /package/dist/{libs → src/libs}/rabbitmq/DistributedEvents.js.map +0 -0
  280. /package/dist/{libs → src/libs}/rabbitmq/DistributedEventsLoader.d.ts +0 -0
  281. /package/dist/{libs → src/libs}/rabbitmq/DistributedEventsLoader.d.ts.map +0 -0
  282. /package/dist/{libs → src/libs}/rabbitmq/DistributedEventsLoader.js +0 -0
  283. /package/dist/{libs → src/libs}/rabbitmq/DistributedEventsLoader.js.map +0 -0
  284. /package/dist/{libs → src/libs}/rabbitmq/EventsManager.d.ts +0 -0
  285. /package/dist/{libs → src/libs}/rabbitmq/EventsManager.d.ts.map +0 -0
  286. /package/dist/{libs → src/libs}/rabbitmq/EventsManager.js +0 -0
  287. /package/dist/{libs → src/libs}/rabbitmq/EventsManager.js.map +0 -0
  288. /package/dist/{libs → src/libs}/rabbitmq/index.d.ts +0 -0
  289. /package/dist/{libs → src/libs}/rabbitmq/index.d.ts.map +0 -0
  290. /package/dist/{libs → src/libs}/rabbitmq/index.js +0 -0
  291. /package/dist/{libs → src/libs}/rabbitmq/index.js.map +0 -0
  292. /package/dist/{libs → src/libs}/redis/RedisClient.d.ts +0 -0
  293. /package/dist/{libs → src/libs}/redis/RedisClient.d.ts.map +0 -0
  294. /package/dist/{libs → src/libs}/redis/RedisClient.js +0 -0
  295. /package/dist/{libs → src/libs}/redis/RedisClient.js.map +0 -0
  296. /package/dist/{libs → src/libs}/redis/RedisLoader.d.ts +0 -0
  297. /package/dist/{libs → src/libs}/redis/RedisLoader.d.ts.map +0 -0
  298. /package/dist/{libs → src/libs}/redis/RedisLoader.js +0 -0
  299. /package/dist/{libs → src/libs}/redis/RedisLoader.js.map +0 -0
  300. /package/dist/{libs → src/libs}/redis/index.d.ts +0 -0
  301. /package/dist/{libs → src/libs}/redis/index.d.ts.map +0 -0
  302. /package/dist/{libs → src/libs}/redis/index.js +0 -0
  303. /package/dist/{libs → src/libs}/redis/index.js.map +0 -0
  304. /package/dist/{libs → src/libs}/register/ApiRegisterController.d.ts +0 -0
  305. /package/dist/{libs → src/libs}/register/ApiRegisterController.d.ts.map +0 -0
  306. /package/dist/{libs → src/libs}/register/ApiRegisterController.js +0 -0
  307. /package/dist/{libs → src/libs}/register/ApiRegisterController.js.map +0 -0
  308. /package/dist/{libs → src/libs}/register/Converter.d.ts +0 -0
  309. /package/dist/{libs → src/libs}/register/Converter.d.ts.map +0 -0
  310. /package/dist/{libs → src/libs}/register/Converter.js +0 -0
  311. /package/dist/{libs → src/libs}/register/Converter.js.map +0 -0
  312. /package/dist/{libs → src/libs}/register/HttpMethods.d.ts +0 -0
  313. /package/dist/{libs → src/libs}/register/HttpMethods.d.ts.map +0 -0
  314. /package/dist/{libs → src/libs}/register/HttpMethods.js +0 -0
  315. /package/dist/{libs → src/libs}/register/HttpMethods.js.map +0 -0
  316. /package/dist/{libs → src/libs}/register/ResRegTypes.d.ts +0 -0
  317. /package/dist/{libs → src/libs}/register/ResRegTypes.d.ts.map +0 -0
  318. /package/dist/{libs → src/libs}/register/ResRegTypes.js +0 -0
  319. /package/dist/{libs → src/libs}/register/ResRegTypes.js.map +0 -0
  320. /package/dist/{libs → src/libs}/register/index.d.ts +0 -0
  321. /package/dist/{libs → src/libs}/register/index.d.ts.map +0 -0
  322. /package/dist/{libs → src/libs}/register/index.js +0 -0
  323. /package/dist/{libs → src/libs}/register/index.js.map +0 -0
  324. /package/dist/{libs → src/libs}/type/builder.d.ts +0 -0
  325. /package/dist/{libs → src/libs}/type/builder.d.ts.map +0 -0
  326. /package/dist/{libs → src/libs}/type/builder.js +0 -0
  327. /package/dist/{libs → src/libs}/type/builder.js.map +0 -0
  328. /package/dist/{libs → src/libs}/type/index.d.ts +0 -0
  329. /package/dist/{libs → src/libs}/type/index.d.ts.map +0 -0
  330. /package/dist/{libs → src/libs}/type/index.js +0 -0
  331. /package/dist/{libs → src/libs}/type/index.js.map +0 -0
  332. /package/dist/{libs → src/libs}/type/types.d.ts +0 -0
  333. /package/dist/{libs → src/libs}/type/types.d.ts.map +0 -0
  334. /package/dist/{libs → src/libs}/type/types.js +0 -0
  335. /package/dist/{libs → src/libs}/type/types.js.map +0 -0
  336. /package/dist/{libs → src/libs}/universal/UniversalController.d.ts +0 -0
  337. /package/dist/{libs → src/libs}/universal/UniversalController.d.ts.map +0 -0
  338. /package/dist/{libs → src/libs}/universal/UniversalController.js +0 -0
  339. /package/dist/{libs → src/libs}/universal/UniversalController.js.map +0 -0
  340. /package/dist/{libs → src/libs}/universal/UniversalService.d.ts +0 -0
  341. /package/dist/{libs → src/libs}/universal/UniversalService.d.ts.map +0 -0
  342. /package/dist/{libs → src/libs}/universal/UniversalService.js +0 -0
  343. /package/dist/{libs → src/libs}/universal/UniversalService.js.map +0 -0
  344. /package/dist/{libs → src/libs}/universal/index.d.ts +0 -0
  345. /package/dist/{libs → src/libs}/universal/index.d.ts.map +0 -0
  346. /package/dist/{libs → src/libs}/universal/index.js +0 -0
  347. /package/dist/{libs → src/libs}/universal/index.js.map +0 -0
  348. /package/dist/{libs → src/libs}/validator/SafeUrlValidator.d.ts +0 -0
  349. /package/dist/{libs → src/libs}/validator/SafeUrlValidator.d.ts.map +0 -0
  350. /package/dist/{libs → src/libs}/validator/SafeUrlValidator.js +0 -0
  351. /package/dist/{libs → src/libs}/validator/SafeUrlValidator.js.map +0 -0
  352. /package/dist/{libs → src/libs}/validator/ValidationHelper.d.ts +0 -0
  353. /package/dist/{libs → src/libs}/validator/ValidationHelper.d.ts.map +0 -0
  354. /package/dist/{libs → src/libs}/validator/ValidationHelper.js +0 -0
  355. /package/dist/{libs → src/libs}/validator/ValidationHelper.js.map +0 -0
  356. /package/dist/{libs → src/libs}/validator/i18nValidator.d.ts +0 -0
  357. /package/dist/{libs → src/libs}/validator/i18nValidator.d.ts.map +0 -0
  358. /package/dist/{libs → src/libs}/validator/i18nValidator.js +0 -0
  359. /package/dist/{libs → src/libs}/validator/i18nValidator.js.map +0 -0
  360. /package/dist/{libs → src/libs}/validator/index.d.ts +0 -0
  361. /package/dist/{libs → src/libs}/validator/index.d.ts.map +0 -0
  362. /package/dist/{libs → src/libs}/validator/index.js +0 -0
  363. /package/dist/{libs → src/libs}/validator/index.js.map +0 -0
  364. /package/dist/{server → src/server}/BootstrapLoader.d.ts +0 -0
  365. /package/dist/{server → src/server}/BootstrapLoader.d.ts.map +0 -0
  366. /package/dist/{server → src/server}/BootstrapLoader.js +0 -0
  367. /package/dist/{server → src/server}/BootstrapLoader.js.map +0 -0
  368. /package/dist/{server → src/server}/BootstrapOption.d.ts +0 -0
  369. /package/dist/{server → src/server}/BootstrapOption.d.ts.map +0 -0
  370. /package/dist/{server → src/server}/BootstrapOption.js +0 -0
  371. /package/dist/{server → src/server}/BootstrapOption.js.map +0 -0
  372. /package/dist/{server → src/server}/bootstrap.d.ts +0 -0
  373. /package/dist/{server → src/server}/bootstrap.d.ts.map +0 -0
  374. /package/dist/{server → src/server}/bootstrap.js +0 -0
  375. /package/dist/{server → src/server}/bootstrap.js.map +0 -0
  376. /package/dist/{server → src/server}/index.d.ts +0 -0
  377. /package/dist/{server → src/server}/index.d.ts.map +0 -0
  378. /package/dist/{server → src/server}/index.js +0 -0
  379. /package/dist/{server → src/server}/index.js.map +0 -0
  380. /package/dist/{utils → src/utils}/YamlUtil.d.ts +0 -0
  381. /package/dist/{utils → src/utils}/YamlUtil.d.ts.map +0 -0
  382. /package/dist/{utils → src/utils}/YamlUtil.js +0 -0
  383. /package/dist/{utils → src/utils}/YamlUtil.js.map +0 -0
  384. /package/dist/{utils → src/utils}/crypto.d.ts +0 -0
  385. /package/dist/{utils → src/utils}/crypto.d.ts.map +0 -0
  386. /package/dist/{utils → src/utils}/crypto.js +0 -0
  387. /package/dist/{utils → src/utils}/crypto.js.map +0 -0
  388. /package/dist/{utils → src/utils}/index.d.ts +0 -0
  389. /package/dist/{utils → src/utils}/index.d.ts.map +0 -0
  390. /package/dist/{utils → src/utils}/index.js +0 -0
  391. /package/dist/{utils → src/utils}/index.js.map +0 -0
  392. /package/dist/{utils → src/utils}/jwtUtil.d.ts +0 -0
  393. /package/dist/{utils → src/utils}/jwtUtil.d.ts.map +0 -0
  394. /package/dist/{utils → src/utils}/jwtUtil.js +0 -0
  395. /package/dist/{utils → src/utils}/jwtUtil.js.map +0 -0
  396. /package/dist/{utils → src/utils}/transformer.d.ts +0 -0
  397. /package/dist/{utils → src/utils}/transformer.d.ts.map +0 -0
  398. /package/dist/{utils → src/utils}/transformer.js +0 -0
  399. /package/dist/{utils → src/utils}/transformer.js.map +0 -0
package/CLAUDE.md CHANGED
@@ -33,7 +33,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
33
33
 
34
34
  ## Project Overview
35
35
 
36
- `@gaias/basenode` (v1.0.13) is a Node.js API development framework built on Koa, TypeORM, TypeDI, and routing-controllers. It provides a microframework architecture with built-in support for RESTful APIs, WebSocket controllers, database ORM, distributed events via RabbitMQ, Redis caching, and API gateway integration with APISIX.
36
+ `@gaias/basenode` (v1.0.24) is a Node.js API development framework built on Koa, TypeORM, TypeDI, and routing-controllers. It provides a microframework architecture with built-in support for RESTful APIs, WebSocket controllers, database ORM, distributed events via RabbitMQ, Redis caching, and API gateway integration with APISIX.
37
37
 
38
38
  **Requirements:**
39
39
  - Node.js: >=18.0.0
@@ -125,12 +125,14 @@ yarn security:summary
125
125
  # Output audit results in JSON format
126
126
  yarn security:json
127
127
 
128
- # Generate detailed security report
129
- yarn security:report
128
+ # Run enhanced security check with mitigation context (recommended)
129
+ yarn security:check
130
130
  ```
131
131
 
132
132
  **Security Policy:** See `SECURITY.md` for comprehensive security guidelines, vulnerability reporting procedures, and mitigation strategies. The project includes automated security auditing via `yarn audit` and custom reporting tools.
133
133
 
134
+ **Vulnerability Mitigation:** See `VULNERABILITY_MITIGATION.md` for detailed information about known vulnerabilities and their mitigation status. The enhanced security check (`yarn security:check`) provides contextual information about mitigated vulnerabilities and exit code 0 when all vulnerabilities are properly mitigated.
135
+
134
136
  ### Testing
135
137
  ```bash
136
138
  # Run all tests
@@ -752,6 +754,7 @@ The project uses Husky for git hooks:
752
754
 
753
755
  ---
754
756
 
755
- **Last Updated:** 2025-10-19
756
- **Framework Version:** 1.0.13
757
+ **Last Updated:** 2025-10-23
758
+ **Framework Version:** 1.0.24
759
+ **Build Number:** 251022024
757
760
  **Maintainer:** FOT Team
package/README.md CHANGED
@@ -1,55 +1,590 @@
1
- # basenode
1
+ # @gaias/basenode
2
2
 
3
+ [![Version](https://img.shields.io/badge/version-1.0.24-blue.svg)](https://github.com/gaias/basenode)
4
+ [![Node](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org)
5
+ [![License](https://img.shields.io/badge/license-UNLICENSED-red.svg)]()
3
6
 
4
- # README #
7
+ A comprehensive Node.js API development framework built on Koa, TypeORM, TypeDI, and routing-controllers. Provides a microframework architecture with built-in support for RESTful APIs, WebSocket controllers, database ORM, distributed events, Redis caching, and API gateway integration.
5
8
 
6
- ## Please follow the step by step to startup your fotapi project.
9
+ ## Features
7
10
 
8
- * Set fot npm private repository
9
- ++++
10
- Already set configs in project level .npmrc & .yarnrc.
11
- Change the npm password by setting env if you need to submit code.
12
- ++++
13
- [source, shell]
14
- ----
15
- echo -n 'myuser:mypassword' | openssl base64
16
- npm_config__auth=xxxxxx yarn publish
17
- ----
11
+ - **Modern Framework Stack**: Koa 3.x, TypeORM 0.3.x, TypeDI, routing-controllers
12
+ - **TypeScript First**: Full TypeScript support with decorators and strict type checking
13
+ - **RESTful & WebSocket**: Support for both REST APIs and WebSocket controllers
14
+ - **Database ORM**: TypeORM with MySQL/MariaDB support, automatic entity generation
15
+ - **Dependency Injection**: TypeDI-based IoC container for clean architecture
16
+ - **Validation**: class-validator with i18n support for error messages
17
+ - **Caching**: Two-level caching (L1 in-memory, L2 Redis)
18
+ - **Distributed Events**: RabbitMQ-based pub/sub system
19
+ - **API Gateway**: APISIX integration for service registration
20
+ - **Leader Election**: Redis-based leader election for distributed systems
21
+ - **Health Check**: Built-in health check endpoint with system metrics
22
+ - **Pagination**: Complete pagination solution with sorting support
23
+ - **Security**: Built-in security features, vulnerability tracking, and mitigation
24
+ - **OpenAPI**: Automatic OpenAPI/Swagger documentation generation
25
+ - **Development Tools**: Hot reload, linting, testing, code generation
18
26
 
19
- yarn publish --access restricted
27
+ ## Quick Start
20
28
 
21
- ----
22
- * Install yarn packages
23
- [source, shell]
24
- ----
29
+ ### Prerequisites
30
+
31
+ - Node.js >= 18.0.0
32
+ - Yarn >= 1.22.x
33
+ - MariaDB/MySQL 5.7+ or 8.0+ (for production)
34
+ - Redis 6.0+ (optional, for caching)
35
+ - RabbitMQ 3.8+ (optional, for distributed events)
36
+
37
+ ### Installation
38
+
39
+ ```bash
40
+ # Clone the repository
41
+ git clone https://github.com/gaias/basenode.git
42
+ cd basenode
43
+
44
+ # Install dependencies
25
45
  yarn install
26
- ----
46
+ ```
47
+
48
+ ### Configuration
49
+
50
+ 1. **Database Configuration**
51
+
52
+ Edit `cfg/database.yml`:
53
+ ```yaml
54
+ mariaDBUrl: mysql://username:password@localhost:3306/database
55
+ output: ./example
56
+ ```
57
+
58
+ 2. **Application Configuration**
59
+
60
+ Edit `cfg/application.yml`:
61
+ ```yaml
62
+ appName: example
63
+ version: 1
64
+ port: 3000
65
+ privateKeyPath: ./keys/privateKey
66
+ publicKeyPath: ./keys/publicKey
67
+ ```
68
+
69
+ 3. **Redis Configuration** (Optional)
70
+
71
+ Edit `cfg/redis.yml`:
72
+ ```yaml
73
+ host: localhost
74
+ port: 6379
75
+ password: your_password
76
+ db: 0
77
+ ```
78
+
79
+ 4. **RabbitMQ Configuration** (Optional)
80
+
81
+ Edit `cfg/rabbitmq.yml`:
82
+ ```yaml
83
+ url: amqp://localhost:5672
84
+ ```
85
+
86
+ 5. **Environment Variables** (Optional)
87
+
88
+ Create a `.env` file or export variables:
89
+ ```bash
90
+ NODE_ENV=development # Environment: development, production, test
91
+ ENABLE_API_GATEWAY=true # Enable APISIX gateway registration
92
+ API_GATEWAY_HOST_PORT=192.168.1.100:9180 # Gateway admin API address
93
+ DOMAINS=example.com,*.example.com # Allowed domains for gateway
94
+ ```
95
+
96
+ ### Running the Application
27
97
 
28
- * Set up your marinedb and import the sql data in file mysqlsampledatabase.sql, then change the db address in ./cfg/database.development.yaml
98
+ ```bash
99
+ # Development mode with hot reload
100
+ yarn dev
101
+
102
+ # Development mode with API gateway enabled
103
+ yarn devPro
104
+
105
+ # Production mode (after building)
106
+ yarn ncc:run
107
+ ```
108
+
109
+ The application will start on `http://localhost:3000` (or configured port).
110
+
111
+ Access the health check endpoint: `http://localhost:3000/_healthcheck`
112
+
113
+ ## Project Structure
114
+
115
+ ```
116
+ .
117
+ ├── src/ # Framework source code
118
+ │ ├── libs/ # Framework components
119
+ │ │ ├── apisix/ # APISIX HTTP client
120
+ │ │ ├── cache/ # Two-level caching system
121
+ │ │ ├── configure/ # YAML configuration management
122
+ │ │ ├── deps/ # Dependency library exports
123
+ │ │ ├── error/ # Error handling
124
+ │ │ ├── gateway/ # API Gateway integration
125
+ │ │ ├── generator/ # ID generation (nanoid, snowflake)
126
+ │ │ ├── healthcheck/ # Health check endpoint
127
+ │ │ ├── koa/ # Koa server setup
128
+ │ │ ├── leader/ # Redis-based leader election
129
+ │ │ ├── logger/ # Pino logger wrapper
130
+ │ │ ├── network/ # Network utilities
131
+ │ │ ├── orm/ # TypeORM extensions
132
+ │ │ ├── pagination/ # Pagination utilities
133
+ │ │ ├── rabbitmq/ # RabbitMQ distributed events
134
+ │ │ ├── redis/ # Redis client wrapper
135
+ │ │ ├── register/ # API route registration
136
+ │ │ ├── type/ # Type definitions
137
+ │ │ ├── universal/ # Universal CRUD patterns
138
+ │ │ └── validator/ # Validation helpers
139
+ │ ├── server/ # Bootstrap logic
140
+ │ └── utils/ # Utilities (JWT, crypto, YAML)
141
+ ├── example/ # Example application
142
+ │ ├── app.ts # Entry point
143
+ │ ├── controllers/ # RESTful controllers
144
+ │ ├── wsControllers/ # WebSocket controllers
145
+ │ ├── entities/ # TypeORM entities
146
+ │ ├── repositories/ # Repository classes
147
+ │ ├── services/ # Business logic services
148
+ │ ├── vo/ # Value Objects (DTOs)
149
+ │ └── events/ # Distributed event handlers
150
+ ├── cfg/ # YAML configuration files
151
+ │ ├── application.yml # App settings
152
+ │ ├── database.yml # Database connection
153
+ │ ├── redis.yml # Redis connection
154
+ │ ├── rabbitmq.yml # RabbitMQ connection
155
+ │ ├── logger.yml # Logger settings
156
+ │ ├── apisix.yml # API gateway settings
157
+ │ └── openapiCfg.yml # OpenAPI/Swagger config
158
+ ├── tools/ # Development tools
159
+ │ ├── DBSchemaGenerator.ts # Generate entities from DB
160
+ │ ├── RepositoryGenerator.ts # Generate repositories
161
+ │ └── repository.mst # Mustache template
162
+ ├── docs/ # Documentation
163
+ ├── k8s/ # Kubernetes manifests
164
+ └── keys/ # JWT keys (generated)
165
+ ```
166
+
167
+ ## Development Commands
29
168
 
30
- * Run project
31
- [source, shell]
32
- ----
169
+ ### Running
170
+
171
+ ```bash
172
+ # Development with hot reload
33
173
  yarn dev
34
- ----
35
174
 
175
+ # Development with API gateway
176
+ yarn devPro
177
+
178
+ # Run compiled app
179
+ yarn ncc:run
180
+ ```
181
+
182
+ ### Building
183
+
184
+ ```bash
185
+ # Build for publishing
186
+ yarn build:publish
187
+
188
+ # Build single-file executable
189
+ yarn ncc:build
190
+ ```
191
+
192
+ ### Database Code Generation
193
+
194
+ ```bash
195
+ # Generate entities from database schema
196
+ yarn gen:db-schema
197
+
198
+ # Generate repository classes
199
+ yarn gen:db-repo
200
+
201
+ # Generate both entities and repositories
202
+ yarn gen:db
203
+
204
+ # Generate index files
205
+ yarn gen:idx
206
+ ```
207
+
208
+ **Note**: Define tables to generate in `gen_db.json` before running.
209
+
210
+ ### Testing & Quality
211
+
212
+ ```bash
213
+ # Run tests
214
+ yarn test
215
+
216
+ # Run tests in watch mode
217
+ yarn test:watch
218
+
219
+ # Run tests with coverage
220
+ yarn test:coverage
221
+
222
+ # Type check and lint
223
+ yarn lint
224
+
225
+ # Auto-fix linting issues
226
+ yarn lint:fix
227
+ ```
228
+
229
+ ### Security
230
+
231
+ ```bash
232
+ # Run security audit
233
+ yarn security
234
+
235
+ # Show audit summary
236
+ yarn security:summary
237
+
238
+ # Enhanced security check (recommended)
239
+ yarn security:check
240
+
241
+ # Generate security report
242
+ yarn security:json
243
+ ```
244
+
245
+ See [docs/SECURITY.md](docs/SECURITY.md) for comprehensive security guidelines.
246
+
247
+ ### Dependency Management
248
+
249
+ ```bash
250
+ # Check for outdated dependencies
251
+ yarn deps:check
252
+
253
+ # Update dependencies
254
+ yarn deps:update
255
+ ```
256
+
257
+ ### Other Tools
258
+
259
+ ```bash
260
+ # Generate RSA keys for JWT
261
+ yarn gen:keys
262
+
263
+ # Update build number
264
+ yarn buildNum
265
+ ```
266
+
267
+ ## Usage Examples
268
+
269
+ ### Creating a RESTful Controller
270
+
271
+ ```typescript
272
+ import { rest, di } from '@/libs/deps';
273
+ import { UniversalController } from '@/libs/universal';
274
+ import { UserService } from './services/UserService';
275
+ import { UserVo } from './vo/UserVo';
276
+
277
+ @rest.JsonController('/api/users')
278
+ @di.Service()
279
+ export class UserController extends UniversalController {
280
+ @di.Inject()
281
+ private userService: UserService;
282
+
283
+ @rest.Get('/')
284
+ async getAll() {
285
+ return this.userService.getAll(UserVo);
286
+ }
287
+
288
+ @rest.Post('/')
289
+ async create(@rest.Body() data: UserVo) {
290
+ return this.userService.create(data);
291
+ }
292
+
293
+ @rest.Get('/:id')
294
+ async getById(@rest.Param('id') id: number) {
295
+ return this.userService.readById(id, UserVo);
296
+ }
297
+ }
298
+ ```
299
+
300
+ ### Creating a Service with Repository
301
+
302
+ ```typescript
303
+ import { di } from '@/libs/deps';
304
+ import { UniversalService } from '@/libs/universal';
305
+ import { User } from './entities/User';
306
+ import { UserRepo } from './repositories/UserRepo';
307
+
308
+ @di.Service()
309
+ export class UserService extends UniversalService<User> {
310
+ constructor(@di.Inject(() => UserRepo) private userRepo: UserRepo) {
311
+ super(userRepo);
312
+ }
313
+
314
+ async findByEmail(email: string): Promise<User | null> {
315
+ return this.userRepo.findOne({ where: { email } });
316
+ }
317
+ }
318
+ ```
319
+
320
+ ### Validation with VO (Value Object)
321
+
322
+ ```typescript
323
+ import { cv } from '@/libs/deps';
324
+ import { i18n } from '@/libs/validator';
325
+ import { IsSafeUrl } from '@/libs/validator';
326
+
327
+ export class UserVo {
328
+ @i18n(cv.IsString)
329
+ @i18n(cv.MaxLength, 50)
330
+ userName: string;
331
+
332
+ @i18n(cv.IsEmail)
333
+ email: string;
334
+
335
+ @IsSafeUrl()
336
+ website?: string;
337
+
338
+ @i18n(cv.IsOptional)
339
+ @i18n(cv.MinLength, 6)
340
+ password?: string;
341
+ }
342
+ ```
343
+
344
+ ### Pagination
345
+
346
+ ```typescript
347
+ import { rest, di } from '@/libs/deps';
348
+ import { PaginationIn, PaginationOut } from '@/libs/pagination';
349
+ import { UserService } from './services/UserService';
350
+ import { UserVo } from './vo/UserVo';
351
+
352
+ @rest.JsonController('/api/users')
353
+ @di.Service()
354
+ export class UserController {
355
+ @di.Inject()
356
+ private userService: UserService;
357
+
358
+ @rest.Post('/search')
359
+ async search(@rest.Body() pagination: PaginationIn): Promise<PaginationOut<UserVo, User>> {
360
+ return this.userService.search(pagination);
361
+ }
362
+ }
363
+ ```
364
+
365
+ ### Caching
366
+
367
+ ```typescript
368
+ import { rest, di } from '@/libs/deps';
369
+ import { L1Cache } from '@/libs/cache';
370
+ import { CacheService } from '@/libs/cache';
371
+
372
+ @rest.JsonController('/api/data')
373
+ @di.Service()
374
+ export class DataController {
375
+ @di.Inject()
376
+ private cacheService: CacheService;
377
+
378
+ @rest.Get('/cached')
379
+ @L1Cache({ ttlSeconds: 60 })
380
+ async getCachedData() {
381
+ // L1 cache - in-memory
382
+ return { data: 'This is cached for 60 seconds' };
383
+ }
384
+
385
+ @rest.Get('/redis')
386
+ async getRedisData() {
387
+ // L2 cache - Redis
388
+ const cached = await this.cacheService.get('key');
389
+ if (cached) return cached;
390
+
391
+ const data = { data: 'Fresh data' };
392
+ await this.cacheService.set('key', data, 300);
393
+ return data;
394
+ }
395
+ }
396
+ ```
397
+
398
+ ### Distributed Events
399
+
400
+ ```typescript
401
+ import { di } from '@/libs/deps';
402
+ import { DistributedEvents } from '@/libs/rabbitmq';
403
+
404
+ @di.Service()
405
+ export class UserService {
406
+ @di.Inject()
407
+ private events: DistributedEvents;
408
+
409
+ async createUser(data: UserVo) {
410
+ const user = await this.userRepo.save(data);
411
+
412
+ // Publish event to RabbitMQ
413
+ await this.events.pub('user.created', { userId: user.id });
414
+
415
+ return user;
416
+ }
417
+ }
418
+
419
+ // Event handler
420
+ @di.Service()
421
+ export class UserEventHandler {
422
+ @di.Inject()
423
+ private events: DistributedEvents;
424
+
425
+ async init() {
426
+ // Subscribe to events
427
+ await this.events.sub(['user.created']);
428
+
429
+ this.events.on('RemoteEvent', (eventName, data) => {
430
+ if (eventName === 'user.created') {
431
+ console.log('User created:', data);
432
+ }
433
+ });
434
+ }
435
+ }
436
+ ```
437
+
438
+ ## Key Technologies
439
+
440
+ ### Core Framework
441
+ - **[Koa](https://koajs.com/)** 3.0.3 - Lightweight web framework
442
+ - **[routing-controllers](https://github.com/typestack/routing-controllers)** 0.11.3 - Decorator-based routing
443
+ - **[socket-controllers](https://github.com/typestack/socket-controllers)** 0.3.1 - WebSocket controllers
444
+ - **[TypeDI](https://github.com/typestack/typedi)** 0.10.0 - Dependency injection
445
+ - **[microframework](https://github.com/typestack/microframework)** 0.6.4 - Loader pattern
446
+
447
+ ### Data Layer
448
+ - **[TypeORM](https://typeorm.io/)** 0.3.27 - SQL ORM
449
+ - **[typeorm-transactional](https://github.com/Aliheym/typeorm-transactional)** 0.5.0 - Transaction management
450
+ - **[mysql2](https://github.com/sidorares/node-mysql2)** 3.15.2 - MySQL/MariaDB driver
451
+ - **[class-validator](https://github.com/typestack/class-validator)** 0.14.2 - Validation
452
+ - **[class-transformer](https://github.com/typestack/class-transformer)** 0.5.1 - Transformation
453
+
454
+ ### Caching & Messaging
455
+ - **[ioredis](https://github.com/luin/ioredis)** 5.8.1 - Redis client
456
+ - **[amqplib](https://github.com/amqp-node/amqplib)** 0.10.9 - RabbitMQ client
457
+
458
+ ### Utilities
459
+ - **[pino](https://github.com/pinojs/pino)** 10.0.0 - High-performance logger
460
+ - **[jsonwebtoken](https://github.com/auth0/node-jsonwebtoken)** 9.0.2 - JWT authentication
461
+ - **[nanoid](https://github.com/ai/nanoid)** 5.1.6 - Unique ID generator
462
+ - **[axios](https://github.com/axios/axios)** 1.12.2 - HTTP client
463
+ - **[helmet](https://github.com/helmetjs/helmet)** 8.1.0 - Security headers
464
+
465
+ ## Documentation
466
+
467
+ - **[CLAUDE.md](CLAUDE.md)** - Comprehensive framework documentation
468
+ - **[docs/SECURITY.md](docs/SECURITY.md)** - Security guidelines and best practices
469
+ - **[docs/VULNERABILITY_MITIGATION.md](docs/VULNERABILITY_MITIGATION.md)** - Vulnerability tracking
470
+ - **[docs/QUICKSTART.md](docs/QUICKSTART.md)** - Quick start guide
471
+ - **[docs/PUBLISHING.md](docs/PUBLISHING.md)** - Publishing guide
472
+ - **[docs/BUILD_AND_USE.md](docs/BUILD_AND_USE.md)** - Building and usage instructions
473
+ - **[docs/DOCKER_OPTIMIZATION.md](docs/DOCKER_OPTIMIZATION.md)** - Docker optimization guide
474
+
475
+ ### Module Documentation
476
+
477
+ - `src/libs/deps/README.md` - Unified dependency exports
478
+ - `src/libs/validator/README.md` - Validation helpers
479
+ - `src/libs/apisix/README.md` - API gateway integration
480
+ - `src/libs/gateway/README.md` - Gateway loader
481
+ - `src/libs/generator/README.md` - ID generation
482
+ - `src/libs/koa/README.md` - Koa server setup
483
+ - `src/libs/network/README.md` - Network utilities
484
+ - `src/libs/rabbitmq/README.md` - Distributed events
485
+ - `src/libs/register/README.md` - API route registration
486
+ - `src/libs/type/README.md` - Type utilities
487
+ - `src/libs/universal/README.md` - Universal CRUD patterns
488
+
489
+ ## Security
490
+
491
+ This project takes security seriously. We use:
492
+
493
+ - Regular security audits with `yarn security:check`
494
+ - Dependency vulnerability tracking and mitigation
495
+ - Custom validators to avoid known CVEs (e.g., `@IsSafeUrl()` instead of `@IsUrl()`)
496
+ - Secure dependency resolutions for transitive dependencies
497
+ - Security documentation and best practices
498
+
499
+ See [docs/SECURITY.md](docs/SECURITY.md) for detailed information.
500
+
501
+ **Important**: Always use `@IsSafeUrl()` instead of `@IsUrl()` to avoid CVE-2025-56200.
502
+
503
+ ## Contributing
504
+
505
+ Contributions are welcome! Please follow these guidelines:
506
+
507
+ 1. Fork the repository
508
+ 2. Create a feature branch from `develope`
509
+ 3. Make your changes with descriptive commits
510
+ 4. Run tests and linting: `yarn test && yarn lint`
511
+ 5. Run security check: `yarn security:check`
512
+ 6. Create a pull request to `develope` branch
513
+
514
+ ### Development Guidelines
515
+
516
+ - Follow existing code conventions
517
+ - Use TypeScript strict mode
518
+ - Add JSDoc comments for public APIs
519
+ - Write tests for new features
520
+ - Update documentation as needed
521
+
522
+ ## Publishing
523
+
524
+ This is a private npm package. To publish:
525
+
526
+ ```bash
527
+ # Update version in package.json
528
+ # Update build number
529
+ yarn buildNum
530
+
531
+ # Run pre-publish checks
532
+ yarn publish:check
533
+
534
+ # Build for publishing
535
+ yarn build:publish
536
+
537
+ # Publish to npm
538
+ yarn publish:npmjs
539
+
540
+ # Or publish to GitHub packages
541
+ yarn publish:github
542
+ ```
543
+
544
+ See [docs/PUBLISHING.md](docs/PUBLISHING.md) for detailed publishing instructions.
545
+
546
+ ## Troubleshooting
547
+
548
+ ### Database Connection Issues
549
+
550
+ - Verify `cfg/database.yml` connection string
551
+ - Check MariaDB/MySQL is running
552
+ - Ensure database user has proper permissions
553
+
554
+ ### Redis Connection Issues
555
+
556
+ - Check Redis is running: `redis-cli ping`
557
+ - Verify `cfg/redis.yml` settings
558
+ - Can disable Redis by setting `disableRedis: true` in bootstrap
559
+
560
+ ### TypeORM Entity Not Found
561
+
562
+ - Ensure entity is registered in bootstrap `entities` array
563
+ - Check entity file has `@Entity()` decorator
564
+ - Verify import path is correct
565
+
566
+ ## License
567
+
568
+ UNLICENSED - Private package
569
+
570
+ ## Author
571
+
572
+ FOT Team
573
+
574
+ ## Links
36
575
 
576
+ - [Repository](https://github.com/gaias/basenode)
577
+ - [Issue Tracker](https://github.com/gaias/basenode/issues)
578
+ - [npm Package](https://www.npmjs.com/package/@gaias/basenode)
37
579
 
38
- ## Document links
39
- * Restful controller:
40
- https://github.com/typestack/routing-controllers/blob/master/README.md[routing-controllers]
41
- * Socket.io controller:
42
- https://github.com/typestack/socket-controllers/blob/master/README.md[socket-controllers]
43
- * Validation: https://github.com/typestack/class-validator/blob/master/README.md[class-validator]
44
- * Json <-> Object: https://github.com/typestack/class-transformer/blob/develop/README.md[class-transformer]
45
- * socket.io: https://socket.io/docs/[socket.io]
46
- * IoC: https://github.com/typestack/typedi/blob/master/README.md[typedi]
47
- * ORM:
48
- ** https://typeorm.io/[typeorm]
49
- ** https://github.com/odavid/typeorm-transactional-cls-hooked/blob/master/README.md[tx decorators]
50
- ** https://github.com/typeorm/typeorm-typedi-extensions/blob/master/README.md[inject repo/conn]
580
+ ## Version History
51
581
 
582
+ - **1.0.24** (Current) - Latest updates and improvements
583
+ - **1.0.13** - Security enhancements and dependency updates
584
+ - **1.0.0** - Initial release
52
585
 
586
+ ---
53
587
 
54
- ## Dev
55
- http://localhost:3000/api/v1/example/query/roles
588
+ **Last Updated**: 2025-10-23
589
+ **Framework Version**: 1.0.24
590
+ **Build Number**: 251022024
package/cfg/apisix.yml ADDED
@@ -0,0 +1 @@
1
+ apiKey: yhwj2hUq9H4kGBHGMvwKcKjt
@@ -0,0 +1 @@
1
+ proxy: http://www.dev.fot.cool:8888
@@ -0,0 +1,5 @@
1
+ appName: example
2
+ version: 1
3
+ port: 3000
4
+ privateKeyPath: ./keys/privateKey
5
+ publicKeyPath: ./keys/publicKey
@@ -0,0 +1,7 @@
1
+ # 数据库配置 / Database Configuration
2
+ # 优先使用环境变量 DATABASE_URL,如果未设置则使用下面的默认值
3
+ # Environment variable DATABASE_URL takes precedence over this default value
4
+ # 推荐:请在 .env 文件中设置真实的数据库连接信息
5
+ # Recommended: Set real database connection in .env file
6
+ mariaDBUrl: mysql://root:AyEB7kJjm4@192.168.88.10:3306/fotNet
7
+ output: ./example
package/cfg/logger.yml ADDED
@@ -0,0 +1,5 @@
1
+ level: debug
2
+ prettyPrint:
3
+ translateTime: SYS:standard
4
+ ignore: pid,hostname
5
+ levelFirst: true
@@ -0,0 +1 @@
1
+ disabled: false
@@ -0,0 +1 @@
1
+ connection: amqp://admin:admin@192.168.88.10:5672/