@zintrust/core 0.1.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 (494) hide show
  1. package/bin/z.d.ts +7 -0
  2. package/bin/z.d.ts.map +1 -0
  3. package/bin/z.js +6 -0
  4. package/bin/zin.d.ts +7 -0
  5. package/bin/zin.d.ts.map +1 -0
  6. package/bin/zin.js +6 -0
  7. package/bin/zintrust-microservices.d.ts +7 -0
  8. package/bin/zintrust-microservices.d.ts.map +1 -0
  9. package/bin/zintrust-microservices.js +165 -0
  10. package/bin/zintrust.d.ts +9 -0
  11. package/bin/zintrust.d.ts.map +1 -0
  12. package/bin/zintrust.js +51 -0
  13. package/bin/zt.d.ts +7 -0
  14. package/bin/zt.d.ts.map +1 -0
  15. package/bin/zt.js +6 -0
  16. package/package.json +80 -0
  17. package/src/boot/Application.d.ts +31 -0
  18. package/src/boot/Application.d.ts.map +1 -0
  19. package/src/boot/Application.js +159 -0
  20. package/src/boot/Server.d.ts +23 -0
  21. package/src/boot/Server.d.ts.map +1 -0
  22. package/src/boot/Server.js +236 -0
  23. package/src/boot/bootstrap.d.ts +7 -0
  24. package/src/boot/bootstrap.d.ts.map +1 -0
  25. package/src/boot/bootstrap.js +64 -0
  26. package/src/builder/BundleOptimizer.d.ts +42 -0
  27. package/src/builder/BundleOptimizer.d.ts.map +1 -0
  28. package/src/builder/BundleOptimizer.js +356 -0
  29. package/src/cache/Cache.d.ts +26 -0
  30. package/src/cache/Cache.d.ts.map +1 -0
  31. package/src/cache/Cache.js +89 -0
  32. package/src/cache/CacheDriver.d.ts +28 -0
  33. package/src/cache/CacheDriver.d.ts.map +1 -0
  34. package/src/cache/CacheDriver.js +6 -0
  35. package/src/cache/drivers/KVDriver.d.ts +12 -0
  36. package/src/cache/drivers/KVDriver.d.ts.map +1 -0
  37. package/src/cache/drivers/KVDriver.js +54 -0
  38. package/src/cache/drivers/MemoryDriver.d.ts +12 -0
  39. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -0
  40. package/src/cache/drivers/MemoryDriver.js +50 -0
  41. package/src/cache/drivers/MongoDriver.d.ts +17 -0
  42. package/src/cache/drivers/MongoDriver.d.ts.map +1 -0
  43. package/src/cache/drivers/MongoDriver.js +80 -0
  44. package/src/cache/drivers/RedisDriver.d.ts +12 -0
  45. package/src/cache/drivers/RedisDriver.d.ts.map +1 -0
  46. package/src/cache/drivers/RedisDriver.js +79 -0
  47. package/src/cli/BaseCommand.d.ts +39 -0
  48. package/src/cli/BaseCommand.d.ts.map +1 -0
  49. package/src/cli/BaseCommand.js +58 -0
  50. package/src/cli/CLI.d.ts +21 -0
  51. package/src/cli/CLI.d.ts.map +1 -0
  52. package/src/cli/CLI.js +203 -0
  53. package/src/cli/ErrorHandler.d.ts +23 -0
  54. package/src/cli/ErrorHandler.d.ts.map +1 -0
  55. package/src/cli/ErrorHandler.js +95 -0
  56. package/src/cli/PromptHelper.d.ts +47 -0
  57. package/src/cli/PromptHelper.d.ts.map +1 -0
  58. package/src/cli/PromptHelper.js +155 -0
  59. package/src/cli/commands/AddCommand.d.ts +15 -0
  60. package/src/cli/commands/AddCommand.d.ts.map +1 -0
  61. package/src/cli/commands/AddCommand.js +817 -0
  62. package/src/cli/commands/ConfigCommand.d.ts +15 -0
  63. package/src/cli/commands/ConfigCommand.d.ts.map +1 -0
  64. package/src/cli/commands/ConfigCommand.js +273 -0
  65. package/src/cli/commands/D1MigrateCommand.d.ts +15 -0
  66. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -0
  67. package/src/cli/commands/D1MigrateCommand.js +73 -0
  68. package/src/cli/commands/DebugCommand.d.ts +15 -0
  69. package/src/cli/commands/DebugCommand.d.ts.map +1 -0
  70. package/src/cli/commands/DebugCommand.js +52 -0
  71. package/src/cli/commands/FixCommand.d.ts +15 -0
  72. package/src/cli/commands/FixCommand.d.ts.map +1 -0
  73. package/src/cli/commands/FixCommand.js +80 -0
  74. package/src/cli/commands/KeyGenerateCommand.d.ts +9 -0
  75. package/src/cli/commands/KeyGenerateCommand.d.ts.map +1 -0
  76. package/src/cli/commands/KeyGenerateCommand.js +76 -0
  77. package/src/cli/commands/LogsCommand.d.ts +19 -0
  78. package/src/cli/commands/LogsCommand.d.ts.map +1 -0
  79. package/src/cli/commands/LogsCommand.js +185 -0
  80. package/src/cli/commands/MigrateCommand.d.ts +15 -0
  81. package/src/cli/commands/MigrateCommand.d.ts.map +1 -0
  82. package/src/cli/commands/MigrateCommand.js +56 -0
  83. package/src/cli/commands/NewCommand.d.ts +32 -0
  84. package/src/cli/commands/NewCommand.d.ts.map +1 -0
  85. package/src/cli/commands/NewCommand.js +280 -0
  86. package/src/cli/commands/PluginCommand.d.ts +9 -0
  87. package/src/cli/commands/PluginCommand.d.ts.map +1 -0
  88. package/src/cli/commands/PluginCommand.js +94 -0
  89. package/src/cli/commands/PrepareCommand.d.ts +8 -0
  90. package/src/cli/commands/PrepareCommand.d.ts.map +1 -0
  91. package/src/cli/commands/PrepareCommand.js +51 -0
  92. package/src/cli/commands/QACommand.d.ts +33 -0
  93. package/src/cli/commands/QACommand.d.ts.map +1 -0
  94. package/src/cli/commands/QACommand.js +490 -0
  95. package/src/cli/commands/SimulateCommand.d.ts +12 -0
  96. package/src/cli/commands/SimulateCommand.d.ts.map +1 -0
  97. package/src/cli/commands/SimulateCommand.js +79 -0
  98. package/src/cli/commands/StartCommand.d.ts +5 -0
  99. package/src/cli/commands/StartCommand.d.ts.map +1 -0
  100. package/src/cli/commands/StartCommand.js +227 -0
  101. package/src/cli/commands/index.d.ts +11 -0
  102. package/src/cli/commands/index.d.ts.map +1 -0
  103. package/src/cli/commands/index.js +10 -0
  104. package/src/cli/config/ConfigManager.d.ts +42 -0
  105. package/src/cli/config/ConfigManager.d.ts.map +1 -0
  106. package/src/cli/config/ConfigManager.js +175 -0
  107. package/src/cli/config/ConfigSchema.d.ts +195 -0
  108. package/src/cli/config/ConfigSchema.d.ts.map +1 -0
  109. package/src/cli/config/ConfigSchema.js +171 -0
  110. package/src/cli/config/ConfigValidator.d.ts +41 -0
  111. package/src/cli/config/ConfigValidator.d.ts.map +1 -0
  112. package/src/cli/config/ConfigValidator.js +200 -0
  113. package/src/cli/config/index.d.ts +8 -0
  114. package/src/cli/config/index.d.ts.map +1 -0
  115. package/src/cli/config/index.js +7 -0
  116. package/src/cli/debug/Dashboard.d.ts +34 -0
  117. package/src/cli/debug/Dashboard.d.ts.map +1 -0
  118. package/src/cli/debug/Dashboard.js +152 -0
  119. package/src/cli/index.d.ts +14 -0
  120. package/src/cli/index.d.ts.map +1 -0
  121. package/src/cli/index.js +14 -0
  122. package/src/cli/logger/Logger.d.ts +43 -0
  123. package/src/cli/logger/Logger.d.ts.map +1 -0
  124. package/src/cli/logger/Logger.js +137 -0
  125. package/src/cli/scaffolding/ControllerGenerator.d.ts +44 -0
  126. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -0
  127. package/src/cli/scaffolding/ControllerGenerator.js +540 -0
  128. package/src/cli/scaffolding/FactoryGenerator.d.ts +47 -0
  129. package/src/cli/scaffolding/FactoryGenerator.d.ts.map +1 -0
  130. package/src/cli/scaffolding/FactoryGenerator.js +356 -0
  131. package/src/cli/scaffolding/FeatureScaffolder.d.ts +40 -0
  132. package/src/cli/scaffolding/FeatureScaffolder.d.ts.map +1 -0
  133. package/src/cli/scaffolding/FeatureScaffolder.js +747 -0
  134. package/src/cli/scaffolding/FileGenerator.d.ts +31 -0
  135. package/src/cli/scaffolding/FileGenerator.d.ts.map +1 -0
  136. package/src/cli/scaffolding/FileGenerator.js +222 -0
  137. package/src/cli/scaffolding/MigrationGenerator.d.ts +35 -0
  138. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -0
  139. package/src/cli/scaffolding/MigrationGenerator.js +257 -0
  140. package/src/cli/scaffolding/ModelGenerator.d.ts +81 -0
  141. package/src/cli/scaffolding/ModelGenerator.d.ts.map +1 -0
  142. package/src/cli/scaffolding/ModelGenerator.js +249 -0
  143. package/src/cli/scaffolding/ProjectScaffolder.d.ts +66 -0
  144. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -0
  145. package/src/cli/scaffolding/ProjectScaffolder.js +439 -0
  146. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts +50 -0
  147. package/src/cli/scaffolding/RequestFactoryGenerator.d.ts.map +1 -0
  148. package/src/cli/scaffolding/RequestFactoryGenerator.js +465 -0
  149. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts +43 -0
  150. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +1 -0
  151. package/src/cli/scaffolding/ResponseFactoryGenerator.js +321 -0
  152. package/src/cli/scaffolding/RouteGenerator.d.ts +66 -0
  153. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -0
  154. package/src/cli/scaffolding/RouteGenerator.js +306 -0
  155. package/src/cli/scaffolding/SeederGenerator.d.ts +47 -0
  156. package/src/cli/scaffolding/SeederGenerator.d.ts.map +1 -0
  157. package/src/cli/scaffolding/SeederGenerator.js +286 -0
  158. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts +40 -0
  159. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +1 -0
  160. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +267 -0
  161. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +45 -0
  162. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +1 -0
  163. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +397 -0
  164. package/src/cli/scaffolding/ServiceScaffolder.d.ts +45 -0
  165. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -0
  166. package/src/cli/scaffolding/ServiceScaffolder.js +367 -0
  167. package/src/cli/scaffolding/TemplateEngine.d.ts +35 -0
  168. package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -0
  169. package/src/cli/scaffolding/TemplateEngine.js +379 -0
  170. package/src/cli/scaffolding/WorkflowGenerator.d.ts +31 -0
  171. package/src/cli/scaffolding/WorkflowGenerator.d.ts.map +1 -0
  172. package/src/cli/scaffolding/WorkflowGenerator.js +193 -0
  173. package/src/cli/scaffolding/index.d.ts +34 -0
  174. package/src/cli/scaffolding/index.d.ts.map +1 -0
  175. package/src/cli/scaffolding/index.js +18 -0
  176. package/src/cli/utils/DistPackager.d.ts +8 -0
  177. package/src/cli/utils/DistPackager.d.ts.map +1 -0
  178. package/src/cli/utils/DistPackager.js +94 -0
  179. package/src/cli/utils/EnvFileLoader.d.ts +21 -0
  180. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -0
  181. package/src/cli/utils/EnvFileLoader.js +166 -0
  182. package/src/cli/utils/spawn.d.ts +11 -0
  183. package/src/cli/utils/spawn.d.ts.map +1 -0
  184. package/src/cli/utils/spawn.js +81 -0
  185. package/src/common/index.d.ts +87 -0
  186. package/src/common/index.d.ts.map +1 -0
  187. package/src/common/index.js +207 -0
  188. package/src/config/SecretsManager.d.ts +122 -0
  189. package/src/config/SecretsManager.d.ts.map +1 -0
  190. package/src/config/SecretsManager.js +328 -0
  191. package/src/config/app.d.ts +56 -0
  192. package/src/config/app.d.ts.map +1 -0
  193. package/src/config/app.js +77 -0
  194. package/src/config/cache.d.ts +76 -0
  195. package/src/config/cache.d.ts.map +1 -0
  196. package/src/config/cache.js +62 -0
  197. package/src/config/constants.d.ts +108 -0
  198. package/src/config/constants.d.ts.map +1 -0
  199. package/src/config/constants.js +64 -0
  200. package/src/config/database.d.ts +122 -0
  201. package/src/config/database.d.ts.map +1 -0
  202. package/src/config/database.js +89 -0
  203. package/src/config/env.d.ts +56 -0
  204. package/src/config/env.d.ts.map +1 -0
  205. package/src/config/env.js +133 -0
  206. package/src/config/features.d.ts +27 -0
  207. package/src/config/features.d.ts.map +1 -0
  208. package/src/config/features.js +49 -0
  209. package/src/config/index.d.ts +554 -0
  210. package/src/config/index.d.ts.map +1 -0
  211. package/src/config/index.js +31 -0
  212. package/src/config/logger.d.ts +17 -0
  213. package/src/config/logger.d.ts.map +1 -0
  214. package/src/config/logger.js +77 -0
  215. package/src/config/microservices.d.ts +88 -0
  216. package/src/config/microservices.d.ts.map +1 -0
  217. package/src/config/microservices.js +90 -0
  218. package/src/config/queue.d.ts +107 -0
  219. package/src/config/queue.d.ts.map +1 -0
  220. package/src/config/queue.js +74 -0
  221. package/src/config/security.d.ts +108 -0
  222. package/src/config/security.d.ts.map +1 -0
  223. package/src/config/security.js +134 -0
  224. package/src/config/storage.d.ts +105 -0
  225. package/src/config/storage.d.ts.map +1 -0
  226. package/src/config/storage.js +79 -0
  227. package/src/container/ServiceContainer.d.ts +25 -0
  228. package/src/container/ServiceContainer.d.ts.map +1 -0
  229. package/src/container/ServiceContainer.js +75 -0
  230. package/src/database/migrations/index.d.ts +2 -0
  231. package/src/database/migrations/index.d.ts.map +1 -0
  232. package/src/database/migrations/index.js +1 -0
  233. package/src/exceptions/ZintrustError.d.ts +88 -0
  234. package/src/exceptions/ZintrustError.d.ts.map +1 -0
  235. package/src/exceptions/ZintrustError.js +110 -0
  236. package/src/features/Auth.d.ts +20 -0
  237. package/src/features/Auth.d.ts.map +1 -0
  238. package/src/features/Auth.js +32 -0
  239. package/src/features/Queue.d.ts +21 -0
  240. package/src/features/Queue.d.ts.map +1 -0
  241. package/src/features/Queue.js +59 -0
  242. package/src/functions/cloudflare.d.ts +5 -0
  243. package/src/functions/cloudflare.d.ts.map +1 -0
  244. package/src/functions/cloudflare.js +34 -0
  245. package/src/functions/deno.d.ts +3 -0
  246. package/src/functions/deno.d.ts.map +1 -0
  247. package/src/functions/deno.js +31 -0
  248. package/src/functions/lambda.d.ts +2 -0
  249. package/src/functions/lambda.d.ts.map +1 -0
  250. package/src/functions/lambda.js +32 -0
  251. package/src/http/Controller.d.ts +20 -0
  252. package/src/http/Controller.d.ts.map +1 -0
  253. package/src/http/Controller.js +46 -0
  254. package/src/http/Kernel.d.ts +24 -0
  255. package/src/http/Kernel.d.ts.map +1 -0
  256. package/src/http/Kernel.js +72 -0
  257. package/src/http/Request.d.ts +36 -0
  258. package/src/http/Request.d.ts.map +1 -0
  259. package/src/http/Request.js +142 -0
  260. package/src/http/Response.d.ts +32 -0
  261. package/src/http/Response.d.ts.map +1 -0
  262. package/src/http/Response.js +70 -0
  263. package/src/index.d.ts +43 -0
  264. package/src/index.d.ts.map +1 -0
  265. package/src/index.js +37 -0
  266. package/src/microservices/MicroserviceBootstrap.d.ts +75 -0
  267. package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -0
  268. package/src/microservices/MicroserviceBootstrap.js +285 -0
  269. package/src/microservices/MicroserviceGenerator.d.ts +27 -0
  270. package/src/microservices/MicroserviceGenerator.d.ts.map +1 -0
  271. package/src/microservices/MicroserviceGenerator.js +436 -0
  272. package/src/microservices/MicroserviceManager.d.ts +68 -0
  273. package/src/microservices/MicroserviceManager.d.ts.map +1 -0
  274. package/src/microservices/MicroserviceManager.js +266 -0
  275. package/src/microservices/PostgresAdapter.d.ts +90 -0
  276. package/src/microservices/PostgresAdapter.d.ts.map +1 -0
  277. package/src/microservices/PostgresAdapter.js +286 -0
  278. package/src/microservices/RequestTracingMiddleware.d.ts +41 -0
  279. package/src/microservices/RequestTracingMiddleware.d.ts.map +1 -0
  280. package/src/microservices/RequestTracingMiddleware.js +122 -0
  281. package/src/microservices/ServiceAuthMiddleware.d.ts +58 -0
  282. package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -0
  283. package/src/microservices/ServiceAuthMiddleware.js +240 -0
  284. package/src/microservices/ServiceBundler.d.ts +45 -0
  285. package/src/microservices/ServiceBundler.d.ts.map +1 -0
  286. package/src/microservices/ServiceBundler.js +297 -0
  287. package/src/microservices/ServiceHealthMonitor.d.ts +96 -0
  288. package/src/microservices/ServiceHealthMonitor.d.ts.map +1 -0
  289. package/src/microservices/ServiceHealthMonitor.js +379 -0
  290. package/src/middleware/CsrfMiddleware.d.ts +19 -0
  291. package/src/middleware/CsrfMiddleware.d.ts.map +1 -0
  292. package/src/middleware/CsrfMiddleware.js +121 -0
  293. package/src/middleware/MiddlewareStack.d.ts +27 -0
  294. package/src/middleware/MiddlewareStack.d.ts.map +1 -0
  295. package/src/middleware/MiddlewareStack.js +43 -0
  296. package/src/middleware/RateLimiter.d.ts +22 -0
  297. package/src/middleware/RateLimiter.d.ts.map +1 -0
  298. package/src/middleware/RateLimiter.js +72 -0
  299. package/src/middleware/SecurityMiddleware.d.ts +33 -0
  300. package/src/middleware/SecurityMiddleware.d.ts.map +1 -0
  301. package/src/middleware/SecurityMiddleware.js +106 -0
  302. package/src/middleware/index.d.ts +9 -0
  303. package/src/middleware/index.d.ts.map +1 -0
  304. package/src/middleware/index.js +8 -0
  305. package/src/node-singletons/child-process.d.ts +7 -0
  306. package/src/node-singletons/child-process.d.ts.map +1 -0
  307. package/src/node-singletons/child-process.js +6 -0
  308. package/src/node-singletons/crypto.d.ts +7 -0
  309. package/src/node-singletons/crypto.d.ts.map +1 -0
  310. package/src/node-singletons/crypto.js +6 -0
  311. package/src/node-singletons/events.d.ts +7 -0
  312. package/src/node-singletons/events.d.ts.map +1 -0
  313. package/src/node-singletons/events.js +6 -0
  314. package/src/node-singletons/fs.d.ts +12 -0
  315. package/src/node-singletons/fs.d.ts.map +1 -0
  316. package/src/node-singletons/fs.js +14 -0
  317. package/src/node-singletons/http.d.ts +8 -0
  318. package/src/node-singletons/http.d.ts.map +1 -0
  319. package/src/node-singletons/http.js +6 -0
  320. package/src/node-singletons/index.d.ts +30 -0
  321. package/src/node-singletons/index.d.ts.map +1 -0
  322. package/src/node-singletons/index.js +31 -0
  323. package/src/node-singletons/os.d.ts +9 -0
  324. package/src/node-singletons/os.d.ts.map +1 -0
  325. package/src/node-singletons/os.js +9 -0
  326. package/src/node-singletons/path.d.ts +7 -0
  327. package/src/node-singletons/path.d.ts.map +1 -0
  328. package/src/node-singletons/path.js +6 -0
  329. package/src/node-singletons/perf-hooks.d.ts +7 -0
  330. package/src/node-singletons/perf-hooks.d.ts.map +1 -0
  331. package/src/node-singletons/perf-hooks.js +6 -0
  332. package/src/node-singletons/readline.d.ts +10 -0
  333. package/src/node-singletons/readline.d.ts.map +1 -0
  334. package/src/node-singletons/readline.js +9 -0
  335. package/src/node-singletons/url.d.ts +7 -0
  336. package/src/node-singletons/url.d.ts.map +1 -0
  337. package/src/node-singletons/url.js +6 -0
  338. package/src/orm/ConnectionManager.d.ts +118 -0
  339. package/src/orm/ConnectionManager.d.ts.map +1 -0
  340. package/src/orm/ConnectionManager.js +401 -0
  341. package/src/orm/Database.d.ts +31 -0
  342. package/src/orm/Database.d.ts.map +1 -0
  343. package/src/orm/Database.js +163 -0
  344. package/src/orm/DatabaseAdapter.d.ts +96 -0
  345. package/src/orm/DatabaseAdapter.d.ts.map +1 -0
  346. package/src/orm/DatabaseAdapter.js +40 -0
  347. package/src/orm/Model.d.ts +91 -0
  348. package/src/orm/Model.d.ts.map +1 -0
  349. package/src/orm/Model.js +206 -0
  350. package/src/orm/QueryBuilder.d.ts +52 -0
  351. package/src/orm/QueryBuilder.d.ts.map +1 -0
  352. package/src/orm/QueryBuilder.js +134 -0
  353. package/src/orm/Relationships.d.ts +53 -0
  354. package/src/orm/Relationships.d.ts.map +1 -0
  355. package/src/orm/Relationships.js +98 -0
  356. package/src/orm/Schema.d.ts +123 -0
  357. package/src/orm/Schema.d.ts.map +1 -0
  358. package/src/orm/Schema.js +169 -0
  359. package/src/orm/adapters/D1Adapter.d.ts +15 -0
  360. package/src/orm/adapters/D1Adapter.d.ts.map +1 -0
  361. package/src/orm/adapters/D1Adapter.js +125 -0
  362. package/src/orm/adapters/MySQLAdapter.d.ts +16 -0
  363. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -0
  364. package/src/orm/adapters/MySQLAdapter.js +87 -0
  365. package/src/orm/adapters/PostgreSQLAdapter.d.ts +16 -0
  366. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  367. package/src/orm/adapters/PostgreSQLAdapter.js +87 -0
  368. package/src/orm/adapters/SQLServerAdapter.d.ts +16 -0
  369. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -0
  370. package/src/orm/adapters/SQLServerAdapter.js +81 -0
  371. package/src/orm/adapters/SQLiteAdapter.d.ts +11 -0
  372. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -0
  373. package/src/orm/adapters/SQLiteAdapter.js +131 -0
  374. package/src/performance/Benchmark.d.ts +87 -0
  375. package/src/performance/Benchmark.d.ts.map +1 -0
  376. package/src/performance/Benchmark.js +304 -0
  377. package/src/performance/CodeGenerationBenchmark.d.ts +23 -0
  378. package/src/performance/CodeGenerationBenchmark.d.ts.map +1 -0
  379. package/src/performance/CodeGenerationBenchmark.js +249 -0
  380. package/src/performance/Optimizer.d.ts +99 -0
  381. package/src/performance/Optimizer.d.ts.map +1 -0
  382. package/src/performance/Optimizer.js +396 -0
  383. package/src/performance/establish-baseline.d.ts +9 -0
  384. package/src/performance/establish-baseline.d.ts.map +1 -0
  385. package/src/performance/establish-baseline.js +55 -0
  386. package/src/profiling/MemoryProfiler.d.ts +32 -0
  387. package/src/profiling/MemoryProfiler.d.ts.map +1 -0
  388. package/src/profiling/MemoryProfiler.js +84 -0
  389. package/src/profiling/N1Detector.d.ts +16 -0
  390. package/src/profiling/N1Detector.d.ts.map +1 -0
  391. package/src/profiling/N1Detector.js +120 -0
  392. package/src/profiling/QueryLogger.d.ts +107 -0
  393. package/src/profiling/QueryLogger.d.ts.map +1 -0
  394. package/src/profiling/QueryLogger.js +148 -0
  395. package/src/profiling/RequestProfiler.d.ts +30 -0
  396. package/src/profiling/RequestProfiler.d.ts.map +1 -0
  397. package/src/profiling/RequestProfiler.js +94 -0
  398. package/src/profiling/types.d.ts +77 -0
  399. package/src/profiling/types.d.ts.map +1 -0
  400. package/src/profiling/types.js +5 -0
  401. package/src/routing/Router.d.ts +52 -0
  402. package/src/routing/Router.d.ts.map +1 -0
  403. package/src/routing/Router.js +191 -0
  404. package/src/runtime/PluginManager.d.ts +30 -0
  405. package/src/runtime/PluginManager.d.ts.map +1 -0
  406. package/src/runtime/PluginManager.js +197 -0
  407. package/src/runtime/PluginRegistry.d.ts +22 -0
  408. package/src/runtime/PluginRegistry.d.ts.map +1 -0
  409. package/src/runtime/PluginRegistry.js +93 -0
  410. package/src/runtime/RuntimeAdapter.d.ts +126 -0
  411. package/src/runtime/RuntimeAdapter.d.ts.map +1 -0
  412. package/src/runtime/RuntimeAdapter.js +127 -0
  413. package/src/runtime/RuntimeDetector.d.ts +15 -0
  414. package/src/runtime/RuntimeDetector.d.ts.map +1 -0
  415. package/src/runtime/RuntimeDetector.js +219 -0
  416. package/src/runtime/adapters/CloudflareAdapter.d.ts +43 -0
  417. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -0
  418. package/src/runtime/adapters/CloudflareAdapter.js +175 -0
  419. package/src/runtime/adapters/DenoAdapter.d.ts +30 -0
  420. package/src/runtime/adapters/DenoAdapter.d.ts.map +1 -0
  421. package/src/runtime/adapters/DenoAdapter.js +191 -0
  422. package/src/runtime/adapters/FargateAdapter.d.ts +40 -0
  423. package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -0
  424. package/src/runtime/adapters/FargateAdapter.js +156 -0
  425. package/src/runtime/adapters/LambdaAdapter.d.ts +13 -0
  426. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -0
  427. package/src/runtime/adapters/LambdaAdapter.js +302 -0
  428. package/src/runtime/adapters/NodeServerAdapter.d.ts +16 -0
  429. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -0
  430. package/src/runtime/adapters/NodeServerAdapter.js +199 -0
  431. package/src/scripts/TemplateSync.d.ts +7 -0
  432. package/src/scripts/TemplateSync.d.ts.map +1 -0
  433. package/src/scripts/TemplateSync.js +234 -0
  434. package/src/security/CsrfTokenManager.d.ts +28 -0
  435. package/src/security/CsrfTokenManager.d.ts.map +1 -0
  436. package/src/security/CsrfTokenManager.js +78 -0
  437. package/src/security/Encryptor.d.ts +15 -0
  438. package/src/security/Encryptor.d.ts.map +1 -0
  439. package/src/security/Encryptor.js +142 -0
  440. package/src/security/JwtManager.d.ts +41 -0
  441. package/src/security/JwtManager.d.ts.map +1 -0
  442. package/src/security/JwtManager.js +229 -0
  443. package/src/security/UrlValidator.d.ts +21 -0
  444. package/src/security/UrlValidator.d.ts.map +1 -0
  445. package/src/security/UrlValidator.js +42 -0
  446. package/src/security/XssProtection.d.ts +24 -0
  447. package/src/security/XssProtection.d.ts.map +1 -0
  448. package/src/security/XssProtection.js +133 -0
  449. package/src/templates/TemplateRegistry.d.ts +40 -0
  450. package/src/templates/TemplateRegistry.d.ts.map +1 -0
  451. package/src/templates/TemplateRegistry.js +78 -0
  452. package/src/templates/TemplateRegistry.ts +91 -0
  453. package/src/templates/adapters/MySQLAdapter.ts.tpl +97 -0
  454. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +101 -0
  455. package/src/templates/adapters/SQLServerAdapter.ts.tpl +95 -0
  456. package/src/templates/adapters/SQLiteAdapter.ts.tpl +189 -0
  457. package/src/templates/features/Auth.ts.tpl +40 -0
  458. package/src/templates/features/Queue.ts.tpl +75 -0
  459. package/src/templates/project/basic/.env.example.tpl +26 -0
  460. package/src/templates/project/basic/.env.tpl +164 -0
  461. package/src/templates/project/basic/README.md.tpl +13 -0
  462. package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +155 -0
  463. package/src/templates/project/basic/app/Middleware/ProfilerMiddleware.ts.tpl +55 -0
  464. package/src/templates/project/basic/app/Middleware/index.ts.tpl +304 -0
  465. package/src/templates/project/basic/app/Models/Post.ts.tpl +30 -0
  466. package/src/templates/project/basic/app/Models/User.ts.tpl +53 -0
  467. package/src/templates/project/basic/config/SecretsManager.ts.tpl +453 -0
  468. package/src/templates/project/basic/config/app.ts.tpl +97 -0
  469. package/src/templates/project/basic/config/cache.ts.tpl +117 -0
  470. package/src/templates/project/basic/config/constants.ts.tpl +70 -0
  471. package/src/templates/project/basic/config/database.ts.tpl +152 -0
  472. package/src/templates/project/basic/config/env.ts.tpl +148 -0
  473. package/src/templates/project/basic/config/features.ts.tpl +57 -0
  474. package/src/templates/project/basic/config/index.ts.tpl +36 -0
  475. package/src/templates/project/basic/config/logger.ts.tpl +95 -0
  476. package/src/templates/project/basic/config/microservices.ts.tpl +104 -0
  477. package/src/templates/project/basic/config/queue.ts.tpl +134 -0
  478. package/src/templates/project/basic/config/security.ts.tpl +149 -0
  479. package/src/templates/project/basic/config/storage.ts.tpl +136 -0
  480. package/src/templates/project/basic/database/factories/.gitkeep.tpl +0 -0
  481. package/src/templates/project/basic/database/migrations/.gitkeep.tpl +0 -0
  482. package/src/templates/project/basic/database/migrations/index.ts.tpl +2 -0
  483. package/src/templates/project/basic/database/seeders/.gitkeep.tpl +0 -0
  484. package/src/templates/project/basic/package.json.tpl +22 -0
  485. package/src/templates/project/basic/routes/api.ts.tpl +135 -0
  486. package/src/templates/project/basic/src/index.ts.tpl +49 -0
  487. package/src/templates/project/basic/template.json +17 -0
  488. package/src/templates/project/basic/tsconfig.json.tpl +20 -0
  489. package/src/validation/ValidationError.d.ts +42 -0
  490. package/src/validation/ValidationError.d.ts.map +1 -0
  491. package/src/validation/ValidationError.js +53 -0
  492. package/src/validation/Validator.d.ts +60 -0
  493. package/src/validation/Validator.d.ts.map +1 -0
  494. package/src/validation/Validator.js +190 -0
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Response Factory Generator - Phase 7
3
+ * Generates response/output DTO factories with built-in validation
4
+ */
5
+ import { FileGenerator } from '../scaffolding/FileGenerator';
6
+ import { Logger } from '../../config/logger';
7
+ import { ErrorFactory } from '../../exceptions/ZintrustError';
8
+ import { fsPromises as fs } from '../../node-singletons/fs';
9
+ import * as path from 'node:path';
10
+ /**
11
+ * Validate response factory options
12
+ */
13
+ export async function validateOptions(options) {
14
+ if (options.factoryName.trim() === '') {
15
+ throw ErrorFactory.createCliError('Response factory name is required');
16
+ }
17
+ if (options.responseName.trim() === '') {
18
+ throw ErrorFactory.createCliError('Response name is required');
19
+ }
20
+ if (options.factoriesPath === '') {
21
+ throw ErrorFactory.createCliError('Factories path is required');
22
+ }
23
+ // Verify factory path exists
24
+ const pathExists = await fs
25
+ .access(options.factoriesPath)
26
+ .then(() => true)
27
+ .catch(() => false);
28
+ if (!pathExists) {
29
+ throw ErrorFactory.createCliError(`Factories directory not found: ${options.factoriesPath}`);
30
+ }
31
+ }
32
+ /**
33
+ * Generate response factory
34
+ */
35
+ export async function generate(options) {
36
+ try {
37
+ await validateOptions(options);
38
+ const factoryPath = path.join(options.factoriesPath, `${options.factoryName}.ts`);
39
+ const factoryCode = generateFactoryCode(options);
40
+ // Write factory file
41
+ FileGenerator.writeFile(factoryPath, factoryCode);
42
+ Logger.info(`✅ Generated response factory: ${options.factoryName}`);
43
+ // Generate response DTO if requested
44
+ let responsePath;
45
+ if (options.responsesPath !== undefined) {
46
+ responsePath = await generateResponseDTO(options);
47
+ }
48
+ return {
49
+ success: true,
50
+ factoryPath,
51
+ responsePath,
52
+ message: `Response factory '${options.factoryName}' generated successfully`,
53
+ };
54
+ }
55
+ catch (err) {
56
+ ErrorFactory.createTryCatchError('Response factory generation failed', err);
57
+ const message = err instanceof Error ? err.message : String(err);
58
+ return {
59
+ success: false,
60
+ factoryPath: '',
61
+ message: `Failed to generate response factory: ${message}`,
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * Generate factory methods (times, setState, make, makeMany, get, first)
67
+ */
68
+ function generateFactoryMethods() {
69
+ return ` /**
70
+ * Generate multiple responses
71
+ */
72
+ times(count: number) {
73
+ recordCount = count;
74
+ return factory;
75
+ },
76
+
77
+ /**
78
+ * Set response state (success, error, partial)
79
+ */
80
+ setState(state: 'success' | 'error' | 'partial') {
81
+ responseState = state;
82
+ return factory;
83
+ },
84
+
85
+ /**
86
+ * Generate single response
87
+ */
88
+ make() {
89
+ return factory.generateResponse();
90
+ },
91
+
92
+ /**
93
+ * Generate multiple responses
94
+ */
95
+ makeMany() {
96
+ return Array.from({ length: recordCount }, () => factory.generateResponse());
97
+ },
98
+
99
+ /**
100
+ * Alias for makeMany()
101
+ */
102
+ get() {
103
+ return factory.makeMany();
104
+ },
105
+
106
+ /**
107
+ * Get first response
108
+ */
109
+ first() {
110
+ return factory.make();
111
+ },`;
112
+ }
113
+ /**
114
+ * Generate response generation method
115
+ */
116
+ function generateResponseMethod(responseName, fields, responseType) {
117
+ return ` /**
118
+ * Generate response with state handling
119
+ */
120
+ generateResponse() {
121
+ const data: Record<string, unknown> = {
122
+ ${generateFieldAssignments(fields, responseType)}
123
+ };
124
+
125
+ // Apply state transformations
126
+ if (responseState === 'error') {
127
+ data.status = 'error';
128
+ data.errors = ['An error occurred'];
129
+ } else if (responseState === 'partial') {
130
+ // Set some fields to null/undefined for partial response testing
131
+ ${generatePartialFields(fields)}
132
+ }
133
+
134
+ return ${responseName}.create(data);
135
+ },`;
136
+ }
137
+ /**
138
+ * Generate response factory code
139
+ */
140
+ function generateFactoryCode(options) {
141
+ const { factoryName, responseName, fields = [], responseType = 'success' } = options;
142
+ const helperMethods = generateHelperMethods(fields);
143
+ const dtoImport = options.responsesPath === undefined
144
+ ? `export const ${responseName} = {
145
+ create(data: Record<string, unknown> = {}) {
146
+ return { ...data };
147
+ }
148
+ };`
149
+ : `import { ${responseName} } from '@app/Responses/${responseName}';`;
150
+ return `/**
151
+ * ${factoryName} - Response Factory
152
+ * Generates ${responseName} response instances for testing
153
+ *
154
+ * Response Type: ${responseType}
155
+ */
156
+
157
+ import { faker } from '@faker-js/faker';
158
+
159
+ ${dtoImport}
160
+
161
+ /**
162
+ * ${factoryName} - Generates response test data
163
+ */
164
+ export const ${factoryName} = Object.freeze({
165
+ /**
166
+ * Create a new factory instance
167
+ */
168
+ new() {
169
+ let recordCount = 1;
170
+ let responseState = 'success';
171
+
172
+ const factory = {
173
+ ${generateFactoryMethods()}
174
+
175
+ ${generateResponseMethod(responseName, fields, responseType)}
176
+
177
+ ${helperMethods}
178
+ };
179
+
180
+ return factory;
181
+ }
182
+ });
183
+
184
+ export default ${factoryName};
185
+ `;
186
+ }
187
+ /**
188
+ * Generate response DTO code
189
+ */
190
+ async function generateResponseDTO(options) {
191
+ if (options.responsesPath === undefined) {
192
+ throw ErrorFactory.createCliError('Responses path is required');
193
+ }
194
+ const dtoPath = path.join(options.responsesPath, `${options.responseName}.ts`);
195
+ const dtoCode = `/**
196
+ * ${options.responseName} - Response DTO
197
+ * Serializes and validates API response data
198
+ *
199
+ * Type: ${options.responseType}
200
+ */
201
+
202
+ export const ${options.responseName} = Object.freeze({
203
+ create(data: Record<string, unknown> = {}) {
204
+ const response = {
205
+ ...data,
206
+
207
+ /**
208
+ * Serialize to JSON
209
+ */
210
+ toJSON() {
211
+ const d = response as any;
212
+ return {
213
+ ${(options.fields ?? []).map((f) => ` ${f.name}: d.${f.name}`).join(',\n')}
214
+ };
215
+ },
216
+
217
+ /**
218
+ * Validate response
219
+ */
220
+ validate(): string[] {
221
+ const errors: string[] = [];
222
+ const d = response as any;
223
+
224
+ ${(options.fields ?? [])
225
+ .filter((f) => f.required === true)
226
+ .map((f) => ` if (d.${f.name} === undefined || d.${f.name} === null) {
227
+ errors.push('${f.name} is required');
228
+ }`)
229
+ .join('\n')}
230
+
231
+ return errors;
232
+ },
233
+ };
234
+
235
+ return response;
236
+ }
237
+ };
238
+
239
+ export default ${options.responseName};
240
+ `;
241
+ FileGenerator.writeFile(dtoPath, dtoCode);
242
+ Logger.info(`✅ Generated response DTO: ${options.responseName}`);
243
+ return dtoPath;
244
+ }
245
+ /**
246
+ * Generate field assignments for the factory
247
+ */
248
+ function generateFieldAssignments(fields, responseType) {
249
+ const assignments = fields.map((field) => {
250
+ let value = 'faker.lorem.word()';
251
+ if (field.type === 'email')
252
+ value = 'faker.internet.email()';
253
+ else if (field.type === 'number')
254
+ value = 'faker.number.int({ min: 1, max: 1000 })';
255
+ else if (field.type === 'boolean')
256
+ value = 'faker.datatype.boolean()';
257
+ else if (field.type === 'uuid')
258
+ value = 'faker.string.uuid()';
259
+ else if (field.type === 'date')
260
+ value = 'faker.date.recent().toISOString()';
261
+ else if (field.type === 'json')
262
+ value = '{ key: faker.lorem.word() }';
263
+ if (field.array === true) {
264
+ value = `Array.from({ length: 3 }, () => ${value})`;
265
+ }
266
+ return ` ${field.name}: ${value},`;
267
+ });
268
+ if (responseType === 'paginated') {
269
+ // Provide a minimal, predictable pagination shape for tests and examples.
270
+ if (!fields.some((f) => f.name === 'pagination')) {
271
+ assignments.push(' pagination: { page: 1, limit: 10, total: 100 },');
272
+ }
273
+ if (!fields.some((f) => f.name === 'items')) {
274
+ assignments.push(' items: [],');
275
+ }
276
+ }
277
+ if (responseType === 'success' && !fields.some((f) => f.name === 'status')) {
278
+ assignments.push(" status: 'success',");
279
+ }
280
+ return assignments.join('\n');
281
+ }
282
+ /**
283
+ * Generate partial field modifications
284
+ */
285
+ function generatePartialFields(fields) {
286
+ return fields
287
+ .filter((f) => (f.required ?? false) !== true)
288
+ .map((f) => `data.${f.name} = null;`)
289
+ .join('\n ');
290
+ }
291
+ /**
292
+ * Generate helper methods for the factory
293
+ */
294
+ function generateHelperMethods(fields) {
295
+ return fields
296
+ .map((field) => `
297
+ /**
298
+ * Set ${field.name}
299
+ */
300
+ with${capitalizeType(field.name)}(value: any) {
301
+ return factory.generateResponse().then((res: any) => {
302
+ res.${field.name} = value;
303
+ return res;
304
+ });
305
+ },`)
306
+ .join('\n');
307
+ }
308
+ /**
309
+ * Capitalize type name
310
+ */
311
+ function capitalizeType(type) {
312
+ return type.charAt(0).toUpperCase() + type.slice(1);
313
+ }
314
+ /**
315
+ * Response Factory Generator - Phase 7
316
+ * Generates response/output DTO factories with built-in validation
317
+ */
318
+ export const ResponseFactoryGenerator = Object.freeze({
319
+ validateOptions,
320
+ generate,
321
+ });
@@ -0,0 +1,66 @@
1
+ /**
2
+ * RouteGenerator - Generate route files
3
+ * Creates route definitions with middleware and parameters
4
+ */
5
+ export type RouteMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'resource';
6
+ export interface RouteDefinition {
7
+ method: RouteMethod;
8
+ path: string;
9
+ controller: string;
10
+ action?: string;
11
+ middleware?: string[];
12
+ params?: string[];
13
+ }
14
+ export interface RouteOptions {
15
+ routesPath: string;
16
+ groupName?: string;
17
+ prefix?: string;
18
+ middleware?: string[];
19
+ routes: RouteDefinition[];
20
+ namespace?: string;
21
+ }
22
+ export interface RouteGeneratorResult {
23
+ success: boolean;
24
+ routeFile: string;
25
+ routeCount: number;
26
+ message: string;
27
+ }
28
+ /**
29
+ * Validate route options
30
+ */
31
+ export declare function validateOptions(options: RouteOptions): {
32
+ valid: boolean;
33
+ errors: string[];
34
+ };
35
+ /**
36
+ * Generate route file
37
+ */
38
+ export declare function generateRoutes(options: RouteOptions): Promise<RouteGeneratorResult>;
39
+ /**
40
+ * Generate common API routes (User CRUD example)
41
+ */
42
+ export declare function getUserApiRoutes(): RouteDefinition[];
43
+ /**
44
+ * Generate common auth routes
45
+ */
46
+ export declare function getAuthRoutes(): RouteDefinition[];
47
+ /**
48
+ * Generate common admin routes
49
+ */
50
+ export declare function getAdminRoutes(): RouteDefinition[];
51
+ /**
52
+ * Get common HTTP methods
53
+ */
54
+ export declare function getCommonMethods(): RouteMethod[];
55
+ /**
56
+ * RouteGenerator creates route definitions
57
+ */
58
+ export declare const RouteGenerator: Readonly<{
59
+ validateOptions: typeof validateOptions;
60
+ generateRoutes: typeof generateRoutes;
61
+ getUserApiRoutes: typeof getUserApiRoutes;
62
+ getAuthRoutes: typeof getAuthRoutes;
63
+ getAdminRoutes: typeof getAdminRoutes;
64
+ getCommonMethods: typeof getCommonMethods;
65
+ }>;
66
+ //# sourceMappingURL=RouteGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/RouteGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2CzF;AA+HD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,EAAE,CAsCpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,eAAe,EAAE,CA6BjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CA+BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAEhD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;EAOzB,CAAC"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * RouteGenerator - Generate route files
3
+ * Creates route definitions with middleware and parameters
4
+ */
5
+ import { FileGenerator } from '../scaffolding/FileGenerator';
6
+ import { Logger } from '../../config/logger';
7
+ import * as path from 'node:path';
8
+ /**
9
+ * Validate route options
10
+ */
11
+ export function validateOptions(options) {
12
+ const errors = [];
13
+ if (options.routesPath === '' || !FileGenerator.directoryExists(options.routesPath)) {
14
+ errors.push(`Routes directory does not exist: ${options.routesPath}`);
15
+ }
16
+ if (options.routes.length === 0) {
17
+ errors.push(`No routes provided`);
18
+ }
19
+ const validMethods = ['get', 'post', 'put', 'patch', 'delete', 'resource'];
20
+ const invalidRoutes = options.routes.filter((r) => !validMethods.includes(r.method));
21
+ if (invalidRoutes.length > 0) {
22
+ errors.push(`Invalid route methods. Supported: ${validMethods.join(', ')}`);
23
+ }
24
+ return {
25
+ valid: errors.length === 0,
26
+ errors,
27
+ };
28
+ }
29
+ /**
30
+ * Generate route file
31
+ */
32
+ export async function generateRoutes(options) {
33
+ const validation = validateOptions(options);
34
+ if (!validation.valid) {
35
+ return {
36
+ success: false,
37
+ routeFile: '',
38
+ routeCount: 0,
39
+ message: `Validation failed: ${validation.errors.join(', ')}`,
40
+ };
41
+ }
42
+ try {
43
+ const routeContent = buildRouteWrapper(options);
44
+ const groupName = options.groupName ?? 'routes';
45
+ const routeFile = path.join(options.routesPath, `${groupName}.ts`);
46
+ const created = FileGenerator.writeFile(routeFile, routeContent);
47
+ if (!created) {
48
+ return {
49
+ success: false,
50
+ routeFile,
51
+ routeCount: 0,
52
+ message: `Failed to create route file`,
53
+ };
54
+ }
55
+ Logger.info(`✅ Generated routes: ${routeFile} (${options.routes.length} routes)`);
56
+ return {
57
+ success: true,
58
+ routeFile,
59
+ routeCount: options.routes.length,
60
+ message: `Routes created successfully`,
61
+ };
62
+ }
63
+ catch (error) {
64
+ Logger.error('Route generation failed', error);
65
+ return {
66
+ success: false,
67
+ routeFile: '',
68
+ routeCount: 0,
69
+ message: `Error: ${error.message}`,
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * Build route wrapper TypeScript code
75
+ */
76
+ function buildRouteWrapper(options) {
77
+ const imports = buildImports(options);
78
+ const routeRegistration = buildRouteRegistration(options);
79
+ return `/**
80
+ * Routes
81
+ * Auto-generated route definitions
82
+ */
83
+
84
+ ${imports}
85
+
86
+ export function registerRoutes(router: Router): void {
87
+ ${routeRegistration}
88
+ }
89
+ `;
90
+ }
91
+ /**
92
+ * Build import statements
93
+ */
94
+ function buildImports(options) {
95
+ const imports = ['import { Router } from "../../routing/Router";'];
96
+ // Collect unique controllers
97
+ const controllers = new Set();
98
+ for (const route of options.routes) {
99
+ controllers.add(route.controller);
100
+ }
101
+ // Add controller imports
102
+ for (const controller of controllers) {
103
+ imports.push(`import { ${controller} } from '@app/Controllers/${controller}';`);
104
+ }
105
+ return imports.join('\n');
106
+ }
107
+ /**
108
+ * Build route registration code
109
+ */
110
+ function buildRouteRegistration(options) {
111
+ let code = '';
112
+ // Add group if prefix or middleware provided
113
+ if (options.prefix !== undefined || options.middleware !== undefined) {
114
+ code += ` router.group({`;
115
+ const groupOptions = [];
116
+ if (options.prefix !== undefined) {
117
+ groupOptions.push(` prefix: '${options.prefix}'`);
118
+ }
119
+ if (options.middleware !== undefined && options.middleware.length > 0) {
120
+ const middleware = options.middleware.map((m) => `'${m}'`).join(', ');
121
+ groupOptions.push(` middleware: [${middleware}]`);
122
+ }
123
+ code += groupOptions.join(',\n') + '\n';
124
+ code += ` }, (r) => {\n`;
125
+ // Add routes inside group
126
+ for (const route of options.routes) {
127
+ code += buildRouteCode(route, 'r');
128
+ }
129
+ code += ` });\n`;
130
+ }
131
+ else {
132
+ // Add routes directly
133
+ for (const route of options.routes) {
134
+ code += buildRouteCode(route, 'router');
135
+ }
136
+ }
137
+ return code;
138
+ }
139
+ /**
140
+ * Build single route code
141
+ */
142
+ function buildRouteCode(route, router) {
143
+ if (route.method === 'resource') {
144
+ return buildResourceRoute(route, router);
145
+ }
146
+ else {
147
+ return buildMethodRoute(route, router);
148
+ }
149
+ }
150
+ /**
151
+ * Build standard method route (GET, POST, etc.)
152
+ */
153
+ function buildMethodRoute(route, router) {
154
+ const method = route.method;
155
+ const path = route.path;
156
+ const controller = route.controller;
157
+ const action = route.action ?? 'handle';
158
+ const middleware = route.middleware === undefined
159
+ ? ''
160
+ : (() => {
161
+ const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
162
+ return `, { middleware: [${middlewareList}] }`;
163
+ })();
164
+ return ` ${router}.${method}('${path}', [${controller}, '${action}']${middleware});\n`;
165
+ }
166
+ /**
167
+ * Build resource route (RESTful CRUD)
168
+ */
169
+ function buildResourceRoute(route, router) {
170
+ const path = route.path;
171
+ const controller = route.controller;
172
+ const middleware = route.middleware === undefined
173
+ ? ''
174
+ : (() => {
175
+ const middlewareList = route.middleware.map((m) => `'${m}'`).join(', ');
176
+ return `, { middleware: [${middlewareList}] }`;
177
+ })();
178
+ return ` ${router}.resource('${path}', ${controller}${middleware});\n`;
179
+ }
180
+ /**
181
+ * Generate common API routes (User CRUD example)
182
+ */
183
+ export function getUserApiRoutes() {
184
+ return [
185
+ {
186
+ method: 'get',
187
+ path: '/users',
188
+ controller: 'UserController',
189
+ action: 'index',
190
+ middleware: ['auth'],
191
+ },
192
+ {
193
+ method: 'post',
194
+ path: '/users',
195
+ controller: 'UserController',
196
+ action: 'store',
197
+ middleware: ['auth'],
198
+ },
199
+ {
200
+ method: 'get',
201
+ path: '/users/:id',
202
+ controller: 'UserController',
203
+ action: 'show',
204
+ middleware: ['auth'],
205
+ },
206
+ {
207
+ method: 'put',
208
+ path: '/users/:id',
209
+ controller: 'UserController',
210
+ action: 'update',
211
+ middleware: ['auth'],
212
+ },
213
+ {
214
+ method: 'delete',
215
+ path: '/users/:id',
216
+ controller: 'UserController',
217
+ action: 'destroy',
218
+ middleware: ['auth'],
219
+ },
220
+ ];
221
+ }
222
+ /**
223
+ * Generate common auth routes
224
+ */
225
+ export function getAuthRoutes() {
226
+ return [
227
+ {
228
+ method: 'post',
229
+ path: '/auth/login',
230
+ controller: 'AuthController',
231
+ action: 'login',
232
+ },
233
+ {
234
+ method: 'post',
235
+ path: '/auth/register',
236
+ controller: 'AuthController',
237
+ action: 'register',
238
+ },
239
+ {
240
+ method: 'post',
241
+ path: '/auth/logout',
242
+ controller: 'AuthController',
243
+ action: 'logout',
244
+ middleware: ['auth'],
245
+ },
246
+ {
247
+ method: 'post',
248
+ path: '/auth/refresh',
249
+ controller: 'AuthController',
250
+ action: 'refresh',
251
+ middleware: ['auth'],
252
+ },
253
+ ];
254
+ }
255
+ /**
256
+ * Generate common admin routes
257
+ */
258
+ export function getAdminRoutes() {
259
+ return [
260
+ {
261
+ method: 'get',
262
+ path: '/dashboard',
263
+ controller: 'AdminController',
264
+ action: 'dashboard',
265
+ middleware: ['auth', 'admin'],
266
+ },
267
+ {
268
+ method: 'get',
269
+ path: '/users',
270
+ controller: 'AdminController',
271
+ action: 'users',
272
+ middleware: ['auth', 'admin'],
273
+ },
274
+ {
275
+ method: 'get',
276
+ path: '/analytics',
277
+ controller: 'AdminController',
278
+ action: 'analytics',
279
+ middleware: ['auth', 'admin'],
280
+ },
281
+ {
282
+ method: 'get',
283
+ path: '/logs',
284
+ controller: 'AdminController',
285
+ action: 'logs',
286
+ middleware: ['auth', 'admin'],
287
+ },
288
+ ];
289
+ }
290
+ /**
291
+ * Get common HTTP methods
292
+ */
293
+ export function getCommonMethods() {
294
+ return ['get', 'post', 'put', 'patch', 'delete', 'resource'];
295
+ }
296
+ /**
297
+ * RouteGenerator creates route definitions
298
+ */
299
+ export const RouteGenerator = Object.freeze({
300
+ validateOptions,
301
+ generateRoutes,
302
+ getUserApiRoutes,
303
+ getAuthRoutes,
304
+ getAdminRoutes,
305
+ getCommonMethods,
306
+ });