typescript-express-starter 10.2.1 → 11.0.0

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 (607) hide show
  1. package/README.kr.md +136 -287
  2. package/README.md +134 -274
  3. package/bin/ast-utils.js +226 -0
  4. package/bin/common.js +312 -0
  5. package/bin/config.js +80 -0
  6. package/bin/db-map.js +169 -0
  7. package/bin/errors.js +129 -0
  8. package/bin/performance.js +203 -0
  9. package/bin/starter.js +359 -0
  10. package/bin/validators.js +146 -0
  11. package/devtools/biome/.biome.json +34 -0
  12. package/devtools/biome/.biomeignore +29 -0
  13. package/devtools/docker/.dockerignore +27 -0
  14. package/devtools/docker/Dockerfile.dev +20 -0
  15. package/devtools/docker/Dockerfile.prod +35 -0
  16. package/{lib/default → devtools/docker}/Makefile +3 -0
  17. package/devtools/docker/nginx.conf +67 -0
  18. package/devtools/eslint/eslint.config.cjs +23 -0
  19. package/devtools/husky/.husky/commit-msg +4 -0
  20. package/devtools/husky/.husky/pre-commit +4 -0
  21. package/devtools/husky/.husky/pre-push +4 -0
  22. package/devtools/jest/jest.config.cjs +2 -0
  23. package/devtools/jest/jest.config.ts +25 -0
  24. package/devtools/jest/src/test/e2e/auth.e2e.spec.ts +40 -0
  25. package/devtools/jest/src/test/e2e/users.e2e.spec.ts +63 -0
  26. package/devtools/jest/src/test/setup.ts +31 -0
  27. package/devtools/jest/src/test/unit/entities/user.entity.spec.ts +279 -0
  28. package/devtools/jest/src/test/unit/services/auth.service.spec.ts +75 -0
  29. package/devtools/jest/src/test/unit/services/users.service.spec.ts +109 -0
  30. package/devtools/oxlint/.oxlintrc.json +57 -0
  31. package/devtools/pm2/ecosystem.config.js +59 -0
  32. package/devtools/swagger/swagger.yaml +124 -0
  33. package/{lib/prisma → devtools/swc}/.swcrc +2 -1
  34. package/devtools/tsup/tsup.config.ts +15 -0
  35. package/devtools/vitest/src/test/e2e/auth.e2e.spec.ts +41 -0
  36. package/devtools/vitest/src/test/e2e/users.e2e.spec.ts +64 -0
  37. package/devtools/vitest/src/test/setup.ts +31 -0
  38. package/devtools/vitest/src/test/unit/services/auth.service.spec.ts +70 -0
  39. package/devtools/vitest/src/test/unit/services/users.service.spec.ts +90 -0
  40. package/devtools/vitest/vitest.config.ts +22 -0
  41. package/package.json +24 -11
  42. package/templates/default/nodemon.json +7 -0
  43. package/templates/default/package.json +48 -0
  44. package/templates/default/src/app.ts +118 -0
  45. package/templates/default/src/config/env.ts +78 -0
  46. package/templates/default/src/controllers/auth.controller.ts +40 -0
  47. package/templates/default/src/controllers/users.controller.ts +46 -0
  48. package/templates/default/src/dtos/users.dto.ts +42 -0
  49. package/templates/default/src/entities/user.entity.ts +190 -0
  50. package/templates/default/src/exceptions/httpException.ts +14 -0
  51. package/{lib/knex → templates/default}/src/interfaces/auth.interface.ts +3 -3
  52. package/templates/default/src/interfaces/users.interface.ts +9 -0
  53. package/templates/default/src/middlewares/auth.middleware.ts +49 -0
  54. package/templates/default/src/middlewares/error.middleware.ts +89 -0
  55. package/templates/default/src/middlewares/notFound.middleware.ts +6 -0
  56. package/templates/default/src/middlewares/validation.middleware.ts +15 -0
  57. package/templates/default/src/repositories/users.repository.ts +55 -0
  58. package/templates/default/src/routes/auth.route.ts +31 -0
  59. package/templates/default/src/routes/users.route.ts +32 -0
  60. package/templates/default/src/server.ts +35 -0
  61. package/templates/default/src/services/auth.service.ts +67 -0
  62. package/templates/default/src/services/users.service.ts +48 -0
  63. package/templates/default/src/utils/asyncHandler.ts +8 -0
  64. package/templates/default/src/utils/logger.ts +113 -0
  65. package/{lib/typeorm → templates/default}/tsconfig.json +23 -22
  66. package/CONTRIBUTORS.md +0 -69
  67. package/bin/cli.js +0 -18
  68. package/lib/default/.dockerignore +0 -18
  69. package/lib/default/.editorconfig +0 -9
  70. package/lib/default/.env.development.local +0 -13
  71. package/lib/default/.env.production.local +0 -13
  72. package/lib/default/.env.test.local +0 -13
  73. package/lib/default/.eslintignore +0 -1
  74. package/lib/default/.eslintrc +0 -18
  75. package/lib/default/.huskyrc +0 -5
  76. package/lib/default/.lintstagedrc.json +0 -5
  77. package/lib/default/.prettierrc +0 -8
  78. package/lib/default/.swcrc +0 -39
  79. package/lib/default/.vscode/launch.json +0 -35
  80. package/lib/default/.vscode/settings.json +0 -6
  81. package/lib/default/Dockerfile.dev +0 -18
  82. package/lib/default/Dockerfile.prod +0 -18
  83. package/lib/default/docker-compose.yml +0 -35
  84. package/lib/default/ecosystem.config.js +0 -57
  85. package/lib/default/jest.config.js +0 -12
  86. package/lib/default/nginx.conf +0 -40
  87. package/lib/default/nodemon.json +0 -12
  88. package/lib/default/package.json +0 -76
  89. package/lib/default/src/app.ts +0 -81
  90. package/lib/default/src/config/index.ts +0 -5
  91. package/lib/default/src/controllers/auth.controller.ts +0 -44
  92. package/lib/default/src/controllers/users.controller.ts +0 -63
  93. package/lib/default/src/dtos/users.dto.ts +0 -20
  94. package/lib/default/src/exceptions/HttpException.ts +0 -10
  95. package/lib/default/src/http/auth.http +0 -27
  96. package/lib/default/src/http/users.http +0 -34
  97. package/lib/default/src/interfaces/auth.interface.ts +0 -15
  98. package/lib/default/src/interfaces/users.interface.ts +0 -5
  99. package/lib/default/src/middlewares/auth.middleware.ts +0 -38
  100. package/lib/default/src/middlewares/error.middleware.ts +0 -15
  101. package/lib/default/src/middlewares/validation.middleware.ts +0 -27
  102. package/lib/default/src/models/users.model.ts +0 -9
  103. package/lib/default/src/routes/auth.route.ts +0 -21
  104. package/lib/default/src/routes/users.route.ts +0 -23
  105. package/lib/default/src/server.ts +0 -10
  106. package/lib/default/src/services/auth.service.ts +0 -52
  107. package/lib/default/src/services/users.service.ts +0 -51
  108. package/lib/default/src/test/auth.test.ts +0 -52
  109. package/lib/default/src/test/users.test.ts +0 -62
  110. package/lib/default/src/utils/logger.ts +0 -65
  111. package/lib/default/src/utils/validateEnv.ts +0 -8
  112. package/lib/default/swagger.yaml +0 -123
  113. package/lib/default/tsconfig.json +0 -39
  114. package/lib/graphql/.dockerignore +0 -18
  115. package/lib/graphql/.editorconfig +0 -9
  116. package/lib/graphql/.env.development.local +0 -20
  117. package/lib/graphql/.env.production.local +0 -20
  118. package/lib/graphql/.env.test.local +0 -20
  119. package/lib/graphql/.eslintignore +0 -1
  120. package/lib/graphql/.eslintrc +0 -18
  121. package/lib/graphql/.huskyrc +0 -5
  122. package/lib/graphql/.lintstagedrc.json +0 -5
  123. package/lib/graphql/.prettierrc +0 -8
  124. package/lib/graphql/.swcrc +0 -40
  125. package/lib/graphql/.vscode/launch.json +0 -35
  126. package/lib/graphql/.vscode/settings.json +0 -6
  127. package/lib/graphql/Dockerfile.dev +0 -19
  128. package/lib/graphql/Dockerfile.prod +0 -19
  129. package/lib/graphql/Makefile +0 -46
  130. package/lib/graphql/docker-compose.yml +0 -58
  131. package/lib/graphql/ecosystem.config.js +0 -59
  132. package/lib/graphql/jest.config.js +0 -12
  133. package/lib/graphql/nginx.conf +0 -40
  134. package/lib/graphql/nodemon.json +0 -12
  135. package/lib/graphql/package.json +0 -75
  136. package/lib/graphql/src/app.ts +0 -107
  137. package/lib/graphql/src/config/index.ts +0 -6
  138. package/lib/graphql/src/database/index.ts +0 -26
  139. package/lib/graphql/src/dtos/users.dto.ts +0 -27
  140. package/lib/graphql/src/entities/users.entity.ts +0 -26
  141. package/lib/graphql/src/exceptions/HttpException.ts +0 -10
  142. package/lib/graphql/src/http/auth.http +0 -49
  143. package/lib/graphql/src/http/users.http +0 -78
  144. package/lib/graphql/src/interfaces/auth.interface.ts +0 -14
  145. package/lib/graphql/src/interfaces/users.interface.ts +0 -5
  146. package/lib/graphql/src/middlewares/auth.middleware.ts +0 -42
  147. package/lib/graphql/src/middlewares/error.middleware.ts +0 -15
  148. package/lib/graphql/src/repositories/auth.repository.ts +0 -53
  149. package/lib/graphql/src/repositories/users.repository.ts +0 -51
  150. package/lib/graphql/src/resolvers/auth.resolver.ts +0 -32
  151. package/lib/graphql/src/resolvers/users.resolver.ts +0 -47
  152. package/lib/graphql/src/server.ts +0 -10
  153. package/lib/graphql/src/test/auth.test.ts +0 -10
  154. package/lib/graphql/src/test/users.test.ts +0 -11
  155. package/lib/graphql/src/typedefs/users.type.ts +0 -13
  156. package/lib/graphql/src/utils/logger.ts +0 -77
  157. package/lib/graphql/src/utils/validateEnv.ts +0 -8
  158. package/lib/graphql/tsconfig.json +0 -40
  159. package/lib/knex/.dockerignore +0 -18
  160. package/lib/knex/.editorconfig +0 -9
  161. package/lib/knex/.env.development.local +0 -20
  162. package/lib/knex/.env.production.local +0 -20
  163. package/lib/knex/.env.test.local +0 -20
  164. package/lib/knex/.eslintignore +0 -1
  165. package/lib/knex/.eslintrc +0 -18
  166. package/lib/knex/.huskyrc +0 -5
  167. package/lib/knex/.lintstagedrc.json +0 -5
  168. package/lib/knex/.prettierrc +0 -8
  169. package/lib/knex/.swcrc +0 -40
  170. package/lib/knex/.vscode/launch.json +0 -35
  171. package/lib/knex/.vscode/settings.json +0 -6
  172. package/lib/knex/Dockerfile.dev +0 -19
  173. package/lib/knex/Dockerfile.prod +0 -19
  174. package/lib/knex/Makefile +0 -46
  175. package/lib/knex/docker-compose.yml +0 -55
  176. package/lib/knex/ecosystem.config.js +0 -57
  177. package/lib/knex/jest.config.js +0 -12
  178. package/lib/knex/knexfile.ts +0 -23
  179. package/lib/knex/nginx.conf +0 -40
  180. package/lib/knex/nodemon.json +0 -12
  181. package/lib/knex/package.json +0 -85
  182. package/lib/knex/src/app.ts +0 -87
  183. package/lib/knex/src/config/index.ts +0 -6
  184. package/lib/knex/src/controllers/auth.controller.ts +0 -44
  185. package/lib/knex/src/controllers/users.controller.ts +0 -63
  186. package/lib/knex/src/database/index.ts +0 -24
  187. package/lib/knex/src/database/migrations/.gitkeep +0 -0
  188. package/lib/knex/src/database/migrations/20210713110926_initial.ts +0 -17
  189. package/lib/knex/src/database/seeds/.gitkeep +0 -0
  190. package/lib/knex/src/dtos/users.dto.ts +0 -20
  191. package/lib/knex/src/exceptions/HttpException.ts +0 -10
  192. package/lib/knex/src/http/auth.http +0 -27
  193. package/lib/knex/src/http/users.http +0 -34
  194. package/lib/knex/src/interfaces/routes.interface.ts +0 -6
  195. package/lib/knex/src/interfaces/users.interface.ts +0 -5
  196. package/lib/knex/src/middlewares/auth.middleware.ts +0 -40
  197. package/lib/knex/src/middlewares/error.middleware.ts +0 -15
  198. package/lib/knex/src/middlewares/validation.middleware.ts +0 -27
  199. package/lib/knex/src/models/users.model.ts +0 -13
  200. package/lib/knex/src/routes/auth.route.ts +0 -22
  201. package/lib/knex/src/routes/users.route.ts +0 -23
  202. package/lib/knex/src/server.ts +0 -10
  203. package/lib/knex/src/services/auth.service.ts +0 -60
  204. package/lib/knex/src/services/users.service.ts +0 -55
  205. package/lib/knex/src/test/auth.test.ts +0 -51
  206. package/lib/knex/src/test/users.test.ts +0 -65
  207. package/lib/knex/src/utils/logger.ts +0 -65
  208. package/lib/knex/src/utils/validateEnv.ts +0 -8
  209. package/lib/knex/swagger.yaml +0 -123
  210. package/lib/knex/tsconfig.json +0 -40
  211. package/lib/mikro-orm/.dockerignore +0 -18
  212. package/lib/mikro-orm/.editorconfig +0 -9
  213. package/lib/mikro-orm/.env.development.local +0 -18
  214. package/lib/mikro-orm/.env.production.local +0 -18
  215. package/lib/mikro-orm/.env.test.local +0 -18
  216. package/lib/mikro-orm/.eslintignore +0 -1
  217. package/lib/mikro-orm/.eslintrc +0 -18
  218. package/lib/mikro-orm/.huskyrc +0 -5
  219. package/lib/mikro-orm/.lintstagedrc.json +0 -5
  220. package/lib/mikro-orm/.prettierrc +0 -8
  221. package/lib/mikro-orm/.swcrc +0 -41
  222. package/lib/mikro-orm/.vscode/launch.json +0 -35
  223. package/lib/mikro-orm/.vscode/settings.json +0 -6
  224. package/lib/mikro-orm/Dockerfile.dev +0 -19
  225. package/lib/mikro-orm/Dockerfile.prod +0 -19
  226. package/lib/mikro-orm/Makefile +0 -46
  227. package/lib/mikro-orm/docker-compose.yml +0 -55
  228. package/lib/mikro-orm/ecosystem.config.js +0 -57
  229. package/lib/mikro-orm/jest.config.js +0 -12
  230. package/lib/mikro-orm/nginx.conf +0 -40
  231. package/lib/mikro-orm/nodemon.json +0 -12
  232. package/lib/mikro-orm/package.json +0 -79
  233. package/lib/mikro-orm/src/app.ts +0 -97
  234. package/lib/mikro-orm/src/config/index.ts +0 -6
  235. package/lib/mikro-orm/src/controllers/auth.controller.ts +0 -44
  236. package/lib/mikro-orm/src/controllers/users.controller.ts +0 -63
  237. package/lib/mikro-orm/src/database/index.ts +0 -19
  238. package/lib/mikro-orm/src/dtos/users.dto.ts +0 -20
  239. package/lib/mikro-orm/src/entities/base.entity.ts +0 -16
  240. package/lib/mikro-orm/src/entities/users.entity.ts +0 -17
  241. package/lib/mikro-orm/src/exceptions/HttpException.ts +0 -10
  242. package/lib/mikro-orm/src/http/auth.http +0 -32
  243. package/lib/mikro-orm/src/http/users.http +0 -34
  244. package/lib/mikro-orm/src/interfaces/auth.interface.ts +0 -15
  245. package/lib/mikro-orm/src/interfaces/routes.interface.ts +0 -6
  246. package/lib/mikro-orm/src/interfaces/users.interface.ts +0 -5
  247. package/lib/mikro-orm/src/middlewares/auth.middleware.ts +0 -39
  248. package/lib/mikro-orm/src/middlewares/error.middleware.ts +0 -15
  249. package/lib/mikro-orm/src/middlewares/validation.middleware.ts +0 -27
  250. package/lib/mikro-orm/src/routes/auth.route.ts +0 -22
  251. package/lib/mikro-orm/src/routes/users.route.ts +0 -23
  252. package/lib/mikro-orm/src/server.ts +0 -10
  253. package/lib/mikro-orm/src/services/auth.service.ts +0 -53
  254. package/lib/mikro-orm/src/services/users.service.ts +0 -60
  255. package/lib/mikro-orm/src/test/auth.test.ts +0 -65
  256. package/lib/mikro-orm/src/test/users.test.ts +0 -69
  257. package/lib/mikro-orm/src/utils/logger.ts +0 -65
  258. package/lib/mikro-orm/src/utils/validateEnv.ts +0 -8
  259. package/lib/mikro-orm/swagger.yaml +0 -122
  260. package/lib/mikro-orm/tsconfig.json +0 -41
  261. package/lib/mongoose/.dockerignore +0 -18
  262. package/lib/mongoose/.editorconfig +0 -9
  263. package/lib/mongoose/.env.development.local +0 -18
  264. package/lib/mongoose/.env.production.local +0 -18
  265. package/lib/mongoose/.env.test.local +0 -18
  266. package/lib/mongoose/.eslintignore +0 -1
  267. package/lib/mongoose/.eslintrc +0 -18
  268. package/lib/mongoose/.huskyrc +0 -5
  269. package/lib/mongoose/.lintstagedrc.json +0 -5
  270. package/lib/mongoose/.prettierrc +0 -8
  271. package/lib/mongoose/.swcrc +0 -40
  272. package/lib/mongoose/.vscode/launch.json +0 -35
  273. package/lib/mongoose/.vscode/settings.json +0 -6
  274. package/lib/mongoose/Dockerfile.dev +0 -19
  275. package/lib/mongoose/Dockerfile.prod +0 -19
  276. package/lib/mongoose/Makefile +0 -46
  277. package/lib/mongoose/docker-compose.yml +0 -55
  278. package/lib/mongoose/ecosystem.config.js +0 -57
  279. package/lib/mongoose/jest.config.js +0 -12
  280. package/lib/mongoose/nginx.conf +0 -40
  281. package/lib/mongoose/nodemon.json +0 -12
  282. package/lib/mongoose/package.json +0 -78
  283. package/lib/mongoose/src/app.ts +0 -87
  284. package/lib/mongoose/src/config/index.ts +0 -6
  285. package/lib/mongoose/src/controllers/auth.controller.ts +0 -44
  286. package/lib/mongoose/src/controllers/users.controller.ts +0 -63
  287. package/lib/mongoose/src/database/index.ts +0 -18
  288. package/lib/mongoose/src/dtos/users.dto.ts +0 -20
  289. package/lib/mongoose/src/exceptions/HttpException.ts +0 -10
  290. package/lib/mongoose/src/http/auth.http +0 -27
  291. package/lib/mongoose/src/http/users.http +0 -34
  292. package/lib/mongoose/src/interfaces/auth.interface.ts +0 -15
  293. package/lib/mongoose/src/interfaces/routes.interface.ts +0 -6
  294. package/lib/mongoose/src/interfaces/users.interface.ts +0 -5
  295. package/lib/mongoose/src/middlewares/auth.middleware.ts +0 -39
  296. package/lib/mongoose/src/middlewares/error.middleware.ts +0 -15
  297. package/lib/mongoose/src/middlewares/validation.middleware.ts +0 -27
  298. package/lib/mongoose/src/models/users.model.ts +0 -16
  299. package/lib/mongoose/src/routes/auth.route.ts +0 -22
  300. package/lib/mongoose/src/routes/users.route.ts +0 -23
  301. package/lib/mongoose/src/server.ts +0 -10
  302. package/lib/mongoose/src/services/auth.service.ts +0 -52
  303. package/lib/mongoose/src/services/users.service.ts +0 -54
  304. package/lib/mongoose/src/test/auth.test.ts +0 -83
  305. package/lib/mongoose/src/test/index.test.ts +0 -18
  306. package/lib/mongoose/src/test/users.test.ts +0 -133
  307. package/lib/mongoose/src/utils/logger.ts +0 -65
  308. package/lib/mongoose/src/utils/validateEnv.ts +0 -8
  309. package/lib/mongoose/swagger.yaml +0 -120
  310. package/lib/mongoose/tsconfig.json +0 -40
  311. package/lib/node-postgres/.dockerignore +0 -18
  312. package/lib/node-postgres/.editorconfig +0 -9
  313. package/lib/node-postgres/.env.development.local +0 -20
  314. package/lib/node-postgres/.env.production.local +0 -20
  315. package/lib/node-postgres/.env.test.local +0 -20
  316. package/lib/node-postgres/.eslintignore +0 -1
  317. package/lib/node-postgres/.eslintrc +0 -18
  318. package/lib/node-postgres/.huskyrc +0 -5
  319. package/lib/node-postgres/.lintstagedrc.json +0 -5
  320. package/lib/node-postgres/.prettierrc +0 -8
  321. package/lib/node-postgres/.swcrc +0 -38
  322. package/lib/node-postgres/.vscode/launch.json +0 -35
  323. package/lib/node-postgres/.vscode/settings.json +0 -6
  324. package/lib/node-postgres/Dockerfile.dev +0 -17
  325. package/lib/node-postgres/Dockerfile.prod +0 -17
  326. package/lib/node-postgres/Makefile +0 -46
  327. package/lib/node-postgres/docker-compose.yml +0 -61
  328. package/lib/node-postgres/ecosystem.config.js +0 -57
  329. package/lib/node-postgres/jest.config.js +0 -12
  330. package/lib/node-postgres/nginx.conf +0 -40
  331. package/lib/node-postgres/nodemon.json +0 -12
  332. package/lib/node-postgres/package.json +0 -78
  333. package/lib/node-postgres/src/app.ts +0 -81
  334. package/lib/node-postgres/src/config/index.ts +0 -6
  335. package/lib/node-postgres/src/controllers/auth.controller.ts +0 -44
  336. package/lib/node-postgres/src/controllers/users.controller.ts +0 -63
  337. package/lib/node-postgres/src/database/index.ts +0 -10
  338. package/lib/node-postgres/src/database/init.sql +0 -13
  339. package/lib/node-postgres/src/dtos/users.dto.ts +0 -20
  340. package/lib/node-postgres/src/exceptions/httpException.ts +0 -10
  341. package/lib/node-postgres/src/http/auth.http +0 -27
  342. package/lib/node-postgres/src/http/users.http +0 -34
  343. package/lib/node-postgres/src/interfaces/auth.interface.ts +0 -15
  344. package/lib/node-postgres/src/interfaces/routes.interface.ts +0 -6
  345. package/lib/node-postgres/src/interfaces/users.interface.ts +0 -5
  346. package/lib/node-postgres/src/middlewares/auth.middleware.ts +0 -46
  347. package/lib/node-postgres/src/middlewares/error.middleware.ts +0 -15
  348. package/lib/node-postgres/src/middlewares/validation.middleware.ts +0 -27
  349. package/lib/node-postgres/src/routes/auth.route.ts +0 -21
  350. package/lib/node-postgres/src/routes/users.route.ts +0 -23
  351. package/lib/node-postgres/src/server.ts +0 -10
  352. package/lib/node-postgres/src/services/auth.service.ts +0 -103
  353. package/lib/node-postgres/src/services/users.service.ts +0 -133
  354. package/lib/node-postgres/src/test/auth.test.ts +0 -57
  355. package/lib/node-postgres/src/test/users.test.ts +0 -72
  356. package/lib/node-postgres/src/utils/logger.ts +0 -65
  357. package/lib/node-postgres/src/utils/validateEnv.ts +0 -8
  358. package/lib/node-postgres/swagger.yaml +0 -123
  359. package/lib/node-postgres/tsconfig.json +0 -39
  360. package/lib/prisma/.dockerignore +0 -18
  361. package/lib/prisma/.editorconfig +0 -9
  362. package/lib/prisma/.env.development.local +0 -16
  363. package/lib/prisma/.env.production.local +0 -16
  364. package/lib/prisma/.env.test.local +0 -16
  365. package/lib/prisma/.eslintignore +0 -1
  366. package/lib/prisma/.eslintrc +0 -18
  367. package/lib/prisma/.huskyrc +0 -5
  368. package/lib/prisma/.lintstagedrc.json +0 -5
  369. package/lib/prisma/.prettierrc +0 -8
  370. package/lib/prisma/.vscode/launch.json +0 -35
  371. package/lib/prisma/.vscode/settings.json +0 -6
  372. package/lib/prisma/Dockerfile.dev +0 -19
  373. package/lib/prisma/Dockerfile.prod +0 -19
  374. package/lib/prisma/Makefile +0 -46
  375. package/lib/prisma/docker-compose.yml +0 -51
  376. package/lib/prisma/ecosystem.config.js +0 -57
  377. package/lib/prisma/jest.config.js +0 -12
  378. package/lib/prisma/nginx.conf +0 -40
  379. package/lib/prisma/nodemon.json +0 -12
  380. package/lib/prisma/package.json +0 -84
  381. package/lib/prisma/src/app.ts +0 -81
  382. package/lib/prisma/src/config/index.ts +0 -5
  383. package/lib/prisma/src/controllers/auth.controller.ts +0 -44
  384. package/lib/prisma/src/controllers/users.controller.ts +0 -63
  385. package/lib/prisma/src/dtos/users.dto.ts +0 -20
  386. package/lib/prisma/src/exceptions/HttpException.ts +0 -10
  387. package/lib/prisma/src/http/auth.http +0 -27
  388. package/lib/prisma/src/http/users.http +0 -34
  389. package/lib/prisma/src/interfaces/auth.interface.ts +0 -15
  390. package/lib/prisma/src/interfaces/routes.interface.ts +0 -6
  391. package/lib/prisma/src/interfaces/users.interface.ts +0 -5
  392. package/lib/prisma/src/middlewares/auth.middleware.ts +0 -39
  393. package/lib/prisma/src/middlewares/error.middleware.ts +0 -15
  394. package/lib/prisma/src/middlewares/validation.middleware.ts +0 -27
  395. package/lib/prisma/src/prisma/migrations/20210314081925_initial/migration.sql +0 -9
  396. package/lib/prisma/src/prisma/migrations/migration_lock.toml +0 -3
  397. package/lib/prisma/src/prisma/schema.prisma +0 -17
  398. package/lib/prisma/src/routes/auth.route.ts +0 -22
  399. package/lib/prisma/src/routes/users.route.ts +0 -23
  400. package/lib/prisma/src/server.ts +0 -10
  401. package/lib/prisma/src/services/auth.service.ts +0 -56
  402. package/lib/prisma/src/services/users.service.ts +0 -49
  403. package/lib/prisma/src/test/auth.test.ts +0 -81
  404. package/lib/prisma/src/test/index.test.ts +0 -18
  405. package/lib/prisma/src/test/users.test.ts +0 -134
  406. package/lib/prisma/src/utils/logger.ts +0 -65
  407. package/lib/prisma/src/utils/validateEnv.ts +0 -8
  408. package/lib/prisma/swagger.yaml +0 -123
  409. package/lib/prisma/tsconfig.json +0 -38
  410. package/lib/routing-controllers/.dockerignore +0 -18
  411. package/lib/routing-controllers/.editorconfig +0 -9
  412. package/lib/routing-controllers/.env.development.local +0 -13
  413. package/lib/routing-controllers/.env.production.local +0 -13
  414. package/lib/routing-controllers/.env.test.local +0 -13
  415. package/lib/routing-controllers/.eslintignore +0 -1
  416. package/lib/routing-controllers/.eslintrc +0 -18
  417. package/lib/routing-controllers/.huskyrc +0 -5
  418. package/lib/routing-controllers/.lintstagedrc.json +0 -5
  419. package/lib/routing-controllers/.prettierrc +0 -8
  420. package/lib/routing-controllers/.swcrc +0 -38
  421. package/lib/routing-controllers/.vscode/launch.json +0 -35
  422. package/lib/routing-controllers/.vscode/settings.json +0 -6
  423. package/lib/routing-controllers/Dockerfile.dev +0 -19
  424. package/lib/routing-controllers/Dockerfile.prod +0 -19
  425. package/lib/routing-controllers/Makefile +0 -42
  426. package/lib/routing-controllers/docker-compose.yml +0 -35
  427. package/lib/routing-controllers/ecosystem.config.js +0 -57
  428. package/lib/routing-controllers/jest.config.js +0 -12
  429. package/lib/routing-controllers/nginx.conf +0 -40
  430. package/lib/routing-controllers/nodemon.json +0 -12
  431. package/lib/routing-controllers/package.json +0 -77
  432. package/lib/routing-controllers/src/app.ts +0 -101
  433. package/lib/routing-controllers/src/config/index.ts +0 -5
  434. package/lib/routing-controllers/src/controllers/auth.controller.ts +0 -41
  435. package/lib/routing-controllers/src/controllers/users.controller.ts +0 -51
  436. package/lib/routing-controllers/src/dtos/users.dto.ts +0 -20
  437. package/lib/routing-controllers/src/exceptions/HttpException.ts +0 -12
  438. package/lib/routing-controllers/src/http/auth.http +0 -27
  439. package/lib/routing-controllers/src/http/users.http +0 -34
  440. package/lib/routing-controllers/src/interfaces/auth.interface.ts +0 -15
  441. package/lib/routing-controllers/src/interfaces/users.interface.ts +0 -5
  442. package/lib/routing-controllers/src/middlewares/auth.middleware.ts +0 -38
  443. package/lib/routing-controllers/src/middlewares/error.middleware.ts +0 -15
  444. package/lib/routing-controllers/src/middlewares/validation.middleware.ts +0 -27
  445. package/lib/routing-controllers/src/models/users.model.ts +0 -9
  446. package/lib/routing-controllers/src/server.ts +0 -9
  447. package/lib/routing-controllers/src/services/auth.service.ts +0 -53
  448. package/lib/routing-controllers/src/services/users.service.ts +0 -52
  449. package/lib/routing-controllers/src/test/auth.test.ts +0 -49
  450. package/lib/routing-controllers/src/test/users.test.ts +0 -65
  451. package/lib/routing-controllers/src/utils/logger.ts +0 -65
  452. package/lib/routing-controllers/src/utils/validateEnv.ts +0 -8
  453. package/lib/routing-controllers/tsconfig.json +0 -38
  454. package/lib/sequelize/.dockerignore +0 -18
  455. package/lib/sequelize/.editorconfig +0 -9
  456. package/lib/sequelize/.env.development.local +0 -20
  457. package/lib/sequelize/.env.production.local +0 -20
  458. package/lib/sequelize/.env.test.local +0 -20
  459. package/lib/sequelize/.eslintignore +0 -1
  460. package/lib/sequelize/.eslintrc +0 -18
  461. package/lib/sequelize/.huskyrc +0 -5
  462. package/lib/sequelize/.lintstagedrc.json +0 -5
  463. package/lib/sequelize/.prettierrc +0 -8
  464. package/lib/sequelize/.sequelizerc +0 -8
  465. package/lib/sequelize/.swcrc +0 -40
  466. package/lib/sequelize/.vscode/launch.json +0 -35
  467. package/lib/sequelize/.vscode/settings.json +0 -6
  468. package/lib/sequelize/Dockerfile.dev +0 -23
  469. package/lib/sequelize/Dockerfile.prod +0 -23
  470. package/lib/sequelize/Makefile +0 -46
  471. package/lib/sequelize/docker-compose.yml +0 -55
  472. package/lib/sequelize/docker-entrypoint.sh +0 -5
  473. package/lib/sequelize/ecosystem.config.js +0 -57
  474. package/lib/sequelize/jest.config.js +0 -12
  475. package/lib/sequelize/nginx.conf +0 -40
  476. package/lib/sequelize/nodemon.json +0 -12
  477. package/lib/sequelize/package.json +0 -82
  478. package/lib/sequelize/src/app.ts +0 -87
  479. package/lib/sequelize/src/config/index.ts +0 -6
  480. package/lib/sequelize/src/config/sequelize-cli.js +0 -15
  481. package/lib/sequelize/src/controllers/auth.controller.ts +0 -45
  482. package/lib/sequelize/src/controllers/users.controller.ts +0 -64
  483. package/lib/sequelize/src/database/index.ts +0 -34
  484. package/lib/sequelize/src/database/migrations/.gitkeep +0 -0
  485. package/lib/sequelize/src/database/seeders/.gitkeep +0 -0
  486. package/lib/sequelize/src/dtos/users.dto.ts +0 -20
  487. package/lib/sequelize/src/exceptions/HttpException.ts +0 -10
  488. package/lib/sequelize/src/http/auth.http +0 -27
  489. package/lib/sequelize/src/http/users.http +0 -34
  490. package/lib/sequelize/src/interfaces/auth.interface.ts +0 -15
  491. package/lib/sequelize/src/interfaces/routes.interface.ts +0 -6
  492. package/lib/sequelize/src/interfaces/users.interface.ts +0 -5
  493. package/lib/sequelize/src/middlewares/auth.middleware.ts +0 -38
  494. package/lib/sequelize/src/middlewares/error.middleware.ts +0 -15
  495. package/lib/sequelize/src/middlewares/validation.middleware.ts +0 -27
  496. package/lib/sequelize/src/models/users.model.ts +0 -39
  497. package/lib/sequelize/src/routes/auth.route.ts +0 -21
  498. package/lib/sequelize/src/routes/users.route.ts +0 -23
  499. package/lib/sequelize/src/server.ts +0 -10
  500. package/lib/sequelize/src/services/auth.service.ts +0 -52
  501. package/lib/sequelize/src/services/users.service.ts +0 -50
  502. package/lib/sequelize/src/test/auth.test.ts +0 -71
  503. package/lib/sequelize/src/test/users.test.ts +0 -131
  504. package/lib/sequelize/src/utils/logger.ts +0 -65
  505. package/lib/sequelize/src/utils/validateEnv.ts +0 -8
  506. package/lib/sequelize/swagger.yaml +0 -123
  507. package/lib/sequelize/tsconfig.json +0 -40
  508. package/lib/starter.js +0 -262
  509. package/lib/typegoose/.dockerignore +0 -18
  510. package/lib/typegoose/.editorconfig +0 -9
  511. package/lib/typegoose/.env.development.local +0 -18
  512. package/lib/typegoose/.env.production.local +0 -18
  513. package/lib/typegoose/.env.test.local +0 -18
  514. package/lib/typegoose/.eslintignore +0 -1
  515. package/lib/typegoose/.eslintrc +0 -18
  516. package/lib/typegoose/.huskyrc +0 -5
  517. package/lib/typegoose/.lintstagedrc.json +0 -5
  518. package/lib/typegoose/.prettierrc +0 -8
  519. package/lib/typegoose/.swcrc +0 -40
  520. package/lib/typegoose/.vscode/launch.json +0 -35
  521. package/lib/typegoose/.vscode/settings.json +0 -6
  522. package/lib/typegoose/Dockerfile.dev +0 -19
  523. package/lib/typegoose/Dockerfile.prod +0 -19
  524. package/lib/typegoose/Makefile +0 -46
  525. package/lib/typegoose/docker-compose.yml +0 -55
  526. package/lib/typegoose/ecosystem.config.js +0 -57
  527. package/lib/typegoose/jest.config.js +0 -12
  528. package/lib/typegoose/nginx.conf +0 -40
  529. package/lib/typegoose/nodemon.json +0 -12
  530. package/lib/typegoose/package.json +0 -79
  531. package/lib/typegoose/src/app.ts +0 -90
  532. package/lib/typegoose/src/config/index.ts +0 -6
  533. package/lib/typegoose/src/controllers/auth.controller.ts +0 -44
  534. package/lib/typegoose/src/controllers/users.controller.ts +0 -63
  535. package/lib/typegoose/src/database/index.ts +0 -18
  536. package/lib/typegoose/src/dtos/users.dto.ts +0 -20
  537. package/lib/typegoose/src/exceptions/HttpException.ts +0 -10
  538. package/lib/typegoose/src/http/auth.http +0 -27
  539. package/lib/typegoose/src/http/users.http +0 -34
  540. package/lib/typegoose/src/interfaces/auth.interface.ts +0 -15
  541. package/lib/typegoose/src/interfaces/routes.interface.ts +0 -6
  542. package/lib/typegoose/src/interfaces/users.interface.ts +0 -5
  543. package/lib/typegoose/src/middlewares/auth.middleware.ts +0 -38
  544. package/lib/typegoose/src/middlewares/error.middleware.ts +0 -15
  545. package/lib/typegoose/src/middlewares/validation.middleware.ts +0 -27
  546. package/lib/typegoose/src/models/users.model.ts +0 -16
  547. package/lib/typegoose/src/routes/auth.route.ts +0 -21
  548. package/lib/typegoose/src/routes/users.route.ts +0 -23
  549. package/lib/typegoose/src/server.ts +0 -10
  550. package/lib/typegoose/src/services/auth.service.ts +0 -52
  551. package/lib/typegoose/src/services/users.service.ts +0 -55
  552. package/lib/typegoose/src/test/auth.test.ts +0 -83
  553. package/lib/typegoose/src/test/users.test.ts +0 -133
  554. package/lib/typegoose/src/utils/logger.ts +0 -65
  555. package/lib/typegoose/src/utils/validateEnv.ts +0 -8
  556. package/lib/typegoose/swagger.yaml +0 -120
  557. package/lib/typegoose/tsconfig.json +0 -40
  558. package/lib/typeorm/.dockerignore +0 -18
  559. package/lib/typeorm/.editorconfig +0 -9
  560. package/lib/typeorm/.env.development.local +0 -20
  561. package/lib/typeorm/.env.production.local +0 -20
  562. package/lib/typeorm/.env.test.local +0 -20
  563. package/lib/typeorm/.eslintignore +0 -1
  564. package/lib/typeorm/.eslintrc +0 -18
  565. package/lib/typeorm/.huskyrc +0 -5
  566. package/lib/typeorm/.lintstagedrc.json +0 -5
  567. package/lib/typeorm/.prettierrc +0 -8
  568. package/lib/typeorm/.swcrc +0 -40
  569. package/lib/typeorm/.vscode/launch.json +0 -35
  570. package/lib/typeorm/.vscode/settings.json +0 -6
  571. package/lib/typeorm/Dockerfile.dev +0 -19
  572. package/lib/typeorm/Dockerfile.prod +0 -19
  573. package/lib/typeorm/Makefile +0 -46
  574. package/lib/typeorm/docker-compose.yml +0 -57
  575. package/lib/typeorm/ecosystem.config.js +0 -57
  576. package/lib/typeorm/jest.config.js +0 -12
  577. package/lib/typeorm/nginx.conf +0 -40
  578. package/lib/typeorm/nodemon.json +0 -12
  579. package/lib/typeorm/package.json +0 -78
  580. package/lib/typeorm/src/app.ts +0 -87
  581. package/lib/typeorm/src/config/index.ts +0 -6
  582. package/lib/typeorm/src/controllers/auth.controller.ts +0 -44
  583. package/lib/typeorm/src/controllers/users.controller.ts +0 -63
  584. package/lib/typeorm/src/database/index.ts +0 -26
  585. package/lib/typeorm/src/database/migrations/.gitkeep +0 -0
  586. package/lib/typeorm/src/dtos/users.dto.ts +0 -20
  587. package/lib/typeorm/src/entities/users.entity.ts +0 -26
  588. package/lib/typeorm/src/exceptions/HttpException.ts +0 -10
  589. package/lib/typeorm/src/http/auth.http +0 -27
  590. package/lib/typeorm/src/http/users.http +0 -34
  591. package/lib/typeorm/src/interfaces/auth.interface.ts +0 -15
  592. package/lib/typeorm/src/interfaces/routes.interface.ts +0 -6
  593. package/lib/typeorm/src/interfaces/users.interface.ts +0 -5
  594. package/lib/typeorm/src/middlewares/auth.middleware.ts +0 -38
  595. package/lib/typeorm/src/middlewares/error.middleware.ts +0 -15
  596. package/lib/typeorm/src/middlewares/validation.middleware.ts +0 -27
  597. package/lib/typeorm/src/routes/auth.route.ts +0 -21
  598. package/lib/typeorm/src/routes/users.route.ts +0 -23
  599. package/lib/typeorm/src/server.ts +0 -10
  600. package/lib/typeorm/src/services/auth.service.ts +0 -54
  601. package/lib/typeorm/src/services/users.service.ts +0 -51
  602. package/lib/typeorm/src/test/auth.test.ts +0 -75
  603. package/lib/typeorm/src/test/users.test.ts +0 -136
  604. package/lib/typeorm/src/utils/logger.ts +0 -65
  605. package/lib/typeorm/src/utils/validateEnv.ts +0 -8
  606. package/lib/typeorm/swagger.yaml +0 -123
  607. /package/{lib → templates}/default/src/interfaces/routes.interface.ts +0 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * AST manipulation utilities for Swagger injection
