@engjts/nexus 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 (843) hide show
  1. package/README.md +164 -0
  2. package/dist/advanced/cache/InMemoryCacheStore.d.ts +18 -0
  3. package/dist/advanced/cache/InMemoryCacheStore.d.ts.map +1 -0
  4. package/dist/advanced/cache/InMemoryCacheStore.js +60 -0
  5. package/dist/advanced/cache/InMemoryCacheStore.js.map +1 -0
  6. package/dist/advanced/cache/MultiTierCache.d.ts +55 -0
  7. package/dist/advanced/cache/MultiTierCache.d.ts.map +1 -0
  8. package/dist/advanced/cache/MultiTierCache.js +159 -0
  9. package/dist/advanced/cache/MultiTierCache.js.map +1 -0
  10. package/dist/advanced/cache/RedisCacheStore.d.ts +153 -0
  11. package/dist/advanced/cache/RedisCacheStore.d.ts.map +1 -0
  12. package/dist/advanced/cache/RedisCacheStore.js +247 -0
  13. package/dist/advanced/cache/RedisCacheStore.js.map +1 -0
  14. package/dist/advanced/cache/index.d.ts +6 -0
  15. package/dist/advanced/cache/index.d.ts.map +1 -0
  16. package/dist/advanced/cache/index.js +26 -0
  17. package/dist/advanced/cache/index.js.map +1 -0
  18. package/dist/advanced/cache/types.d.ts +35 -0
  19. package/dist/advanced/cache/types.d.ts.map +1 -0
  20. package/dist/advanced/cache/types.js +3 -0
  21. package/dist/advanced/cache/types.js.map +1 -0
  22. package/dist/advanced/graphql/SimpleDataLoader.d.ts +8 -0
  23. package/dist/advanced/graphql/SimpleDataLoader.d.ts.map +1 -0
  24. package/dist/advanced/graphql/SimpleDataLoader.js +43 -0
  25. package/dist/advanced/graphql/SimpleDataLoader.js.map +1 -0
  26. package/dist/advanced/graphql/index.d.ts +15 -0
  27. package/dist/advanced/graphql/index.d.ts.map +1 -0
  28. package/dist/advanced/graphql/index.js +19 -0
  29. package/dist/advanced/graphql/index.js.map +1 -0
  30. package/dist/advanced/graphql/server.d.ts +23 -0
  31. package/dist/advanced/graphql/server.d.ts.map +1 -0
  32. package/dist/advanced/graphql/server.js +208 -0
  33. package/dist/advanced/graphql/server.js.map +1 -0
  34. package/dist/advanced/graphql/types.d.ts +45 -0
  35. package/dist/advanced/graphql/types.d.ts.map +1 -0
  36. package/dist/advanced/graphql/types.js +3 -0
  37. package/dist/advanced/graphql/types.js.map +1 -0
  38. package/dist/advanced/jobs/InMemoryQueueStore.d.ts +14 -0
  39. package/dist/advanced/jobs/InMemoryQueueStore.d.ts.map +1 -0
  40. package/dist/advanced/jobs/InMemoryQueueStore.js +59 -0
  41. package/dist/advanced/jobs/InMemoryQueueStore.js.map +1 -0
  42. package/dist/advanced/jobs/JobQueue.d.ts +178 -0
  43. package/dist/advanced/jobs/JobQueue.d.ts.map +1 -0
  44. package/dist/advanced/jobs/JobQueue.js +440 -0
  45. package/dist/advanced/jobs/JobQueue.js.map +1 -0
  46. package/dist/advanced/jobs/RedisQueueStore.d.ts +157 -0
  47. package/dist/advanced/jobs/RedisQueueStore.d.ts.map +1 -0
  48. package/dist/advanced/jobs/RedisQueueStore.js +264 -0
  49. package/dist/advanced/jobs/RedisQueueStore.js.map +1 -0
  50. package/dist/advanced/jobs/index.d.ts +6 -0
  51. package/dist/advanced/jobs/index.d.ts.map +1 -0
  52. package/dist/advanced/jobs/index.js +26 -0
  53. package/dist/advanced/jobs/index.js.map +1 -0
  54. package/dist/advanced/jobs/types.d.ts +64 -0
  55. package/dist/advanced/jobs/types.d.ts.map +1 -0
  56. package/dist/advanced/jobs/types.js +3 -0
  57. package/dist/advanced/jobs/types.js.map +1 -0
  58. package/dist/advanced/observability/APMManager.d.ts +64 -0
  59. package/dist/advanced/observability/APMManager.d.ts.map +1 -0
  60. package/dist/advanced/observability/APMManager.js +150 -0
  61. package/dist/advanced/observability/APMManager.js.map +1 -0
  62. package/dist/advanced/observability/AlertManager.d.ts +30 -0
  63. package/dist/advanced/observability/AlertManager.d.ts.map +1 -0
  64. package/dist/advanced/observability/AlertManager.js +98 -0
  65. package/dist/advanced/observability/AlertManager.js.map +1 -0
  66. package/dist/advanced/observability/MetricRegistry.d.ts +37 -0
  67. package/dist/advanced/observability/MetricRegistry.d.ts.map +1 -0
  68. package/dist/advanced/observability/MetricRegistry.js +129 -0
  69. package/dist/advanced/observability/MetricRegistry.js.map +1 -0
  70. package/dist/advanced/observability/ObservabilityCenter.d.ts +113 -0
  71. package/dist/advanced/observability/ObservabilityCenter.d.ts.map +1 -0
  72. package/dist/advanced/observability/ObservabilityCenter.js +266 -0
  73. package/dist/advanced/observability/ObservabilityCenter.js.map +1 -0
  74. package/dist/advanced/observability/StructuredLogger.d.ts +25 -0
  75. package/dist/advanced/observability/StructuredLogger.d.ts.map +1 -0
  76. package/dist/advanced/observability/StructuredLogger.js +137 -0
  77. package/dist/advanced/observability/StructuredLogger.js.map +1 -0
  78. package/dist/advanced/observability/TracingManager.d.ts +31 -0
  79. package/dist/advanced/observability/TracingManager.d.ts.map +1 -0
  80. package/dist/advanced/observability/TracingManager.js +105 -0
  81. package/dist/advanced/observability/TracingManager.js.map +1 -0
  82. package/dist/advanced/observability/adapters.d.ts +134 -0
  83. package/dist/advanced/observability/adapters.d.ts.map +1 -0
  84. package/dist/advanced/observability/adapters.js +257 -0
  85. package/dist/advanced/observability/adapters.js.map +1 -0
  86. package/dist/advanced/observability/createObservabilityMiddleware.d.ts +8 -0
  87. package/dist/advanced/observability/createObservabilityMiddleware.d.ts.map +1 -0
  88. package/dist/advanced/observability/createObservabilityMiddleware.js +46 -0
  89. package/dist/advanced/observability/createObservabilityMiddleware.js.map +1 -0
  90. package/dist/advanced/observability/index.d.ts +2 -0
  91. package/dist/advanced/observability/index.d.ts.map +1 -0
  92. package/dist/advanced/observability/index.js +13 -0
  93. package/dist/advanced/observability/index.js.map +1 -0
  94. package/dist/advanced/observability/types.d.ts +182 -0
  95. package/dist/advanced/observability/types.d.ts.map +1 -0
  96. package/dist/advanced/observability/types.js +3 -0
  97. package/dist/advanced/observability/types.js.map +1 -0
  98. package/dist/advanced/playground/extractPathParams.d.ts +4 -0
  99. package/dist/advanced/playground/extractPathParams.d.ts.map +1 -0
  100. package/dist/advanced/playground/extractPathParams.js +8 -0
  101. package/dist/advanced/playground/extractPathParams.js.map +1 -0
  102. package/dist/advanced/playground/generateFieldExample.d.ts +2 -0
  103. package/dist/advanced/playground/generateFieldExample.d.ts.map +1 -0
  104. package/dist/advanced/playground/generateFieldExample.js +40 -0
  105. package/dist/advanced/playground/generateFieldExample.js.map +1 -0
  106. package/dist/advanced/playground/generatePlaygroundHTML.d.ts +3 -0
  107. package/dist/advanced/playground/generatePlaygroundHTML.d.ts.map +1 -0
  108. package/dist/advanced/playground/generatePlaygroundHTML.js +1848 -0
  109. package/dist/advanced/playground/generatePlaygroundHTML.js.map +1 -0
  110. package/dist/advanced/playground/generateSummary.d.ts +3 -0
  111. package/dist/advanced/playground/generateSummary.d.ts.map +1 -0
  112. package/dist/advanced/playground/generateSummary.js +19 -0
  113. package/dist/advanced/playground/generateSummary.js.map +1 -0
  114. package/dist/advanced/playground/getTagFromPath.d.ts +2 -0
  115. package/dist/advanced/playground/getTagFromPath.d.ts.map +1 -0
  116. package/dist/advanced/playground/getTagFromPath.js +11 -0
  117. package/dist/advanced/playground/getTagFromPath.js.map +1 -0
  118. package/dist/advanced/playground/index.d.ts +7 -0
  119. package/dist/advanced/playground/index.d.ts.map +1 -0
  120. package/dist/advanced/playground/index.js +10 -0
  121. package/dist/advanced/playground/index.js.map +1 -0
  122. package/dist/advanced/playground/playground.d.ts +4 -0
  123. package/dist/advanced/playground/playground.d.ts.map +1 -0
  124. package/dist/advanced/playground/playground.js +139 -0
  125. package/dist/advanced/playground/playground.js.map +1 -0
  126. package/dist/advanced/playground/types.d.ts +18 -0
  127. package/dist/advanced/playground/types.d.ts.map +1 -0
  128. package/dist/advanced/playground/types.js +3 -0
  129. package/dist/advanced/playground/types.js.map +1 -0
  130. package/dist/advanced/playground/zodToExample.d.ts +2 -0
  131. package/dist/advanced/playground/zodToExample.d.ts.map +1 -0
  132. package/dist/advanced/playground/zodToExample.js +22 -0
  133. package/dist/advanced/playground/zodToExample.js.map +1 -0
  134. package/dist/advanced/playground/zodToParams.d.ts +5 -0
  135. package/dist/advanced/playground/zodToParams.d.ts.map +1 -0
  136. package/dist/advanced/playground/zodToParams.js +18 -0
  137. package/dist/advanced/playground/zodToParams.js.map +1 -0
  138. package/dist/advanced/postman/buildAuth.d.ts +3 -0
  139. package/dist/advanced/postman/buildAuth.d.ts.map +1 -0
  140. package/dist/advanced/postman/buildAuth.js +32 -0
  141. package/dist/advanced/postman/buildAuth.js.map +1 -0
  142. package/dist/advanced/postman/buildBody.d.ts +3 -0
  143. package/dist/advanced/postman/buildBody.d.ts.map +1 -0
  144. package/dist/advanced/postman/buildBody.js +15 -0
  145. package/dist/advanced/postman/buildBody.js.map +1 -0
  146. package/dist/advanced/postman/buildQueryParams.d.ts +3 -0
  147. package/dist/advanced/postman/buildQueryParams.d.ts.map +1 -0
  148. package/dist/advanced/postman/buildQueryParams.js +26 -0
  149. package/dist/advanced/postman/buildQueryParams.js.map +1 -0
  150. package/dist/advanced/postman/buildRequestItem.d.ts +3 -0
  151. package/dist/advanced/postman/buildRequestItem.d.ts.map +1 -0
  152. package/dist/advanced/postman/buildRequestItem.js +33 -0
  153. package/dist/advanced/postman/buildRequestItem.js.map +1 -0
  154. package/dist/advanced/postman/buildResponses.d.ts +3 -0
  155. package/dist/advanced/postman/buildResponses.d.ts.map +1 -0
  156. package/dist/advanced/postman/buildResponses.js +12 -0
  157. package/dist/advanced/postman/buildResponses.js.map +1 -0
  158. package/dist/advanced/postman/buildUrl.d.ts +3 -0
  159. package/dist/advanced/postman/buildUrl.d.ts.map +1 -0
  160. package/dist/advanced/postman/buildUrl.js +30 -0
  161. package/dist/advanced/postman/buildUrl.js.map +1 -0
  162. package/dist/advanced/postman/capitalize.d.ts +2 -0
  163. package/dist/advanced/postman/capitalize.d.ts.map +1 -0
  164. package/dist/advanced/postman/capitalize.js +7 -0
  165. package/dist/advanced/postman/capitalize.js.map +1 -0
  166. package/dist/advanced/postman/generateCollection.d.ts +3 -0
  167. package/dist/advanced/postman/generateCollection.d.ts.map +1 -0
  168. package/dist/advanced/postman/generateCollection.js +50 -0
  169. package/dist/advanced/postman/generateCollection.js.map +1 -0
  170. package/dist/advanced/postman/generateEnvironment.d.ts +3 -0
  171. package/dist/advanced/postman/generateEnvironment.d.ts.map +1 -0
  172. package/dist/advanced/postman/generateEnvironment.js +33 -0
  173. package/dist/advanced/postman/generateEnvironment.js.map +1 -0
  174. package/dist/advanced/postman/generateExampleFromZod.d.ts +2 -0
  175. package/dist/advanced/postman/generateExampleFromZod.d.ts.map +1 -0
  176. package/dist/advanced/postman/generateExampleFromZod.js +22 -0
  177. package/dist/advanced/postman/generateExampleFromZod.js.map +1 -0
  178. package/dist/advanced/postman/generateFieldExample.d.ts +2 -0
  179. package/dist/advanced/postman/generateFieldExample.d.ts.map +1 -0
  180. package/dist/advanced/postman/generateFieldExample.js +55 -0
  181. package/dist/advanced/postman/generateFieldExample.js.map +1 -0
  182. package/dist/advanced/postman/generateName.d.ts +3 -0
  183. package/dist/advanced/postman/generateName.d.ts.map +1 -0
  184. package/dist/advanced/postman/generateName.js +19 -0
  185. package/dist/advanced/postman/generateName.js.map +1 -0
  186. package/dist/advanced/postman/generateUUID.d.ts +2 -0
  187. package/dist/advanced/postman/generateUUID.d.ts.map +1 -0
  188. package/dist/advanced/postman/generateUUID.js +14 -0
  189. package/dist/advanced/postman/generateUUID.js.map +1 -0
  190. package/dist/advanced/postman/getTagFromPath.d.ts +2 -0
  191. package/dist/advanced/postman/getTagFromPath.d.ts.map +1 -0
  192. package/dist/advanced/postman/getTagFromPath.js +12 -0
  193. package/dist/advanced/postman/getTagFromPath.js.map +1 -0
  194. package/dist/advanced/postman/index.d.ts +28 -0
  195. package/dist/advanced/postman/index.d.ts.map +1 -0
  196. package/dist/advanced/postman/index.js +30 -0
  197. package/dist/advanced/postman/index.js.map +1 -0
  198. package/dist/advanced/postman/postman.d.ts +7 -0
  199. package/dist/advanced/postman/postman.d.ts.map +1 -0
  200. package/dist/advanced/postman/postman.js +138 -0
  201. package/dist/advanced/postman/postman.js.map +1 -0
  202. package/dist/advanced/postman/slugify.d.ts +2 -0
  203. package/dist/advanced/postman/slugify.d.ts.map +1 -0
  204. package/dist/advanced/postman/slugify.js +10 -0
  205. package/dist/advanced/postman/slugify.js.map +1 -0
  206. package/dist/advanced/postman/types.d.ts +133 -0
  207. package/dist/advanced/postman/types.d.ts.map +1 -0
  208. package/dist/advanced/postman/types.js +3 -0
  209. package/dist/advanced/postman/types.js.map +1 -0
  210. package/dist/advanced/realtime/index.d.ts +13 -0
  211. package/dist/advanced/realtime/index.d.ts.map +1 -0
  212. package/dist/advanced/realtime/index.js +17 -0
  213. package/dist/advanced/realtime/index.js.map +1 -0
  214. package/dist/advanced/realtime/websocket.d.ts +60 -0
  215. package/dist/advanced/realtime/websocket.d.ts.map +1 -0
  216. package/dist/advanced/realtime/websocket.js +197 -0
  217. package/dist/advanced/realtime/websocket.js.map +1 -0
  218. package/dist/advanced/sentry/index.d.ts +287 -0
  219. package/dist/advanced/sentry/index.d.ts.map +1 -0
  220. package/dist/advanced/sentry/index.js +1002 -0
  221. package/dist/advanced/sentry/index.js.map +1 -0
  222. package/dist/advanced/sentry/types.d.ts +298 -0
  223. package/dist/advanced/sentry/types.d.ts.map +1 -0
  224. package/dist/advanced/sentry/types.js +6 -0
  225. package/dist/advanced/sentry/types.js.map +1 -0
  226. package/dist/advanced/static/generateDirectoryListing.d.ts +5 -0
  227. package/dist/advanced/static/generateDirectoryListing.d.ts.map +1 -0
  228. package/dist/advanced/static/generateDirectoryListing.js +44 -0
  229. package/dist/advanced/static/generateDirectoryListing.js.map +1 -0
  230. package/dist/advanced/static/generateETag.d.ts +8 -0
  231. package/dist/advanced/static/generateETag.d.ts.map +1 -0
  232. package/dist/advanced/static/generateETag.js +10 -0
  233. package/dist/advanced/static/generateETag.js.map +1 -0
  234. package/dist/advanced/static/getMimeType.d.ts +5 -0
  235. package/dist/advanced/static/getMimeType.d.ts.map +1 -0
  236. package/dist/advanced/static/getMimeType.js +11 -0
  237. package/dist/advanced/static/getMimeType.js.map +1 -0
  238. package/dist/advanced/static/index.d.ts +30 -0
  239. package/dist/advanced/static/index.d.ts.map +1 -0
  240. package/dist/advanced/static/index.js +33 -0
  241. package/dist/advanced/static/index.js.map +1 -0
  242. package/dist/advanced/static/isSafePath.d.ts +5 -0
  243. package/dist/advanced/static/isSafePath.d.ts.map +1 -0
  244. package/dist/advanced/static/isSafePath.js +14 -0
  245. package/dist/advanced/static/isSafePath.js.map +1 -0
  246. package/dist/advanced/static/publicDir.d.ts +12 -0
  247. package/dist/advanced/static/publicDir.d.ts.map +1 -0
  248. package/dist/advanced/static/publicDir.js +22 -0
  249. package/dist/advanced/static/publicDir.js.map +1 -0
  250. package/dist/advanced/static/serveStatic.d.ts +7 -0
  251. package/dist/advanced/static/serveStatic.d.ts.map +1 -0
  252. package/dist/advanced/static/serveStatic.js +198 -0
  253. package/dist/advanced/static/serveStatic.js.map +1 -0
  254. package/dist/advanced/static/spa.d.ts +14 -0
  255. package/dist/advanced/static/spa.d.ts.map +1 -0
  256. package/dist/advanced/static/spa.js +23 -0
  257. package/dist/advanced/static/spa.js.map +1 -0
  258. package/dist/advanced/static/types.d.ts +78 -0
  259. package/dist/advanced/static/types.d.ts.map +1 -0
  260. package/dist/advanced/static/types.js +67 -0
  261. package/dist/advanced/static/types.js.map +1 -0
  262. package/dist/advanced/swagger/SwaggerGenerator.d.ts +19 -0
  263. package/dist/advanced/swagger/SwaggerGenerator.d.ts.map +1 -0
  264. package/dist/advanced/swagger/SwaggerGenerator.js +59 -0
  265. package/dist/advanced/swagger/SwaggerGenerator.js.map +1 -0
  266. package/dist/advanced/swagger/buildOperation.d.ts +6 -0
  267. package/dist/advanced/swagger/buildOperation.d.ts.map +1 -0
  268. package/dist/advanced/swagger/buildOperation.js +54 -0
  269. package/dist/advanced/swagger/buildOperation.js.map +1 -0
  270. package/dist/advanced/swagger/buildParameters.d.ts +6 -0
  271. package/dist/advanced/swagger/buildParameters.d.ts.map +1 -0
  272. package/dist/advanced/swagger/buildParameters.js +57 -0
  273. package/dist/advanced/swagger/buildParameters.js.map +1 -0
  274. package/dist/advanced/swagger/buildRequestBody.d.ts +7 -0
  275. package/dist/advanced/swagger/buildRequestBody.d.ts.map +1 -0
  276. package/dist/advanced/swagger/buildRequestBody.js +19 -0
  277. package/dist/advanced/swagger/buildRequestBody.js.map +1 -0
  278. package/dist/advanced/swagger/buildResponses.d.ts +7 -0
  279. package/dist/advanced/swagger/buildResponses.d.ts.map +1 -0
  280. package/dist/advanced/swagger/buildResponses.js +48 -0
  281. package/dist/advanced/swagger/buildResponses.js.map +1 -0
  282. package/dist/advanced/swagger/capitalize.d.ts +2 -0
  283. package/dist/advanced/swagger/capitalize.d.ts.map +1 -0
  284. package/dist/advanced/swagger/capitalize.js +7 -0
  285. package/dist/advanced/swagger/capitalize.js.map +1 -0
  286. package/dist/advanced/swagger/convertPath.d.ts +6 -0
  287. package/dist/advanced/swagger/convertPath.d.ts.map +1 -0
  288. package/dist/advanced/swagger/convertPath.js +11 -0
  289. package/dist/advanced/swagger/convertPath.js.map +1 -0
  290. package/dist/advanced/swagger/createSwagger.d.ts +8 -0
  291. package/dist/advanced/swagger/createSwagger.d.ts.map +1 -0
  292. package/dist/advanced/swagger/createSwagger.js +12 -0
  293. package/dist/advanced/swagger/createSwagger.js.map +1 -0
  294. package/dist/advanced/swagger/generateOperationId.d.ts +6 -0
  295. package/dist/advanced/swagger/generateOperationId.d.ts.map +1 -0
  296. package/dist/advanced/swagger/generateOperationId.js +20 -0
  297. package/dist/advanced/swagger/generateOperationId.js.map +1 -0
  298. package/dist/advanced/swagger/generateSpec.d.ts +6 -0
  299. package/dist/advanced/swagger/generateSpec.d.ts.map +1 -0
  300. package/dist/advanced/swagger/generateSpec.js +85 -0
  301. package/dist/advanced/swagger/generateSpec.js.map +1 -0
  302. package/dist/advanced/swagger/generateSummary.d.ts +6 -0
  303. package/dist/advanced/swagger/generateSummary.d.ts.map +1 -0
  304. package/dist/advanced/swagger/generateSummary.js +22 -0
  305. package/dist/advanced/swagger/generateSummary.js.map +1 -0
  306. package/dist/advanced/swagger/generateSwaggerUI.d.ts +6 -0
  307. package/dist/advanced/swagger/generateSwaggerUI.d.ts.map +1 -0
  308. package/dist/advanced/swagger/generateSwaggerUI.js +69 -0
  309. package/dist/advanced/swagger/generateSwaggerUI.js.map +1 -0
  310. package/dist/advanced/swagger/generateThemeCss.d.ts +6 -0
  311. package/dist/advanced/swagger/generateThemeCss.d.ts.map +1 -0
  312. package/dist/advanced/swagger/generateThemeCss.js +53 -0
  313. package/dist/advanced/swagger/generateThemeCss.js.map +1 -0
  314. package/dist/advanced/swagger/index.d.ts +23 -0
  315. package/dist/advanced/swagger/index.d.ts.map +1 -0
  316. package/dist/advanced/swagger/index.js +26 -0
  317. package/dist/advanced/swagger/index.js.map +1 -0
  318. package/dist/advanced/swagger/swagger.d.ts +36 -0
  319. package/dist/advanced/swagger/swagger.d.ts.map +1 -0
  320. package/dist/advanced/swagger/swagger.js +198 -0
  321. package/dist/advanced/swagger/swagger.js.map +1 -0
  322. package/dist/advanced/swagger/types.d.ts +210 -0
  323. package/dist/advanced/swagger/types.d.ts.map +1 -0
  324. package/dist/advanced/swagger/types.js +3 -0
  325. package/dist/advanced/swagger/types.js.map +1 -0
  326. package/dist/advanced/swagger/zodFieldToOpenAPI.d.ts +6 -0
  327. package/dist/advanced/swagger/zodFieldToOpenAPI.d.ts.map +1 -0
  328. package/dist/advanced/swagger/zodFieldToOpenAPI.js +86 -0
  329. package/dist/advanced/swagger/zodFieldToOpenAPI.js.map +1 -0
  330. package/dist/advanced/swagger/zodSchemaToOpenAPI.d.ts +6 -0
  331. package/dist/advanced/swagger/zodSchemaToOpenAPI.d.ts.map +1 -0
  332. package/dist/advanced/swagger/zodSchemaToOpenAPI.js +44 -0
  333. package/dist/advanced/swagger/zodSchemaToOpenAPI.js.map +1 -0
  334. package/dist/advanced/swagger/zodToOpenAPI.d.ts +6 -0
  335. package/dist/advanced/swagger/zodToOpenAPI.d.ts.map +1 -0
  336. package/dist/advanced/swagger/zodToOpenAPI.js +22 -0
  337. package/dist/advanced/swagger/zodToOpenAPI.js.map +1 -0
  338. package/dist/advanced/testing/factory.d.ts +206 -0
  339. package/dist/advanced/testing/factory.d.ts.map +1 -0
  340. package/dist/advanced/testing/factory.js +433 -0
  341. package/dist/advanced/testing/factory.js.map +1 -0
  342. package/dist/advanced/testing/harness.d.ts +181 -0
  343. package/dist/advanced/testing/harness.d.ts.map +1 -0
  344. package/dist/advanced/testing/harness.js +481 -0
  345. package/dist/advanced/testing/harness.js.map +1 -0
  346. package/dist/advanced/testing/index.d.ts +235 -0
  347. package/dist/advanced/testing/index.d.ts.map +1 -0
  348. package/dist/advanced/testing/index.js +306 -0
  349. package/dist/advanced/testing/index.js.map +1 -0
  350. package/dist/advanced/testing/load-test.d.ts +148 -0
  351. package/dist/advanced/testing/load-test.d.ts.map +1 -0
  352. package/dist/advanced/testing/load-test.js +490 -0
  353. package/dist/advanced/testing/load-test.js.map +1 -0
  354. package/dist/advanced/testing/mock-server.d.ts +166 -0
  355. package/dist/advanced/testing/mock-server.d.ts.map +1 -0
  356. package/dist/advanced/testing/mock-server.js +424 -0
  357. package/dist/advanced/testing/mock-server.js.map +1 -0
  358. package/dist/advanced/testing/mock.d.ts +248 -0
  359. package/dist/advanced/testing/mock.d.ts.map +1 -0
  360. package/dist/advanced/testing/mock.js +549 -0
  361. package/dist/advanced/testing/mock.js.map +1 -0
  362. package/dist/cli/bin.d.ts +3 -0
  363. package/dist/cli/bin.d.ts.map +1 -0
  364. package/dist/cli/bin.js +10 -0
  365. package/dist/cli/bin.js.map +1 -0
  366. package/dist/cli/cli.d.ts +24 -0
  367. package/dist/cli/cli.d.ts.map +1 -0
  368. package/dist/cli/cli.js +131 -0
  369. package/dist/cli/cli.js.map +1 -0
  370. package/dist/cli/commands/build.d.ts +20 -0
  371. package/dist/cli/commands/build.d.ts.map +1 -0
  372. package/dist/cli/commands/build.js +63 -0
  373. package/dist/cli/commands/build.js.map +1 -0
  374. package/dist/cli/commands/create.d.ts +13 -0
  375. package/dist/cli/commands/create.d.ts.map +1 -0
  376. package/dist/cli/commands/create.js +142 -0
  377. package/dist/cli/commands/create.js.map +1 -0
  378. package/dist/cli/commands/dev.d.ts +15 -0
  379. package/dist/cli/commands/dev.d.ts.map +1 -0
  380. package/dist/cli/commands/dev.js +77 -0
  381. package/dist/cli/commands/dev.js.map +1 -0
  382. package/dist/cli/commands/generate.d.ts +13 -0
  383. package/dist/cli/commands/generate.d.ts.map +1 -0
  384. package/dist/cli/commands/generate.js +80 -0
  385. package/dist/cli/commands/generate.js.map +1 -0
  386. package/dist/cli/commands/help.d.ts +13 -0
  387. package/dist/cli/commands/help.d.ts.map +1 -0
  388. package/dist/cli/commands/help.js +83 -0
  389. package/dist/cli/commands/help.js.map +1 -0
  390. package/dist/cli/commands/init.d.ts +11 -0
  391. package/dist/cli/commands/init.d.ts.map +1 -0
  392. package/dist/cli/commands/init.js +76 -0
  393. package/dist/cli/commands/init.js.map +1 -0
  394. package/dist/cli/commands/version.d.ts +9 -0
  395. package/dist/cli/commands/version.d.ts.map +1 -0
  396. package/dist/cli/commands/version.js +35 -0
  397. package/dist/cli/commands/version.js.map +1 -0
  398. package/dist/cli/index.d.ts +3 -0
  399. package/dist/cli/index.d.ts.map +1 -0
  400. package/dist/cli/index.js +7 -0
  401. package/dist/cli/index.js.map +1 -0
  402. package/dist/cli/templates/generators.d.ts +22 -0
  403. package/dist/cli/templates/generators.d.ts.map +1 -0
  404. package/dist/cli/templates/generators.js +282 -0
  405. package/dist/cli/templates/generators.js.map +1 -0
  406. package/dist/cli/templates/index.d.ts +27 -0
  407. package/dist/cli/templates/index.d.ts.map +1 -0
  408. package/dist/cli/templates/index.js +651 -0
  409. package/dist/cli/templates/index.js.map +1 -0
  410. package/dist/cli/utils/exec.d.ts +12 -0
  411. package/dist/cli/utils/exec.d.ts.map +1 -0
  412. package/dist/cli/utils/exec.js +37 -0
  413. package/dist/cli/utils/exec.js.map +1 -0
  414. package/dist/cli/utils/file-system.d.ts +15 -0
  415. package/dist/cli/utils/file-system.d.ts.map +1 -0
  416. package/dist/cli/utils/file-system.js +105 -0
  417. package/dist/cli/utils/file-system.js.map +1 -0
  418. package/dist/cli/utils/logger.d.ts +40 -0
  419. package/dist/cli/utils/logger.d.ts.map +1 -0
  420. package/dist/cli/utils/logger.js +100 -0
  421. package/dist/cli/utils/logger.js.map +1 -0
  422. package/dist/core/adapter.d.ts +73 -0
  423. package/dist/core/adapter.d.ts.map +1 -0
  424. package/dist/core/adapter.js +27 -0
  425. package/dist/core/adapter.js.map +1 -0
  426. package/dist/core/application.d.ts +540 -0
  427. package/dist/core/application.d.ts.map +1 -0
  428. package/dist/core/application.js +1111 -0
  429. package/dist/core/application.js.map +1 -0
  430. package/dist/core/context-pool.d.ts +52 -0
  431. package/dist/core/context-pool.d.ts.map +1 -0
  432. package/dist/core/context-pool.js +111 -0
  433. package/dist/core/context-pool.js.map +1 -0
  434. package/dist/core/context.d.ts +148 -0
  435. package/dist/core/context.d.ts.map +1 -0
  436. package/dist/core/context.js +367 -0
  437. package/dist/core/context.js.map +1 -0
  438. package/dist/core/index.d.ts +23 -0
  439. package/dist/core/index.d.ts.map +1 -0
  440. package/dist/core/index.js +77 -0
  441. package/dist/core/index.js.map +1 -0
  442. package/dist/core/middleware.d.ts +49 -0
  443. package/dist/core/middleware.d.ts.map +1 -0
  444. package/dist/core/middleware.js +215 -0
  445. package/dist/core/middleware.js.map +1 -0
  446. package/dist/core/performance/buffer-pool.d.ts +47 -0
  447. package/dist/core/performance/buffer-pool.d.ts.map +1 -0
  448. package/dist/core/performance/buffer-pool.js +97 -0
  449. package/dist/core/performance/buffer-pool.js.map +1 -0
  450. package/dist/core/performance/jit-compiler.d.ts +73 -0
  451. package/dist/core/performance/jit-compiler.d.ts.map +1 -0
  452. package/dist/core/performance/jit-compiler.js +145 -0
  453. package/dist/core/performance/jit-compiler.js.map +1 -0
  454. package/dist/core/performance/middleware-optimizer.d.ts +73 -0
  455. package/dist/core/performance/middleware-optimizer.d.ts.map +1 -0
  456. package/dist/core/performance/middleware-optimizer.js +138 -0
  457. package/dist/core/performance/middleware-optimizer.js.map +1 -0
  458. package/dist/core/plugin/PluginManager.d.ts +93 -0
  459. package/dist/core/plugin/PluginManager.d.ts.map +1 -0
  460. package/dist/core/plugin/PluginManager.js +351 -0
  461. package/dist/core/plugin/PluginManager.js.map +1 -0
  462. package/dist/core/plugin/builder.d.ts +192 -0
  463. package/dist/core/plugin/builder.d.ts.map +1 -0
  464. package/dist/core/plugin/builder.js +319 -0
  465. package/dist/core/plugin/builder.js.map +1 -0
  466. package/dist/core/plugin/index.d.ts +31 -0
  467. package/dist/core/plugin/index.d.ts.map +1 -0
  468. package/dist/core/plugin/index.js +41 -0
  469. package/dist/core/plugin/index.js.map +1 -0
  470. package/dist/core/plugin/types.d.ts +184 -0
  471. package/dist/core/plugin/types.d.ts.map +1 -0
  472. package/dist/core/plugin/types.js +17 -0
  473. package/dist/core/plugin/types.js.map +1 -0
  474. package/dist/core/router/file-router.d.ts +173 -0
  475. package/dist/core/router/file-router.d.ts.map +1 -0
  476. package/dist/core/router/file-router.js +498 -0
  477. package/dist/core/router/file-router.js.map +1 -0
  478. package/dist/core/router/index.d.ts +44 -0
  479. package/dist/core/router/index.d.ts.map +1 -0
  480. package/dist/core/router/index.js +145 -0
  481. package/dist/core/router/index.js.map +1 -0
  482. package/dist/core/router/radix-tree.d.ts +69 -0
  483. package/dist/core/router/radix-tree.d.ts.map +1 -0
  484. package/dist/core/router/radix-tree.js +196 -0
  485. package/dist/core/router/radix-tree.js.map +1 -0
  486. package/dist/core/store/index.d.ts +15 -0
  487. package/dist/core/store/index.d.ts.map +1 -0
  488. package/dist/core/store/index.js +23 -0
  489. package/dist/core/store/index.js.map +1 -0
  490. package/dist/core/store/registry.d.ts +80 -0
  491. package/dist/core/store/registry.d.ts.map +1 -0
  492. package/dist/core/store/registry.js +156 -0
  493. package/dist/core/store/registry.js.map +1 -0
  494. package/dist/core/store/request-store.d.ts +138 -0
  495. package/dist/core/store/request-store.d.ts.map +1 -0
  496. package/dist/core/store/request-store.js +209 -0
  497. package/dist/core/store/request-store.js.map +1 -0
  498. package/dist/core/store/types.d.ts +140 -0
  499. package/dist/core/store/types.d.ts.map +1 -0
  500. package/dist/core/store/types.js +176 -0
  501. package/dist/core/store/types.js.map +1 -0
  502. package/dist/core/types.d.ts +470 -0
  503. package/dist/core/types.d.ts.map +1 -0
  504. package/dist/core/types.js +106 -0
  505. package/dist/core/types.js.map +1 -0
  506. package/dist/database/adapter.d.ts +32 -0
  507. package/dist/database/adapter.d.ts.map +1 -0
  508. package/dist/database/adapter.js +3 -0
  509. package/dist/database/adapter.js.map +1 -0
  510. package/dist/database/adapters/index.d.ts +2 -0
  511. package/dist/database/adapters/index.d.ts.map +1 -0
  512. package/dist/database/adapters/index.js +18 -0
  513. package/dist/database/adapters/index.js.map +1 -0
  514. package/dist/database/adapters/mysql.d.ts +160 -0
  515. package/dist/database/adapters/mysql.d.ts.map +1 -0
  516. package/dist/database/adapters/mysql.js +501 -0
  517. package/dist/database/adapters/mysql.js.map +1 -0
  518. package/dist/database/database.d.ts +27 -0
  519. package/dist/database/database.d.ts.map +1 -0
  520. package/dist/database/database.js +59 -0
  521. package/dist/database/database.js.map +1 -0
  522. package/dist/database/dialect.d.ts +110 -0
  523. package/dist/database/dialect.d.ts.map +1 -0
  524. package/dist/database/dialect.js +269 -0
  525. package/dist/database/dialect.js.map +1 -0
  526. package/dist/database/index.d.ts +12 -0
  527. package/dist/database/index.d.ts.map +1 -0
  528. package/dist/database/index.js +28 -0
  529. package/dist/database/index.js.map +1 -0
  530. package/dist/database/migrations.d.ts +22 -0
  531. package/dist/database/migrations.d.ts.map +1 -0
  532. package/dist/database/migrations.js +73 -0
  533. package/dist/database/migrations.js.map +1 -0
  534. package/dist/database/optimizer.d.ts +25 -0
  535. package/dist/database/optimizer.d.ts.map +1 -0
  536. package/dist/database/optimizer.js +97 -0
  537. package/dist/database/optimizer.js.map +1 -0
  538. package/dist/database/query-builder.d.ts +49 -0
  539. package/dist/database/query-builder.d.ts.map +1 -0
  540. package/dist/database/query-builder.js +319 -0
  541. package/dist/database/query-builder.js.map +1 -0
  542. package/dist/database/realtime.d.ts +24 -0
  543. package/dist/database/realtime.d.ts.map +1 -0
  544. package/dist/database/realtime.js +38 -0
  545. package/dist/database/realtime.js.map +1 -0
  546. package/dist/database/schema.d.ts +27 -0
  547. package/dist/database/schema.d.ts.map +1 -0
  548. package/dist/database/schema.js +47 -0
  549. package/dist/database/schema.js.map +1 -0
  550. package/dist/database/transactions.d.ts +13 -0
  551. package/dist/database/transactions.d.ts.map +1 -0
  552. package/dist/database/transactions.js +51 -0
  553. package/dist/database/transactions.js.map +1 -0
  554. package/dist/database/types.d.ts +68 -0
  555. package/dist/database/types.d.ts.map +1 -0
  556. package/dist/database/types.js +3 -0
  557. package/dist/database/types.js.map +1 -0
  558. package/dist/deployment/cluster.d.ts +161 -0
  559. package/dist/deployment/cluster.d.ts.map +1 -0
  560. package/dist/deployment/cluster.js +336 -0
  561. package/dist/deployment/cluster.js.map +1 -0
  562. package/dist/deployment/config.d.ts +209 -0
  563. package/dist/deployment/config.d.ts.map +1 -0
  564. package/dist/deployment/config.js +263 -0
  565. package/dist/deployment/config.js.map +1 -0
  566. package/dist/deployment/docker.d.ts +168 -0
  567. package/dist/deployment/docker.d.ts.map +1 -0
  568. package/dist/deployment/docker.js +437 -0
  569. package/dist/deployment/docker.js.map +1 -0
  570. package/dist/deployment/graceful-shutdown.d.ts +130 -0
  571. package/dist/deployment/graceful-shutdown.d.ts.map +1 -0
  572. package/dist/deployment/graceful-shutdown.js +271 -0
  573. package/dist/deployment/graceful-shutdown.js.map +1 -0
  574. package/dist/deployment/index.d.ts +14 -0
  575. package/dist/deployment/index.d.ts.map +1 -0
  576. package/dist/deployment/index.js +33 -0
  577. package/dist/deployment/index.js.map +1 -0
  578. package/dist/index.d.ts +39 -0
  579. package/dist/index.d.ts.map +1 -0
  580. package/dist/index.js +174 -0
  581. package/dist/index.js.map +1 -0
  582. package/dist/security/adapter.d.ts +144 -0
  583. package/dist/security/adapter.d.ts.map +1 -0
  584. package/dist/security/adapter.js +159 -0
  585. package/dist/security/adapter.js.map +1 -0
  586. package/dist/security/auth/JWTPlugin.d.ts +105 -0
  587. package/dist/security/auth/JWTPlugin.d.ts.map +1 -0
  588. package/dist/security/auth/JWTPlugin.js +146 -0
  589. package/dist/security/auth/JWTPlugin.js.map +1 -0
  590. package/dist/security/auth/JWTProvider.d.ts +104 -0
  591. package/dist/security/auth/JWTProvider.d.ts.map +1 -0
  592. package/dist/security/auth/JWTProvider.js +288 -0
  593. package/dist/security/auth/JWTProvider.js.map +1 -0
  594. package/dist/security/auth/adapter.d.ts +8 -0
  595. package/dist/security/auth/adapter.d.ts.map +1 -0
  596. package/dist/security/auth/adapter.js +29 -0
  597. package/dist/security/auth/adapter.js.map +1 -0
  598. package/dist/security/auth/jwt.d.ts +55 -0
  599. package/dist/security/auth/jwt.d.ts.map +1 -0
  600. package/dist/security/auth/jwt.js +198 -0
  601. package/dist/security/auth/jwt.js.map +1 -0
  602. package/dist/security/auth/middleware.d.ts +64 -0
  603. package/dist/security/auth/middleware.d.ts.map +1 -0
  604. package/dist/security/auth/middleware.js +161 -0
  605. package/dist/security/auth/middleware.js.map +1 -0
  606. package/dist/security/csrf.d.ts +41 -0
  607. package/dist/security/csrf.d.ts.map +1 -0
  608. package/dist/security/csrf.js +185 -0
  609. package/dist/security/csrf.js.map +1 -0
  610. package/dist/security/headers.d.ts +34 -0
  611. package/dist/security/headers.d.ts.map +1 -0
  612. package/dist/security/headers.js +95 -0
  613. package/dist/security/headers.js.map +1 -0
  614. package/dist/security/index.d.ts +19 -0
  615. package/dist/security/index.d.ts.map +1 -0
  616. package/dist/security/index.js +65 -0
  617. package/dist/security/index.js.map +1 -0
  618. package/dist/security/rate-limit/adapter.d.ts +7 -0
  619. package/dist/security/rate-limit/adapter.d.ts.map +1 -0
  620. package/dist/security/rate-limit/adapter.js +8 -0
  621. package/dist/security/rate-limit/adapter.js.map +1 -0
  622. package/dist/security/rate-limit/memory.d.ts +28 -0
  623. package/dist/security/rate-limit/memory.d.ts.map +1 -0
  624. package/dist/security/rate-limit/memory.js +85 -0
  625. package/dist/security/rate-limit/memory.js.map +1 -0
  626. package/dist/security/rate-limit/middleware.d.ts +32 -0
  627. package/dist/security/rate-limit/middleware.d.ts.map +1 -0
  628. package/dist/security/rate-limit/middleware.js +159 -0
  629. package/dist/security/rate-limit/middleware.js.map +1 -0
  630. package/dist/security/sanitization.d.ts +29 -0
  631. package/dist/security/sanitization.d.ts.map +1 -0
  632. package/dist/security/sanitization.js +66 -0
  633. package/dist/security/sanitization.js.map +1 -0
  634. package/dist/security/types.d.ts +205 -0
  635. package/dist/security/types.d.ts.map +1 -0
  636. package/dist/security/types.js +8 -0
  637. package/dist/security/types.js.map +1 -0
  638. package/dist/security/utils.d.ts +19 -0
  639. package/dist/security/utils.d.ts.map +1 -0
  640. package/dist/security/utils.js +43 -0
  641. package/dist/security/utils.js.map +1 -0
  642. package/documentation/01-getting-started.md +240 -0
  643. package/documentation/02-context.md +335 -0
  644. package/documentation/03-routing.md +397 -0
  645. package/documentation/04-middleware.md +483 -0
  646. package/documentation/05-validation.md +514 -0
  647. package/documentation/06-error-handling.md +465 -0
  648. package/documentation/07-performance.md +364 -0
  649. package/documentation/08-adapters.md +470 -0
  650. package/documentation/09-api-reference.md +548 -0
  651. package/documentation/10-examples.md +582 -0
  652. package/documentation/11-deployment.md +477 -0
  653. package/documentation/12-sentry.md +620 -0
  654. package/documentation/13-sentry-data-storage.md +996 -0
  655. package/documentation/14-sentry-data-reference.md +457 -0
  656. package/documentation/15-sentry-summary.md +409 -0
  657. package/documentation/16-alerts-system.md +745 -0
  658. package/documentation/17-alert-adapters.md +696 -0
  659. package/documentation/18-alerts-implementation-summary.md +385 -0
  660. package/documentation/19-class-based-routing.md +840 -0
  661. package/documentation/20-websocket-realtime.md +813 -0
  662. package/documentation/21-cache-system.md +510 -0
  663. package/documentation/22-job-queue.md +772 -0
  664. package/documentation/23-sentry-plugin.md +551 -0
  665. package/documentation/24-testing-utilities.md +1287 -0
  666. package/documentation/25-api-versioning.md +533 -0
  667. package/documentation/26-context-store.md +607 -0
  668. package/documentation/27-dependency-injection.md +329 -0
  669. package/documentation/28-lifecycle-hooks.md +521 -0
  670. package/documentation/29-package-structure.md +196 -0
  671. package/documentation/30-plugin-system.md +414 -0
  672. package/documentation/31-jwt-authentication.md +597 -0
  673. package/documentation/32-cli.md +268 -0
  674. package/documentation/ALERTS-COMPLETE-SUMMARY.md +429 -0
  675. package/documentation/ALERTS-INDEX.md +330 -0
  676. package/documentation/ALERTS-QUICK-REFERENCE.md +286 -0
  677. package/documentation/README.md +178 -0
  678. package/documentation/index.html +34 -0
  679. package/modern_framework_paper.md +1870 -0
  680. package/package.json +178 -0
  681. package/public/css/style.css +87 -0
  682. package/public/index.html +34 -0
  683. package/public/js/app.js +27 -0
  684. package/src/advanced/cache/InMemoryCacheStore.ts +68 -0
  685. package/src/advanced/cache/MultiTierCache.ts +194 -0
  686. package/src/advanced/cache/RedisCacheStore.ts +341 -0
  687. package/src/advanced/cache/index.ts +5 -0
  688. package/src/advanced/cache/types.ts +40 -0
  689. package/src/advanced/graphql/SimpleDataLoader.ts +42 -0
  690. package/src/advanced/graphql/index.ts +22 -0
  691. package/src/advanced/graphql/server.ts +252 -0
  692. package/src/advanced/graphql/types.ts +42 -0
  693. package/src/advanced/jobs/InMemoryQueueStore.ts +68 -0
  694. package/src/advanced/jobs/JobQueue.ts +556 -0
  695. package/src/advanced/jobs/RedisQueueStore.ts +367 -0
  696. package/src/advanced/jobs/index.ts +5 -0
  697. package/src/advanced/jobs/types.ts +70 -0
  698. package/src/advanced/observability/APMManager.ts +163 -0
  699. package/src/advanced/observability/AlertManager.ts +109 -0
  700. package/src/advanced/observability/MetricRegistry.ts +151 -0
  701. package/src/advanced/observability/ObservabilityCenter.ts +304 -0
  702. package/src/advanced/observability/StructuredLogger.ts +154 -0
  703. package/src/advanced/observability/TracingManager.ts +117 -0
  704. package/src/advanced/observability/adapters.ts +304 -0
  705. package/src/advanced/observability/createObservabilityMiddleware.ts +63 -0
  706. package/src/advanced/observability/index.ts +11 -0
  707. package/src/advanced/observability/types.ts +174 -0
  708. package/src/advanced/playground/extractPathParams.ts +6 -0
  709. package/src/advanced/playground/generateFieldExample.ts +31 -0
  710. package/src/advanced/playground/generatePlaygroundHTML.ts +1849 -0
  711. package/src/advanced/playground/generateSummary.ts +19 -0
  712. package/src/advanced/playground/getTagFromPath.ts +9 -0
  713. package/src/advanced/playground/index.ts +8 -0
  714. package/src/advanced/playground/playground.ts +170 -0
  715. package/src/advanced/playground/types.ts +20 -0
  716. package/src/advanced/playground/zodToExample.ts +16 -0
  717. package/src/advanced/playground/zodToParams.ts +15 -0
  718. package/src/advanced/postman/buildAuth.ts +31 -0
  719. package/src/advanced/postman/buildBody.ts +15 -0
  720. package/src/advanced/postman/buildQueryParams.ts +27 -0
  721. package/src/advanced/postman/buildRequestItem.ts +36 -0
  722. package/src/advanced/postman/buildResponses.ts +11 -0
  723. package/src/advanced/postman/buildUrl.ts +33 -0
  724. package/src/advanced/postman/capitalize.ts +4 -0
  725. package/src/advanced/postman/generateCollection.ts +59 -0
  726. package/src/advanced/postman/generateEnvironment.ts +34 -0
  727. package/src/advanced/postman/generateExampleFromZod.ts +21 -0
  728. package/src/advanced/postman/generateFieldExample.ts +45 -0
  729. package/src/advanced/postman/generateName.ts +20 -0
  730. package/src/advanced/postman/generateUUID.ts +11 -0
  731. package/src/advanced/postman/getTagFromPath.ts +10 -0
  732. package/src/advanced/postman/index.ts +28 -0
  733. package/src/advanced/postman/postman.ts +156 -0
  734. package/src/advanced/postman/slugify.ts +7 -0
  735. package/src/advanced/postman/types.ts +140 -0
  736. package/src/advanced/realtime/index.ts +18 -0
  737. package/src/advanced/realtime/websocket.ts +211 -0
  738. package/src/advanced/sentry/index.ts +1236 -0
  739. package/src/advanced/sentry/types.ts +355 -0
  740. package/src/advanced/static/generateDirectoryListing.ts +47 -0
  741. package/src/advanced/static/generateETag.ts +7 -0
  742. package/src/advanced/static/getMimeType.ts +9 -0
  743. package/src/advanced/static/index.ts +32 -0
  744. package/src/advanced/static/isSafePath.ts +13 -0
  745. package/src/advanced/static/publicDir.ts +21 -0
  746. package/src/advanced/static/serveStatic.ts +225 -0
  747. package/src/advanced/static/spa.ts +24 -0
  748. package/src/advanced/static/types.ts +159 -0
  749. package/src/advanced/swagger/SwaggerGenerator.ts +66 -0
  750. package/src/advanced/swagger/buildOperation.ts +61 -0
  751. package/src/advanced/swagger/buildParameters.ts +61 -0
  752. package/src/advanced/swagger/buildRequestBody.ts +21 -0
  753. package/src/advanced/swagger/buildResponses.ts +54 -0
  754. package/src/advanced/swagger/capitalize.ts +5 -0
  755. package/src/advanced/swagger/convertPath.ts +9 -0
  756. package/src/advanced/swagger/createSwagger.ts +12 -0
  757. package/src/advanced/swagger/generateOperationId.ts +21 -0
  758. package/src/advanced/swagger/generateSpec.ts +105 -0
  759. package/src/advanced/swagger/generateSummary.ts +24 -0
  760. package/src/advanced/swagger/generateSwaggerUI.ts +70 -0
  761. package/src/advanced/swagger/generateThemeCss.ts +53 -0
  762. package/src/advanced/swagger/index.ts +25 -0
  763. package/src/advanced/swagger/swagger.ts +237 -0
  764. package/src/advanced/swagger/types.ts +206 -0
  765. package/src/advanced/swagger/zodFieldToOpenAPI.ts +94 -0
  766. package/src/advanced/swagger/zodSchemaToOpenAPI.ts +50 -0
  767. package/src/advanced/swagger/zodToOpenAPI.ts +22 -0
  768. package/src/advanced/testing/factory.ts +509 -0
  769. package/src/advanced/testing/harness.ts +612 -0
  770. package/src/advanced/testing/index.ts +430 -0
  771. package/src/advanced/testing/load-test.ts +618 -0
  772. package/src/advanced/testing/mock-server.ts +498 -0
  773. package/src/advanced/testing/mock.ts +670 -0
  774. package/src/cli/bin.ts +9 -0
  775. package/src/cli/cli.ts +155 -0
  776. package/src/cli/commands/build.ts +73 -0
  777. package/src/cli/commands/create.ts +166 -0
  778. package/src/cli/commands/dev.ts +85 -0
  779. package/src/cli/commands/generate.ts +97 -0
  780. package/src/cli/commands/help.ts +95 -0
  781. package/src/cli/commands/init.ts +91 -0
  782. package/src/cli/commands/version.ts +38 -0
  783. package/src/cli/index.ts +6 -0
  784. package/src/cli/templates/generators.ts +309 -0
  785. package/src/cli/templates/index.ts +679 -0
  786. package/src/cli/utils/exec.ts +52 -0
  787. package/src/cli/utils/file-system.ts +78 -0
  788. package/src/cli/utils/logger.ts +111 -0
  789. package/src/core/adapter.ts +88 -0
  790. package/src/core/application.ts +1283 -0
  791. package/src/core/context-pool.ts +127 -0
  792. package/src/core/context.ts +412 -0
  793. package/src/core/index.ts +80 -0
  794. package/src/core/middleware.ts +262 -0
  795. package/src/core/performance/buffer-pool.ts +108 -0
  796. package/src/core/performance/middleware-optimizer.ts +162 -0
  797. package/src/core/plugin/PluginManager.ts +435 -0
  798. package/src/core/plugin/builder.ts +358 -0
  799. package/src/core/plugin/index.ts +50 -0
  800. package/src/core/plugin/types.ts +214 -0
  801. package/src/core/router/file-router.ts +594 -0
  802. package/src/core/router/index.ts +182 -0
  803. package/src/core/router/radix-tree.ts +226 -0
  804. package/src/core/store/index.ts +30 -0
  805. package/src/core/store/registry.ts +178 -0
  806. package/src/core/store/request-store.ts +240 -0
  807. package/src/core/store/types.ts +233 -0
  808. package/src/core/types.ts +574 -0
  809. package/src/database/adapter.ts +35 -0
  810. package/src/database/adapters/index.ts +1 -0
  811. package/src/database/adapters/mysql.ts +669 -0
  812. package/src/database/database.ts +70 -0
  813. package/src/database/dialect.ts +388 -0
  814. package/src/database/index.ts +12 -0
  815. package/src/database/migrations.ts +86 -0
  816. package/src/database/optimizer.ts +125 -0
  817. package/src/database/query-builder.ts +404 -0
  818. package/src/database/realtime.ts +53 -0
  819. package/src/database/schema.ts +71 -0
  820. package/src/database/transactions.ts +56 -0
  821. package/src/database/types.ts +87 -0
  822. package/src/deployment/cluster.ts +471 -0
  823. package/src/deployment/config.ts +454 -0
  824. package/src/deployment/docker.ts +599 -0
  825. package/src/deployment/graceful-shutdown.ts +373 -0
  826. package/src/deployment/index.ts +56 -0
  827. package/src/index.ts +264 -0
  828. package/src/security/adapter.ts +318 -0
  829. package/src/security/auth/JWTPlugin.ts +234 -0
  830. package/src/security/auth/JWTProvider.ts +316 -0
  831. package/src/security/auth/adapter.ts +12 -0
  832. package/src/security/auth/jwt.ts +234 -0
  833. package/src/security/auth/middleware.ts +188 -0
  834. package/src/security/csrf.ts +220 -0
  835. package/src/security/headers.ts +108 -0
  836. package/src/security/index.ts +60 -0
  837. package/src/security/rate-limit/adapter.ts +7 -0
  838. package/src/security/rate-limit/memory.ts +108 -0
  839. package/src/security/rate-limit/middleware.ts +181 -0
  840. package/src/security/sanitization.ts +75 -0
  841. package/src/security/types.ts +240 -0
  842. package/src/security/utils.ts +52 -0
  843. package/tsconfig.json +39 -0
