@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,30 @@
1
+ /**
2
+ * Example Post Model
3
+ */
4
+
5
+ import { User } from '@app/Models/User';
6
+ import { type IModel, Model, type ModelConfig, type IRelationship } from '@zintrust/core';
7
+
8
+ export const PostConfig: ModelConfig = {
9
+ table: 'posts',
10
+ fillable: ['title', 'content', 'user_id'],
11
+ hidden: [],
12
+ timestamps: true,
13
+ casts: {
14
+ published_at: 'datetime',
15
+ is_published: 'boolean',
16
+ },
17
+ };
18
+
19
+ /**
20
+ * Post Model
21
+ * Refactored to Functional Object pattern
22
+ */
23
+ export const Post = Model.define(PostConfig, {
24
+ /**
25
+ * Get post's author
26
+ */
27
+ author(model: IModel): IRelationship {
28
+ return model.belongsTo(User);
29
+ },
30
+ });
@@ -0,0 +1,53 @@
1
+ /**
2
+ * User Model
3
+ */
4
+
5
+ import { Post } from '@app/Models/Post';
6
+ import { type IModel, Model } from '@zintrust/core';
7
+
8
+ /**
9
+ * User Model Definition
10
+ */
11
+ export const User = Model.define(
12
+ {
13
+ table: 'users',
14
+ fillable: ['name', 'email', 'password'],
15
+ hidden: ['password'],
16
+ timestamps: true,
17
+ casts: {
18
+ email_verified_at: 'datetime',
19
+ },
20
+ },
21
+ {
22
+ /**
23
+ * Get user's profile
24
+ */
25
+ profile(_model: IModel) {
26
+ return undefined; // Placeholder
27
+ },
28
+
29
+ /**
30
+ * Get user's posts
31
+ */
32
+ posts(model: IModel) {
33
+ return model.hasMany(Post);
34
+ },
35
+
36
+ /**
37
+ * Check if user is admin
38
+ */
39
+ isAdmin(model: IModel) {
40
+ return model.getAttribute('is_admin') === 1;
41
+ },
42
+
43
+ /**
44
+ * Get user's full name
45
+ */
46
+ getFullName(model: IModel) {
47
+ const name = model.getAttribute('name');
48
+ return typeof name === 'string' ? name : '';
49
+ },
50
+ }
51
+ );
52
+
53
+ export default User;
@@ -0,0 +1,453 @@
1
+ /**
2
+ * Unified Secrets Management Layer
3
+ * Abstracts secrets retrieval across different cloud platforms
4
+ * Supports: AWS Secrets Manager, Parameter Store, Cloudflare KV, Deno env
5
+ */
6
+
7
+ import { Logger } from '@config/logger';
8
+ import { ErrorFactory } from '@zintrust/core';
9
+
10
+ export interface CloudflareKV {
11
+ get(key: string): Promise<string | null>;
12
+ put(key: string, value: string, options?: { expirationTtl?: number }): Promise<void>;
13
+ delete(key: string): Promise<void>;
14
+ list(options?: { prefix?: string }): Promise<{ keys: { name: string }[] }>;
15
+ }
16
+
17
+ export interface SecretConfig {
18
+ platform: 'aws' | 'cloudflare' | 'deno' | 'local';
19
+ region?: string;
20
+ kv?: CloudflareKV; // Cloudflare KV namespace
21
+ }
22
+
23
+ export interface SecretValue {
24
+ key: string;
25
+ value: string;
26
+ expiresAt?: number;
27
+ rotationEnabled?: boolean;
28
+ }
29
+
30
+ let instance: SecretsManagerInstance | undefined;
31
+
32
+ interface SecretsManagerInstance {
33
+ getSecret(key: string, options?: GetSecretOptions): Promise<string>;
34
+ setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void>;
35
+ deleteSecret(key: string): Promise<void>;
36
+ rotateSecret(key: string): Promise<void>;
37
+ listSecrets(pattern?: string): Promise<string[]>;
38
+ clearCache(key?: string): void;
39
+ }
40
+
41
+ /**
42
+ * Get secret value from appropriate backend
43
+ */
44
+ async function runGetSecret(
45
+ config: SecretConfig,
46
+ cache: Map<string, { value: string; expiresAt: number }>,
47
+ key: string,
48
+ options?: GetSecretOptions
49
+ ): Promise<string> {
50
+ // Check cache first
51
+ const cached = cache.get(key);
52
+ if (cached !== undefined && cached.expiresAt > Date.now()) {
53
+ return cached.value;
54
+ }
55
+
56
+ let value: string;
57
+
58
+ switch (config.platform) {
59
+ case 'aws':
60
+ value = await getFromAWSSecretsManager(key);
61
+ break;
62
+ case 'cloudflare':
63
+ value = await getFromCloudflareKV(config, key);
64
+ break;
65
+ case 'deno':
66
+ value = await getFromDenoEnv(key);
67
+ break;
68
+ case 'local':
69
+ default:
70
+ value = await getFromEnv(key);
71
+ }
72
+
73
+ // Cache the value
74
+ const ttl = options?.cacheTtl ?? 3600000; // 1 hour default
75
+ cache.set(key, {
76
+ value,
77
+ expiresAt: Date.now() + ttl,
78
+ });
79
+
80
+ return value;
81
+ }
82
+
83
+ /**
84
+ * Set secret value
85
+ */
86
+ async function runSetSecret(
87
+ config: SecretConfig,
88
+ cache: Map<string, { value: string; expiresAt: number }>,
89
+ key: string,
90
+ value: string,
91
+ options?: SetSecretOptions
92
+ ): Promise<void> {
93
+ switch (config.platform) {
94
+ case 'aws':
95
+ await setInAWSSecretsManager(key, value, options);
96
+ break;
97
+ case 'cloudflare':
98
+ await setInCloudflareKV(config, key, value, options);
99
+ break;
100
+ case 'deno':
101
+ throw ErrorFactory.createConfigError('Cannot set secrets in Deno environment');
102
+ case 'local':
103
+ default:
104
+ throw ErrorFactory.createConfigError('Cannot set secrets in local environment');
105
+ }
106
+
107
+ // Invalidate cache
108
+ cache.delete(key);
109
+ }
110
+
111
+ /**
112
+ * Delete secret
113
+ */
114
+ async function runDeleteSecret(
115
+ config: SecretConfig,
116
+ cache: Map<string, { value: string; expiresAt: number }>,
117
+ key: string
118
+ ): Promise<void> {
119
+ switch (config.platform) {
120
+ case 'aws':
121
+ await deleteFromAWSSecretsManager(key);
122
+ break;
123
+ case 'cloudflare':
124
+ await deleteFromCloudflareKV(config, key);
125
+ break;
126
+ case 'deno':
127
+ case 'local':
128
+ default:
129
+ throw ErrorFactory.createConfigError('Cannot delete secrets in this environment');
130
+ }
131
+
132
+ // Invalidate cache
133
+ cache.delete(key);
134
+ }
135
+
136
+ /**
137
+ * SecretsManager implementation
138
+ * Refactored to Functional Object pattern
139
+ */
140
+ const SecretsManagerImpl = {
141
+ /**
142
+ * Create a new secrets manager instance
143
+ */
144
+ create(config: SecretConfig): SecretsManagerInstance {
145
+ const cache: Map<string, { value: string; expiresAt: number }> = new Map();
146
+
147
+ return {
148
+ /**
149
+ * Get secret value from appropriate backend
150
+ */
151
+ async getSecret(key: string, options?: GetSecretOptions): Promise<string> {
152
+ return runGetSecret(config, cache, key, options);
153
+ },
154
+
155
+ /**
156
+ * Set secret value
157
+ */
158
+ async setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void> {
159
+ return runSetSecret(config, cache, key, value, options);
160
+ },
161
+
162
+ /**
163
+ * Delete secret
164
+ */
165
+ async deleteSecret(key: string): Promise<void> {
166
+ return runDeleteSecret(config, cache, key);
167
+ },
168
+
169
+ /**
170
+ * Rotate secret (trigger new secret generation)
171
+ */
172
+ async rotateSecret(_key: string): Promise<void> {
173
+ if (config.platform === 'aws') {
174
+ // AWS Secrets Manager supports automatic rotation
175
+ throw ErrorFactory.createConfigError('Secret rotation not implemented');
176
+ }
177
+ throw ErrorFactory.createConfigError('Secret rotation not supported on this platform');
178
+ },
179
+
180
+ /**
181
+ * Get all secrets matching pattern
182
+ */
183
+ async listSecrets(pattern?: string): Promise<string[]> {
184
+ switch (config.platform) {
185
+ case 'aws':
186
+ return listFromAWSSecretsManager(pattern);
187
+ case 'cloudflare':
188
+ return listFromCloudflareKV(config, pattern);
189
+ case 'deno':
190
+ case 'local':
191
+ default:
192
+ return [];
193
+ }
194
+ },
195
+
196
+ /**
197
+ * Clear cache (useful after rotation)
198
+ */
199
+ clearCache(key?: string): void {
200
+ if (key === undefined) {
201
+ cache.clear();
202
+ } else {
203
+ cache.delete(key);
204
+ }
205
+ },
206
+ };
207
+ },
208
+ };
209
+
210
+ /**
211
+ * AWS Secrets Manager integration
212
+ */
213
+ async function getFromAWSSecretsManager(key: string): Promise<string> {
214
+ try {
215
+ Logger.debug(`[AWS] Getting secret: ${key}`);
216
+ throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
217
+ } catch (error) {
218
+ throw ErrorFactory.createTryCatchError(
219
+ `Failed to retrieve secret from AWS: ${(error as Error).message}`,
220
+ error
221
+ );
222
+ }
223
+ }
224
+
225
+ async function setInAWSSecretsManager(
226
+ key: string,
227
+ _value: string,
228
+ _options?: SetSecretOptions
229
+ ): Promise<void> {
230
+ Logger.info(`[AWS] Setting secret: ${key}`);
231
+ throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
232
+ }
233
+
234
+ async function deleteFromAWSSecretsManager(key: string): Promise<void> {
235
+ Logger.info(`[AWS] Deleting secret: ${key}`);
236
+ throw ErrorFactory.createConfigError('AWS SDK not available in core - use wrapper module');
237
+ }
238
+
239
+ async function listFromAWSSecretsManager(pattern?: string): Promise<string[]> {
240
+ Logger.info(`[AWS] Listing secrets with pattern: ${pattern ?? '*'}`);
241
+ return [];
242
+ }
243
+
244
+ /**
245
+ * Cloudflare KV integration
246
+ */
247
+ async function getFromCloudflareKV(config: SecretConfig, key: string): Promise<string> {
248
+ if (config.kv === undefined) {
249
+ throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
250
+ }
251
+ const value = await config.kv.get(key);
252
+ if (value === null || value === '') {
253
+ throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
254
+ }
255
+ return value;
256
+ }
257
+
258
+ async function setInCloudflareKV(
259
+ config: SecretConfig,
260
+ key: string,
261
+ value: string,
262
+ options?: SetSecretOptions
263
+ ): Promise<void> {
264
+ if (config.kv === undefined) {
265
+ throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
266
+ }
267
+ const ttl = options?.expirationTtl;
268
+ await config.kv.put(key, value, { expirationTtl: ttl });
269
+ }
270
+
271
+ async function deleteFromCloudflareKV(config: SecretConfig, key: string): Promise<void> {
272
+ if (config.kv === undefined) {
273
+ throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
274
+ }
275
+ await config.kv.delete(key);
276
+ }
277
+
278
+ async function listFromCloudflareKV(config: SecretConfig, pattern?: string): Promise<string[]> {
279
+ if (config.kv === undefined) {
280
+ throw ErrorFactory.createConfigError('Cloudflare KV namespace not configured');
281
+ }
282
+ const result = await config.kv.list({ prefix: pattern });
283
+ return result.keys.map((k: { name: string }) => k.name);
284
+ }
285
+
286
+ /**
287
+ * Deno environment integration
288
+ */
289
+ async function getFromDenoEnv(key: string): Promise<string> {
290
+ const value = (
291
+ globalThis as unknown as Record<string, { env?: { get?: (key: string) => string } }>
292
+ )['Deno']?.env?.get?.(key);
293
+ if (value === undefined || value === null || value === '') {
294
+ throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
295
+ }
296
+ return value;
297
+ }
298
+
299
+ /**
300
+ * Local environment variables (Node.js)
301
+ */
302
+ async function getFromEnv(key: string): Promise<string> {
303
+ const value = process.env[key];
304
+ if (value === undefined || value === null || value === '') {
305
+ throw ErrorFactory.createNotFoundError(`Secret not found: ${key}`, { key });
306
+ }
307
+ return value;
308
+ }
309
+
310
+ /**
311
+ * SecretsManager - Unified interface for retrieving secrets
312
+ * Sealed namespace for immutability
313
+ */
314
+ export const SecretsManager = Object.freeze({
315
+ /**
316
+ * Get or create singleton instance
317
+ */
318
+ getInstance(config?: SecretConfig): SecretsManagerInstance {
319
+ if (instance === undefined && config !== undefined) {
320
+ instance = SecretsManagerImpl.create(config);
321
+ }
322
+ if (instance === undefined) {
323
+ throw ErrorFactory.createConfigError(
324
+ 'SecretsManager not initialized. Call getInstance(config) first.'
325
+ );
326
+ }
327
+ return instance;
328
+ },
329
+
330
+ /**
331
+ * Get secret value from appropriate backend
332
+ */
333
+ async getSecret(key: string, options?: GetSecretOptions): Promise<string> {
334
+ return this.getInstance().getSecret(key, options);
335
+ },
336
+
337
+ /**
338
+ * Set secret value
339
+ */
340
+ async setSecret(key: string, value: string, options?: SetSecretOptions): Promise<void> {
341
+ return this.getInstance().setSecret(key, value, options);
342
+ },
343
+
344
+ /**
345
+ * Delete secret
346
+ */
347
+ async deleteSecret(key: string): Promise<void> {
348
+ return this.getInstance().deleteSecret(key);
349
+ },
350
+
351
+ /**
352
+ * Rotate secret (trigger new secret generation)
353
+ */
354
+ async rotateSecret(key: string): Promise<void> {
355
+ return this.getInstance().rotateSecret(key);
356
+ },
357
+
358
+ /**
359
+ * Get all secrets matching pattern
360
+ */
361
+ async listSecrets(pattern?: string): Promise<string[]> {
362
+ return this.getInstance().listSecrets(pattern);
363
+ },
364
+
365
+ /**
366
+ * Clear cache (useful after rotation)
367
+ */
368
+ clearCache(key?: string): void {
369
+ this.getInstance().clearCache(key);
370
+ },
371
+ });
372
+
373
+ /**
374
+ * Predefined secret keys
375
+ * Sealed namespace for immutability
376
+ */
377
+ export const SECRETS = Object.freeze({
378
+ // Database credentials
379
+ DB_USERNAME: 'db/username',
380
+ // Secret identifier only (not a credential value)
381
+ DB_PASSWORD: 'db/password', // NOSONAR (typescript:S2068) - secret key name, not hardcoded password
382
+ DB_HOST: 'db/host',
383
+ DB_PORT: 'db/port',
384
+ DB_DATABASE: 'db/database',
385
+
386
+ // API keys
387
+ JWT_SECRET: 'jwt/secret',
388
+ JWT_REFRESH_SECRET: 'jwt/refresh-secret',
389
+
390
+ // Encryption
391
+ ENCRYPTION_KEY: 'encryption/key',
392
+ ENCRYPTION_IV: 'encryption/iv',
393
+
394
+ // Third-party APIs
395
+ STRIPE_API_KEY: 'stripe/api-key',
396
+ STRIPE_WEBHOOK_SECRET: 'stripe/webhook-secret',
397
+ SENDGRID_API_KEY: 'sendgrid/api-key',
398
+ GITHUB_TOKEN: 'github/token',
399
+
400
+ // Session/CSRF
401
+ SESSION_SECRET: 'session/secret',
402
+ CSRF_SECRET: 'csrf/secret',
403
+ } as const);
404
+
405
+ export interface GetSecretOptions {
406
+ cacheTtl?: number; // Cache time-to-live in milliseconds
407
+ throwIfMissing?: boolean;
408
+ }
409
+
410
+ export interface SetSecretOptions {
411
+ expirationTtl?: number; // Expiration time-to-live in seconds
412
+ metadata?: Record<string, unknown>;
413
+ }
414
+
415
+ /**
416
+ * Helper to get database credentials using secrets manager
417
+ */
418
+ export async function getDatabaseCredentials(): Promise<DatabaseCredentials> {
419
+ const manager = SecretsManager.getInstance();
420
+
421
+ return {
422
+ username: await manager.getSecret(SECRETS.DB_USERNAME),
423
+ password: await manager.getSecret(SECRETS.DB_PASSWORD),
424
+ host: await manager.getSecret(SECRETS.DB_HOST),
425
+ port: Number.parseInt(await manager.getSecret(SECRETS.DB_PORT), 10),
426
+ database: await manager.getSecret(SECRETS.DB_DATABASE),
427
+ };
428
+ }
429
+
430
+ /**
431
+ * Helper to get JWT secrets
432
+ */
433
+ export async function getJwtSecrets(): Promise<JwtSecrets> {
434
+ const manager = SecretsManager.getInstance();
435
+
436
+ return {
437
+ secret: await manager.getSecret(SECRETS.JWT_SECRET),
438
+ refreshSecret: await manager.getSecret(SECRETS.JWT_REFRESH_SECRET),
439
+ };
440
+ }
441
+
442
+ export interface DatabaseCredentials {
443
+ username: string;
444
+ password: string;
445
+ host: string;
446
+ port: number;
447
+ database: string;
448
+ }
449
+
450
+ export interface JwtSecrets {
451
+ secret: string;
452
+ refreshSecret: string;
453
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Application Configuration
3
+ * Core application settings
4
+ * Sealed namespace for immutability
5
+ */
6
+
7
+ import { Env } from '@config/env';
8
+
9
+ const getSafeEnv = (): NodeJS.ProcessEnv => {
10
+ const baseEnv: Partial<NodeJS.ProcessEnv> = typeof process === 'undefined' ? {} : process.env;
11
+
12
+ return {
13
+ ...(baseEnv as NodeJS.ProcessEnv),
14
+
15
+ // Ensure required keys exist (env.d.ts augments ProcessEnv with required fields)
16
+ NODE_ENV: baseEnv.NODE_ENV ?? (Env.NODE_ENV as NodeJS.ProcessEnv['NODE_ENV']),
17
+ USE_RAW_QRY: baseEnv.USE_RAW_QRY ?? (Env.get('USE_RAW_QRY') || undefined),
18
+ SERVICE_API_KEY: baseEnv.SERVICE_API_KEY ?? Env.get('SERVICE_API_KEY', ''),
19
+ SERVICE_JWT_SECRET: baseEnv.SERVICE_JWT_SECRET ?? Env.get('SERVICE_JWT_SECRET', ''),
20
+ BASE_URL: baseEnv.BASE_URL ?? Env.get('BASE_URL', ''),
21
+ MODE: baseEnv.MODE ?? Env.get('MODE', ''),
22
+
23
+ // Hardening for child-process usage
24
+ PATH: Env.SAFE_PATH,
25
+ npm_config_scripts_prepend_node_path: 'true',
26
+ };
27
+ };
28
+
29
+ const appConfigObj = {
30
+ /**
31
+ * Application name
32
+ */
33
+ name: Env.APP_NAME,
34
+
35
+ /**
36
+ * Application environment
37
+ */
38
+ environment: Env.NODE_ENV as 'development' | 'production' | 'testing',
39
+
40
+ /**
41
+ * Application port
42
+ */
43
+ port: Env.PORT,
44
+
45
+ /**
46
+ * Application host
47
+ */
48
+ host: Env.HOST,
49
+
50
+ /**
51
+ * Is development environment
52
+ */
53
+ isDevelopment(): boolean {
54
+ return this.environment === 'development';
55
+ },
56
+
57
+ /**
58
+ * Is production environment
59
+ */
60
+ isProduction(): boolean {
61
+ return this.environment === 'production';
62
+ },
63
+
64
+ /**
65
+ * Is testing environment
66
+ */
67
+ isTesting(): boolean {
68
+ return this.environment === 'testing';
69
+ },
70
+
71
+ /**
72
+ * Application debug mode
73
+ */
74
+ debug: Env.DEBUG,
75
+
76
+ /**
77
+ * Application timezone
78
+ */
79
+ timezone: Env.get('APP_TIMEZONE', 'UTC'),
80
+
81
+ /**
82
+ * Request timeout (milliseconds)
83
+ */
84
+ requestTimeout: Env.getInt('REQUEST_TIMEOUT', 30000),
85
+
86
+ /**
87
+ * Max request body size
88
+ */
89
+ maxBodySize: Env.get('MAX_BODY_SIZE', '10mb'),
90
+
91
+ getSafeEnv,
92
+ } as const;
93
+
94
+ export const appConfig = Object.freeze(appConfigObj);
95
+ export { getSafeEnv };
96
+
97
+ export type AppConfig = typeof appConfig;