3
+ */
4
+
5
+ import { Project, QuoteKind } from 'ts-morph';
6
+ import fs from 'fs-extra';
7
+ import path from 'path';
8
+ import chalk from 'chalk';
9
+ import { ProjectGenerationError, withErrorHandling } from './errors.js';
10
+
11
+ /**
12
+ * Main Swagger injection function with proper error handling
13
+ */
14
+ export async function injectSwaggerIntoApp(destDir) {
15
+ const appPath = path.join(destDir, 'src', 'app.ts');
16
+
17
+ if (!(await fs.pathExists(appPath))) {
18
+ console.log(chalk.yellow(`[inject-swagger] skip: ${appPath} not found`));
19
+ return;
20
+ }
21
+
22
+ return withErrorHandling(async () => {
23
+ const project = createProject();
24
+ const source = project.addSourceFileAtPath(appPath);
25
+
26
+ await addSwaggerImports(source);
27
+ await updateEnvImports(source);
28
+ await addSwaggerMethod(source);
29
+ await updateConstructor(source);
30
+
31
+ source.formatText({ indentSize: 2, convertTabsToSpaces: true });
32
+ await source.save();
33
+ console.log(chalk.green('[inject-swagger] Successfully updated app.ts'));
34
+ }, 'Swagger injection failed')();
35
+ }
36
+
37
+ /**
38
+ * Create TypeScript project instance
39
+ */
40
+ function createProject() {
41
+ return new Project({
42
+ manipulationSettings: { quoteKind: QuoteKind.Single },
43
+ skipAddingFilesFromTsConfig: true,
44
+ });
45
+ }
46
+
47
+ /**
48
+ * Add Swagger-related imports
49
+ */
50
+ async function addSwaggerImports(source) {
51
+ const importDecls = source.getImportDeclarations();
52
+ const findImport = (mod) => importDecls.find((d) => d.getModuleSpecifierValue() === mod);
53
+ const morganImport = findImport('morgan');
54
+
55
+ // Remove existing swagger imports for repositioning
56
+ const swaggerJSDocImport = findImport('swagger-jsdoc');
57
+ const swaggerUiImport = findImport('swagger-ui-express');
58
+ if (swaggerJSDocImport) swaggerJSDocImport.remove();
59
+ if (swaggerUiImport) swaggerUiImport.remove();
60
+
61
+ // Calculate insertion index after morgan
62
+ const afterMorganIndex = morganImport
63
+ ? importDecls.indexOf(morganImport) + 1
64
+ : importDecls.length;
65
+
66
+ // Insert swagger imports
67
+ source.insertImportDeclaration(afterMorganIndex, {
68
+ defaultImport: 'swaggerJSDoc',
69
+ moduleSpecifier: 'swagger-jsdoc',
70
+ });
71
+
72
+ source.insertImportDeclaration(afterMorganIndex + 1, {
73
+ defaultImport: 'swaggerUi',
74
+ moduleSpecifier: 'swagger-ui-express',
75
+ });
76
+ }
77
+
78
+ /**
79
+ * Update environment imports to include API_SERVER_URL
80
+ */
81
+ async function updateEnvImports(source) {
82
+ const envImport = source
83
+ .getImportDeclarations()
84
+ .find((d) => d.getModuleSpecifierValue() === '@config/env');
85
+
86
+ if (!envImport) {
87
+ console.log(chalk.yellow('[inject-swagger] Warning: @config/env import not found'));
88
+ return;
89
+ }
90
+
91
+ // Skip if namespace import
92
+ if (envImport.getNamespaceImport()) return;
93
+
94
+ // Check if API_SERVER_URL is already imported
95
+ const hasNamed = envImport.getNamedImports().some((n) => n.getName() === 'API_SERVER_URL');
96
+
97
+ if (!hasNamed) {
98
+ envImport.addNamedImport('API_SERVER_URL');
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Add initializeSwagger method to App class
104
+ */
105
+ async function addSwaggerMethod(source) {
106
+ const appClass = source.getClass('App') || source.getClasses()[0];
107
+
108
+ if (!appClass) {
109
+ throw new ProjectGenerationError('No App class found in app.ts', 'swagger-injection');
110
+ }
111
+
112
+ // Check if method already exists
113
+ let initMethod = appClass.getInstanceMethod('initializeSwagger');
114
+ if (initMethod) {
115
+ console.log(chalk.yellow('[inject-swagger] initializeSwagger method already exists, skipping'));
116
+ return;
117
+ }
118
+
119
+ const errorMethod = appClass.getInstanceMethod('initializeErrorHandling');
120
+ const insertIndex = errorMethod ? errorMethod.getChildIndex() : undefined;
121
+
122
+ const methodStructure = {
123
+ name: 'initializeSwagger',
124
+ scope: 'private',
125
+ parameters: [{ name: 'apiPrefix', type: 'string' }],
126
+ statements: generateSwaggerMethodBody(),
127
+ };
128
+
129
+ if (insertIndex !== undefined) {
130
+ appClass.insertMethod(insertIndex, methodStructure);
131
+ } else {
132
+ appClass.addMethod(methodStructure);
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Generate the body of the initializeSwagger method
138
+ */
139
+ function generateSwaggerMethodBody() {
140
+ return (writer) => {
141
+ writer.writeLine('const options = {');
142
+ writer.indent(() => {
143
+ writer.writeLine('swaggerDefinition: {');
144
+ writer.indent(() => {
145
+ writer.writeLine(`openapi: '3.0.0',`);
146
+ writer.writeLine('info: {');
147
+ writer.indent(() => {
148
+ writer.writeLine(`title: 'REST API',`);
149
+ writer.writeLine(`version: '1.0.0',`);
150
+ writer.writeLine(`description: 'Example API Documentation',`);
151
+ });
152
+ writer.writeLine('},');
153
+ writer.writeLine('servers: [');
154
+ writer.indent(() => {
155
+ writer.writeLine('{');
156
+ writer.indent(() => {
157
+ writer.writeLine(
158
+ `url: API_SERVER_URL || \`http://localhost:\${this.port}\${apiPrefix}\`,`,
159
+ );
160
+ writer.writeLine(
161
+ `description: this.env === 'production' ? 'Production server' : 'Local server',`,
162
+ );
163
+ });
164
+ writer.writeLine('},');
165
+ });
166
+ writer.writeLine('],');
167
+ writer.writeLine('components: {');
168
+ writer.indent(() => {
169
+ writer.writeLine('securitySchemes: {');
170
+ writer.indent(() => {
171
+ writer.writeLine('bearerAuth: {');
172
+ writer.indent(() => {
173
+ writer.writeLine(`type: 'http',`);
174
+ writer.writeLine(`scheme: 'bearer',`);
175
+ writer.writeLine(`bearerFormat: 'JWT',`);
176
+ });
177
+ writer.writeLine('},');
178
+ });
179
+ writer.writeLine('},');
180
+ });
181
+ writer.writeLine('},');
182
+ });
183
+ writer.writeLine('},');
184
+ writer.writeLine("apis: ['swagger.yaml', 'src/controllers/*.ts'],");
185
+ });
186
+ writer.writeLine('};');
187
+ writer.blankLine();
188
+ writer.writeLine('const specs = swaggerJSDoc(options);');
189
+ writer.writeLine(`this.app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));`);
190
+ };
191
+ }
192
+
193
+ /**
194
+ * Update constructor to call initializeSwagger
195
+ */
196
+ async function updateConstructor(source) {
197
+ const appClass = source.getClass('App') || source.getClasses()[0];
198
+ if (!appClass) return;
199
+
200
+ const constructor = appClass.getConstructors()[0];
201
+ if (!constructor) {
202
+ console.log(chalk.yellow('[inject-swagger] Warning: No constructor found'));
203
+ return;
204
+ }
205
+
206
+ const bodyText = constructor.getBodyText();
207
+ if (bodyText.includes('this.initializeSwagger')) {
208
+ console.log(chalk.yellow('[inject-swagger] Constructor already calls initializeSwagger'));
209
+ return;
210
+ }
211
+
212
+ // Find initializeErrorHandling call and insert before it
213
+ const statements = constructor.getBody().getStatements();
214
+ const errorHandlingIndex = statements.findIndex((stmt) =>
215
+ stmt.getText().includes('this.initializeErrorHandling'),
216
+ );
217
+
218
+ if (errorHandlingIndex !== -1) {
219
+ constructor.insertStatements(errorHandlingIndex, 'this.initializeSwagger(apiPrefix);');
220
+ console.log(chalk.green('[inject-swagger] Added initializeSwagger call to constructor'));
221
+ } else {
222
+ // Fallback: append to end of constructor
223
+ constructor.addStatements('this.initializeSwagger(apiPrefix);');
224
+ console.log(chalk.green('[inject-swagger] Added initializeSwagger call at end of constructor'));
225
+ }
226
+ }
package/bin/common.js ADDED
@@ -0,0 +1,312 @@
1
+ import { fileURLToPath } from 'url';
2
+ import path from 'path';
3
+
4
+ export const PACKAGE_MANAGER = [
5
+ { label: 'npm', value: 'npm' },
6
+ { label: 'pnpm', value: 'pnpm' },
7
+ { label: 'yarn', value: 'yarn' },
8
+ ];
9
+
10
+ export const TEMPLATES_VALUES = [
11
+ {
12
+ name: 'Default',
13
+ value: 'default',
14
+ desc: 'Basic Express + TypeScript project',
15
+ active: true,
16
+ tags: ['express', 'typescript', 'starter'],
17
+ version: 'v1.0.0',
18
+ maintainer: 'core',
19
+ lastUpdated: '2025-08-27',
20
+ },
21
+ {
22
+ name: 'GraphQL',
23
+ value: 'graphql',
24
+ desc: 'GraphQL API template based on Apollo Server',
25
+ active: false,
26
+ tags: ['graphql', 'apollo', 'api'],
27
+ version: 'v1.2.0',
28
+ maintainer: 'core',
29
+ lastUpdated: '2025-08-10',
30
+ },
31
+ {
32
+ name: 'Knex',
33
+ value: 'knex',
34
+ desc: 'SQL query builder template using Knex.js',
35
+ active: false,
36
+ tags: ['sql', 'knex', 'database'],
37
+ version: 'v0.95.x',
38
+ maintainer: 'db-team',
39
+ lastUpdated: '2025-07-30',
40
+ },
41
+ {
42
+ name: 'Mikro-ORM',
43
+ value: 'mikro-orm',
44
+ desc: 'TypeScript ORM template based on Mikro-ORM',
45
+ active: false,
46
+ tags: ['orm', 'typescript', 'database'],
47
+ version: 'v6.x',
48
+ maintainer: 'orm-team',
49
+ lastUpdated: '2025-07-25',
50
+ },
51
+ {
52
+ name: 'Mongoose',
53
+ value: 'mongoose',
54
+ desc: 'MongoDB ODM template using Mongoose',
55
+ active: false,
56
+ tags: ['mongodb', 'odm', 'database'],
57
+ version: 'v7.x',
58
+ maintainer: 'nosql-team',
59
+ lastUpdated: '2025-08-01',
60
+ },
61
+ {
62
+ name: 'Node-Postgres',
63
+ value: 'node-postgres',
64
+ desc: 'PostgreSQL template using pg library',
65
+ active: false,
66
+ tags: ['postgres', 'sql', 'database'],
67
+ version: 'v8.x',
68
+ maintainer: 'db-team',
69
+ lastUpdated: '2025-07-20',
70
+ },
71
+ {
72
+ name: 'Prisma',
73
+ value: 'prisma',
74
+ desc: 'SQL/NoSQL ORM template based on Prisma',
75
+ active: false,
76
+ tags: ['orm', 'prisma', 'database'],
77
+ version: 'v5.x',
78
+ maintainer: 'orm-team',
79
+ lastUpdated: '2025-08-05',
80
+ },
81
+ {
82
+ name: 'Routing-Controllers',
83
+ value: 'routing-controllers',
84
+ desc: 'Express controller structure with TypeScript decorators',
85
+ active: false,
86
+ tags: ['decorator', 'controller', 'express'],
87
+ version: 'v0.10.x',
88
+ maintainer: 'core',
89
+ lastUpdated: '2025-07-15',
90
+ },
91
+ {
92
+ name: 'Sequelize',
93
+ value: 'sequelize',
94
+ desc: 'SQL ORM template based on Sequelize',
95
+ active: false,
96
+ tags: ['orm', 'sequelize', 'database'],
97
+ version: 'v6.x',
98
+ maintainer: 'orm-team',
99
+ lastUpdated: '2025-07-28',
100
+ },
101
+ {
102
+ name: 'Typegoose',
103
+ value: 'typegoose',
104
+ desc: 'TypeScript-friendly MongoDB ODM using Typegoose',
105
+ active: false,
106
+ tags: ['mongodb', 'typegoose', 'odm'],
107
+ version: 'v11.x',
108
+ maintainer: 'nosql-team',
109
+ lastUpdated: '2025-08-08',
110
+ },
111
+ {
112
+ name: 'TypeORM',
113
+ value: 'typeorm',
114
+ desc: 'SQL/NoSQL ORM template based on TypeORM',
115
+ active: false,
116
+ tags: ['orm', 'typeorm', 'database'],
117
+ version: 'v0.3.x',
118
+ maintainer: 'orm-team',
119
+ lastUpdated: '2025-07-18',
120
+ },
121
+ ];
122
+
123
+ export const DEVTOOLS_VALUES = [
124
+ // == [Linter] == //
125
+ {
126
+ name: 'Biome',
127
+ value: 'biome',
128
+ category: 'Linter',
129
+ files: ['.biome.json', '.biomeignore'],
130
+ pkgs: [],
131
+ devPkgs: ['@biomejs/biome@2.1.4'],
132
+ scripts: {
133
+ lint: 'biome lint .',
134
+ check: 'biome check .',
135
+ format: 'biome format . --write',
136
+ },
137
+ desc: 'All-in-one formatter and linter',
138
+ },
139
+ {
140
+ name: 'ESLint & Prettier',
141
+ value: 'eslint',
142
+ category: 'Linter',
143
+ files: ['.prettierrc', 'eslint.config.cjs'],
144
+ pkgs: [],
145
+ devPkgs: [
146
+ 'eslint@^9.33.0',
147
+ 'eslint-config-prettier@^10.1.1',
148
+ 'globals@^15.10.0',
149
+ 'prettier@3.6.2',
150
+ 'typescript-eslint@^8.39.0',
151
+ ],
152
+ scripts: {
153
+ lint: 'eslint --ext .ts src/',
154
+ 'lint:fix': 'npm run lint -- --fix',
155
+ format: 'prettier --check .',
156
+ 'format:fix': 'prettier --write .',
157
+ },
158
+ desc: 'Separate formatter and linter setup',
159
+ },
160
+ {
161
+ name: 'Oxlint',
162
+ value: 'oxlint',
163
+ category: 'Linter',
164
+ files: ['.oxlintrc.json', '.prettierrc'],
165
+ pkgs: [],
166
+ devPkgs: ['oxlint@^1.14.0', '@oxlint/migrate@^1.14.0', 'prettier@3.6.2'],
167
+ scripts: {
168
+ lint: 'oxlint .',
169
+ 'lint:fix': 'oxlint . --fix',
170
+ format: 'prettier --check .',
171
+ 'format:fix': 'prettier --write .',
172
+ },
173
+ desc: 'Ultra-fast Rust linter for JS/TS',
174
+ },
175
+
176
+ // == [Compiler] == //
177
+ {
178
+ name: 'tsup',
179
+ value: 'tsup',
180
+ category: 'Compiler',
181
+ files: ['tsup.config.ts'],
182
+ pkgs: [],
183
+ devPkgs: ['tsup@8.5.0'],
184
+ scripts: {
185
+ 'start:tsup': 'node -r tsconfig-paths/register dist/server.js',
186
+ 'build:tsup': 'tsup --config tsup.config.ts',
187
+ },
188
+ desc: 'Fast bundler for TypeScript',
189
+ },
190
+ {
191
+ name: 'SWC',
192
+ value: 'swc',
193
+ category: 'Compiler',
194
+ files: ['.swcrc'],
195
+ pkgs: [],
196
+ devPkgs: ['@swc/cli@0.7.8', '@swc/core@1.13.3'],
197
+ scripts: {
198
+ 'start:swc': 'node dist/server.js',
199
+ 'build:swc': 'swc src -d dist --strip-leading-paths --copy-files --delete-dir-on-start',
200
+ },
201
+ desc: 'Rust-based TypeScript compiler',
202
+ },
203
+
204
+ // == [Testing] == //
205
+ {
206
+ name: 'Jest',
207
+ value: 'jest',
208
+ category: 'Testing',
209
+ files: ['jest.config.cjs', 'jest.config.ts'],
210
+ pkgs: [],
211
+ devPkgs: [
212
+ '@types/supertest@6.0.3',
213
+ 'supertest@7.1.4',
214
+ '@types/jest@30.0.0',
215
+ 'jest@30.0.5',
216
+ 'ts-jest@29.4.1',
217
+ 'ts-node@10.9.2',
218
+ ],
219
+ scripts: {
220
+ test: 'jest --config jest.config.cjs --watch',
221
+ 'test:e2e': 'jest --config jest.config.cjs --testPathPatterns=e2e --watch',
222
+ 'test:unit': 'jest --config jest.config.cjs --testPathPatterns=unit --watch',
223
+ },
224
+ desc: 'Industry-standard test runner for Node.js',
225
+ },
226
+ {
227
+ name: 'Vitest',
228
+ value: 'vitest',
229
+ category: 'Testing',
230
+ files: ['vitest.config.ts'],
231
+ pkgs: [],
232
+ devPkgs: [
233
+ '@types/supertest@6.0.3',
234
+ 'supertest@7.1.4',
235
+ 'vite-tsconfig-paths@5.1.4',
236
+ 'vitest@3.2.4',
237
+ ],
238
+ scripts: {
239
+ test: 'vitest',
240
+ 'test:unit': 'vitest src/test/unit',
241
+ 'test:e2e': 'vitest src/test/e2e',
242
+ 'test:ci': 'vitest run --coverage',
243
+ 'test:ci:unit': 'vitest run src/test/unit --coverage',
244
+ 'test:ci:e2e': 'vitest run src/test/e2e --coverage',
245
+ },
246
+ desc: 'Fast Vite-powered unit/e2e test framework',
247
+ },
248
+
249
+ // == [API development] == //
250
+ {
251
+ name: 'Swagger',
252
+ value: 'swagger',
253
+ category: 'API development',
254
+ files: ['swagger.yaml'],
255
+ pkgs: ['swagger-jsdoc@^6.2.8', 'swagger-ui-express@^5.0.1'],
256
+ devPkgs: ['@types/swagger-jsdoc@^6.0.4', '@types/swagger-ui-express@^4.1.8'],
257
+ scripts: {},
258
+ desc: 'Simplify your API development with our open-source and professional tools',
259
+ },
260
+
261
+ // == [Infrastructure] == //
262
+ {
263
+ name: 'Docker',
264
+ value: 'docker',
265
+ category: 'Infrastructure',
266
+ files: ['.dockerignore', 'Dockerfile.dev', 'Dockerfile.prod', 'nginx.conf', 'Makefile'],
267
+ pkgs: [],
268
+ devPkgs: [],
269
+ scripts: {},
270
+ desc: 'Containerized dev & prod environment',
271
+ },
272
+
273
+ // == [Git Tools] == //
274
+ {
275
+ name: 'Husky',
276
+ value: 'husky',
277
+ category: 'Git Tools',
278
+ files: ['.husky'],
279
+ pkgs: [],
280
+ devPkgs: ['husky'],
281
+ scripts: { prepare: 'husky install' },
282
+ requires: [],
283
+ desc: 'Git hooks for automation',
284
+ },
285
+
286
+ // == [Deployment] == //
287
+ {
288
+ name: 'PM2',
289
+ value: 'pm2',
290
+ category: 'Deployment',
291
+ files: ['ecosystem.config.js'],
292
+ pkgs: ['pm2'],
293
+ devPkgs: [],
294
+ scripts: {
295
+ 'deploy:prod': 'pm2 start ecosystem.config.js --only prod',
296
+ 'deploy:dev': 'pm2 start ecosystem.config.js --only dev',
297
+ },
298
+ desc: 'Process manager for Node.js',
299
+ },
300
+
301
+ // == [CI/CD] == //
302
+ {
303
+ name: 'GitHub Actions',
304
+ value: 'github',
305
+ category: 'CI/CD',
306
+ files: ['.github/workflows/ci.yml'],
307
+ pkgs: [],
308
+ devPkgs: [],
309
+ scripts: {},
310
+ desc: 'CI/CD workflow automation',
311
+ },
312
+ ];
package/bin/config.js ADDED
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Configuration constants and settings for the CLI
3
+ */
4
+
5
+ import { fileURLToPath } from 'url';
6
+ import path from 'path';
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+
10
+ export const CONFIG = {
11
+ // Version and compatibility
12
+ minNodeVersion: 16,
13
+
14
+ // Default values
15
+ defaultProjectName: 'my-app',
16
+ maxProjectNameLength: 50,
17
+
18
+ // Network settings
19
+ registryUrl: 'https://registry.npmjs.org/',
20
+ timeout: {
21
+ packageInstall: 30000,
22
+ versionCheck: 5000,
23
+ networkRequest: 10000,
24
+ },
25
+
26
+ // File paths
27
+ paths: {
28
+ templates: path.join(__dirname, '../templates'),
29
+ devtools: path.join(__dirname, '../devtools'),
30
+ },
31
+
32
+ // Validation patterns
33
+ validation: {
34
+ projectName: /^[a-zA-Z0-9-_]+$/,
35
+ packageName: /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,
36
+ version: /^\d+\.\d+\.\d+(-[a-zA-Z0-9]+)?$/,
37
+ },
38
+
39
+ // UI settings
40
+ ui: {
41
+ spinnerInterval: 100,
42
+ maxRetries: 3,
43
+ },
44
+
45
+ // Banner configuration
46
+ banner: {
47
+ gradient:
48
+ '\x1B[38;2;91;192;222m📘\x1B[39m\x1B[38;2;91;192;222m \x1B[39m\x1B[38;2;91;192;222mT\x1B[39m\x1B[38;2;82;175;222my\x1B[39m\x1B[38;2;74;159;222mp\x1B[39m\x1B[38;2;66;143;210me\x1B[39m\x1B[38;2;58;128;198mS\x1B[39m\x1B[38;2;54;124;190mc\x1B[39m\x1B[38;2;52;118;180mr\x1B[39m\x1B[38;2;50;115;172mi\x1B[39m\x1B[38;2;49;120;198mp\x1B[39m\x1B[38;2;47;110;168mt\x1B[39m\x1B[38;2;45;105;160m \x1B[39m\x1B[38;2;43;100;152mE\x1B[39m\x1B[38;2;41;95;144mx\x1B[39m\x1B[38;2;39;90;136mp\x1B[39m\x1B[38;2;37;85;128mr\x1B[39m\x1B[38;2;35;80;120me\x1B[39m\x1B[38;2;33;75;112ms\x1B[39m\x1B[38;2;30;72;106ms\x1B[39m\x1B[38;2;28;70;100m \x1B[39m\x1B[38;2;26;68;96mS\x1B[39m\x1B[38;2;25;68;94mt\x1B[39m\x1B[38;2;25;69;92ma\x1B[39m\x1B[38;2;25;70;91mr\x1B[39m\x1B[38;2;25;70;150mt\x1B[39m\x1B[38;2;25;70;150me\x1B[39m\x1B[38;2;25;70;150mr\x1B[39m',
49
+ },
50
+ };
51
+
52
+ /**
53
+ * Environment-specific configuration
54
+ */
55
+ export const getEnvironmentConfig = () => {
56
+ const env = process.env.NODE_ENV || 'production';
57
+
58
+ const envConfigs = {
59
+ development: {
60
+ verbose: true,
61
+ dryRun: false,
62
+ skipVersionCheck: false,
63
+ },
64
+ test: {
65
+ verbose: false,
66
+ dryRun: true,
67
+ skipVersionCheck: true,
68
+ },
69
+ production: {
70
+ verbose: false,
71
+ dryRun: false,
72
+ skipVersionCheck: false,
73
+ },
74
+ };
75
+
76
+ return {
77
+ ...CONFIG,
78
+ env: envConfigs[env] || envConfigs.production,
79
+ };
80
+ };