@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,47 @@
1
+ /**
2
+ * Seeder Generator - Phase 6.2
3
+ * Generates database seeders for populating development/staging databases
4
+ * Uses factory generators for consistent data generation
5
+ */
6
+ export interface SeederField {
7
+ name: string;
8
+ type: string;
9
+ faker?: string;
10
+ }
11
+ export interface SeederOptions {
12
+ seederName: string;
13
+ modelName: string;
14
+ factoryName?: string;
15
+ seedersPath: string;
16
+ count?: number;
17
+ relationships?: string[];
18
+ truncate?: boolean;
19
+ }
20
+ export interface SeederGeneratorResult {
21
+ success: boolean;
22
+ filePath: string;
23
+ message: string;
24
+ }
25
+ /**
26
+ * Seeder Generator - Creates database seeders using factory classes
27
+ * Enables rapid database population for development and staging
28
+ */
29
+ /**
30
+ * Validate seeder options
31
+ */
32
+ export declare function validateOptions(options: SeederOptions): Promise<void>;
33
+ /**
34
+ * Generate a database seeder
35
+ */
36
+ export declare function generateSeeder(options: SeederOptions): Promise<SeederGeneratorResult>;
37
+ /**
38
+ * Get available seeder options
39
+ */
40
+ export declare function getAvailableOptions(): string[];
41
+ export declare const SeederGenerator: Readonly<{
42
+ validateOptions: typeof validateOptions;
43
+ generateSeeder: typeof generateSeeder;
44
+ getAvailableOptions: typeof getAvailableOptions;
45
+ }>;
46
+ export default SeederGenerator;
47
+ //# sourceMappingURL=SeederGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeederGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/SeederGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AAEH;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC3E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyB3F;AA+OD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAQ9C;AAED,eAAO,MAAM,eAAe;;;;EAI1B,CAAC;AAEH,eAAe,eAAe,CAAC"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Seeder Generator - Phase 6.2
3
+ * Generates database seeders for populating development/staging databases
4
+ * Uses factory generators for consistent data generation
5
+ */
6
+ import { FileGenerator } from '../scaffolding/FileGenerator';
7
+ import { CommonUtils } from '../../common/index';
8
+ import { Logger } from '../../config/logger';
9
+ import { ErrorFactory } from '../../exceptions/ZintrustError';
10
+ import { fsPromises as fs } from '../../node-singletons/fs';
11
+ import * as path from 'node:path';
12
+ /**
13
+ * Seeder Generator - Creates database seeders using factory classes
14
+ * Enables rapid database population for development and staging
15
+ */
16
+ /**
17
+ * Validate seeder options
18
+ */
19
+ export async function validateOptions(options) {
20
+ if (options.seederName === undefined || options.seederName.trim() === '') {
21
+ throw ErrorFactory.createCliError('Seeder name is required');
22
+ }
23
+ if (!options.seederName.endsWith('Seeder')) {
24
+ throw ErrorFactory.createCliError('Seeder name must end with "Seeder" (e.g., UserSeeder)');
25
+ }
26
+ if (!/^[A-Z][a-zA-Z\d]*Seeder$/.test(options.seederName)) {
27
+ throw ErrorFactory.createCliError('Seeder name must be PascalCase ending with "Seeder"');
28
+ }
29
+ if (options.modelName === undefined || options.modelName.trim() === '') {
30
+ throw ErrorFactory.createCliError('Model name is required');
31
+ }
32
+ if (!/^[A-Z][a-zA-Z\d]*$/.test(options.modelName)) {
33
+ throw ErrorFactory.createCliError('Model name must be PascalCase (e.g., User, Post)');
34
+ }
35
+ if (options.count !== undefined && (options.count < 1 || options.count > 100000)) {
36
+ throw ErrorFactory.createCliError('Count must be between 1 and 100000');
37
+ }
38
+ // Verify seeders path exists
39
+ const pathStat = await fs.stat(options.seedersPath).catch(() => null);
40
+ if (pathStat === null) {
41
+ throw ErrorFactory.createCliError(`Seeders path does not exist: ${options.seedersPath}`);
42
+ }
43
+ if (!pathStat.isDirectory()) {
44
+ throw ErrorFactory.createCliError(`Seeders path is not a directory: ${options.seedersPath}`);
45
+ }
46
+ }
47
+ /**
48
+ * Generate a database seeder
49
+ */
50
+ export async function generateSeeder(options) {
51
+ try {
52
+ await validateOptions(options);
53
+ const seederCode = buildSeederCode(options);
54
+ const fileName = `${options.seederName}.ts`;
55
+ const filePath = path.join(options.seedersPath, fileName);
56
+ FileGenerator.writeFile(filePath, seederCode, { overwrite: true });
57
+ Logger.info(`✅ Created seeder: ${fileName}`);
58
+ return {
59
+ success: true,
60
+ filePath,
61
+ message: `Seeder '${options.seederName}' created successfully`,
62
+ };
63
+ }
64
+ catch (error) {
65
+ Logger.error('Seeder generation failed', error);
66
+ return {
67
+ success: false,
68
+ filePath: '',
69
+ message: error.message,
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * Build complete seeder code
75
+ */
76
+ function buildSeederCode(options) {
77
+ const imports = buildImports(options);
78
+ const className = options.seederName;
79
+ const count = options.count ?? 10;
80
+ const truncate = options.truncate === false ? 'false' : 'true';
81
+ const relationshipMethods = buildRelationshipMethods(options);
82
+ return `/**
83
+ * ${className}
84
+ * Seeder for populating ${options.modelName} table with test data
85
+ */
86
+
87
+ ${imports}
88
+
89
+ export const ${className} = Object.freeze({
90
+ ${buildSeederObjectBody(options, count, truncate, relationshipMethods)}
91
+ });
92
+ `;
93
+ }
94
+ /**
95
+ * Build seeder object body
96
+ */
97
+ function buildSeederObjectBody(options, count, truncate, relationshipMethods) {
98
+ const factoryName = getFactoryName(options);
99
+ const modelLower = options.modelName.toLowerCase();
100
+ return `${buildSeederRunMethod(options, count, truncate, factoryName, modelLower)},
101
+
102
+ ${buildSeederGetRecordsMethod(factoryName)},
103
+
104
+ ${buildSeederWithStatesMethod(options, count, factoryName, modelLower)},
105
+
106
+ ${buildSeederWithRelationshipsMethod(options, count, factoryName, modelLower, relationshipMethods)},
107
+
108
+ ${buildSeederResetMethod(options)}`;
109
+ }
110
+ /**
111
+ * Build seeder run method
112
+ */
113
+ function buildSeederRunMethod(options, count, truncate, factoryName, modelLower) {
114
+ const tableName = getTableName(options.modelName);
115
+ return ` /**
116
+ * Run the seeder
117
+ * Populates the ${modelLower} table with ${count} records
118
+ */
119
+ async run(): Promise<void> {
120
+ const count = ${count};
121
+ const factory = ${factoryName}.new();
122
+
123
+ // Optionally truncate the table before seeding
124
+ if (${truncate}) {
125
+ // await Table.query().delete();
126
+ // Or use: await database.raw('TRUNCATE TABLE ${tableName}');
127
+ }
128
+
129
+ // Generate and create records
130
+ const records = factory.count(count);
131
+
132
+ for (const record of records) {
133
+ // Insert using Query Builder (recommended)
134
+ // await ${options.modelName}.create(record);
135
+ }
136
+
137
+ Logger.info(\`✅ Seeded \${count} ${modelLower} records\`);
138
+ }`;
139
+ }
140
+ /**
141
+ * Build seeder getRecords method
142
+ */
143
+ function buildSeederGetRecordsMethod(factoryName) {
144
+ return ` /**
145
+ * Get records from this seeder
146
+ */
147
+ async getRecords(count: number): Promise<Record<string, unknown>[]> {
148
+ const factory = ${factoryName}.new();
149
+ return factory.count(count);
150
+ }`;
151
+ }
152
+ /**
153
+ * Build seeder with states method
154
+ */
155
+ function buildSeederWithStatesMethod(options, count, factoryName, modelLower) {
156
+ return ` /**
157
+ * Seed with specific states
158
+ */
159
+ async seedWithStates(): Promise<void> {
160
+ const factory = ${factoryName}.new();
161
+
162
+ // Create active records (50%)
163
+ const active = factory.state('active').count(Math.ceil(${count} * 0.5));
164
+ for (const record of active) {
165
+ // await ${options.modelName}.create(record);
166
+ }
167
+
168
+ // Create inactive records (30%)
169
+ const inactive = factory.state('inactive').count(Math.ceil(${count} * 0.3));
170
+ for (const record of inactive) {
171
+ // await ${options.modelName}.create(record);
172
+ }
173
+
174
+ // Create deleted records (20%)
175
+ const deleted = factory.state('deleted').count(Math.ceil(${count} * 0.2));
176
+ for (const record of deleted) {
177
+ // await ${options.modelName}.create(record);
178
+ }
179
+
180
+ Logger.info(\`✅ Seeded ${count} ${modelLower} records with state distribution\`);
181
+ }`;
182
+ }
183
+ /**
184
+ * Build seeder with relationships method
185
+ */
186
+ function buildSeederWithRelationshipsMethod(_options, count, factoryName, modelLower, relationshipMethods) {
187
+ return ` /**
188
+ * Seed with relationships
189
+ */
190
+ async seedWithRelationships(): Promise<void> {
191
+ const factory = ${factoryName}.new();
192
+
193
+ ${relationshipMethods}
194
+
195
+ Logger.info(\`✅ Seeded ${count} ${modelLower} records with relationships\`);
196
+ }`;
197
+ }
198
+ /**
199
+ * Build seeder reset method
200
+ */
201
+ function buildSeederResetMethod(options) {
202
+ const tableName = getTableName(options.modelName);
203
+ return ` /**
204
+ * Reset seeder (truncate table)
205
+ */
206
+ async reset(): Promise<void> {
207
+ // await database.raw('TRUNCATE TABLE ${tableName}');
208
+ Logger.info(\`✅ Truncated ${tableName} table\`);
209
+ }`;
210
+ }
211
+ /**
212
+ * Build import statements
213
+ */
214
+ function buildImports(options) {
215
+ const factoryName = getFactoryName(options);
216
+ return `import { Logger } from '../../config/logger';
217
+ import { ${factoryName} } from '@database/factories/${factoryName}';
218
+ import { ${options.modelName} } from '@app/Models/${options.modelName}';`;
219
+ }
220
+ /**
221
+ * Build relationship seeding methods
222
+ */
223
+ function buildRelationshipMethods(options) {
224
+ if (options.relationships === undefined || options.relationships.length === 0) {
225
+ return ` const factory = new ${getFactoryName(options)}();
226
+ const records = factory.count(${options.count ?? 10});
227
+
228
+ // Create records with relationships (implement as needed)
229
+ for (const record of records) {
230
+ // await ${options.modelName}.create(record);
231
+ }`;
232
+ }
233
+ const relationshipCode = options.relationships
234
+ .map((rel) => {
235
+ const relId = `${CommonUtils.camelCase(rel)}Id`;
236
+ return ` // Seed with ${rel} relationships
237
+ const ${CommonUtils.camelCase(rel)}s = await ${rel}.all();
238
+ if (${CommonUtils.camelCase(rel)}s.length > 0) {
239
+ const factory = new ${getFactoryName(options)}();
240
+ const records = factory
241
+ .count(Math.min(${options.count ?? 10}, ${CommonUtils.camelCase(rel)}s.length))
242
+ .get();
243
+
244
+ for (let i = 0; i < records.length; i++) {
245
+ records[i].${relId} = ${CommonUtils.camelCase(rel)}s[i].id;
246
+ // await ${options.modelName}.create(records[i]);
247
+ }
248
+ }`;
249
+ })
250
+ .join('\n\n');
251
+ return relationshipCode;
252
+ }
253
+ /**
254
+ * Get factory name from model name
255
+ */
256
+ function getFactoryName(options) {
257
+ return options.factoryName ?? `${options.modelName}Factory`;
258
+ }
259
+ /**
260
+ * Get database table name from model name
261
+ */
262
+ function getTableName(modelName) {
263
+ // Convert PascalCase to snake_case
264
+ return (modelName
265
+ .replaceAll(/([A-Z])/g, '_$1')
266
+ .toLowerCase()
267
+ .replace(/^_/, '') + 's');
268
+ }
269
+ /**
270
+ * Get available seeder options
271
+ */
272
+ export function getAvailableOptions() {
273
+ return [
274
+ 'Truncate table before seeding (default: true)',
275
+ 'Custom record count (default: 10, max: 100000)',
276
+ 'Relationship seeding',
277
+ 'State-based distribution (active, inactive, deleted)',
278
+ 'Batch operations for large datasets',
279
+ ];
280
+ }
281
+ export const SeederGenerator = Object.freeze({
282
+ validateOptions,
283
+ generateSeeder,
284
+ getAvailableOptions,
285
+ });
286
+ export default SeederGenerator;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Service Integration Test Generator
3
+ * Generates integration tests for service-to-service communication
4
+ */
5
+ export interface ServiceEndpoint {
6
+ path: string;
7
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
8
+ name: string;
9
+ description?: string;
10
+ }
11
+ export interface ServiceIntegrationTestOptions {
12
+ name: string;
13
+ serviceName: string;
14
+ baseUrl?: string;
15
+ endpoints: ServiceEndpoint[];
16
+ authType?: 'none' | 'api-key' | 'jwt';
17
+ consumerService?: string;
18
+ testPath: string;
19
+ }
20
+ export interface ServiceIntegrationTestResult {
21
+ success: boolean;
22
+ testFile: string;
23
+ message: string;
24
+ }
25
+ /**
26
+ * Validate integration test options
27
+ */
28
+ export declare function validateOptions(options: ServiceIntegrationTestOptions): {
29
+ valid: boolean;
30
+ errors: string[];
31
+ };
32
+ /**
33
+ * Generate service integration tests
34
+ */
35
+ export declare function generateIntegrationTest(options: ServiceIntegrationTestOptions): Promise<ServiceIntegrationTestResult>;
36
+ export declare const ServiceIntegrationTestGenerator: Readonly<{
37
+ validateOptions: typeof validateOptions;
38
+ generateIntegrationTest: typeof generateIntegrationTest;
39
+ }>;
40
+ //# sourceMappingURL=ServiceIntegrationTestGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceIntegrationTestGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceIntegrationTestGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAuBA;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAuBvC;AA4ND,eAAO,MAAM,+BAA+B;;;EAG1C,CAAC"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Service Integration Test Generator
3
+ * Generates integration tests for service-to-service communication
4
+ */
5
+ import { FileGenerator } from '../scaffolding/FileGenerator';
6
+ import { CommonUtils } from '../../common/index';
7
+ import { Logger } from '../../config/logger';
8
+ import * as path from 'node:path';
9
+ /**
10
+ * Validate integration test options
11
+ */
12
+ export function validateOptions(options) {
13
+ const errors = [];
14
+ if (options.name === undefined || options.name.trim() === '') {
15
+ errors.push('Integration test name is required');
16
+ }
17
+ else if (!/^[A-Z][a-zA-Z\d]*Service$/.test(options.name)) {
18
+ errors.push('Integration test name must be PascalCase and end with Service');
19
+ }
20
+ if (options.serviceName === undefined || options.serviceName.trim() === '') {
21
+ errors.push('Service name is required');
22
+ }
23
+ else if (!/^[a-z\d-]+$/.test(options.serviceName)) {
24
+ errors.push('Service name must be lowercase alphanumeric with hyphens');
25
+ }
26
+ if (options.endpoints === undefined || options.endpoints.length === 0) {
27
+ errors.push('At least one endpoint is required');
28
+ }
29
+ return {
30
+ valid: errors.length === 0,
31
+ errors,
32
+ };
33
+ }
34
+ /**
35
+ * Generate service integration tests
36
+ */
37
+ export async function generateIntegrationTest(options) {
38
+ try {
39
+ const testCode = buildTestCode(options);
40
+ const fileName = `${CommonUtils.camelCase(options.name)}.test.ts`;
41
+ const filePath = path.join(options.testPath, fileName);
42
+ FileGenerator.writeFile(filePath, testCode, { overwrite: true });
43
+ Logger.info(`✅ Created service integration test: ${fileName}`);
44
+ return {
45
+ success: true,
46
+ testFile: filePath,
47
+ message: `Service integration test '${options.name}' created successfully`,
48
+ };
49
+ }
50
+ catch (error) {
51
+ Logger.error('Service integration test generation failed', error);
52
+ return {
53
+ success: false,
54
+ testFile: '',
55
+ message: error.message,
56
+ };
57
+ }
58
+ }
59
+ /**
60
+ * Build complete test code
61
+ */
62
+ function buildTestCode(options) {
63
+ const baseUrl = getBaseUrl(options);
64
+ const endpointTests = buildEndpointTests(options);
65
+ const consumerNote = getConsumerNote(options);
66
+ return `/**
67
+ * ${CommonUtils.camelCase(options.name)} Integration Tests
68
+ * Tests service-to-service communication
69
+ * Service: ${options.serviceName}${consumerNote}
70
+ */
71
+
72
+ import { describe, it, expect, beforeAll, afterAll, vi } from 'vitest';
73
+ import { ErrorFactory } from '../../exceptions/ZintrustError';
74
+
75
+ interface ServiceConfig {
76
+ baseUrl: string;
77
+ timeout?: number;
78
+ headers?: Record<string, string>;
79
+ }
80
+
81
+ interface TestContext {
82
+ baseUrl: string;
83
+ authToken?: string;
84
+ }
85
+
86
+ ${buildServiceClientObject()}
87
+
88
+ ${buildTestHelpers()}
89
+
90
+ describe('${options.name} Integration', () => {
91
+ let client: any;
92
+ const context: TestContext = {
93
+ baseUrl: '${baseUrl}',
94
+ };
95
+
96
+ beforeAll(async () => {
97
+ client = ServiceClient.create({
98
+ baseUrl: context.baseUrl,
99
+ });
100
+
101
+ // Optional: Setup auth or other prerequisites
102
+ if ('${options.authType}' === 'jwt') {
103
+ context.authToken = 'test-token';
104
+ }
105
+ });
106
+
107
+ ${endpointTests}
108
+ });
109
+ `;
110
+ }
111
+ /**
112
+ * Get base URL for tests
113
+ */
114
+ function getBaseUrl(options) {
115
+ return options.baseUrl !== undefined && options.baseUrl !== ''
116
+ ? options.baseUrl
117
+ : 'http://localhost:3001';
118
+ }
119
+ /**
120
+ * Build endpoint tests
121
+ */
122
+ function buildEndpointTests(options) {
123
+ return options.endpoints.map((ep) => buildEndpointTest(ep, options)).join('\n\n ');
124
+ }
125
+ /**
126
+ * Get consumer note for header
127
+ */
128
+ function getConsumerNote(options) {
129
+ return options.consumerService === undefined
130
+ ? ''
131
+ : `\n * Consumer Service: ${options.consumerService}\n`;
132
+ }
133
+ /**
134
+ * Build ServiceClient object code
135
+ */
136
+ function buildServiceClientObject() {
137
+ return `/**
138
+ * Service client for making inter-service calls
139
+ */
140
+ export const ServiceClient = {
141
+ /**
142
+ * Create a new service client instance
143
+ */
144
+ create(config: ServiceConfig) {
145
+ const baseUrl = config.baseUrl;
146
+ const timeout = config.timeout !== undefined ? config.timeout : 5000;
147
+ const defaultHeaders = {
148
+ 'Content-Type': 'application/json',
149
+ ...config.headers,
150
+ };
151
+
152
+ const client = {
153
+ /**
154
+ * Make HTTP request
155
+ */
156
+ async request<T>(
157
+ method: string,
158
+ path: string,
159
+ data?: Record<string, unknown>,
160
+ headers?: Record<string, string>
161
+ ): Promise<{ status: number; body: T; headers: Record<string, string> }> {
162
+ const url = \\\`\\\${baseUrl}\\\${path}\\\`;
163
+
164
+ try {
165
+ const response = await fetch(url, {
166
+ method,
167
+ headers: { ...defaultHeaders, ...headers },
168
+ body: data ? JSON.stringify(data) : undefined,
169
+ signal: AbortSignal.timeout(timeout),
170
+ });
171
+
172
+ const body = await response.json();
173
+
174
+ return {
175
+ status: response.status,
176
+ body: body as T,
177
+ headers: Object.fromEntries(response.headers.entries()),
178
+ };
179
+ } catch (error) {
180
+ throw ErrorFactory.createTryCatchError(
181
+ \\\`Service call failed: \\\${(error as Error).message}\\\`,
182
+ error
183
+ );
184
+ }
185
+ },
186
+
187
+ ${buildClientMethods()}
188
+ };
189
+
190
+ return client;
191
+ }
192
+ };`;
193
+ }
194
+ /**
195
+ * Build client methods for ServiceClient
196
+ */
197
+ function buildClientMethods() {
198
+ return ` /**
199
+ * GET request
200
+ */
201
+ async get<T>(path: string, headers?: Record<string, string>): Promise<{ status: number; body: T }> {
202
+ const res = await client.request<T>('GET', path, undefined, headers);
203
+ return { status: res.status, body: res.body };
204
+ },
205
+
206
+ /**
207
+ * POST request
208
+ */
209
+ async post<T>(path: string, data: Record<string, unknown>, headers?: Record<string, string>): Promise<{ status: number; body: T }> {
210
+ const res = await client.request<T>('POST', path, data, headers);
211
+ return { status: res.status, body: res.body };
212
+ },
213
+
214
+ /**
215
+ * PUT request
216
+ */
217
+ async put<T>(path: string, data: Record<string, unknown>, headers?: Record<string, string>): Promise<{ status: number; body: T }> {
218
+ const res = await client.request<T>('PUT', path, data, headers);
219
+ return { status: res.status, body: res.body };
220
+ },
221
+
222
+ /**
223
+ * PATCH request
224
+ */
225
+ async patch<T>(path: string, data: Record<string, unknown>, headers?: Record<string, string>): Promise<{ status: number; body: T }> {
226
+ const res = await client.request<T>('PATCH', path, data, headers);
227
+ return { status: res.status, body: res.body };
228
+ },
229
+
230
+ /**
231
+ * DELETE request
232
+ */
233
+ async delete<T>(path: string, headers?: Record<string, string>): Promise<{ status: number; body: T }> {
234
+ const res = await client.request<T>('DELETE', path, undefined, headers);
235
+ return { status: res.status, body: res.body };
236
+ }`;
237
+ }
238
+ /**
239
+ * Build test helpers
240
+ */
241
+ function buildTestHelpers() {
242
+ return `/**
243
+ * Test helper functions
244
+ */
245
+ function createClient(config: ServiceConfig) {
246
+ return ServiceClient.create(config);
247
+ }`;
248
+ }
249
+ /**
250
+ * Build single endpoint test
251
+ */
252
+ function buildEndpointTest(endpoint, _options) {
253
+ const testName = endpoint.name || `should handle ${endpoint.method} ${endpoint.path}`;
254
+ const method = endpoint.method.toLowerCase();
255
+ const hasBody = ['post', 'put', 'patch'].includes(method);
256
+ const bodyArg = hasBody ? ', { test: true }' : '';
257
+ return `it('${testName}', async () => {
258
+ const response = await client.${method}('${endpoint.path}'${bodyArg});
259
+
260
+ expect(response.status).toBeLessThan(500);
261
+ expect(response.body).toBeDefined();
262
+ });`;
263
+ }
264
+ export const ServiceIntegrationTestGenerator = Object.freeze({
265
+ validateOptions,
266
+ generateIntegrationTest,
267
+ });
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ServiceRequestFactoryGenerator - Generate inter-service request factories
3
+ * Creates type-safe factories for testing service-to-service API calls
4
+ */
5
+ export interface ServiceRequestField {
6
+ name: string;
7
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'date' | 'email' | 'url' | 'uuid';
8
+ required?: boolean;
9
+ validation?: string[];
10
+ example?: string | number | boolean;
11
+ description?: string;
12
+ }
13
+ export interface ServiceRequestOptions {
14
+ name: string;
15
+ serviceName: string;
16
+ endpoint: string;
17
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
18
+ fields: ServiceRequestField[];
19
+ factoryPath: string;
20
+ authenticated?: boolean;
21
+ headers?: Record<string, string>;
22
+ description?: string;
23
+ }
24
+ export interface ServiceRequestFactoryResult {
25
+ success: boolean;
26
+ factoryName: string;
27
+ factoryFile: string;
28
+ message: string;
29
+ }
30
+ /**
31
+ * Validate options
32
+ */
33
+ export declare function validateOptions(options: ServiceRequestOptions): {
34
+ valid: boolean;
35
+ errors: string[];
36
+ };
37
+ /**
38
+ * Generate request factory file
39
+ */
40
+ export declare function generateRequestFactory(options: ServiceRequestOptions): Promise<ServiceRequestFactoryResult>;
41
+ export declare const ServiceRequestFactoryGenerator: Readonly<{
42
+ validateOptions: typeof validateOptions;
43
+ generateRequestFactory: typeof generateRequestFactory;
44
+ }>;
45
+ //# sourceMappingURL=ServiceRequestFactoryGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceRequestFactoryGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ServiceRequestFactoryGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG;IAC/D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CAkCtC;AA8WD,eAAO,MAAM,8BAA8B;;;EAGzC,CAAC"}