@morojs/moro 1.6.2 → 1.6.3

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 (366) hide show
  1. package/dist/core/http/http-server.js +12 -9
  2. package/dist/core/http/http-server.js.map +1 -1
  3. package/dist/core/http/uws-http-server.js +1 -1
  4. package/dist/core/http/uws-http-server.js.map +1 -1
  5. package/dist/core/middleware/built-in/auth/core.d.ts +78 -0
  6. package/dist/core/middleware/built-in/auth/core.js +358 -0
  7. package/dist/core/middleware/built-in/auth/core.js.map +1 -0
  8. package/dist/core/middleware/built-in/{auth-helpers.js → auth/helpers.js} +1 -1
  9. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -0
  10. package/dist/core/middleware/built-in/auth/hook.d.ts +30 -0
  11. package/dist/core/middleware/built-in/auth/hook.js +99 -0
  12. package/dist/core/middleware/built-in/auth/hook.js.map +1 -0
  13. package/dist/core/middleware/built-in/auth/index.d.ts +7 -0
  14. package/dist/core/middleware/built-in/auth/index.js +15 -0
  15. package/dist/core/middleware/built-in/auth/index.js.map +1 -0
  16. package/dist/core/middleware/built-in/{jwt-helpers.js → auth/jwt-helpers.js} +1 -1
  17. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -0
  18. package/dist/core/middleware/built-in/auth/middleware.d.ts +23 -0
  19. package/dist/core/middleware/built-in/auth/middleware.js +71 -0
  20. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -0
  21. package/dist/core/middleware/built-in/{auth-providers.d.ts → auth/providers.d.ts} +1 -1
  22. package/dist/core/middleware/built-in/{auth-providers.js → auth/providers.js} +1 -1
  23. package/dist/core/middleware/built-in/auth/providers.js.map +1 -0
  24. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.d.ts +1 -1
  25. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.js +1 -1
  26. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -0
  27. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/index.d.ts +1 -1
  28. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -0
  29. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.d.ts +1 -1
  30. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.js +1 -1
  31. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -0
  32. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.d.ts +1 -1
  33. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.js +2 -2
  34. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -0
  35. package/dist/core/middleware/built-in/{adapters → cache/adapters}/index.d.ts +0 -2
  36. package/{src/core/middleware/built-in/adapters/index.ts → dist/core/middleware/built-in/cache/adapters/index.js} +1 -3
  37. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -0
  38. package/dist/core/middleware/built-in/cache/core.d.ts +37 -0
  39. package/dist/core/middleware/built-in/cache/core.js +87 -0
  40. package/dist/core/middleware/built-in/cache/core.js.map +1 -0
  41. package/dist/core/middleware/built-in/cache/hook.d.ts +20 -0
  42. package/dist/core/middleware/built-in/{cache.js → cache/hook.js} +22 -5
  43. package/dist/core/middleware/built-in/cache/hook.js.map +1 -0
  44. package/dist/core/middleware/built-in/cache/index.d.ts +3 -0
  45. package/dist/core/middleware/built-in/cache/index.js +9 -0
  46. package/dist/core/middleware/built-in/cache/index.js.map +1 -0
  47. package/dist/core/middleware/built-in/cache/middleware.d.ts +17 -0
  48. package/dist/core/middleware/built-in/cache/middleware.js +44 -0
  49. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -0
  50. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.d.ts +1 -1
  51. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.js +1 -1
  52. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -0
  53. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.d.ts +1 -1
  54. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.js +1 -1
  55. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -0
  56. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.d.ts +1 -1
  57. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.js +2 -2
  58. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -0
  59. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/index.d.ts +1 -1
  60. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -0
  61. package/dist/core/middleware/built-in/cdn/adapters/index.d.ts +2 -0
  62. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/index.js +0 -2
  63. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -0
  64. package/dist/core/middleware/built-in/cdn/core.d.ts +43 -0
  65. package/dist/core/middleware/built-in/cdn/core.js +144 -0
  66. package/dist/core/middleware/built-in/cdn/core.js.map +1 -0
  67. package/dist/core/middleware/built-in/cdn/hook.d.ts +22 -0
  68. package/dist/core/middleware/built-in/cdn/hook.js +70 -0
  69. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -0
  70. package/dist/core/middleware/built-in/cdn/index.d.ts +5 -0
  71. package/dist/core/middleware/built-in/cdn/index.js +11 -0
  72. package/dist/core/middleware/built-in/cdn/index.js.map +1 -0
  73. package/dist/core/middleware/built-in/cdn/middleware.d.ts +21 -0
  74. package/dist/core/middleware/built-in/cdn/middleware.js +52 -0
  75. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -0
  76. package/dist/core/middleware/built-in/cookie/core.d.ts +37 -0
  77. package/dist/core/middleware/built-in/cookie/core.js +83 -0
  78. package/dist/core/middleware/built-in/cookie/core.js.map +1 -0
  79. package/dist/core/middleware/built-in/cookie/hook.d.ts +20 -0
  80. package/dist/core/middleware/built-in/cookie/hook.js +47 -0
  81. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -0
  82. package/dist/core/middleware/built-in/cookie/index.d.ts +3 -0
  83. package/dist/core/middleware/built-in/cookie/index.js +9 -0
  84. package/dist/core/middleware/built-in/cookie/index.js.map +1 -0
  85. package/dist/core/middleware/built-in/cookie/middleware.d.ts +17 -0
  86. package/dist/core/middleware/built-in/cookie/middleware.js +36 -0
  87. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -0
  88. package/dist/core/middleware/built-in/cors/core.d.ts +23 -0
  89. package/dist/core/middleware/built-in/cors/core.js +51 -0
  90. package/dist/core/middleware/built-in/cors/core.js.map +1 -0
  91. package/dist/core/middleware/built-in/cors/hook.d.ts +17 -0
  92. package/dist/core/middleware/built-in/cors/hook.js +37 -0
  93. package/dist/core/middleware/built-in/cors/hook.js.map +1 -0
  94. package/dist/core/middleware/built-in/cors/index.d.ts +3 -0
  95. package/dist/core/middleware/built-in/cors/index.js +9 -0
  96. package/dist/core/middleware/built-in/cors/index.js.map +1 -0
  97. package/dist/core/middleware/built-in/cors/middleware.d.ts +16 -0
  98. package/dist/core/middleware/built-in/cors/middleware.js +22 -0
  99. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -0
  100. package/dist/core/middleware/built-in/csp/core.d.ts +45 -0
  101. package/dist/core/middleware/built-in/csp/core.js +88 -0
  102. package/dist/core/middleware/built-in/csp/core.js.map +1 -0
  103. package/dist/core/middleware/built-in/csp/hook.d.ts +22 -0
  104. package/dist/core/middleware/built-in/csp/hook.js +47 -0
  105. package/dist/core/middleware/built-in/csp/hook.js.map +1 -0
  106. package/dist/core/middleware/built-in/csp/index.d.ts +3 -0
  107. package/dist/core/middleware/built-in/csp/index.js +9 -0
  108. package/dist/core/middleware/built-in/csp/index.js.map +1 -0
  109. package/dist/core/middleware/built-in/csp/middleware.d.ts +19 -0
  110. package/dist/core/middleware/built-in/csp/middleware.js +29 -0
  111. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -0
  112. package/dist/core/middleware/built-in/csrf/core.d.ts +28 -0
  113. package/dist/core/middleware/built-in/csrf/core.js +69 -0
  114. package/dist/core/middleware/built-in/csrf/core.js.map +1 -0
  115. package/dist/core/middleware/built-in/csrf/hook.d.ts +17 -0
  116. package/dist/core/middleware/built-in/csrf/hook.js +45 -0
  117. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -0
  118. package/dist/core/middleware/built-in/csrf/index.d.ts +3 -0
  119. package/dist/core/middleware/built-in/csrf/index.js +9 -0
  120. package/dist/core/middleware/built-in/csrf/index.js.map +1 -0
  121. package/dist/core/middleware/built-in/csrf/middleware.d.ts +16 -0
  122. package/dist/core/middleware/built-in/csrf/middleware.js +34 -0
  123. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -0
  124. package/dist/core/middleware/built-in/error-tracker/index.d.ts +1 -0
  125. package/dist/core/middleware/built-in/error-tracker/index.js +4 -0
  126. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -0
  127. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +12 -0
  128. package/dist/core/middleware/built-in/{error-tracker.js → error-tracker/middleware.js} +14 -3
  129. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -0
  130. package/dist/core/middleware/built-in/index.d.ts +25 -59
  131. package/dist/core/middleware/built-in/index.js +31 -31
  132. package/dist/core/middleware/built-in/index.js.map +1 -1
  133. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +1 -0
  134. package/dist/core/middleware/built-in/performance-monitor/index.js +4 -0
  135. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -0
  136. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +12 -0
  137. package/dist/core/middleware/built-in/{performance-monitor.js → performance-monitor/middleware.js} +14 -3
  138. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -0
  139. package/dist/core/middleware/built-in/rate-limit/core.d.ts +33 -0
  140. package/dist/core/middleware/built-in/rate-limit/core.js +86 -0
  141. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -0
  142. package/dist/core/middleware/built-in/rate-limit/hook.d.ts +20 -0
  143. package/dist/core/middleware/built-in/{rate-limit.js → rate-limit/hook.js} +22 -16
  144. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -0
  145. package/dist/core/middleware/built-in/rate-limit/index.d.ts +3 -0
  146. package/dist/core/middleware/built-in/rate-limit/index.js +9 -0
  147. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -0
  148. package/dist/core/middleware/built-in/rate-limit/middleware.d.ts +16 -0
  149. package/dist/core/middleware/built-in/rate-limit/middleware.js +35 -0
  150. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -0
  151. package/dist/core/middleware/built-in/request-logger/index.d.ts +1 -0
  152. package/dist/core/middleware/built-in/request-logger/index.js +4 -0
  153. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -0
  154. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +12 -0
  155. package/dist/core/middleware/built-in/{request-logger.js → request-logger/middleware.js} +14 -3
  156. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -0
  157. package/dist/core/middleware/built-in/session/core.d.ts +73 -0
  158. package/dist/core/middleware/built-in/session/core.js +227 -0
  159. package/dist/core/middleware/built-in/session/core.js.map +1 -0
  160. package/dist/core/middleware/built-in/session/hook.d.ts +17 -0
  161. package/dist/core/middleware/built-in/session/hook.js +53 -0
  162. package/dist/core/middleware/built-in/session/hook.js.map +1 -0
  163. package/dist/core/middleware/built-in/session/index.d.ts +3 -0
  164. package/dist/core/middleware/built-in/session/index.js +9 -0
  165. package/dist/core/middleware/built-in/session/index.js.map +1 -0
  166. package/dist/core/middleware/built-in/session/middleware.d.ts +17 -0
  167. package/dist/core/middleware/built-in/session/middleware.js +38 -0
  168. package/dist/core/middleware/built-in/session/middleware.js.map +1 -0
  169. package/dist/core/middleware/built-in/sse/core.d.ts +44 -0
  170. package/dist/core/middleware/built-in/sse/core.js +117 -0
  171. package/dist/core/middleware/built-in/sse/core.js.map +1 -0
  172. package/dist/core/middleware/built-in/sse/hook.d.ts +18 -0
  173. package/dist/core/middleware/built-in/sse/hook.js +60 -0
  174. package/dist/core/middleware/built-in/sse/hook.js.map +1 -0
  175. package/dist/core/middleware/built-in/sse/index.d.ts +3 -0
  176. package/dist/core/middleware/built-in/sse/index.js +9 -0
  177. package/dist/core/middleware/built-in/sse/index.js.map +1 -0
  178. package/dist/core/middleware/built-in/sse/middleware.d.ts +18 -0
  179. package/dist/core/middleware/built-in/sse/middleware.js +43 -0
  180. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -0
  181. package/dist/core/middleware/built-in/validation/core.d.ts +23 -0
  182. package/dist/core/middleware/built-in/validation/core.js +93 -0
  183. package/dist/core/middleware/built-in/validation/core.js.map +1 -0
  184. package/dist/core/middleware/built-in/validation/hook.d.ts +13 -0
  185. package/dist/core/middleware/built-in/{validation.js → validation/hook.js} +14 -3
  186. package/dist/core/middleware/built-in/validation/hook.js.map +1 -0
  187. package/dist/core/middleware/built-in/validation/index.d.ts +3 -0
  188. package/dist/core/middleware/built-in/validation/index.js +9 -0
  189. package/dist/core/middleware/built-in/validation/index.js.map +1 -0
  190. package/dist/core/middleware/built-in/validation/middleware.d.ts +16 -0
  191. package/dist/core/middleware/built-in/validation/middleware.js +27 -0
  192. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -0
  193. package/dist/core/middleware/index.js +6 -0
  194. package/dist/core/middleware/index.js.map +1 -1
  195. package/dist/core/routing/unified-router.d.ts +4 -20
  196. package/dist/core/routing/unified-router.js +61 -106
  197. package/dist/core/routing/unified-router.js.map +1 -1
  198. package/dist/index.d.ts +3 -2
  199. package/dist/index.js +3 -2
  200. package/dist/index.js.map +1 -1
  201. package/dist/moro.js +12 -18
  202. package/dist/moro.js.map +1 -1
  203. package/dist/types/hooks.d.ts +3 -0
  204. package/package.json +2 -6
  205. package/dist/core/middleware/built-in/adapters/cache/file.js.map +0 -1
  206. package/dist/core/middleware/built-in/adapters/cache/index.js.map +0 -1
  207. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +0 -1
  208. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +0 -1
  209. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +0 -1
  210. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +0 -1
  211. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +0 -1
  212. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +0 -1
  213. package/dist/core/middleware/built-in/adapters/index.js.map +0 -1
  214. package/dist/core/middleware/built-in/auth-helpers.js.map +0 -1
  215. package/dist/core/middleware/built-in/auth-providers.js.map +0 -1
  216. package/dist/core/middleware/built-in/auth.d.ts +0 -30
  217. package/dist/core/middleware/built-in/auth.js +0 -348
  218. package/dist/core/middleware/built-in/auth.js.map +0 -1
  219. package/dist/core/middleware/built-in/cache.d.ts +0 -3
  220. package/dist/core/middleware/built-in/cache.js.map +0 -1
  221. package/dist/core/middleware/built-in/cdn.d.ts +0 -3
  222. package/dist/core/middleware/built-in/cdn.js +0 -109
  223. package/dist/core/middleware/built-in/cdn.js.map +0 -1
  224. package/dist/core/middleware/built-in/cookie.d.ts +0 -14
  225. package/dist/core/middleware/built-in/cookie.js +0 -64
  226. package/dist/core/middleware/built-in/cookie.js.map +0 -1
  227. package/dist/core/middleware/built-in/cors.d.ts +0 -2
  228. package/dist/core/middleware/built-in/cors.js +0 -25
  229. package/dist/core/middleware/built-in/cors.js.map +0 -1
  230. package/dist/core/middleware/built-in/csp.d.ts +0 -22
  231. package/dist/core/middleware/built-in/csp.js +0 -68
  232. package/dist/core/middleware/built-in/csp.js.map +0 -1
  233. package/dist/core/middleware/built-in/csrf.d.ts +0 -9
  234. package/dist/core/middleware/built-in/csrf.js +0 -60
  235. package/dist/core/middleware/built-in/csrf.js.map +0 -1
  236. package/dist/core/middleware/built-in/error-tracker.d.ts +0 -1
  237. package/dist/core/middleware/built-in/error-tracker.js.map +0 -1
  238. package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
  239. package/dist/core/middleware/built-in/performance-monitor.d.ts +0 -1
  240. package/dist/core/middleware/built-in/performance-monitor.js.map +0 -1
  241. package/dist/core/middleware/built-in/rate-limit.d.ts +0 -6
  242. package/dist/core/middleware/built-in/rate-limit.js.map +0 -1
  243. package/dist/core/middleware/built-in/request-logger.d.ts +0 -1
  244. package/dist/core/middleware/built-in/request-logger.js.map +0 -1
  245. package/dist/core/middleware/built-in/session.d.ts +0 -41
  246. package/dist/core/middleware/built-in/session.js +0 -205
  247. package/dist/core/middleware/built-in/session.js.map +0 -1
  248. package/dist/core/middleware/built-in/sse.d.ts +0 -6
  249. package/dist/core/middleware/built-in/sse.js +0 -69
  250. package/dist/core/middleware/built-in/sse.js.map +0 -1
  251. package/dist/core/middleware/built-in/validation.d.ts +0 -2
  252. package/dist/core/middleware/built-in/validation.js.map +0 -1
  253. package/jest.config.mjs +0 -41
  254. package/src/core/auth/README.md +0 -339
  255. package/src/core/auth/morojs-adapter.ts +0 -415
  256. package/src/core/config/config-manager.ts +0 -133
  257. package/src/core/config/config-sources.ts +0 -600
  258. package/src/core/config/config-validator.ts +0 -1116
  259. package/src/core/config/file-loader.ts +0 -150
  260. package/src/core/config/index.ts +0 -109
  261. package/src/core/config/schema.ts +0 -164
  262. package/src/core/config/utils.ts +0 -244
  263. package/src/core/database/README.md +0 -238
  264. package/src/core/database/adapters/drizzle.ts +0 -415
  265. package/src/core/database/adapters/index.ts +0 -42
  266. package/src/core/database/adapters/mongodb.ts +0 -317
  267. package/src/core/database/adapters/mysql.ts +0 -235
  268. package/src/core/database/adapters/postgresql.ts +0 -226
  269. package/src/core/database/adapters/redis.ts +0 -379
  270. package/src/core/database/adapters/sqlite.ts +0 -263
  271. package/src/core/database/index.ts +0 -3
  272. package/src/core/docs/index.ts +0 -231
  273. package/src/core/docs/openapi-generator.ts +0 -576
  274. package/src/core/docs/schema-to-openapi.ts +0 -145
  275. package/src/core/docs/simple-docs.ts +0 -295
  276. package/src/core/docs/swagger-ui.ts +0 -354
  277. package/src/core/docs/zod-to-openapi.ts +0 -532
  278. package/src/core/events/event-bus.ts +0 -231
  279. package/src/core/events/index.ts +0 -12
  280. package/src/core/framework.ts +0 -885
  281. package/src/core/http/http-server.ts +0 -1847
  282. package/src/core/http/index.ts +0 -7
  283. package/src/core/http/uws-http-server.ts +0 -591
  284. package/src/core/logger/filters.ts +0 -153
  285. package/src/core/logger/index.ts +0 -21
  286. package/src/core/logger/logger.ts +0 -1033
  287. package/src/core/logger/outputs.ts +0 -132
  288. package/src/core/middleware/built-in/adapters/cache/file.ts +0 -104
  289. package/src/core/middleware/built-in/adapters/cache/index.ts +0 -23
  290. package/src/core/middleware/built-in/adapters/cache/memory.ts +0 -73
  291. package/src/core/middleware/built-in/adapters/cache/redis.ts +0 -114
  292. package/src/core/middleware/built-in/adapters/cdn/azure.ts +0 -60
  293. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +0 -83
  294. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +0 -94
  295. package/src/core/middleware/built-in/adapters/cdn/index.ts +0 -23
  296. package/src/core/middleware/built-in/auth-helpers.ts +0 -401
  297. package/src/core/middleware/built-in/auth-providers.ts +0 -480
  298. package/src/core/middleware/built-in/auth.ts +0 -410
  299. package/src/core/middleware/built-in/cache.ts +0 -213
  300. package/src/core/middleware/built-in/cdn.ts +0 -124
  301. package/src/core/middleware/built-in/cookie.ts +0 -85
  302. package/src/core/middleware/built-in/cors.ts +0 -38
  303. package/src/core/middleware/built-in/csp.ts +0 -101
  304. package/src/core/middleware/built-in/csrf.ts +0 -82
  305. package/src/core/middleware/built-in/error-tracker.ts +0 -16
  306. package/src/core/middleware/built-in/index.ts +0 -87
  307. package/src/core/middleware/built-in/jwt-helpers.ts +0 -243
  308. package/src/core/middleware/built-in/performance-monitor.ts +0 -25
  309. package/src/core/middleware/built-in/rate-limit.ts +0 -60
  310. package/src/core/middleware/built-in/request-logger.ts +0 -16
  311. package/src/core/middleware/built-in/session.ts +0 -287
  312. package/src/core/middleware/built-in/sse.ts +0 -88
  313. package/src/core/middleware/built-in/validation.ts +0 -33
  314. package/src/core/middleware/index.ts +0 -177
  315. package/src/core/modules/auto-discovery.ts +0 -726
  316. package/src/core/modules/index.ts +0 -3
  317. package/src/core/modules/modules.ts +0 -135
  318. package/src/core/networking/adapters/index.ts +0 -17
  319. package/src/core/networking/adapters/socketio-adapter.ts +0 -254
  320. package/src/core/networking/adapters/uws-adapter.ts +0 -619
  321. package/src/core/networking/adapters/ws-adapter.ts +0 -429
  322. package/src/core/networking/index.ts +0 -4
  323. package/src/core/networking/service-discovery.ts +0 -303
  324. package/src/core/networking/websocket-adapter.ts +0 -217
  325. package/src/core/networking/websocket-manager.ts +0 -308
  326. package/src/core/pooling/object-pool-manager.ts +0 -630
  327. package/src/core/routing/app-integration.ts +0 -164
  328. package/src/core/routing/index.ts +0 -261
  329. package/src/core/routing/path-matcher.ts +0 -222
  330. package/src/core/routing/router.ts +0 -97
  331. package/src/core/routing/unified-router.ts +0 -870
  332. package/src/core/runtime/aws-lambda-adapter.ts +0 -147
  333. package/src/core/runtime/base-adapter.ts +0 -130
  334. package/src/core/runtime/cloudflare-workers-adapter.ts +0 -152
  335. package/src/core/runtime/index.ts +0 -62
  336. package/src/core/runtime/node-adapter.ts +0 -202
  337. package/src/core/runtime/vercel-edge-adapter.ts +0 -114
  338. package/src/core/utilities/circuit-breaker.ts +0 -46
  339. package/src/core/utilities/container.ts +0 -736
  340. package/src/core/utilities/hooks.ts +0 -142
  341. package/src/core/utilities/index.ts +0 -17
  342. package/src/core/utilities/package-utils.ts +0 -59
  343. package/src/core/validation/adapters.ts +0 -147
  344. package/src/core/validation/index.ts +0 -258
  345. package/src/core/validation/schema-interface.ts +0 -100
  346. package/src/index.ts +0 -233
  347. package/src/moro.ts +0 -1728
  348. package/src/types/auth.ts +0 -440
  349. package/src/types/cache.ts +0 -38
  350. package/src/types/cdn.ts +0 -22
  351. package/src/types/config.ts +0 -229
  352. package/src/types/core.ts +0 -58
  353. package/src/types/database.ts +0 -32
  354. package/src/types/discovery.ts +0 -7
  355. package/src/types/events.ts +0 -82
  356. package/src/types/hooks.ts +0 -47
  357. package/src/types/http.ts +0 -89
  358. package/src/types/logger.ts +0 -102
  359. package/src/types/module.ts +0 -99
  360. package/src/types/runtime.ts +0 -76
  361. package/src/types/session.ts +0 -89
  362. package/tsconfig.json +0 -23
  363. /package/dist/core/middleware/built-in/{auth-helpers.d.ts → auth/helpers.d.ts} +0 -0
  364. /package/dist/core/middleware/built-in/{jwt-helpers.d.ts → auth/jwt-helpers.d.ts} +0 -0
  365. /package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/index.js +0 -0
  366. /package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/index.js +0 -0