@@ -0,0 +1,1111 @@
1
+ "use strict";
2
+ /**
3
+ * Main application class
4
+ * Orchestrates all framework components
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Application = void 0;
8
+ exports.createApp = createApp;
9
+ const http_1 = require("http");
10
+ const router_1 = require("./router");
11
+ const context_pool_1 = require("./context-pool");
12
+ const middleware_1 = require("./middleware");
13
+ const types_1 = require("./types");
14
+ const adapter_1 = require("./adapter");
15
+ const plugin_1 = require("./plugin");
16
+ const file_router_1 = require("./router/file-router");
17
+ const createObservabilityMiddleware_1 = require("../advanced/observability/createObservabilityMiddleware");
18
+ const ObservabilityCenter_1 = require("../advanced/observability/ObservabilityCenter");
19
+ const deployment_1 = require("../deployment");
20
+ const websocket_1 = require("../advanced/realtime/websocket");
21
+ const store_1 = require("./store");
22
+ /**
23
+ * Default error handler
24
+ */
25
+ const defaultErrorHandler = (error, ctx) => {
26
+ // Only log unexpected errors, not intentional ones (returned from handler)
27
+ if (!error._isIntentional) {
28
+ console.error('Unhandled error:', error);
29
+ console.error('Path:', ctx.path, 'Method:', ctx.method);
30
+ }
31
+ return {
32
+ statusCode: 500,
33
+ headers: { 'Content-Type': 'application/json' },
34
+ body: JSON.stringify({
35
+ error: error.message || 'Internal Server Error',
36
+ stack: process.env.NODE_ENV === 'development' && !error._isIntentional ? error.stack : undefined
37
+ })
38
+ };
39
+ };
40
+ /**
41
+ * Application class
42
+ */
43
+ class Application {
44
+ router;
45
+ contextPool;
46
+ middlewareExecutor;
47
+ globalMiddlewares = [];
48
+ errorHandler;
49
+ server;
50
+ config;
51
+ adapters;
52
+ shutdownManager;
53
+ clusterManager;
54
+ fallbackHandler;
55
+ wsGateway;
56
+ // Dependency injection container
57
+ dependencies = {};
58
+ // Versioning properties
59
+ versioningConfig;
60
+ registeredVersions = new Set();
61
+ // Store registry for ContextStore system
62
+ storeRegistry;
63
+ // Plugin manager for advanced plugins
64
+ pluginManager;
65
+ // Lifecycle hooks
66
+ lifecycleHooks = {};
67
+ constructor(config = {}) {
68
+ this.config = {
69
+ contextPoolSize: 100,
70
+ enableJIT: true,
71
+ debug: false,
72
+ logRequests: true,
73
+ ...config
74
+ };
75
+ this.router = new router_1.Router();
76
+ this.contextPool = new context_pool_1.ContextPool(this.config.contextPoolSize);
77
+ this.middlewareExecutor = new middleware_1.MiddlewareExecutor();
78
+ this.errorHandler = config.onError || defaultErrorHandler;
79
+ this.adapters = new adapter_1.AdapterRegistry();
80
+ this.storeRegistry = new store_1.StoreRegistry({ debug: config.debug });
81
+ this.pluginManager = new plugin_1.PluginManager(this, { debug: config.debug });
82
+ }
83
+ /**
84
+ * Register lifecycle hooks for request processing
85
+ * Hooks are called at specific points during request lifecycle
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * app.hooks({
90
+ * onRequest: async (ctx) => {
91
+ * ctx.requestId = crypto.randomUUID();
92
+ * console.log(`[${ctx.requestId}] ${ctx.method} ${ctx.path}`);
93
+ * },
94
+ *
95
+ * beforeValidation: async (ctx) => {
96
+ * // Transform raw body before validation
97
+ * if (ctx.body?.data) {
98
+ * ctx.body = ctx.body.data;
99
+ * }
100
+ * },
101
+ *
102
+ * afterValidation: async (ctx) => {
103
+ * // Check authorization after body is validated
104
+ * if (!ctx.headers.authorization) {
105
+ * return ctx.response.status(401).json({ error: 'Unauthorized' });
106
+ * }
107
+ * },
108
+ *
109
+ * beforeHandler: async (ctx) => {
110
+ * // Load user from session
111
+ * ctx.user = await getUserFromToken(ctx.headers.authorization);
112
+ * },
113
+ *
114
+ * afterHandler: async (ctx, result) => {
115
+ * // Add metadata to all responses
116
+ * return { ...result, timestamp: Date.now(), requestId: ctx.requestId };
117
+ * },
118
+ *
119
+ * onError: async (ctx, error) => {
120
+ * // Log errors to external service
121
+ * await logToSentry(error, { requestId: ctx.requestId });
122
+ * },
123
+ *
124
+ * onResponse: async (ctx, response) => {
125
+ * console.log(`[${ctx.requestId}] Response: ${response.statusCode}`);
126
+ * }
127
+ * });
128
+ * ```
129
+ */
130
+ hooks(hooks) {
131
+ this.lifecycleHooks = { ...this.lifecycleHooks, ...hooks };
132
+ return this;
133
+ }
134
+ /**
135
+ * Set a fallback handler for unmatched routes (e.g., static files)
136
+ * Called before returning 404
137
+ */
138
+ setFallbackHandler(handler) {
139
+ this.fallbackHandler = handler;
140
+ return this;
141
+ }
142
+ /**
143
+ * Provide dependencies for injection into route handlers
144
+ * Dependencies are available via the second parameter in handlers
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const db = new Database();
149
+ * const cache = new Redis();
150
+ * const mailer = new Mailer();
151
+ *
152
+ * const app = createApp()
153
+ * .provide({ db, cache, mailer });
154
+ *
155
+ * // Use with inject option
156
+ * app.get('/users', {
157
+ * inject: ['db', 'cache'],
158
+ * handler: async (ctx, { db, cache }) => {
159
+ * // db and cache are fully typed!
160
+ * const users = await db.query('SELECT * FROM users');
161
+ * await cache.set('users', users);
162
+ * return { users };
163
+ * }
164
+ * });
165
+ *
166
+ * // Or access all dependencies
167
+ * app.get('/mail', async (ctx, deps) => {
168
+ * await deps.mailer.send({ to: 'user@example.com', subject: 'Hello' });
169
+ * return { sent: true };
170
+ * });
171
+ * ```
172
+ */
173
+ provide(deps) {
174
+ this.dependencies = { ...this.dependencies, ...deps };
175
+ return this;
176
+ }
177
+ /**
178
+ * Get a specific dependency by name
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const db = app.getDep('db');
183
+ * ```
184
+ */
185
+ getDep(name) {
186
+ return this.dependencies[name];
187
+ }
188
+ /**
189
+ * Get all registered dependencies
190
+ */
191
+ getDeps() {
192
+ return this.dependencies;
193
+ }
194
+ /**
195
+ * Configure API versioning
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * app.configVersions({
200
+ * strategies: ['header', 'query'],
201
+ * header: 'api-version',
202
+ * queryParam: 'v',
203
+ * defaultVersion: 'v1',
204
+ * register: ['v1', 'v2']
205
+ * });
206
+ *
207
+ * // Route tanpa prefix → otomatis jadi /{defaultVersion}/login
208
+ * app.post('/login', handler);
209
+ *
210
+ * // Route dengan prefix explicit
211
+ * app.post('/v2/login', handler);
212
+ * ```
213
+ */
214
+ configVersions(config) {
215
+ this.versioningConfig = {
216
+ header: 'api-version',
217
+ queryParam: 'v',
218
+ ...config
219
+ };
220
+ // Register all versions
221
+ config.register.forEach(v => this.registeredVersions.add(v));
222
+ return this;
223
+ }
224
+ /**
225
+ * Check if a path starts with a registered version prefix
226
+ */
227
+ hasVersionPrefix(path) {
228
+ const segment = path.split('/').filter(Boolean)[0];
229
+ if (segment && this.registeredVersions.has(segment)) {
230
+ return segment;
231
+ }
232
+ return null;
233
+ }
234
+ /**
235
+ * Resolve version from request context
236
+ */
237
+ resolveVersion(ctx) {
238
+ if (!this.versioningConfig) {
239
+ return { version: '', basePath: ctx.path, source: 'default' };
240
+ }
241
+ const { strategies, header, queryParam, defaultVersion } = this.versioningConfig;
242
+ // 1. Check path strategy: /v1/login
243
+ if (strategies.includes('path')) {
244
+ const versionPrefix = this.hasVersionPrefix(ctx.path);
245
+ if (versionPrefix) {
246
+ const basePath = ctx.path.replace(new RegExp(`^/${versionPrefix}`), '') || '/';
247
+ return { version: versionPrefix, basePath, source: 'path' };
248
+ }
249
+ }
250
+ // 2. Check header strategy
251
+ if (strategies.includes('header') && header) {
252
+ const headerValue = ctx.headers[header] || ctx.headers[header.toLowerCase()];
253
+ const version = Array.isArray(headerValue) ? headerValue[0] : headerValue;
254
+ if (version && this.registeredVersions.has(version)) {
255
+ return { version, basePath: ctx.path, source: 'header' };
256
+ }
257
+ }
258
+ // 3. Check query strategy
259
+ if (strategies.includes('query') && queryParam) {
260
+ const queryVersion = ctx.query?.[queryParam];
261
+ const version = Array.isArray(queryVersion) ? queryVersion[0] : queryVersion;
262
+ if (version && this.registeredVersions.has(version)) {
263
+ return { version, basePath: ctx.path, source: 'query' };
264
+ }
265
+ }
266
+ // 4. Default version
267
+ return { version: defaultVersion, basePath: ctx.path, source: 'default' };
268
+ }
269
+ /**
270
+ * Build versioned path for route registration
271
+ */
272
+ buildVersionedPath(path) {
273
+ if (!this.versioningConfig)
274
+ return path;
275
+ // If path already has version prefix, return as-is
276
+ if (this.hasVersionPrefix(path)) {
277
+ return path;
278
+ }
279
+ // Add default version prefix
280
+ const normalizedPath = path.startsWith('/') ? path : `/${path}`;
281
+ return `/${this.versioningConfig.defaultVersion}${normalizedPath}`;
282
+ }
283
+ /**
284
+ * Add global middleware
285
+ */
286
+ use(middleware) {
287
+ this.globalMiddlewares.push(middleware);
288
+ return this;
289
+ }
290
+ /**
291
+ * Register ContextStore classes
292
+ * Stores are singleton instances accessible via ctx.store(StoreClass)
293
+ *
294
+ * @example
295
+ * ```typescript
296
+ * class UserStore extends ContextStore<UserState> {
297
+ * protected initial() { return { users: [], loading: false }; }
298
+ *
299
+ * async fetchUsers() {
300
+ * this.update({ loading: true });
301
+ * const users = await api.getUsers();
302
+ * this.set({ users, loading: false });
303
+ * }
304
+ * }
305
+ *
306
+ * const app = createApp();
307
+ * app.stores([UserStore, ProductStore]);
308
+ *
309
+ * app.get('/users', async (ctx) => {
310
+ * const userStore = ctx.store(UserStore);
311
+ * return { users: userStore.state.users };
312
+ * });
313
+ * ```
314
+ */
315
+ stores(storeClasses) {
316
+ this.storeRegistry.registerAll(storeClasses);
317
+ return this;
318
+ }
319
+ /**
320
+ * Register a single ContextStore class
321
+ *
322
+ * @example
323
+ * ```typescript
324
+ * app.store(UserStore);
325
+ * ```
326
+ */
327
+ store(StoreClass) {
328
+ this.storeRegistry.register(StoreClass);
329
+ return this;
330
+ }
331
+ /**
332
+ * Get a store instance directly from application level
333
+ * Useful for accessing stores outside of request context
334
+ *
335
+ * @example
336
+ * ```typescript
337
+ * const userStore = app.getStore(UserStore);
338
+ * userStore.listen((state) => console.log('Users updated:', state));
339
+ * ```
340
+ */
341
+ getStore(StoreClass) {
342
+ return this.storeRegistry.get(StoreClass);
343
+ }
344
+ /**
345
+ * Get the store registry for advanced usage
346
+ */
347
+ getStoreRegistry() {
348
+ return this.storeRegistry;
349
+ }
350
+ /**
351
+ * Register a route
352
+ */
353
+ route(config) {
354
+ this.router.addRoute(config);
355
+ return this;
356
+ }
357
+ /**
358
+ * Convenience: GET route
359
+ * Supports both function-style and class-based routing
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * // Function style (with dependencies)
364
+ * app.get('/users', async (ctx, { db }) => ({ users: await db.getUsers() }));
365
+ *
366
+ * // Config style with inject
367
+ * app.get('/users', {
368
+ * inject: ['db', 'cache'],
369
+ * handler: async (ctx, { db, cache }) => ({ users: [] }),
370
+ * meta: {...}
371
+ * });
372
+ *
373
+ * // Class-based style
374
+ * app.get(new UserListRoute());
375
+ * ```
376
+ */
377
+ get(pathOrRoute, handlerOrConfig) {
378
+ // Class-based routing
379
+ if (typeof pathOrRoute === 'object' && ('pathName' in pathOrRoute || 'handler' in pathOrRoute)) {
380
+ return this.registerClassRoute('GET', pathOrRoute);
381
+ }
382
+ return this.registerVersionedRoute('GET', pathOrRoute, handlerOrConfig);
383
+ }
384
+ /**
385
+ * Convenience: POST route
386
+ * Supports both function-style and class-based routing
387
+ */
388
+ post(pathOrRoute, handlerOrConfig) {
389
+ // Class-based routing
390
+ if (typeof pathOrRoute === 'object' && ('pathName' in pathOrRoute || 'handler' in pathOrRoute)) {
391
+ return this.registerClassRoute('POST', pathOrRoute);
392
+ }
393
+ return this.registerVersionedRoute('POST', pathOrRoute, handlerOrConfig);
394
+ }
395
+ /**
396
+ * Convenience: PUT route
397
+ * Supports both function-style and class-based routing
398
+ */
399
+ put(pathOrRoute, handlerOrConfig) {
400
+ // Class-based routing
401
+ if (typeof pathOrRoute === 'object' && ('pathName' in pathOrRoute || 'handler' in pathOrRoute)) {
402
+ return this.registerClassRoute('PUT', pathOrRoute);
403
+ }
404
+ return this.registerVersionedRoute('PUT', pathOrRoute, handlerOrConfig);
405
+ }
406
+ /**
407
+ * Convenience: DELETE route
408
+ * Supports both function-style and class-based routing
409
+ */
410
+ delete(pathOrRoute, handlerOrConfig) {
411
+ // Class-based routing
412
+ if (typeof pathOrRoute === 'object' && ('pathName' in pathOrRoute || 'handler' in pathOrRoute)) {
413
+ return this.registerClassRoute('DELETE', pathOrRoute);
414
+ }
415
+ return this.registerVersionedRoute('DELETE', pathOrRoute, handlerOrConfig);
416
+ }
417
+ /**
418
+ * Convenience: PATCH route
419
+ * Supports both function-style and class-based routing
420
+ */
421
+ patch(pathOrRoute, handlerOrConfig) {
422
+ // Class-based routing
423
+ if (typeof pathOrRoute === 'object' && ('pathName' in pathOrRoute || 'handler' in pathOrRoute)) {
424
+ return this.registerClassRoute('PATCH', pathOrRoute);
425
+ }
426
+ return this.registerVersionedRoute('PATCH', pathOrRoute, handlerOrConfig);
427
+ }
428
+ /**
429
+ * Register a versioned route (internal)
430
+ */
431
+ registerVersionedRoute(method, path, handlerOrConfig) {
432
+ // Build versioned path if versioning is configured
433
+ const versionedPath = this.buildVersionedPath(path);
434
+ if (typeof handlerOrConfig === 'function') {
435
+ // Function handler - wrap to inject all dependencies
436
+ const originalHandler = handlerOrConfig;
437
+ const deps = this.dependencies;
438
+ const wrappedHandler = async (ctx) => originalHandler(ctx, deps);
439
+ this.router.addRoute({ method, path: versionedPath, handler: wrappedHandler });
440
+ }
441
+ else if (handlerOrConfig) {
442
+ // Config object with possible inject option
443
+ const config = handlerOrConfig;
444
+ const originalHandler = config.handler;
445
+ const allDeps = this.dependencies;
446
+ const injectKeys = config.inject;
447
+ // Create wrapped handler that injects dependencies
448
+ const wrappedHandler = async (ctx) => {
449
+ let injectedDeps;
450
+ if (injectKeys && injectKeys.length > 0) {
451
+ // Only inject specified dependencies
452
+ injectedDeps = {};
453
+ for (const key of injectKeys) {
454
+ injectedDeps[key] = allDeps[key];
455
+ }
456
+ }
457
+ else {
458
+ // Inject all dependencies
459
+ injectedDeps = allDeps;
460
+ }
461
+ return originalHandler(ctx, injectedDeps);
462
+ };
463
+ this.router.addRoute({
464
+ method,
465
+ path: versionedPath,
466
+ handler: wrappedHandler,
467
+ middlewares: config.middlewares,
468
+ schema: config.schema,
469
+ meta: config.meta
470
+ });
471
+ }
472
+ return this;
473
+ }
474
+ /**
475
+ * Register a class-based route with lifecycle hooks support and dependency injection
476
+ */
477
+ registerClassRoute(method, route) {
478
+ // ⚠️ ENFORCE: Route class MUST extend Route abstract class
479
+ if (!(route instanceof types_1.Route)) {
480
+ const className = route.constructor?.name || 'Unknown';
481
+ throw new Error(`Route class "${className}" must extend the Route abstract class.\n` +
482
+ `Example:\n` +
483
+ ` import { Route } from 'nexus';\n` +
484
+ ` class ${className} extends Route {\n` +
485
+ ` pathName = '/your/path';\n` +
486
+ ` async handler(ctx) { ... }\n` +
487
+ ` }`);
488
+ }
489
+ if (!route.pathName) {
490
+ throw new Error(`Route class must have a pathName property when using manual registration. ` +
491
+ `Use app.useFileRoutes() for file-based routing without pathName.`);
492
+ }
493
+ // Determine the handler - either the handler method or the method-specific handler
494
+ let originalHandler = route.handler;
495
+ if (!originalHandler && typeof route[method] === 'function') {
496
+ originalHandler = route[method].bind(route);
497
+ }
498
+ if (!originalHandler) {
499
+ throw new Error(`Route class must have a handler method or a ${method} method.`);
500
+ }
501
+ // Wrap handler with lifecycle hooks if route extends Route class
502
+ const routeInstance = route;
503
+ const hasHooks = typeof routeInstance.onBefore === 'function' ||
504
+ typeof routeInstance.onAfter === 'function' ||
505
+ typeof routeInstance.onError === 'function';
506
+ // Capture dependencies for injection
507
+ const deps = this.dependencies;
508
+ let finalHandler;
509
+ if (hasHooks) {
510
+ const boundOriginalHandler = originalHandler.bind(route);
511
+ const onBefore = routeInstance.onBefore?.bind(route);
512
+ const onAfter = routeInstance.onAfter?.bind(route);
513
+ const onError = routeInstance.onError?.bind(route);
514
+ finalHandler = async (ctx) => {
515
+ try {
516
+ // Run onBefore hook (with deps)
517
+ if (onBefore) {
518
+ const beforeResult = await onBefore(ctx, deps);
519
+ // If onBefore returns a value (not undefined), skip handler
520
+ if (beforeResult !== undefined) {
521
+ return beforeResult;
522
+ }
523
+ }
524
+ // Run the main handler with dependencies
525
+ let result = await boundOriginalHandler(ctx, deps);
526
+ // Run onAfter hook (with deps)
527
+ if (onAfter) {
528
+ result = await onAfter(ctx, result, deps);
529
+ }
530
+ return result;
531
+ }
532
+ catch (error) {
533
+ // Run onError hook if defined (with deps)
534
+ if (onError) {
535
+ return await onError(ctx, error, deps);
536
+ }
537
+ // Re-throw if no onError handler
538
+ throw error;
539
+ }
540
+ };
541
+ }
542
+ else {
543
+ // No hooks - just wrap with dependency injection
544
+ const boundHandler = originalHandler.bind(route);
545
+ finalHandler = async (ctx) => boundHandler(ctx, deps);
546
+ }
547
+ const config = {
548
+ method,
549
+ path: route.pathName,
550
+ handler: finalHandler,
551
+ schema: route.schema?.(),
552
+ meta: route.meta?.(),
553
+ middlewares: route.middlewares?.()
554
+ };
555
+ this.router.addRoute(config);
556
+ return this;
557
+ }
558
+ /**
559
+ * Register a WebSocket route
560
+ *
561
+ * @example
562
+ * ```typescript
563
+ * app.ws('/ws/chat', {
564
+ * auth: async (ctx) => validateToken(ctx.query.token),
565
+ * onConnect: async (socket, ctx) => {
566
+ * console.log('User connected:', ctx.user);
567
+ * },
568
+ * onMessage: async (socket, message, ctx) => {
569
+ * socket.send(JSON.stringify({ echo: message }));
570
+ * },
571
+ * onClose: async (socket, ctx) => {
572
+ * console.log('User disconnected');
573
+ * }
574
+ * });
575
+ * ```
576
+ */
577
+ ws(path, config) {
578
+ if (!this.wsGateway) {
579
+ this.wsGateway = new websocket_1.WebSocketGateway();
580
+ }
581
+ this.wsGateway.register(path, config);
582
+ return this;
583
+ }
584
+ /**
585
+ * Get the WebSocket gateway for advanced usage (rooms, broadcast, etc.)
586
+ *
587
+ * @example
588
+ * ```typescript
589
+ * const ws = app.getWebSocket();
590
+ * ws.broadcast('room-name', { type: 'notification', message: 'Hello!' });
591
+ * ws.joinRoom('room-name', socket);
592
+ * ```
593
+ */
594
+ getWebSocket() {
595
+ return this.wsGateway;
596
+ }
597
+ /**
598
+ * Use file-based routing (Next.js style)
599
+ *
600
+ * Automatically scans a directory and registers routes based on file/folder structure.
601
+ * Supports dynamic parameters [id], catch-all [...slug], and nested routes.
602
+ *
603
+ * @example
604
+ * ```typescript
605
+ * // Folder structure:
606
+ * // routes/
607
+ * // api/
608
+ * // users/
609
+ * // index.ts → GET/POST /api/users
610
+ * // [id]/
611
+ * // index.ts → GET/PUT/DELETE /api/users/:id
612
+ * // posts.ts → GET /api/users/:id/posts
613
+ *
614
+ * const app = createApp();
615
+ *
616
+ * await app.useFileRoutes({
617
+ * dir: './src/routes',
618
+ * prefix: '',
619
+ * debug: true
620
+ * });
621
+ *
622
+ * app.listen(3000);
623
+ * ```
624
+ *
625
+ * Route file format (function-style):
626
+ * ```typescript
627
+ * // routes/api/users/index.ts
628
+ * import { Context } from '@engjts/nexus';
629
+ *
630
+ * export async function GET(ctx: Context) {
631
+ * return ctx.json({ users: [] });
632
+ * }
633
+ *
634
+ * export async function POST(ctx: Context) {
635
+ * const body = ctx.body;
636
+ * return ctx.json({ created: body }, 201);
637
+ * }
638
+ *
639
+ * export const schema = { body: z.object({ name: z.string() }) };
640
+ * export const meta = { summary: 'User endpoints', tags: ['Users'] };
641
+ * ```
642
+ *
643
+ * Route file format (class-style):
644
+ * ```typescript
645
+ * // routes/api/users/[id]/index.ts
646
+ * import { RouteBase, Context } from '@engjts/nexus';
647
+ *
648
+ * export default class UserRoute implements RouteBase {
649
+ * method = ['GET', 'PUT', 'DELETE'] as const;
650
+ *
651
+ * async GET(ctx: Context) {
652
+ * return ctx.json({ user: { id: ctx.params.id } });
653
+ * }
654
+ *
655
+ * async PUT(ctx: Context) {
656
+ * return ctx.json({ updated: true });
657
+ * }
658
+ *
659
+ * async DELETE(ctx: Context) {
660
+ * return ctx.json({ deleted: true });
661
+ * }
662
+ * }
663
+ * ```
664
+ */
665
+ async useFileRoutes(options) {
666
+ const router = new file_router_1.FileRouter(options);
667
+ await router.register(this);
668
+ return this;
669
+ }
670
+ /**
671
+ * Set custom error handler
672
+ */
673
+ onError(handler) {
674
+ this.errorHandler = handler;
675
+ return this;
676
+ }
677
+ /**
678
+ * Install a plugin (supports both legacy and new plugin formats)
679
+ *
680
+ * @example
681
+ * ```typescript
682
+ * // Legacy plugin
683
+ * app.plugin({ name: 'my-plugin', version: '1.0.0', install: (app) => {} });
684
+ *
685
+ * // New advanced plugin
686
+ * const authPlugin = definePlugin('auth')
687
+ * .version('1.0.0')
688
+ * .config<{ secret: string }>()
689
+ * .register(ctx => ctx.app.use(jwtMiddleware))
690
+ * .build();
691
+ *
692
+ * app.plugin(authPlugin, { secret: 'my-secret' });
693
+ * ```
694
+ */
695
+ plugin(plugin, config) {
696
+ // Check if it's a legacy Plugin with install method directly on app
697
+ if ('install' in plugin && !('meta' in plugin)) {
698
+ // Legacy format - call install directly
699
+ plugin.install(this);
700
+ }
701
+ else {
702
+ // New plugin format - use PluginManager
703
+ this.pluginManager.add(plugin, config);
704
+ }
705
+ return this;
706
+ }
707
+ /**
708
+ * Get the plugin manager for advanced plugin operations
709
+ *
710
+ * @example
711
+ * ```typescript
712
+ * const pm = app.getPluginManager();
713
+ *
714
+ * // Check if plugin exists
715
+ * if (pm.has('auth-plugin')) {
716
+ * const authApi = pm.getExports<AuthAPI>('auth-plugin');
717
+ * authApi.verify(token);
718
+ * }
719
+ *
720
+ * // Listen to plugin events
721
+ * pm.on('plugin:ready', (meta) => {
722
+ * console.log(`Plugin ${meta.name} is ready`);
723
+ * });
724
+ * ```
725
+ */
726
+ getPluginManager() {
727
+ return this.pluginManager;
728
+ }
729
+ /**
730
+ * Get exports from a specific plugin
731
+ * Shorthand for getPluginManager().getExports()
732
+ */
733
+ getPluginExports(pluginName) {
734
+ return this.pluginManager.getExports(pluginName);
735
+ }
736
+ /**
737
+ * Check if a plugin is installed
738
+ */
739
+ hasPlugin(name) {
740
+ return this.pluginManager.has(name);
741
+ }
742
+ /**
743
+ * Register an adapter
744
+ */
745
+ adapter(name, adapter) {
746
+ this.adapters.register(name, adapter);
747
+ return this;
748
+ }
749
+ /**
750
+ * Enable built-in observability (metrics, tracing, health checks)
751
+ * with safe, configurable endpoints.
752
+ */
753
+ observe(options = {}) {
754
+ const center = new ObservabilityCenter_1.ObservabilityCenter(options);
755
+ // Attach middleware for metrics/tracing/logging
756
+ this.use((0, createObservabilityMiddleware_1.createObservabilityMiddleware)(center, options));
757
+ const existingRoutes = this.router.getRoutes();
758
+ // Metrics endpoint (default: /__nexus/metrics)
759
+ const metricsEnabled = options.metrics?.enabled ?? true;
760
+ if (metricsEnabled) {
761
+ const metricsPath = options.metrics?.endpoint ?? '/__nexus/metrics';
762
+ this.ensureNoRouteConflict('GET', metricsPath, existingRoutes);
763
+ this.get(metricsPath, async (ctx) => center.metricsHandler()(ctx));
764
+ }
765
+ // Health endpoint (default: /__nexus/health)
766
+ if (options.health) {
767
+ const healthPath = options.health.endpoint ?? '/__nexus/health';
768
+ this.ensureNoRouteConflict('GET', healthPath, existingRoutes);
769
+ this.get(healthPath, async (ctx) => center.healthHandler()(ctx));
770
+ }
771
+ return this;
772
+ }
773
+ ensureNoRouteConflict(method, path, routes) {
774
+ const conflict = routes.some(r => r.method === method && r.path === path);
775
+ if (conflict) {
776
+ throw new Error(`Observability endpoint conflict for ${method} ${path}. ` +
777
+ 'Silakan override endpoint melalui konfigurasi observability (metrics.endpoint / health.endpoint).');
778
+ }
779
+ }
780
+ /**
781
+ * Get an adapter
782
+ */
783
+ getAdapter(name) {
784
+ return this.adapters.get(name);
785
+ }
786
+ /**
787
+ * Initialize all plugins (must be called before listen/start)
788
+ * This runs: configure → register → boot lifecycle phases
789
+ *
790
+ * @example
791
+ * ```typescript
792
+ * const app = createApp()
793
+ * .plugin(authPlugin, { secret: 'xxx' })
794
+ * .plugin(dbPlugin, { url: 'postgres://...' });
795
+ *
796
+ * // Initialize all plugins
797
+ * await app.initialize();
798
+ *
799
+ * // Start the server
800
+ * app.listen(3000);
801
+ * ```
802
+ */
803
+ async initialize() {
804
+ await this.pluginManager.initialize();
805
+ return this;
806
+ }
807
+ /**
808
+ * Start the HTTP server
809
+ */
810
+ listen(port, callback) {
811
+ this.server = (0, http_1.createServer)(async (req, res) => {
812
+ await this.handleRequest(req, res);
813
+ });
814
+ // Attach graceful shutdown if enabled
815
+ if (this.shutdownManager) {
816
+ this.shutdownManager.attach(this.server);
817
+ }
818
+ // Attach WebSocket gateway if any ws routes registered
819
+ if (this.wsGateway) {
820
+ this.wsGateway.attach(this.server);
821
+ }
822
+ this.server.listen(port, () => {
823
+ // Notify plugins that server is ready
824
+ this.pluginManager.notifyReady().catch(err => {
825
+ console.error('[PluginManager] Error in ready phase:', err);
826
+ });
827
+ callback?.();
828
+ });
829
+ return this.server;
830
+ }
831
+ /**
832
+ * Start the server (alias for listen with modern options)
833
+ */
834
+ start(options) {
835
+ if (typeof options === 'number') {
836
+ return this.listen(options);
837
+ }
838
+ this.server = (0, http_1.createServer)(async (req, res) => {
839
+ await this.handleRequest(req, res);
840
+ });
841
+ // Attach graceful shutdown if enabled
842
+ if (this.shutdownManager) {
843
+ this.shutdownManager.attach(this.server);
844
+ }
845
+ // Attach WebSocket gateway if any ws routes registered
846
+ if (this.wsGateway) {
847
+ this.wsGateway.attach(this.server);
848
+ }
849
+ const { port, host = '0.0.0.0', callback } = options;
850
+ this.server.listen(port, host, () => {
851
+ // Notify plugins that server is ready
852
+ this.pluginManager.notifyReady().catch(err => {
853
+ console.error('[PluginManager] Error in ready phase:', err);
854
+ });
855
+ callback?.();
856
+ });
857
+ return this.server;
858
+ }
859
+ /**
860
+ * Handle incoming HTTP request
861
+ */
862
+ async handleRequest(req, res) {
863
+ let ctx = null;
864
+ let response = null;
865
+ try {
866
+ // Acquire context from pool
867
+ ctx = await this.contextPool.acquire(req, res);
868
+ // Inject store registry into context
869
+ if ('setStoreRegistry' in ctx && typeof ctx.setStoreRegistry === 'function') {
870
+ ctx.setStoreRegistry(this.storeRegistry);
871
+ }
872
+ // Set debug mode for request stores
873
+ if ('setDebugMode' in ctx && typeof ctx.setDebugMode === 'function') {
874
+ ctx.setDebugMode(this.config.debug ?? false);
875
+ }
876
+ // === HOOK: onRequest ===
877
+ if (this.lifecycleHooks.onRequest) {
878
+ const hookResult = await this.lifecycleHooks.onRequest(ctx);
879
+ if (this.isResponse(hookResult)) {
880
+ await this.sendResponse(res, hookResult, ctx);
881
+ return;
882
+ }
883
+ }
884
+ // Apply versioning if configured
885
+ let matchPath = ctx.path;
886
+ if (this.versioningConfig) {
887
+ const { version, basePath, source } = this.resolveVersion(ctx);
888
+ ctx.version = version;
889
+ ctx.versionSource = source;
890
+ // For header/query strategy, rewrite path to versioned path
891
+ if (source === 'header' || source === 'query' || source === 'default') {
892
+ matchPath = `/${version}${basePath.startsWith('/') ? basePath : '/' + basePath}`;
893
+ }
894
+ if (this.config.debug) {
895
+ console.log(`[Versioning] ${source} → ${version}, path: ${ctx.path} → ${matchPath}`);
896
+ }
897
+ }
898
+ // Find matching route
899
+ const match = this.router.match(ctx.method, matchPath);
900
+ if (!match) {
901
+ // Try fallback handler (e.g., static files)
902
+ if (this.fallbackHandler) {
903
+ const fallbackResponse = await this.fallbackHandler(ctx, this.dependencies);
904
+ await this.sendResponse(res, fallbackResponse, ctx);
905
+ return;
906
+ }
907
+ // 404 Not Found
908
+ await this.sendResponse(res, {
909
+ statusCode: 404,
910
+ headers: { 'Content-Type': 'application/json' },
911
+ body: JSON.stringify({ error: 'Not Found' })
912
+ }, ctx);
913
+ return;
914
+ }
915
+ // Set route params
916
+ if ('setParams' in ctx && typeof ctx.setParams === 'function') {
917
+ ctx.setParams(match.params);
918
+ }
919
+ else {
920
+ ctx.params = match.params;
921
+ }
922
+ // Combine global and route-specific middleware
923
+ const allMiddlewares = [...this.globalMiddlewares, ...match.middlewares];
924
+ // Execute middleware chain and handler with hooks
925
+ response = await this.middlewareExecutor.executeWithHooks(ctx, allMiddlewares, match.handler, this.lifecycleHooks, this.dependencies);
926
+ // === HOOK: onResponse ===
927
+ if (this.lifecycleHooks.onResponse) {
928
+ const hookResult = await this.lifecycleHooks.onResponse(ctx, response);
929
+ if (this.isResponse(hookResult)) {
930
+ response = hookResult;
931
+ }
932
+ }
933
+ // Send response
934
+ await this.sendResponse(res, response, ctx);
935
+ }
936
+ catch (error) {
937
+ // === HOOK: onError ===
938
+ if (ctx && this.lifecycleHooks.onError) {
939
+ try {
940
+ const hookResult = await this.lifecycleHooks.onError(ctx, error);
941
+ if (this.isResponse(hookResult)) {
942
+ await this.sendResponse(res, hookResult, ctx);
943
+ return;
944
+ }
945
+ }
946
+ catch (hookError) {
947
+ // Hook itself threw an error, continue to default error handler
948
+ console.error('onError hook failed:', hookError);
949
+ }
950
+ }
951
+ // Handle errors with default error handler
952
+ try {
953
+ const errorResponse = await this.errorHandler(error, ctx);
954
+ // === HOOK: onResponse (for error responses) ===
955
+ if (ctx && this.lifecycleHooks.onResponse) {
956
+ const hookResult = await this.lifecycleHooks.onResponse(ctx, errorResponse);
957
+ if (this.isResponse(hookResult)) {
958
+ await this.sendResponse(res, hookResult, ctx);
959
+ return;
960
+ }
961
+ }
962
+ await this.sendResponse(res, errorResponse, ctx);
963
+ }
964
+ catch (handlerError) {
965
+ // Fallback error response
966
+ res.writeHead(500, { 'Content-Type': 'text/plain' });
967
+ res.end('Internal Server Error');
968
+ }
969
+ }
970
+ finally {
971
+ // Dispose request-scoped stores
972
+ if (ctx && 'disposeRequestStores' in ctx && typeof ctx.disposeRequestStores === 'function') {
973
+ ctx.disposeRequestStores();
974
+ }
975
+ // Release context back to pool
976
+ if (ctx) {
977
+ this.contextPool.release(ctx);
978
+ }
979
+ }
980
+ }
981
+ /**
982
+ * Check if value is a Response object
983
+ */
984
+ isResponse(value) {
985
+ return (value &&
986
+ typeof value === 'object' &&
987
+ 'statusCode' in value &&
988
+ 'headers' in value &&
989
+ 'body' in value);
990
+ }
991
+ /**
992
+ * Send HTTP response
993
+ */
994
+ async sendResponse(res, response, ctx) {
995
+ // Set status code
996
+ res.statusCode = response.statusCode;
997
+ // Set headers
998
+ for (const [key, value] of Object.entries(response.headers)) {
999
+ if (value !== undefined) {
1000
+ res.setHeader(key, value);
1001
+ }
1002
+ }
1003
+ // Set cookies
1004
+ if ('getSetCookieHeaders' in ctx && typeof ctx.getSetCookieHeaders === 'function') {
1005
+ const setCookies = ctx.getSetCookieHeaders();
1006
+ if (setCookies.length > 0) {
1007
+ res.setHeader('Set-Cookie', setCookies);
1008
+ }
1009
+ }
1010
+ // Send body or stream
1011
+ if (response.stream) {
1012
+ response.stream.pipe(res);
1013
+ }
1014
+ else {
1015
+ res.end(response.body);
1016
+ }
1017
+ }
1018
+ /**
1019
+ * Get all registered routes
1020
+ */
1021
+ getRoutes() {
1022
+ return this.router.getRoutes();
1023
+ }
1024
+ /**
1025
+ * Get context pool statistics
1026
+ */
1027
+ getPoolStats() {
1028
+ return this.contextPool.getStats();
1029
+ }
1030
+ /**
1031
+ * Close the server
1032
+ */
1033
+ close(callback) {
1034
+ if (this.server) {
1035
+ this.server.close(callback);
1036
+ }
1037
+ }
1038
+ /**
1039
+ * Enable graceful shutdown for zero-downtime deployments
1040
+ */
1041
+ gracefulShutdown(options = {}) {
1042
+ this.shutdownManager = new deployment_1.GracefulShutdownManager({
1043
+ verbose: this.config.debug,
1044
+ ...options
1045
+ });
1046
+ return this;
1047
+ }
1048
+ /**
1049
+ * Add a shutdown hook (e.g., closing database connections)
1050
+ */
1051
+ onShutdown(name, handler, priority) {
1052
+ if (!this.shutdownManager) {
1053
+ this.gracefulShutdown();
1054
+ }
1055
+ this.shutdownManager.addHook({ name, handler, priority });
1056
+ return this;
1057
+ }
1058
+ /**
1059
+ * Initiate graceful shutdown programmatically
1060
+ */
1061
+ async shutdown() {
1062
+ // Shutdown all plugins first
1063
+ await this.pluginManager.shutdown();
1064
+ // Dispose all stores
1065
+ this.storeRegistry.dispose();
1066
+ if (this.shutdownManager) {
1067
+ await this.shutdownManager.shutdown();
1068
+ }
1069
+ else {
1070
+ this.close();
1071
+ }
1072
+ }
1073
+ /**
1074
+ * Check if shutdown is in progress
1075
+ */
1076
+ isShuttingDown() {
1077
+ return this.shutdownManager?.isInShutdown() ?? false;
1078
+ }
1079
+ /**
1080
+ * Get the shutdown manager for advanced usage
1081
+ */
1082
+ getShutdownManager() {
1083
+ return this.shutdownManager;
1084
+ }
1085
+ /**
1086
+ * Start the application with clustering support
1087
+ * @param options Cluster options
1088
+ * @param startFn Function to start the server (called in each worker)
1089
+ */
1090
+ cluster(options = {}) {
1091
+ this.clusterManager = new deployment_1.ClusterManager({
1092
+ verbose: this.config.debug,
1093
+ ...options
1094
+ });
1095
+ return this.clusterManager;
1096
+ }
1097
+ /**
1098
+ * Get the cluster manager
1099
+ */
1100
+ getClusterManager() {
1101
+ return this.clusterManager;
1102
+ }
1103
+ }
1104
+ exports.Application = Application;
1105
+ /**
1106
+ * Factory function to create an application
1107
+ */
1108
+ function createApp(config) {
1109
+ return new Application(config);
1110
+ }
1111
+ //# sourceMappingURL=application.js.map