@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
@@ -0,0 +1,36 @@
1
+ import { CookieCore } from './core.js';
2
+ /**
3
+ * Create cookie middleware for use in middleware chains
4
+ * Adds cookie parsing and response methods to req/res
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const cookieMw = createCookieMiddleware();
9
+ * app.use(cookieMw);
10
+ *
11
+ * // In routes:
12
+ * req.cookies // { sessionId: '123' }
13
+ * res.cookie('user', 'john', { httpOnly: true })
14
+ * res.clearCookie('user')
15
+ * ```
16
+ */
17
+ export function createCookieMiddleware() {
18
+ const cookieCore = new CookieCore();
19
+ return async (req, res, next) => {
20
+ const reqAny = req;
21
+ const resAny = res;
22
+ // Parse cookies from request
23
+ reqAny.cookies = cookieCore.parseCookies(req.headers.cookie);
24
+ // Add cookie methods to response
25
+ resAny.cookie = (name, value, options = {}) => {
26
+ cookieCore.setCookie(res, name, value, options);
27
+ return res;
28
+ };
29
+ resAny.clearCookie = (name, options = {}) => {
30
+ cookieCore.clearCookie(res, name, options);
31
+ return res;
32
+ };
33
+ await next();
34
+ };
35
+ }
36
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cookie/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAsB,MAAM,WAAW,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAU,CAAC;QAE1B,6BAA6B;QAC7B,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,iCAAiC;QACjC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,UAAyB,EAAE,EAAE,EAAE;YAC3E,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,GAAG,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAE,EAAE;YACjE,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { HttpResponse } from '../../../../types/http.js';
2
+ export interface CORSOptions {
3
+ origin?: string | string[];
4
+ methods?: string | string[];
5
+ headers?: string | string[];
6
+ credentials?: boolean;
7
+ maxAge?: number;
8
+ exposedHeaders?: string[];
9
+ preflightContinue?: boolean;
10
+ }
11
+ /**
12
+ * CORSCore - Core CORS header management logic
13
+ * Used directly by the router for route-based CORS
14
+ * Can be instantiated for use in middleware or hooks
15
+ */
16
+ export declare class CORSCore {
17
+ private options;
18
+ constructor(options?: CORSOptions);
19
+ /**
20
+ * Apply CORS headers to response
21
+ */
22
+ applyCORS(res: HttpResponse): void;
23
+ }
@@ -0,0 +1,51 @@
1
+ // ===== Core Logic =====
2
+ /**
3
+ * CORSCore - Core CORS header management logic
4
+ * Used directly by the router for route-based CORS
5
+ * Can be instantiated for use in middleware or hooks
6
+ */
7
+ export class CORSCore {
8
+ options;
9
+ constructor(options = {}) {
10
+ this.options = {
11
+ origin: '*',
12
+ methods: 'GET,POST,PUT,DELETE,OPTIONS',
13
+ headers: 'Content-Type,Authorization',
14
+ credentials: false,
15
+ ...options,
16
+ };
17
+ }
18
+ /**
19
+ * Apply CORS headers to response
20
+ */
21
+ applyCORS(res) {
22
+ // Origin
23
+ const origin = Array.isArray(this.options.origin)
24
+ ? this.options.origin.join(',')
25
+ : this.options.origin || '*';
26
+ res.setHeader('Access-Control-Allow-Origin', origin);
27
+ // Methods
28
+ const methods = Array.isArray(this.options.methods)
29
+ ? this.options.methods.join(',')
30
+ : this.options.methods || 'GET,POST,PUT,DELETE,OPTIONS';
31
+ res.setHeader('Access-Control-Allow-Methods', methods);
32
+ // Headers
33
+ const headers = Array.isArray(this.options.headers)
34
+ ? this.options.headers.join(',')
35
+ : this.options.headers || 'Content-Type,Authorization';
36
+ res.setHeader('Access-Control-Allow-Headers', headers);
37
+ // Credentials
38
+ if (this.options.credentials) {
39
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
40
+ }
41
+ // Max Age
42
+ if (this.options.maxAge) {
43
+ res.setHeader('Access-Control-Max-Age', String(this.options.maxAge));
44
+ }
45
+ // Exposed Headers
46
+ if (this.options.exposedHeaders && this.options.exposedHeaders.length > 0) {
47
+ res.setHeader('Access-Control-Expose-Headers', this.options.exposedHeaders.join(','));
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cors/core.ts"],"names":[],"mappings":"AAeA,yBAAyB;AAEzB;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACX,OAAO,CAAc;IAE7B,YAAY,UAAuB,EAAE;QACnC,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,4BAA4B;YACrC,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAiB;QACzB,SAAS;QACT,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QAC/B,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;QAErD,UAAU;QACV,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,6BAA6B,CAAC;QAC1D,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;QAEvD,UAAU;QACV,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,4BAA4B,CAAC;QACzD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;QAEvD,cAAc;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,UAAU;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { MiddlewareInterface } from '../../../../types/hooks.js';
2
+ import { type CORSOptions } from './core.js';
3
+ /**
4
+ * CORS hook for global usage
5
+ * Registers with the hooks system for application-wide CORS
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { cors } from '@/middleware/built-in/cors';
10
+ *
11
+ * app.use(cors({
12
+ * origin: 'https://example.com',
13
+ * credentials: true
14
+ * }));
15
+ * ```
16
+ */
17
+ export declare const cors: (options?: CORSOptions) => MiddlewareInterface;
@@ -0,0 +1,37 @@
1
+ import { createFrameworkLogger } from '../../../logger/index.js';
2
+ import { CORSCore } from './core.js';
3
+ const logger = createFrameworkLogger('CorsMiddleware');
4
+ /**
5
+ * CORS hook for global usage
6
+ * Registers with the hooks system for application-wide CORS
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { cors } from '@/middleware/built-in/cors';
11
+ *
12
+ * app.use(cors({
13
+ * origin: 'https://example.com',
14
+ * credentials: true
15
+ * }));
16
+ * ```
17
+ */
18
+ export const cors = (options = {}) => ({
19
+ name: 'cors',
20
+ version: '1.0.0',
21
+ metadata: {
22
+ name: 'cors',
23
+ version: '1.0.0',
24
+ description: 'Cross-Origin Resource Sharing middleware',
25
+ author: 'MoroJS Team',
26
+ },
27
+ install: async (hooks, middlewareOptions = {}) => {
28
+ logger.debug('Installing CORS middleware', 'Installation', { options: middlewareOptions });
29
+ const config = { ...options, ...middlewareOptions };
30
+ const corsCore = new CORSCore(config);
31
+ hooks.before('request', async (context) => {
32
+ const response = context.response;
33
+ corsCore.applyCORS(response);
34
+ });
35
+ },
36
+ });
37
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cors/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAoB,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,UAAuB,EAAE,EAAuB,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAe,CAAC;YACzC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { CORSCore, type CORSOptions } from './core.js';
2
+ export { createCORSMiddleware } from './middleware.js';
3
+ export { cors } from './hook.js';
@@ -0,0 +1,9 @@
1
+ // CORS - Main entry point
2
+ // Re-exports all public APIs for the CORS built-in
3
+ // Core (for direct use by router and custom implementations)
4
+ export { CORSCore } from './core.js';
5
+ // Middleware (for middleware chains)
6
+ export { createCORSMiddleware } from './middleware.js';
7
+ // Hook (for global registration)
8
+ export { cors } from './hook.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cors/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,mDAAmD;AAEnD,6DAA6D;AAC7D,OAAO,EAAE,QAAQ,EAAoB,MAAM,WAAW,CAAC;AAEvD,qCAAqC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { StandardMiddleware } from '../../../../types/hooks.js';
2
+ import { type CORSOptions } from './core.js';
3
+ /**
4
+ * Create CORS middleware for use in middleware chains
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const corsMw = createCORSMiddleware({
9
+ * origin: 'https://example.com',
10
+ * credentials: true
11
+ * });
12
+ *
13
+ * app.use(corsMw);
14
+ * ```
15
+ */
16
+ export declare function createCORSMiddleware(options?: CORSOptions): StandardMiddleware;
@@ -0,0 +1,22 @@
1
+ import { CORSCore } from './core.js';
2
+ /**
3
+ * Create CORS middleware for use in middleware chains
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const corsMw = createCORSMiddleware({
8
+ * origin: 'https://example.com',
9
+ * credentials: true
10
+ * });
11
+ *
12
+ * app.use(corsMw);
13
+ * ```
14
+ */
15
+ export function createCORSMiddleware(options = {}) {
16
+ const corsCore = new CORSCore(options);
17
+ return async (_req, res, next) => {
18
+ corsCore.applyCORS(res);
19
+ await next();
20
+ };
21
+ }
22
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/cors/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAoB,MAAM,WAAW,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuB,EAAE;IAC5D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO,KAAK,EAAE,IAAiB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC/E,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { HttpResponse } from '../../../../types/http.js';
2
+ export interface CSPDirectives {
3
+ defaultSrc?: string[];
4
+ scriptSrc?: string[];
5
+ styleSrc?: string[];
6
+ imgSrc?: string[];
7
+ connectSrc?: string[];
8
+ fontSrc?: string[];
9
+ objectSrc?: string[];
10
+ mediaSrc?: string[];
11
+ frameSrc?: string[];
12
+ childSrc?: string[];
13
+ workerSrc?: string[];
14
+ formAction?: string[];
15
+ upgradeInsecureRequests?: boolean;
16
+ blockAllMixedContent?: boolean;
17
+ }
18
+ export interface CSPOptions {
19
+ directives?: CSPDirectives;
20
+ reportOnly?: boolean;
21
+ reportUri?: string;
22
+ nonce?: boolean;
23
+ }
24
+ /**
25
+ * Generate a cryptographically secure nonce for CSP
26
+ */
27
+ export declare function generateNonce(): string;
28
+ /**
29
+ * Build CSP header value from directives
30
+ */
31
+ export declare function buildCSPHeader(directives: CSPDirectives, nonce?: string, reportUri?: string): string;
32
+ /**
33
+ * CSPCore - Core Content Security Policy management logic
34
+ * Used directly by the router for route-based CSP
35
+ */
36
+ export declare class CSPCore {
37
+ private options;
38
+ private defaultDirectives;
39
+ constructor(options?: CSPOptions);
40
+ /**
41
+ * Apply CSP header to response
42
+ * Returns the generated nonce if nonce support is enabled
43
+ */
44
+ applyCSP(res: HttpResponse): string | undefined;
45
+ }
@@ -0,0 +1,88 @@
1
+ // CSP Core - Reusable Content Security Policy logic
2
+ import crypto from 'crypto';
3
+ // ===== Core Logic =====
4
+ /**
5
+ * Generate a cryptographically secure nonce for CSP
6
+ */
7
+ export function generateNonce() {
8
+ return crypto.randomBytes(16).toString('base64');
9
+ }
10
+ /**
11
+ * Convert camelCase directive name to kebab-case
12
+ */
13
+ function toKebabCase(str) {
14
+ return str.replace(/([A-Z])/g, '-$1').toLowerCase();
15
+ }
16
+ /**
17
+ * Build CSP header value from directives
18
+ */
19
+ export function buildCSPHeader(directives, nonce, reportUri) {
20
+ const cspParts = [];
21
+ for (const [directive, sources] of Object.entries(directives)) {
22
+ if (directive === 'upgradeInsecureRequests' && sources === true) {
23
+ cspParts.push('upgrade-insecure-requests');
24
+ continue;
25
+ }
26
+ if (directive === 'blockAllMixedContent' && sources === true) {
27
+ cspParts.push('block-all-mixed-content');
28
+ continue;
29
+ }
30
+ if (Array.isArray(sources)) {
31
+ let sourceList = sources.join(' ');
32
+ // Add nonce to script-src and style-src if enabled
33
+ if (nonce && (directive === 'scriptSrc' || directive === 'styleSrc')) {
34
+ sourceList += ` 'nonce-${nonce}'`;
35
+ }
36
+ // Convert camelCase to kebab-case
37
+ const kebabDirective = toKebabCase(directive);
38
+ cspParts.push(`${kebabDirective} ${sourceList}`);
39
+ }
40
+ }
41
+ // Add report-uri if specified
42
+ if (reportUri) {
43
+ cspParts.push(`report-uri ${reportUri}`);
44
+ }
45
+ return cspParts.join('; ');
46
+ }
47
+ /**
48
+ * CSPCore - Core Content Security Policy management logic
49
+ * Used directly by the router for route-based CSP
50
+ */
51
+ export class CSPCore {
52
+ options;
53
+ defaultDirectives;
54
+ constructor(options = {}) {
55
+ this.options = options;
56
+ this.defaultDirectives = {
57
+ defaultSrc: ["'self'"],
58
+ scriptSrc: ["'self'"],
59
+ styleSrc: ["'self'", "'unsafe-inline'"],
60
+ imgSrc: ["'self'", 'data:', 'https:'],
61
+ connectSrc: ["'self'"],
62
+ fontSrc: ["'self'"],
63
+ objectSrc: ["'none'"],
64
+ mediaSrc: ["'self'"],
65
+ frameSrc: ["'none'"],
66
+ };
67
+ }
68
+ /**
69
+ * Apply CSP header to response
70
+ * Returns the generated nonce if nonce support is enabled
71
+ */
72
+ applyCSP(res) {
73
+ const directives = this.options.directives || this.defaultDirectives;
74
+ // Generate nonce if requested
75
+ let nonce;
76
+ if (this.options.nonce) {
77
+ nonce = generateNonce();
78
+ }
79
+ // Build CSP header value
80
+ const cspValue = buildCSPHeader(directives, nonce, this.options.reportUri);
81
+ const headerName = this.options.reportOnly
82
+ ? 'Content-Security-Policy-Report-Only'
83
+ : 'Content-Security-Policy';
84
+ res.setHeader(headerName, cspValue);
85
+ return nonce;
86
+ }
87
+ }
88
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csp/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { MiddlewareInterface } from '../../../../types/hooks.js';
2
+ import { type CSPOptions } from './core.js';
3
+ /**
4
+ * CSP hook for global usage
5
+ * Registers with the hooks system for application-wide Content Security Policy
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { csp } from '@/middleware/built-in/csp';
10
+ *
11
+ * app.use(csp({
12
+ * directives: {
13
+ * defaultSrc: ["'self'"],
14
+ * scriptSrc: ["'self'", 'https://cdn.example.com'],
15
+ * styleSrc: ["'self'", "'unsafe-inline'"]
16
+ * },
17
+ * nonce: true,
18
+ * reportUri: '/csp-report'
19
+ * }));
20
+ * ```
21
+ */
22
+ export declare const csp: (options?: CSPOptions) => MiddlewareInterface;
@@ -0,0 +1,47 @@
1
+ import { createFrameworkLogger } from '../../../logger/index.js';
2
+ import { CSPCore } from './core.js';
3
+ const logger = createFrameworkLogger('CSPMiddleware');
4
+ /**
5
+ * CSP hook for global usage
6
+ * Registers with the hooks system for application-wide Content Security Policy
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { csp } from '@/middleware/built-in/csp';
11
+ *
12
+ * app.use(csp({
13
+ * directives: {
14
+ * defaultSrc: ["'self'"],
15
+ * scriptSrc: ["'self'", 'https://cdn.example.com'],
16
+ * styleSrc: ["'self'", "'unsafe-inline'"]
17
+ * },
18
+ * nonce: true,
19
+ * reportUri: '/csp-report'
20
+ * }));
21
+ * ```
22
+ */
23
+ export const csp = (options = {}) => ({
24
+ name: 'csp',
25
+ version: '1.0.0',
26
+ metadata: {
27
+ name: 'csp',
28
+ version: '1.0.0',
29
+ description: 'Content Security Policy middleware with nonce support and violation reporting',
30
+ author: 'MoroJS Team',
31
+ },
32
+ install: async (hooks, middlewareOptions = {}) => {
33
+ logger.debug('Installing CSP middleware', 'Installation', { options: middlewareOptions });
34
+ const config = { ...options, ...middlewareOptions };
35
+ const cspCore = new CSPCore(config);
36
+ hooks.before('request', async (context) => {
37
+ const req = context.request;
38
+ const res = context.response;
39
+ const nonce = cspCore.applyCSP(res);
40
+ // Attach nonce to request if generated
41
+ if (nonce) {
42
+ req.cspNonce = nonce;
43
+ }
44
+ });
45
+ },
46
+ });
47
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csp/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,UAAsB,EAAE,EAAuB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,+EAA+E;QAC5F,MAAM,EAAE,aAAa;KACtB;IAED,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,oBAAyB,EAAE,EAAE,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAoB,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAc,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAe,CAAC;YAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAEpC,uCAAuC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { CSPCore, generateNonce, buildCSPHeader, type CSPDirectives, type CSPOptions, } from './core.js';
2
+ export { createCSPMiddleware } from './middleware.js';
3
+ export { csp } from './hook.js';
@@ -0,0 +1,9 @@
1
+ // CSP - Main entry point
2
+ // Re-exports all public APIs for the CSP built-in
3
+ // Core (for direct use by router and custom implementations)
4
+ export { CSPCore, generateNonce, buildCSPHeader, } from './core.js';
5
+ // Middleware (for middleware chains)
6
+ export { createCSPMiddleware } from './middleware.js';
7
+ // Hook (for global registration)
8
+ export { csp } from './hook.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csp/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,kDAAkD;AAElD,6DAA6D;AAC7D,OAAO,EACL,OAAO,EACP,aAAa,EACb,cAAc,GAGf,MAAM,WAAW,CAAC;AAEnB,qCAAqC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,iCAAiC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { StandardMiddleware } from '../../../../types/hooks.js';
2
+ import { type CSPOptions } from './core.js';
3
+ /**
4
+ * Create CSP middleware for use in middleware chains
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const cspMw = createCSPMiddleware({
9
+ * directives: {
10
+ * defaultSrc: ["'self'"],
11
+ * scriptSrc: ["'self'", "'unsafe-inline'"]
12
+ * },
13
+ * nonce: true
14
+ * });
15
+ *
16
+ * app.use(cspMw);
17
+ * ```
18
+ */
19
+ export declare function createCSPMiddleware(options?: CSPOptions): StandardMiddleware;
@@ -0,0 +1,29 @@
1
+ import { CSPCore } from './core.js';
2
+ /**
3
+ * Create CSP middleware for use in middleware chains
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const cspMw = createCSPMiddleware({
8
+ * directives: {
9
+ * defaultSrc: ["'self'"],
10
+ * scriptSrc: ["'self'", "'unsafe-inline'"]
11
+ * },
12
+ * nonce: true
13
+ * });
14
+ *
15
+ * app.use(cspMw);
16
+ * ```
17
+ */
18
+ export function createCSPMiddleware(options = {}) {
19
+ const cspCore = new CSPCore(options);
20
+ return async (req, res, next) => {
21
+ const nonce = cspCore.applyCSP(res);
22
+ // Attach nonce to request if generated
23
+ if (nonce) {
24
+ req.cspNonce = nonce;
25
+ }
26
+ await next();
27
+ };
28
+ }
29
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csp/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE;IAC1D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEpC,uCAAuC;QACvC,IAAI,KAAK,EAAE,CAAC;YACT,GAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { HttpRequest, HttpResponse } from '../../../../types/http.js';
2
+ export interface CSRFOptions {
3
+ secret?: string;
4
+ tokenLength?: number;
5
+ cookieName?: string;
6
+ headerName?: string;
7
+ ignoreMethods?: string[];
8
+ sameSite?: boolean;
9
+ }
10
+ /**
11
+ * CSRFCore - Core CSRF protection logic
12
+ * Used directly by the router for route-based CSRF protection
13
+ * Can be instantiated for use in middleware or hooks
14
+ */
15
+ export declare class CSRFCore {
16
+ private secret;
17
+ private tokenLength;
18
+ private cookieName;
19
+ private headerName;
20
+ private ignoreMethods;
21
+ private sameSite;
22
+ constructor(options?: CSRFOptions);
23
+ generateToken(): string;
24
+ verifyToken(token: string, sessionToken: string): boolean;
25
+ attachToken(req: HttpRequest, res: HttpResponse): Promise<string>;
26
+ validateToken(req: HttpRequest): Promise<void>;
27
+ getCookieName(): string;
28
+ }
@@ -0,0 +1,69 @@
1
+ // CSRF Core - Reusable CSRF protection logic
2
+ import crypto from 'crypto';
3
+ import { createFrameworkLogger } from '../../../logger/index.js';
4
+ const logger = createFrameworkLogger('CSRFCore');
5
+ // ===== Core Logic =====
6
+ /**
7
+ * CSRFCore - Core CSRF protection logic
8
+ * Used directly by the router for route-based CSRF protection
9
+ * Can be instantiated for use in middleware or hooks
10
+ */
11
+ export class CSRFCore {
12
+ secret;
13
+ tokenLength;
14
+ cookieName;
15
+ headerName;
16
+ ignoreMethods;
17
+ sameSite;
18
+ constructor(options = {}) {
19
+ this.secret = options.secret || 'moro-csrf-secret';
20
+ this.tokenLength = options.tokenLength || 32;
21
+ this.cookieName = options.cookieName || '_csrf';
22
+ this.headerName = options.headerName || 'x-csrf-token';
23
+ this.ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
24
+ this.sameSite = options.sameSite !== false;
25
+ }
26
+ generateToken() {
27
+ return crypto.randomBytes(this.tokenLength).toString('hex');
28
+ }
29
+ verifyToken(token, sessionToken) {
30
+ return !!(token && sessionToken && token === sessionToken);
31
+ }
32
+ async attachToken(req, res) {
33
+ let token = req._csrfToken;
34
+ if (!token) {
35
+ token = this.generateToken();
36
+ req._csrfToken = token;
37
+ // Set token in cookie
38
+ res.cookie(this.cookieName, token, {
39
+ httpOnly: true,
40
+ sameSite: this.sameSite ? 'strict' : undefined,
41
+ secure: req.headers['x-forwarded-proto'] === 'https' || req.socket.encrypted,
42
+ });
43
+ }
44
+ return token;
45
+ }
46
+ async validateToken(req) {
47
+ // Skip verification for safe methods
48
+ const method = req.method || 'GET';
49
+ if (this.ignoreMethods.includes(method)) {
50
+ return;
51
+ }
52
+ // Get token from header or body
53
+ const token = req.headers[this.headerName] ||
54
+ (req.body && req.body._csrf) ||
55
+ (req.query && req.query._csrf);
56
+ // Get session token from cookie
57
+ const sessionToken = req.cookies?.[this.cookieName];
58
+ if (!this.verifyToken(token, sessionToken || '')) {
59
+ const error = new Error('Invalid CSRF token');
60
+ error.status = 403;
61
+ error.code = 'CSRF_TOKEN_MISMATCH';
62
+ throw error;
63
+ }
64
+ }
65
+ getCookieName() {
66
+ return this.cookieName;
67
+ }
68
+ }
69
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/csrf/core.ts"],"names":[],"mappings":"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"}