@@ -1,150 +0,0 @@
1
- // Configuration File Loader - Load moro.config.js/ts files
2
- import { existsSync } from 'fs';
3
- import { join } from 'path';
4
- import { createRequire } from 'module';
5
- import { AppConfig } from './schema.js';
6
- import { createFrameworkLogger } from '../logger/index.js';
7
-
8
- const logger = createFrameworkLogger('ConfigFile');
9
-
10
- // Create require function for ESM to enable synchronous config loading
11
- // Use process.cwd() as base since we're loading with absolute paths anyway
12
- const moduleRequire = createRequire(join(process.cwd(), 'index.js'));
13
-
14
- /**
15
- * Supported configuration file names in order of preference
16
- */
17
- const CONFIG_FILES = ['moro.config.js', 'moro.config.ts'] as const;
18
-
19
- /**
20
- * Find and load configuration from moro.config.js (synchronously)
21
- * @param cwd Current working directory to search for config files
22
- * @returns Partial configuration object or null if no config file found
23
- */
24
- export function loadConfigFileSync(cwd: string = process.cwd()): Partial<AppConfig> | null {
25
- const configFile = findConfigFile(cwd);
26
-
27
- if (!configFile) {
28
- logger.debug('No configuration file found');
29
- return null;
30
- }
31
-
32
- logger.debug(`Loading configuration from: ${configFile}`);
33
-
34
- try {
35
- // Use createRequire to enable synchronous loading in ESM
36
- // Clear the require cache to ensure fresh config on each load
37
- delete moduleRequire.cache[moduleRequire.resolve(configFile)];
38
-
39
- const configModule = moduleRequire(configFile);
40
-
41
- // Handle ES module default export
42
- const config = configModule.default || configModule;
43
-
44
- if (!config || typeof config !== 'object') {
45
- logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
46
- return null;
47
- }
48
-
49
- logger.info(`Configuration loaded from: ${configFile}`);
50
- return config;
51
- } catch (error) {
52
- logger.error(`Failed to load configuration file ${configFile}:`, String(error));
53
- logger.warn('Falling back to environment variable configuration');
54
- return null;
55
- }
56
- }
57
-
58
- /**
59
- * Find and load configuration from moro.config.js or moro.config.ts (async)
60
- * @param cwd Current working directory to search for config files
61
- * @returns Partial configuration object or null if no config file found
62
- */
63
- export async function loadConfigFile(
64
- cwd: string = process.cwd()
65
- ): Promise<Partial<AppConfig> | null> {
66
- const configFile = findConfigFile(cwd);
67
-
68
- if (!configFile) {
69
- logger.debug('No configuration file found');
70
- return null;
71
- }
72
-
73
- logger.debug(`Loading configuration from: ${configFile}`);
74
-
75
- try {
76
- const config = await importConfigFile(configFile);
77
-
78
- if (!config || typeof config !== 'object') {
79
- logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
80
- return null;
81
- }
82
-
83
- logger.info(`Configuration loaded from: ${configFile}`);
84
- return config;
85
- } catch (error) {
86
- logger.error(`Failed to load configuration file ${configFile}:`, String(error));
87
- logger.warn('Falling back to environment variable configuration');
88
- return null;
89
- }
90
- }
91
-
92
- /**
93
- * Find the first existing configuration file in the given directory
94
- */
95
- function findConfigFile(cwd: string): string | null {
96
- for (const fileName of CONFIG_FILES) {
97
- const filePath = join(cwd, fileName);
98
- if (existsSync(filePath)) {
99
- return filePath;
100
- }
101
- }
102
- return null;
103
- }
104
-
105
- /**
106
- * Dynamically import a configuration file
107
- */
108
- async function importConfigFile(filePath: string): Promise<Partial<AppConfig> | null> {
109
- const isTypeScript = filePath.endsWith('.ts');
110
-
111
- if (isTypeScript) {
112
- // For TypeScript files, we need to handle ts-node/tsx or similar
113
- await setupTypeScriptLoader();
114
- }
115
-
116
- try {
117
- // Use dynamic import to load the configuration
118
- const configModule = await import(filePath);
119
-
120
- // Handle both default export and module.exports
121
- const config = configModule.default || configModule;
122
-
123
- return config;
124
- } catch (error) {
125
- // If TypeScript loading fails, provide helpful error message
126
- if (
127
- isTypeScript &&
128
- error instanceof Error &&
129
- error.message.includes('Unknown file extension')
130
- ) {
131
- throw new Error(
132
- `Failed to load TypeScript config file. Run your application with tsx or ts-node: "tsx your-app.ts" or "ts-node your-app.ts"`
133
- );
134
- }
135
- throw error;
136
- }
137
- }
138
-
139
- /**
140
- * Setup TypeScript loader for .ts config files
141
- * Note: This function is intentionally minimal because TypeScript config files
142
- * should be handled by the runtime environment (tsx, ts-node, etc.) when the
143
- * user runs their application, not by the framework itself.
144
- */
145
- async function setupTypeScriptLoader(): Promise<void> {
146
- // No-op: TypeScript loading is handled by the runtime environment
147
- // When users run `tsx moro.config.ts` or `ts-node moro.config.ts`,
148
- // the TypeScript transpilation is already handled by those tools.
149
- logger.debug('TypeScript config loading delegated to runtime environment');
150
- }
@@ -1,109 +0,0 @@
1
- /**
2
- * Configuration System - Immutable Config with createApp Override Support
3
- *
4
- * This is the main entry point for the MoroJS configuration system.
5
- * It provides a clean, immutable configuration that is locked at createApp() time.
6
- *
7
- * Key Features:
8
- * - Immutable configuration after initialization
9
- * - Clear precedence: Env Vars > createApp Options > Config File > Defaults
10
- * - Type-safe validation
11
- * - Single source of truth
12
- */
13
-
14
- // Export types and core components
15
- export * from './schema.js';
16
- export * from './config-sources.js';
17
- export * from './config-validator.js';
18
- export * from './file-loader.js';
19
-
20
- // Export specific functions from config-manager to avoid conflicts
21
- export {
22
- initializeAndLockConfig,
23
- isConfigLocked,
24
- resetConfigForTesting,
25
- } from './config-manager.js';
26
-
27
- // Export utilities for backward compatibility
28
- export * from './utils.js';
29
-
30
- import { MoroOptions } from '../../types/core.js';
31
- import { AppConfig } from '../../types/config.js';
32
- import { loadConfigFromAllSources } from './config-sources.js';
33
- import {
34
- initializeAndLockConfig,
35
- getGlobalConfig as getConfig,
36
- isConfigLocked,
37
- resetConfigForTesting,
38
- } from './config-manager.js';
39
- import { createFrameworkLogger } from '../logger/index.js';
40
-
41
- const logger = createFrameworkLogger('ConfigSystem');
42
-
43
- /**
44
- * Initialize configuration system with createApp options
45
- * This is the main entry point called by createApp()
46
- *
47
- * @param options - createApp options that can override config file and defaults
48
- * @returns Immutable, validated configuration object
49
- */
50
- export function initializeConfig(options?: MoroOptions): Readonly<AppConfig> {
51
- if (isConfigLocked()) {
52
- logger.debug('Configuration already locked, returning existing config');
53
- return getConfig();
54
- }
55
-
56
- logger.debug('Initializing configuration system');
57
-
58
- // Load configuration from all sources with proper precedence
59
- const config = loadConfigFromAllSources(options);
60
-
61
- // Lock the configuration to prevent further changes
62
- initializeAndLockConfig(config);
63
-
64
- logger.info(
65
- `Configuration system initialized and locked: ${process.env.NODE_ENV || 'development'}:${config.server.port} (sources: env + file + options + defaults)`
66
- );
67
-
68
- return config;
69
- }
70
-
71
- /**
72
- * Load configuration without locking (for testing and utilities)
73
- * This maintains backward compatibility with existing code
74
- */
75
- export function loadConfig(): AppConfig {
76
- return loadConfigFromAllSources();
77
- }
78
-
79
- /**
80
- * Load configuration with createApp options (for testing and utilities)
81
- * This maintains backward compatibility with existing code
82
- */
83
- export function loadConfigWithOptions(options: MoroOptions): AppConfig {
84
- return loadConfigFromAllSources(options);
85
- }
86
-
87
- /**
88
- * Get the current global configuration
89
- * Alias for getGlobalConfig() for backward compatibility
90
- */
91
- export function getGlobalConfig(): Readonly<AppConfig> {
92
- return getConfig();
93
- }
94
-
95
- /**
96
- * Check if configuration has been initialized and locked
97
- * Alias for isConfigLocked() for backward compatibility
98
- */
99
- export function isConfigInitialized(): boolean {
100
- return isConfigLocked();
101
- }
102
-
103
- /**
104
- * Reset configuration state (for testing only)
105
- * @internal
106
- */
107
- export function resetConfig(): void {
108
- resetConfigForTesting();
109
- }
@@ -1,164 +0,0 @@
1
- // Core Configuration Schema for Moro Framework
2
-
3
- import { AppConfig } from '../../types/config.js';
4
-
5
- // Minimal default configuration - performance-focused, most things opt-in
6
- export const DEFAULT_CONFIG: AppConfig = {
7
- server: {
8
- port: 3001,
9
- host: 'localhost',
10
- maxConnections: 1000,
11
- timeout: 30000,
12
- bodySizeLimit: '10mb',
13
- useUWebSockets: false, // Opt-in for high performance
14
- requestTracking: {
15
- enabled: true, // Enable by default for debugging
16
- },
17
- requestLogging: {
18
- enabled: true, // Enable by default - logs requests independently
19
- },
20
- errorBoundary: {
21
- enabled: true, // Always enabled for safety
22
- },
23
- },
24
- serviceDiscovery: {
25
- enabled: false,
26
- type: 'memory',
27
- consulUrl: 'http://localhost:8500',
28
- kubernetesNamespace: 'default',
29
- healthCheckInterval: 30000,
30
- retryAttempts: 3,
31
- },
32
- database: {},
33
- modules: {
34
- cache: {
35
- enabled: false, // Opt-in for better performance
36
- defaultTtl: 300,
37
- maxSize: 1000,
38
- strategy: 'lru',
39
- },
40
- rateLimit: {
41
- enabled: false, // Opt-in to avoid unnecessary overhead
42
- defaultRequests: 100,
43
- defaultWindow: 60000,
44
- skipSuccessfulRequests: false,
45
- skipFailedRequests: false,
46
- },
47
- validation: {
48
- enabled: false,
49
- stripUnknown: true,
50
- abortEarly: false,
51
- },
52
- autoDiscovery: {
53
- enabled: true, // Enable by default for better DX
54
- paths: ['./modules', './src/modules'],
55
- patterns: ['**/*.module.{ts,js}', '**/index.{ts,js}', '**/*.config.{ts,js}'],
56
- recursive: true,
57
- loadingStrategy: 'eager',
58
- watchForChanges: false, // Opt-in for development
59
- ignorePatterns: ['**/*.test.{ts,js}', '**/*.spec.{ts,js}', '**/node_modules/**'],
60
- loadOrder: 'dependency',
61
- failOnError: false, // Graceful degradation
62
- maxDepth: 5,
63
- },
64
- },
65
- logging: {
66
- level: 'info',
67
- format: 'pretty',
68
- enableColors: true,
69
- enableTimestamp: true,
70
- enableContext: true,
71
- outputs: {
72
- console: true,
73
- file: {
74
- enabled: false,
75
- path: './logs/moro.log',
76
- maxSize: '10MB',
77
- maxFiles: 5,
78
- },
79
- webhook: {
80
- enabled: false,
81
- headers: {},
82
- },
83
- },
84
- },
85
- security: {
86
- cors: {
87
- enabled: false, // Opt-in for better performance
88
- origin: '*',
89
- methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
90
- allowedHeaders: ['Content-Type', 'Authorization'],
91
- credentials: false,
92
- },
93
- helmet: {
94
- enabled: false, // Opt-in for better performance
95
- contentSecurityPolicy: true,
96
- hsts: true,
97
- noSniff: true,
98
- frameguard: true,
99
- },
100
- rateLimit: {
101
- global: {
102
- enabled: false,
103
- requests: 1000,
104
- window: 60000,
105
- },
106
- },
107
- },
108
- external: {},
109
- performance: {
110
- compression: {
111
- enabled: false, // Opt-in to avoid overhead
112
- level: 6,
113
- threshold: 1024,
114
- },
115
- circuitBreaker: {
116
- enabled: false, // Opt-in to avoid overhead
117
- failureThreshold: 5,
118
- resetTimeout: 60000,
119
- monitoringPeriod: 10000,
120
- },
121
- clustering: {
122
- enabled: false,
123
- workers: 1,
124
- memoryPerWorkerGB: undefined,
125
- },
126
- },
127
- websocket: {
128
- enabled: false, // Opt-in - user must explicitly enable WebSockets
129
- },
130
- };
131
-
132
- // Schema validation is now handled by config-validator.ts
133
- // This export is kept for backward compatibility only
134
- // Note: For actual validation, use validateConfig() from config-validator.ts directly
135
- export const ConfigSchema = {
136
- parse: (data: any): AppConfig => {
137
- // Simple pass-through for backward compatibility
138
- // Real validation happens in the config loading pipeline
139
- return data as AppConfig;
140
- },
141
- };
142
-
143
- // Re-export types for backward compatibility
144
- export type {
145
- AppConfig,
146
- ServerConfig,
147
- ServiceDiscoveryConfig,
148
- DatabaseConfig,
149
- ModuleDefaultsConfig,
150
- LoggingConfig,
151
- SecurityConfig,
152
- ExternalServicesConfig,
153
- PerformanceConfig,
154
- } from '../../types/config.js';
155
-
156
- // For backward compatibility with modules that expect schema objects
157
- export const ServerConfigSchema = { parse: (data: any) => data };
158
- export const ServiceDiscoveryConfigSchema = { parse: (data: any) => data };
159
- export const DatabaseConfigSchema = { parse: (data: any) => data };
160
- export const ModuleDefaultsConfigSchema = { parse: (data: any) => data };
161
- export const LoggingConfigSchema = { parse: (data: any) => data };
162
- export const SecurityConfigSchema = { parse: (data: any) => data };
163
- export const ExternalServicesConfigSchema = { parse: (data: any) => data };
164
- export const PerformanceConfigSchema = { parse: (data: any) => data };
@@ -1,244 +0,0 @@
1
- // Configuration Utilities for Modules and Environment Handling
2
- import { AppConfig } from './schema.js';
3
- import { createFrameworkLogger } from '../logger/index.js';
4
- import { getGlobalConfig } from './config-manager.js';
5
-
6
- const logger = createFrameworkLogger('ConfigUtils');
7
-
8
- /**
9
- * Set the global configuration (deprecated - for backward compatibility only)
10
- * @deprecated Use the new immutable config system instead
11
- */
12
- export function setConfig(_config: AppConfig): void {
13
- logger.warn(
14
- 'setConfig() is deprecated. Configuration is now immutable after createApp() initialization.'
15
- );
16
- }
17
-
18
- /**
19
- * Get the global configuration
20
- * This now delegates to the new config manager
21
- */
22
- export function getConfig(): AppConfig {
23
- return getGlobalConfig();
24
- }
25
-
26
- /**
27
- * Coerce environment variable string values to appropriate types
28
- */
29
- function coerceEnvironmentValue(value: string): any {
30
- // Handle boolean values
31
- if (value.toLowerCase() === 'true') return true;
32
- if (value.toLowerCase() === 'false') return false;
33
-
34
- // Handle numeric values
35
- if (/^\d+$/.test(value)) {
36
- const num = parseInt(value, 10);
37
- return num;
38
- }
39
-
40
- if (/^\d+\.\d+$/.test(value)) {
41
- const num = parseFloat(value);
42
- return num;
43
- }
44
-
45
- // Handle JSON objects/arrays
46
- if (
47
- (value.startsWith('{') && value.endsWith('}')) ||
48
- (value.startsWith('[') && value.endsWith(']'))
49
- ) {
50
- try {
51
- return JSON.parse(value);
52
- } catch {
53
- // If JSON parsing fails, return as string
54
- return value;
55
- }
56
- }
57
-
58
- // Return as string for all other cases
59
- return value;
60
- }
61
-
62
- /**
63
- * Create module-specific configuration with environment override support
64
- * This now uses the new immutable config system
65
- */
66
- export function createModuleConfig<T>(
67
- schema: { parse: (data: any) => T },
68
- defaultConfig: Partial<T>,
69
- envPrefix?: string
70
- ): T {
71
- // Try to get global config, but don't fail if not initialized
72
- let globalConfig = {};
73
- try {
74
- globalConfig = getGlobalConfig();
75
- } catch {
76
- // Global config not initialized - use empty object (module config can still work independently)
77
- logger.debug(
78
- `Global config not available for module config with prefix ${envPrefix}, using defaults only`
79
- );
80
- globalConfig = {};
81
- }
82
-
83
- // Build environment configuration object with type coercion
84
- const envConfig: Record<string, any> = {};
85
-
86
- if (envPrefix) {
87
- // Extract environment variables with the given prefix
88
- Object.keys(process.env).forEach(key => {
89
- if (key.startsWith(envPrefix)) {
90
- const configKey = key
91
- .substring(envPrefix.length)
92
- .toLowerCase()
93
- .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
94
-
95
- const envValue = process.env[key];
96
- if (envValue !== undefined) {
97
- // Attempt basic type coercion for common types
98
- envConfig[configKey] = coerceEnvironmentValue(envValue);
99
- }
100
- }
101
- });
102
- }
103
-
104
- // Merge default config, global defaults, and environment overrides
105
- // Priority: environment variables > global config > default config
106
- const mergedConfig = {
107
- ...defaultConfig,
108
- ...globalConfig, // Now uses the new immutable config system
109
- ...envConfig,
110
- };
111
-
112
- try {
113
- return schema.parse(mergedConfig);
114
- } catch (error) {
115
- logger.error(`Module configuration validation failed for prefix ${envPrefix}:`, String(error));
116
- throw error;
117
- }
118
- }
119
-
120
- /**
121
- * Get environment variable with type conversion
122
- */
123
- export function getEnvVar<T>(key: string, defaultValue: T, converter?: (value: string) => T): T {
124
- const value = process.env[key];
125
-
126
- if (value === undefined) {
127
- return defaultValue;
128
- }
129
-
130
- if (converter) {
131
- try {
132
- return converter(value);
133
- } catch (error) {
134
- logger.warn(`Failed to convert environment variable ${key}:`, String(error));
135
- return defaultValue;
136
- }
137
- }
138
-
139
- // Default type conversions
140
- if (typeof defaultValue === 'boolean') {
141
- return (value.toLowerCase() === 'true') as T;
142
- }
143
-
144
- if (typeof defaultValue === 'number') {
145
- const num = Number(value);
146
- return (isNaN(num) ? defaultValue : num) as T;
147
- }
148
-
149
- return value as T;
150
- }
151
-
152
- /**
153
- * Parse comma-separated environment variable as array
154
- */
155
- export function getEnvArray(key: string, defaultValue: string[] = []): string[] {
156
- const value = process.env[key];
157
-
158
- if (!value) {
159
- return defaultValue;
160
- }
161
-
162
- return value
163
- .split(',')
164
- .map(item => item.trim())
165
- .filter(Boolean);
166
- }
167
-
168
- /**
169
- * Parse JSON environment variable safely
170
- */
171
- export function getEnvJson<T>(key: string, defaultValue: T): T {
172
- const value = process.env[key];
173
-
174
- if (!value) {
175
- return defaultValue;
176
- }
177
-
178
- try {
179
- return JSON.parse(value);
180
- } catch (error) {
181
- logger.warn(`Failed to parse JSON environment variable ${key}:`, String(error));
182
- return defaultValue;
183
- }
184
- }
185
-
186
- /**
187
- * Validate required environment variables
188
- */
189
- export function requireEnvVars(...keys: string[]): void {
190
- const missing: string[] = [];
191
-
192
- keys.forEach(key => {
193
- if (!process.env[key]) {
194
- missing.push(key);
195
- }
196
- });
197
-
198
- if (missing.length > 0) {
199
- throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
200
- }
201
- }
202
-
203
- /**
204
- * Create environment variable name with prefix
205
- */
206
- export function envVar(prefix: string, name: string): string {
207
- return `${prefix.toUpperCase()}_${name.toUpperCase()}`;
208
- }
209
-
210
- /**
211
- * Get configuration value with dot notation
212
- * This now delegates to the new config manager
213
- */
214
- export function getConfigValue(path: string): any {
215
- const config = getGlobalConfig();
216
-
217
- return path.split('.').reduce((obj, key) => {
218
- return obj && obj[key] !== undefined ? obj[key] : undefined;
219
- }, config as any);
220
- }
221
-
222
- /**
223
- * Check if we're in development environment
224
- * Now reads NODE_ENV directly for consistency with Node.js ecosystem
225
- */
226
- export function isDevelopment(): boolean {
227
- return process.env.NODE_ENV === 'development';
228
- }
229
-
230
- /**
231
- * Check if we're in production environment
232
- * Now reads NODE_ENV directly for consistency with Node.js ecosystem
233
- */
234
- export function isProduction(): boolean {
235
- return process.env.NODE_ENV === 'production';
236
- }
237
-
238
- /**
239
- * Check if we're in staging environment
240
- * Now reads NODE_ENV directly for consistency with Node.js ecosystem
241
- */
242
- export function isStaging(): boolean {
243
- return process.env.NODE_ENV === 'staging';
244
- }