@kabyeon/nexusjs 0.6.5

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 (669) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +860 -0
  3. package/dist/auth/auth.controller.d.ts +175 -0
  4. package/dist/auth/auth.controller.d.ts.map +1 -0
  5. package/dist/auth/auth.d.ts +47 -0
  6. package/dist/auth/auth.d.ts.map +1 -0
  7. package/dist/auth/auth.module.d.ts +34 -0
  8. package/dist/auth/auth.module.d.ts.map +1 -0
  9. package/dist/auth/auth.service.d.ts +192 -0
  10. package/dist/auth/auth.service.d.ts.map +1 -0
  11. package/dist/auth/decorators/current-user.d.ts +58 -0
  12. package/dist/auth/decorators/current-user.d.ts.map +1 -0
  13. package/dist/auth/index.d.ts +43 -0
  14. package/dist/auth/index.d.ts.map +1 -0
  15. package/dist/auth/index.js +730 -0
  16. package/dist/auth/index.js.map +25 -0
  17. package/dist/auth/middleware.d.ts +50 -0
  18. package/dist/auth/middleware.d.ts.map +1 -0
  19. package/dist/auth/types.d.ts +135 -0
  20. package/dist/auth/types.d.ts.map +1 -0
  21. package/dist/cache/cache.module.d.ts +22 -0
  22. package/dist/cache/cache.module.d.ts.map +1 -0
  23. package/dist/cache/cache.service.d.ts +37 -0
  24. package/dist/cache/cache.service.d.ts.map +1 -0
  25. package/dist/cache/index.d.ts +9 -0
  26. package/dist/cache/index.d.ts.map +1 -0
  27. package/dist/cache/index.js +814 -0
  28. package/dist/cache/index.js.map +25 -0
  29. package/dist/cache/stores/drizzle.d.ts +76 -0
  30. package/dist/cache/stores/drizzle.d.ts.map +1 -0
  31. package/dist/cache/stores/index.d.ts +10 -0
  32. package/dist/cache/stores/index.d.ts.map +1 -0
  33. package/dist/cache/stores/memory.d.ts +34 -0
  34. package/dist/cache/stores/memory.d.ts.map +1 -0
  35. package/dist/cache/stores/redis.d.ts +46 -0
  36. package/dist/cache/stores/redis.d.ts.map +1 -0
  37. package/dist/cache/types.d.ts +88 -0
  38. package/dist/cache/types.d.ts.map +1 -0
  39. package/dist/cli/commands/config.d.ts +44 -0
  40. package/dist/cli/commands/config.d.ts.map +1 -0
  41. package/dist/cli/commands/db-generate.d.ts +20 -0
  42. package/dist/cli/commands/db-generate.d.ts.map +1 -0
  43. package/dist/cli/commands/db-migrate.d.ts +33 -0
  44. package/dist/cli/commands/db-migrate.d.ts.map +1 -0
  45. package/dist/cli/commands/db-seed.d.ts +43 -0
  46. package/dist/cli/commands/db-seed.d.ts.map +1 -0
  47. package/dist/cli/commands/index.d.ts +11 -0
  48. package/dist/cli/commands/index.d.ts.map +1 -0
  49. package/dist/cli/commands/info.d.ts +11 -0
  50. package/dist/cli/commands/info.d.ts.map +1 -0
  51. package/dist/cli/commands/init.d.ts +38 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/make-auth.d.ts +17 -0
  54. package/dist/cli/commands/make-auth.d.ts.map +1 -0
  55. package/dist/cli/commands/make-controller.d.ts +16 -0
  56. package/dist/cli/commands/make-controller.d.ts.map +1 -0
  57. package/dist/cli/commands/make-crud.d.ts +28 -0
  58. package/dist/cli/commands/make-crud.d.ts.map +1 -0
  59. package/dist/cli/commands/make-listener.d.ts +15 -0
  60. package/dist/cli/commands/make-listener.d.ts.map +1 -0
  61. package/dist/cli/commands/make-middleware.d.ts +7 -0
  62. package/dist/cli/commands/make-middleware.d.ts.map +1 -0
  63. package/dist/cli/commands/make-migration.d.ts +21 -0
  64. package/dist/cli/commands/make-migration.d.ts.map +1 -0
  65. package/dist/cli/commands/make-model.d.ts +22 -0
  66. package/dist/cli/commands/make-model.d.ts.map +1 -0
  67. package/dist/cli/commands/make-module.d.ts +11 -0
  68. package/dist/cli/commands/make-module.d.ts.map +1 -0
  69. package/dist/cli/commands/make-queue.d.ts +17 -0
  70. package/dist/cli/commands/make-queue.d.ts.map +1 -0
  71. package/dist/cli/commands/make-schedule.d.ts +17 -0
  72. package/dist/cli/commands/make-schedule.d.ts.map +1 -0
  73. package/dist/cli/commands/make-service.d.ts +7 -0
  74. package/dist/cli/commands/make-service.d.ts.map +1 -0
  75. package/dist/cli/commands/make-session.d.ts +15 -0
  76. package/dist/cli/commands/make-session.d.ts.map +1 -0
  77. package/dist/cli/commands/make-validator.d.ts +7 -0
  78. package/dist/cli/commands/make-validator.d.ts.map +1 -0
  79. package/dist/cli/commands/new.d.ts +14 -0
  80. package/dist/cli/commands/new.d.ts.map +1 -0
  81. package/dist/cli/commands/repl.d.ts +42 -0
  82. package/dist/cli/commands/repl.d.ts.map +1 -0
  83. package/dist/cli/commands/route-list.d.ts +12 -0
  84. package/dist/cli/commands/route-list.d.ts.map +1 -0
  85. package/dist/cli/core/args.d.ts +29 -0
  86. package/dist/cli/core/args.d.ts.map +1 -0
  87. package/dist/cli/core/config.d.ts +137 -0
  88. package/dist/cli/core/config.d.ts.map +1 -0
  89. package/dist/cli/core/fs.d.ts +38 -0
  90. package/dist/cli/core/fs.d.ts.map +1 -0
  91. package/dist/cli/core/index.d.ts +42 -0
  92. package/dist/cli/core/index.d.ts.map +1 -0
  93. package/dist/cli/core/logger.d.ts +46 -0
  94. package/dist/cli/core/logger.d.ts.map +1 -0
  95. package/dist/cli/core/loose-json.d.ts +26 -0
  96. package/dist/cli/core/loose-json.d.ts.map +1 -0
  97. package/dist/cli/core/prompts.d.ts +22 -0
  98. package/dist/cli/core/prompts.d.ts.map +1 -0
  99. package/dist/cli/core/template.d.ts +26 -0
  100. package/dist/cli/core/template.d.ts.map +1 -0
  101. package/dist/cli/index.d.ts +1 -0
  102. package/dist/cli/index.d.ts.map +1 -0
  103. package/dist/cli/index.js +6136 -0
  104. package/dist/cli/index.js.map +91 -0
  105. package/dist/cli/templates/controller/adonis.d.ts +10 -0
  106. package/dist/cli/templates/controller/adonis.d.ts.map +1 -0
  107. package/dist/cli/templates/controller/functional.d.ts +9 -0
  108. package/dist/cli/templates/controller/functional.d.ts.map +1 -0
  109. package/dist/cli/templates/controller/nest.d.ts +17 -0
  110. package/dist/cli/templates/controller/nest.d.ts.map +1 -0
  111. package/dist/cli/templates/crud/controller.d.ts +8 -0
  112. package/dist/cli/templates/crud/controller.d.ts.map +1 -0
  113. package/dist/cli/templates/crud/dto.d.ts +8 -0
  114. package/dist/cli/templates/crud/dto.d.ts.map +1 -0
  115. package/dist/cli/templates/crud/index.d.ts +33 -0
  116. package/dist/cli/templates/crud/index.d.ts.map +1 -0
  117. package/dist/cli/templates/crud/module.d.ts +6 -0
  118. package/dist/cli/templates/crud/module.d.ts.map +1 -0
  119. package/dist/cli/templates/crud/test.d.ts +10 -0
  120. package/dist/cli/templates/crud/test.d.ts.map +1 -0
  121. package/dist/cli/templates/index.d.ts +39 -0
  122. package/dist/cli/templates/index.d.ts.map +1 -0
  123. package/dist/cli/templates/middleware/middleware.d.ts +8 -0
  124. package/dist/cli/templates/middleware/middleware.d.ts.map +1 -0
  125. package/dist/cli/templates/migration/drizzle.d.ts +12 -0
  126. package/dist/cli/templates/migration/drizzle.d.ts.map +1 -0
  127. package/dist/cli/templates/migration/sql.d.ts +10 -0
  128. package/dist/cli/templates/migration/sql.d.ts.map +1 -0
  129. package/dist/cli/templates/model/drizzle-dialect.d.ts +29 -0
  130. package/dist/cli/templates/model/drizzle-dialect.d.ts.map +1 -0
  131. package/dist/cli/templates/model/drizzle.d.ts +14 -0
  132. package/dist/cli/templates/model/drizzle.d.ts.map +1 -0
  133. package/dist/cli/templates/model/kysely.d.ts +12 -0
  134. package/dist/cli/templates/model/kysely.d.ts.map +1 -0
  135. package/dist/cli/templates/model/prisma.d.ts +12 -0
  136. package/dist/cli/templates/model/prisma.d.ts.map +1 -0
  137. package/dist/cli/templates/module/module.d.ts +16 -0
  138. package/dist/cli/templates/module/module.d.ts.map +1 -0
  139. package/dist/cli/templates/project/drizzle.config.d.ts +12 -0
  140. package/dist/cli/templates/project/drizzle.config.d.ts.map +1 -0
  141. package/dist/cli/templates/project/nx.config.d.ts +7 -0
  142. package/dist/cli/templates/project/nx.config.d.ts.map +1 -0
  143. package/dist/cli/templates/repository/repository.d.ts +13 -0
  144. package/dist/cli/templates/repository/repository.d.ts.map +1 -0
  145. package/dist/cli/templates/service/service.d.ts +12 -0
  146. package/dist/cli/templates/service/service.d.ts.map +1 -0
  147. package/dist/cli/templates/validator/validator.d.ts +8 -0
  148. package/dist/cli/templates/validator/validator.d.ts.map +1 -0
  149. package/dist/config/config.module.d.ts +39 -0
  150. package/dist/config/config.module.d.ts.map +1 -0
  151. package/dist/config/config.service.d.ts +47 -0
  152. package/dist/config/config.service.d.ts.map +1 -0
  153. package/dist/config/index.d.ts +39 -0
  154. package/dist/config/index.d.ts.map +1 -0
  155. package/dist/config/index.js +436 -0
  156. package/dist/config/index.js.map +21 -0
  157. package/dist/config/types.d.ts +78 -0
  158. package/dist/config/types.d.ts.map +1 -0
  159. package/dist/core/application.d.ts +77 -0
  160. package/dist/core/application.d.ts.map +1 -0
  161. package/dist/core/constants.d.ts +48 -0
  162. package/dist/core/constants.d.ts.map +1 -0
  163. package/dist/core/decorators/controller.d.ts +21 -0
  164. package/dist/core/decorators/controller.d.ts.map +1 -0
  165. package/dist/core/decorators/http-methods.d.ts +33 -0
  166. package/dist/core/decorators/http-methods.d.ts.map +1 -0
  167. package/dist/core/decorators/index.d.ts +12 -0
  168. package/dist/core/decorators/index.d.ts.map +1 -0
  169. package/dist/core/decorators/injectable.d.ts +42 -0
  170. package/dist/core/decorators/injectable.d.ts.map +1 -0
  171. package/dist/core/decorators/metadata.d.ts +7 -0
  172. package/dist/core/decorators/metadata.d.ts.map +1 -0
  173. package/dist/core/decorators/module.d.ts +23 -0
  174. package/dist/core/decorators/module.d.ts.map +1 -0
  175. package/dist/core/decorators/params.d.ts +33 -0
  176. package/dist/core/decorators/params.d.ts.map +1 -0
  177. package/dist/core/decorators/repository.d.ts +24 -0
  178. package/dist/core/decorators/repository.d.ts.map +1 -0
  179. package/dist/core/decorators/validate.d.ts +21 -0
  180. package/dist/core/decorators/validate.d.ts.map +1 -0
  181. package/dist/core/di/container.d.ts +70 -0
  182. package/dist/core/di/container.d.ts.map +1 -0
  183. package/dist/core/di/index.d.ts +9 -0
  184. package/dist/core/di/index.d.ts.map +1 -0
  185. package/dist/core/di/request-middleware.d.ts +36 -0
  186. package/dist/core/di/request-middleware.d.ts.map +1 -0
  187. package/dist/core/di/request-scope.d.ts +45 -0
  188. package/dist/core/di/request-scope.d.ts.map +1 -0
  189. package/dist/core/di/scanner.d.ts +36 -0
  190. package/dist/core/di/scanner.d.ts.map +1 -0
  191. package/dist/core/di/tokens.d.ts +98 -0
  192. package/dist/core/di/tokens.d.ts.map +1 -0
  193. package/dist/core/http/context.d.ts +30 -0
  194. package/dist/core/http/context.d.ts.map +1 -0
  195. package/dist/core/http/index.d.ts +8 -0
  196. package/dist/core/http/index.d.ts.map +1 -0
  197. package/dist/core/http/middleware.d.ts +31 -0
  198. package/dist/core/http/middleware.d.ts.map +1 -0
  199. package/dist/core/http/router.d.ts +46 -0
  200. package/dist/core/http/router.d.ts.map +1 -0
  201. package/dist/core/http/server.d.ts +58 -0
  202. package/dist/core/http/server.d.ts.map +1 -0
  203. package/dist/core/index.d.ts +20 -0
  204. package/dist/core/index.d.ts.map +1 -0
  205. package/dist/core/orm/drizzle-adapter.d.ts +73 -0
  206. package/dist/core/orm/drizzle-adapter.d.ts.map +1 -0
  207. package/dist/core/orm/index.d.ts +5 -0
  208. package/dist/core/orm/index.d.ts.map +1 -0
  209. package/dist/core/runtime/bun.d.ts +13 -0
  210. package/dist/core/runtime/bun.d.ts.map +1 -0
  211. package/dist/core/runtime/cloudflare.d.ts +18 -0
  212. package/dist/core/runtime/cloudflare.d.ts.map +1 -0
  213. package/dist/core/runtime/index.d.ts +11 -0
  214. package/dist/core/runtime/index.d.ts.map +1 -0
  215. package/dist/core/runtime/node.d.ts +10 -0
  216. package/dist/core/runtime/node.d.ts.map +1 -0
  217. package/dist/core/validation/index.d.ts +5 -0
  218. package/dist/core/validation/index.d.ts.map +1 -0
  219. package/dist/core/validation/validator.d.ts +46 -0
  220. package/dist/core/validation/validator.d.ts.map +1 -0
  221. package/dist/crypto/encryption.d.ts +71 -0
  222. package/dist/crypto/encryption.d.ts.map +1 -0
  223. package/dist/crypto/hash.d.ts +52 -0
  224. package/dist/crypto/hash.d.ts.map +1 -0
  225. package/dist/crypto/index.d.ts +49 -0
  226. package/dist/crypto/index.d.ts.map +1 -0
  227. package/dist/crypto/index.js +533 -0
  228. package/dist/crypto/index.js.map +14 -0
  229. package/dist/crypto/module.d.ts +28 -0
  230. package/dist/crypto/module.d.ts.map +1 -0
  231. package/dist/crypto/types.d.ts +81 -0
  232. package/dist/crypto/types.d.ts.map +1 -0
  233. package/dist/drive/drive.module.d.ts +20 -0
  234. package/dist/drive/drive.module.d.ts.map +1 -0
  235. package/dist/drive/drive.service.d.ts +21 -0
  236. package/dist/drive/drive.service.d.ts.map +1 -0
  237. package/dist/drive/drivers/index.d.ts +9 -0
  238. package/dist/drive/drivers/index.d.ts.map +1 -0
  239. package/dist/drive/drivers/local.d.ts +24 -0
  240. package/dist/drive/drivers/local.d.ts.map +1 -0
  241. package/dist/drive/drivers/memory.d.ts +19 -0
  242. package/dist/drive/drivers/memory.d.ts.map +1 -0
  243. package/dist/drive/drivers/s3.d.ts +44 -0
  244. package/dist/drive/drivers/s3.d.ts.map +1 -0
  245. package/dist/drive/index.d.ts +9 -0
  246. package/dist/drive/index.d.ts.map +1 -0
  247. package/dist/drive/index.js +714 -0
  248. package/dist/drive/index.js.map +25 -0
  249. package/dist/drive/types.d.ts +97 -0
  250. package/dist/drive/types.d.ts.map +1 -0
  251. package/dist/drizzle/decorators/columns.d.ts +16 -0
  252. package/dist/drizzle/decorators/columns.d.ts.map +1 -0
  253. package/dist/drizzle/decorators/index.d.ts +6 -0
  254. package/dist/drizzle/decorators/index.d.ts.map +1 -0
  255. package/dist/drizzle/drivers/base.d.ts +32 -0
  256. package/dist/drizzle/drivers/base.d.ts.map +1 -0
  257. package/dist/drizzle/drivers/bun-sqlite.d.ts +6 -0
  258. package/dist/drizzle/drivers/bun-sqlite.d.ts.map +1 -0
  259. package/dist/drizzle/drivers/d1.d.ts +7 -0
  260. package/dist/drizzle/drivers/d1.d.ts.map +1 -0
  261. package/dist/drizzle/drivers/index.d.ts +14 -0
  262. package/dist/drizzle/drivers/index.d.ts.map +1 -0
  263. package/dist/drizzle/drivers/mysql.d.ts +6 -0
  264. package/dist/drizzle/drivers/mysql.d.ts.map +1 -0
  265. package/dist/drizzle/drivers/postgres.d.ts +12 -0
  266. package/dist/drizzle/drivers/postgres.d.ts.map +1 -0
  267. package/dist/drizzle/drivers/sqlite.d.ts +8 -0
  268. package/dist/drizzle/drivers/sqlite.d.ts.map +1 -0
  269. package/dist/drizzle/drizzle.module.d.ts +29 -0
  270. package/dist/drizzle/drizzle.module.d.ts.map +1 -0
  271. package/dist/drizzle/drizzle.service.d.ts +52 -0
  272. package/dist/drizzle/drizzle.service.d.ts.map +1 -0
  273. package/dist/drizzle/index.d.ts +13 -0
  274. package/dist/drizzle/index.d.ts.map +1 -0
  275. package/dist/drizzle/index.js +979 -0
  276. package/dist/drizzle/index.js.map +32 -0
  277. package/dist/drizzle/model.d.ts +26 -0
  278. package/dist/drizzle/model.d.ts.map +1 -0
  279. package/dist/drizzle/raw-query.d.ts +41 -0
  280. package/dist/drizzle/raw-query.d.ts.map +1 -0
  281. package/dist/drizzle/repository/index.d.ts +6 -0
  282. package/dist/drizzle/repository/index.d.ts.map +1 -0
  283. package/dist/drizzle/repository/repository.d.ts +60 -0
  284. package/dist/drizzle/repository/repository.d.ts.map +1 -0
  285. package/dist/drizzle/types.d.ts +160 -0
  286. package/dist/drizzle/types.d.ts.map +1 -0
  287. package/dist/events/decorators/on-event.d.ts +49 -0
  288. package/dist/events/decorators/on-event.d.ts.map +1 -0
  289. package/dist/events/emitter.d.ts +52 -0
  290. package/dist/events/emitter.d.ts.map +1 -0
  291. package/dist/events/event.service.d.ts +27 -0
  292. package/dist/events/event.service.d.ts.map +1 -0
  293. package/dist/events/events.module.d.ts +35 -0
  294. package/dist/events/events.module.d.ts.map +1 -0
  295. package/dist/events/index.d.ts +43 -0
  296. package/dist/events/index.d.ts.map +1 -0
  297. package/dist/events/index.js +646 -0
  298. package/dist/events/index.js.map +23 -0
  299. package/dist/events/types.d.ts +120 -0
  300. package/dist/events/types.d.ts.map +1 -0
  301. package/dist/grpc/decorators.d.ts +34 -0
  302. package/dist/grpc/decorators.d.ts.map +1 -0
  303. package/dist/grpc/index.d.ts +70 -0
  304. package/dist/grpc/index.d.ts.map +1 -0
  305. package/dist/grpc/index.js +528 -0
  306. package/dist/grpc/index.js.map +22 -0
  307. package/dist/grpc/module.d.ts +32 -0
  308. package/dist/grpc/module.d.ts.map +1 -0
  309. package/dist/grpc/service.d.ts +60 -0
  310. package/dist/grpc/service.d.ts.map +1 -0
  311. package/dist/grpc/types.d.ts +79 -0
  312. package/dist/grpc/types.d.ts.map +1 -0
  313. package/dist/health/health.controller.d.ts +61 -0
  314. package/dist/health/health.controller.d.ts.map +1 -0
  315. package/dist/health/health.module.d.ts +29 -0
  316. package/dist/health/health.module.d.ts.map +1 -0
  317. package/dist/health/health.service.d.ts +34 -0
  318. package/dist/health/health.service.d.ts.map +1 -0
  319. package/dist/health/index.d.ts +38 -0
  320. package/dist/health/index.d.ts.map +1 -0
  321. package/dist/health/index.js +599 -0
  322. package/dist/health/index.js.map +25 -0
  323. package/dist/health/indicators/drizzle.d.ts +18 -0
  324. package/dist/health/indicators/drizzle.d.ts.map +1 -0
  325. package/dist/health/indicators/index.d.ts +59 -0
  326. package/dist/health/indicators/index.d.ts.map +1 -0
  327. package/dist/health/types.d.ts +105 -0
  328. package/dist/health/types.d.ts.map +1 -0
  329. package/dist/i18n/decorators.d.ts +14 -0
  330. package/dist/i18n/decorators.d.ts.map +1 -0
  331. package/dist/i18n/index.d.ts +48 -0
  332. package/dist/i18n/index.d.ts.map +1 -0
  333. package/dist/i18n/index.js +589 -0
  334. package/dist/i18n/index.js.map +17 -0
  335. package/dist/i18n/middleware.d.ts +26 -0
  336. package/dist/i18n/middleware.d.ts.map +1 -0
  337. package/dist/i18n/module.d.ts +39 -0
  338. package/dist/i18n/module.d.ts.map +1 -0
  339. package/dist/i18n/service.d.ts +130 -0
  340. package/dist/i18n/service.d.ts.map +1 -0
  341. package/dist/i18n/types.d.ts +65 -0
  342. package/dist/i18n/types.d.ts.map +1 -0
  343. package/dist/index.d.ts +2 -0
  344. package/dist/index.js +2056 -0
  345. package/dist/index.js.map +53 -0
  346. package/dist/limiter/backends/drizzle.d.ts +40 -0
  347. package/dist/limiter/backends/drizzle.d.ts.map +1 -0
  348. package/dist/limiter/backends/index.d.ts +6 -0
  349. package/dist/limiter/backends/index.d.ts.map +1 -0
  350. package/dist/limiter/backends/memory.d.ts +28 -0
  351. package/dist/limiter/backends/memory.d.ts.map +1 -0
  352. package/dist/limiter/index.d.ts +9 -0
  353. package/dist/limiter/index.d.ts.map +1 -0
  354. package/dist/limiter/index.js +640 -0
  355. package/dist/limiter/index.js.map +25 -0
  356. package/dist/limiter/limiter.middleware.d.ts +11 -0
  357. package/dist/limiter/limiter.middleware.d.ts.map +1 -0
  358. package/dist/limiter/limiter.module.d.ts +23 -0
  359. package/dist/limiter/limiter.module.d.ts.map +1 -0
  360. package/dist/limiter/limiter.service.d.ts +18 -0
  361. package/dist/limiter/limiter.service.d.ts.map +1 -0
  362. package/dist/limiter/types.d.ts +99 -0
  363. package/dist/limiter/types.d.ts.map +1 -0
  364. package/dist/logger/index.d.ts +36 -0
  365. package/dist/logger/index.d.ts.map +1 -0
  366. package/dist/logger/index.js +538 -0
  367. package/dist/logger/index.js.map +22 -0
  368. package/dist/logger/logger.module.d.ts +35 -0
  369. package/dist/logger/logger.module.d.ts.map +1 -0
  370. package/dist/logger/logger.service.d.ts +55 -0
  371. package/dist/logger/logger.service.d.ts.map +1 -0
  372. package/dist/logger/transports/index.d.ts +35 -0
  373. package/dist/logger/transports/index.d.ts.map +1 -0
  374. package/dist/logger/types.d.ts +58 -0
  375. package/dist/logger/types.d.ts.map +1 -0
  376. package/dist/mail/index.d.ts +9 -0
  377. package/dist/mail/index.d.ts.map +1 -0
  378. package/dist/mail/index.js +479 -0
  379. package/dist/mail/index.js.map +25 -0
  380. package/dist/mail/mail.module.d.ts +21 -0
  381. package/dist/mail/mail.module.d.ts.map +1 -0
  382. package/dist/mail/mail.service.d.ts +18 -0
  383. package/dist/mail/mail.service.d.ts.map +1 -0
  384. package/dist/mail/transports/file.d.ts +19 -0
  385. package/dist/mail/transports/file.d.ts.map +1 -0
  386. package/dist/mail/transports/index.d.ts +9 -0
  387. package/dist/mail/transports/index.d.ts.map +1 -0
  388. package/dist/mail/transports/null.d.ts +11 -0
  389. package/dist/mail/transports/null.d.ts.map +1 -0
  390. package/dist/mail/transports/smtp.d.ts +40 -0
  391. package/dist/mail/transports/smtp.d.ts.map +1 -0
  392. package/dist/mail/types.d.ts +73 -0
  393. package/dist/mail/types.d.ts.map +1 -0
  394. package/dist/metrics/controller.d.ts +27 -0
  395. package/dist/metrics/controller.d.ts.map +1 -0
  396. package/dist/metrics/counter.d.ts +36 -0
  397. package/dist/metrics/counter.d.ts.map +1 -0
  398. package/dist/metrics/decorators/counted.d.ts +26 -0
  399. package/dist/metrics/decorators/counted.d.ts.map +1 -0
  400. package/dist/metrics/decorators/index.d.ts +3 -0
  401. package/dist/metrics/decorators/index.d.ts.map +1 -0
  402. package/dist/metrics/decorators/timed.d.ts +25 -0
  403. package/dist/metrics/decorators/timed.d.ts.map +1 -0
  404. package/dist/metrics/gauge.d.ts +38 -0
  405. package/dist/metrics/gauge.d.ts.map +1 -0
  406. package/dist/metrics/histogram.d.ts +52 -0
  407. package/dist/metrics/histogram.d.ts.map +1 -0
  408. package/dist/metrics/index.d.ts +35 -0
  409. package/dist/metrics/index.d.ts.map +1 -0
  410. package/dist/metrics/index.js +1033 -0
  411. package/dist/metrics/index.js.map +21 -0
  412. package/dist/metrics/module.d.ts +33 -0
  413. package/dist/metrics/module.d.ts.map +1 -0
  414. package/dist/metrics/registry.d.ts +52 -0
  415. package/dist/metrics/registry.d.ts.map +1 -0
  416. package/dist/metrics/service.d.ts +42 -0
  417. package/dist/metrics/service.d.ts.map +1 -0
  418. package/dist/metrics/summary.d.ts +50 -0
  419. package/dist/metrics/summary.d.ts.map +1 -0
  420. package/dist/metrics/types.d.ts +115 -0
  421. package/dist/metrics/types.d.ts.map +1 -0
  422. package/dist/openapi/decorators/body.d.ts +9 -0
  423. package/dist/openapi/decorators/body.d.ts.map +1 -0
  424. package/dist/openapi/decorators/index.d.ts +11 -0
  425. package/dist/openapi/decorators/index.d.ts.map +1 -0
  426. package/dist/openapi/decorators/operation.d.ts +9 -0
  427. package/dist/openapi/decorators/operation.d.ts.map +1 -0
  428. package/dist/openapi/decorators/param.d.ts +17 -0
  429. package/dist/openapi/decorators/param.d.ts.map +1 -0
  430. package/dist/openapi/decorators/property.d.ts +24 -0
  431. package/dist/openapi/decorators/property.d.ts.map +1 -0
  432. package/dist/openapi/decorators/response.d.ts +10 -0
  433. package/dist/openapi/decorators/response.d.ts.map +1 -0
  434. package/dist/openapi/decorators/security.d.ts +9 -0
  435. package/dist/openapi/decorators/security.d.ts.map +1 -0
  436. package/dist/openapi/decorators/tags.d.ts +2 -0
  437. package/dist/openapi/decorators/tags.d.ts.map +1 -0
  438. package/dist/openapi/index.d.ts +10 -0
  439. package/dist/openapi/index.d.ts.map +1 -0
  440. package/dist/openapi/index.js +974 -0
  441. package/dist/openapi/index.js.map +31 -0
  442. package/dist/openapi/openapi.module.d.ts +46 -0
  443. package/dist/openapi/openapi.module.d.ts.map +1 -0
  444. package/dist/openapi/openapi.service.d.ts +55 -0
  445. package/dist/openapi/openapi.service.d.ts.map +1 -0
  446. package/dist/openapi/scalar.d.ts +16 -0
  447. package/dist/openapi/scalar.d.ts.map +1 -0
  448. package/dist/openapi/types.d.ts +266 -0
  449. package/dist/openapi/types.d.ts.map +1 -0
  450. package/dist/openapi/zod-to-json-schema.d.ts +34 -0
  451. package/dist/openapi/zod-to-json-schema.d.ts.map +1 -0
  452. package/dist/package.json +59 -0
  453. package/dist/queue/backends/bullmq.d.ts +41 -0
  454. package/dist/queue/backends/bullmq.d.ts.map +1 -0
  455. package/dist/queue/backends/cloudflare.d.ts +84 -0
  456. package/dist/queue/backends/cloudflare.d.ts.map +1 -0
  457. package/dist/queue/backends/index.d.ts +7 -0
  458. package/dist/queue/backends/index.d.ts.map +1 -0
  459. package/dist/queue/backends/memory.d.ts +24 -0
  460. package/dist/queue/backends/memory.d.ts.map +1 -0
  461. package/dist/queue/decorators/on-queue-ready.d.ts +43 -0
  462. package/dist/queue/decorators/on-queue-ready.d.ts.map +1 -0
  463. package/dist/queue/index.d.ts +57 -0
  464. package/dist/queue/index.d.ts.map +1 -0
  465. package/dist/queue/index.js +961 -0
  466. package/dist/queue/index.js.map +25 -0
  467. package/dist/queue/queue.module.d.ts +46 -0
  468. package/dist/queue/queue.module.d.ts.map +1 -0
  469. package/dist/queue/queue.service.d.ts +61 -0
  470. package/dist/queue/queue.service.d.ts.map +1 -0
  471. package/dist/queue/types.d.ts +204 -0
  472. package/dist/queue/types.d.ts.map +1 -0
  473. package/dist/redis/adapters/bun.d.ts +27 -0
  474. package/dist/redis/adapters/bun.d.ts.map +1 -0
  475. package/dist/redis/adapters/cloudflare.d.ts +51 -0
  476. package/dist/redis/adapters/cloudflare.d.ts.map +1 -0
  477. package/dist/redis/adapters/index.d.ts +29 -0
  478. package/dist/redis/adapters/index.d.ts.map +1 -0
  479. package/dist/redis/adapters/memory.d.ts +28 -0
  480. package/dist/redis/adapters/memory.d.ts.map +1 -0
  481. package/dist/redis/adapters/node.d.ts +36 -0
  482. package/dist/redis/adapters/node.d.ts.map +1 -0
  483. package/dist/redis/index.d.ts +33 -0
  484. package/dist/redis/index.d.ts.map +1 -0
  485. package/dist/redis/index.js +667 -0
  486. package/dist/redis/index.js.map +25 -0
  487. package/dist/redis/module.d.ts +32 -0
  488. package/dist/redis/module.d.ts.map +1 -0
  489. package/dist/redis/types.d.ts +146 -0
  490. package/dist/redis/types.d.ts.map +1 -0
  491. package/dist/schedule/backends/cloudflare.d.ts +55 -0
  492. package/dist/schedule/backends/cloudflare.d.ts.map +1 -0
  493. package/dist/schedule/backends/index.d.ts +3 -0
  494. package/dist/schedule/backends/index.d.ts.map +1 -0
  495. package/dist/schedule/backends/memory.d.ts +39 -0
  496. package/dist/schedule/backends/memory.d.ts.map +1 -0
  497. package/dist/schedule/cron-parser.d.ts +48 -0
  498. package/dist/schedule/cron-parser.d.ts.map +1 -0
  499. package/dist/schedule/decorators/cron.d.ts +71 -0
  500. package/dist/schedule/decorators/cron.d.ts.map +1 -0
  501. package/dist/schedule/index.d.ts +51 -0
  502. package/dist/schedule/index.d.ts.map +1 -0
  503. package/dist/schedule/index.js +1108 -0
  504. package/dist/schedule/index.js.map +25 -0
  505. package/dist/schedule/schedule.module.d.ts +44 -0
  506. package/dist/schedule/schedule.module.d.ts.map +1 -0
  507. package/dist/schedule/schedule.service.d.ts +51 -0
  508. package/dist/schedule/schedule.service.d.ts.map +1 -0
  509. package/dist/schedule/types.d.ts +150 -0
  510. package/dist/schedule/types.d.ts.map +1 -0
  511. package/dist/session/backends/cookie.d.ts +56 -0
  512. package/dist/session/backends/cookie.d.ts.map +1 -0
  513. package/dist/session/backends/drizzle.d.ts +65 -0
  514. package/dist/session/backends/drizzle.d.ts.map +1 -0
  515. package/dist/session/backends/index.d.ts +6 -0
  516. package/dist/session/backends/index.d.ts.map +1 -0
  517. package/dist/session/backends/memory.d.ts +32 -0
  518. package/dist/session/backends/memory.d.ts.map +1 -0
  519. package/dist/session/backends/redis.d.ts +53 -0
  520. package/dist/session/backends/redis.d.ts.map +1 -0
  521. package/dist/session/decorators/current-session.d.ts +56 -0
  522. package/dist/session/decorators/current-session.d.ts.map +1 -0
  523. package/dist/session/index.d.ts +42 -0
  524. package/dist/session/index.d.ts.map +1 -0
  525. package/dist/session/index.js +1498 -0
  526. package/dist/session/index.js.map +28 -0
  527. package/dist/session/session-middleware.d.ts +29 -0
  528. package/dist/session/session-middleware.d.ts.map +1 -0
  529. package/dist/session/session.module.d.ts +35 -0
  530. package/dist/session/session.module.d.ts.map +1 -0
  531. package/dist/session/session.service.d.ts +49 -0
  532. package/dist/session/session.service.d.ts.map +1 -0
  533. package/dist/session/types.d.ts +201 -0
  534. package/dist/session/types.d.ts.map +1 -0
  535. package/dist/shield/guards/csrf.d.ts +33 -0
  536. package/dist/shield/guards/csrf.d.ts.map +1 -0
  537. package/dist/shield/guards/headers.d.ts +22 -0
  538. package/dist/shield/guards/headers.d.ts.map +1 -0
  539. package/dist/shield/guards/index.d.ts +6 -0
  540. package/dist/shield/guards/index.d.ts.map +1 -0
  541. package/dist/shield/index.d.ts +8 -0
  542. package/dist/shield/index.d.ts.map +1 -0
  543. package/dist/shield/index.js +728 -0
  544. package/dist/shield/index.js.map +25 -0
  545. package/dist/shield/shield.module.d.ts +25 -0
  546. package/dist/shield/shield.module.d.ts.map +1 -0
  547. package/dist/shield/shield.service.d.ts +21 -0
  548. package/dist/shield/shield.service.d.ts.map +1 -0
  549. package/dist/shield/types.d.ts +95 -0
  550. package/dist/shield/types.d.ts.map +1 -0
  551. package/dist/sse/index.d.ts +7 -0
  552. package/dist/sse/index.d.ts.map +1 -0
  553. package/dist/sse/index.js +214 -0
  554. package/dist/sse/index.js.map +13 -0
  555. package/dist/sse/sse-stream.d.ts +46 -0
  556. package/dist/sse/sse-stream.d.ts.map +1 -0
  557. package/dist/sse/sse.d.ts +24 -0
  558. package/dist/sse/sse.d.ts.map +1 -0
  559. package/dist/sse/types.d.ts +84 -0
  560. package/dist/sse/types.d.ts.map +1 -0
  561. package/dist/static/index.d.ts +41 -0
  562. package/dist/static/index.d.ts.map +1 -0
  563. package/dist/static/index.js +313 -0
  564. package/dist/static/index.js.map +13 -0
  565. package/dist/static/static.module.d.ts +41 -0
  566. package/dist/static/static.module.d.ts.map +1 -0
  567. package/dist/static/static.service.d.ts +38 -0
  568. package/dist/static/static.service.d.ts.map +1 -0
  569. package/dist/tracing/decorators/index.d.ts +2 -0
  570. package/dist/tracing/decorators/index.d.ts.map +1 -0
  571. package/dist/tracing/decorators/trace.d.ts +37 -0
  572. package/dist/tracing/decorators/trace.d.ts.map +1 -0
  573. package/dist/tracing/hono-instrumentation.d.ts +21 -0
  574. package/dist/tracing/hono-instrumentation.d.ts.map +1 -0
  575. package/dist/tracing/index.d.ts +29 -0
  576. package/dist/tracing/index.d.ts.map +1 -0
  577. package/dist/tracing/index.js +782 -0
  578. package/dist/tracing/index.js.map +24 -0
  579. package/dist/tracing/module.d.ts +45 -0
  580. package/dist/tracing/module.d.ts.map +1 -0
  581. package/dist/tracing/propagation.d.ts +53 -0
  582. package/dist/tracing/propagation.d.ts.map +1 -0
  583. package/dist/tracing/service.d.ts +95 -0
  584. package/dist/tracing/service.d.ts.map +1 -0
  585. package/dist/tracing/types.d.ts +90 -0
  586. package/dist/tracing/types.d.ts.map +1 -0
  587. package/dist/upload/decorators/index.d.ts +6 -0
  588. package/dist/upload/decorators/index.d.ts.map +1 -0
  589. package/dist/upload/decorators/upload.d.ts +16 -0
  590. package/dist/upload/decorators/upload.d.ts.map +1 -0
  591. package/dist/upload/decorators/uploaded-file.d.ts +10 -0
  592. package/dist/upload/decorators/uploaded-file.d.ts.map +1 -0
  593. package/dist/upload/index.d.ts +9 -0
  594. package/dist/upload/index.d.ts.map +1 -0
  595. package/dist/upload/index.js +553 -0
  596. package/dist/upload/index.js.map +25 -0
  597. package/dist/upload/types.d.ts +103 -0
  598. package/dist/upload/types.d.ts.map +1 -0
  599. package/dist/upload/upload.middleware.d.ts +15 -0
  600. package/dist/upload/upload.middleware.d.ts.map +1 -0
  601. package/dist/upload/upload.module.d.ts +33 -0
  602. package/dist/upload/upload.module.d.ts.map +1 -0
  603. package/dist/upload/upload.service.d.ts +29 -0
  604. package/dist/upload/upload.service.d.ts.map +1 -0
  605. package/dist/view/edge.d.ts +23 -0
  606. package/dist/view/edge.d.ts.map +1 -0
  607. package/dist/view/eta.d.ts +30 -0
  608. package/dist/view/eta.d.ts.map +1 -0
  609. package/dist/view/index.d.ts +34 -0
  610. package/dist/view/index.d.ts.map +1 -0
  611. package/dist/view/index.js +240 -0
  612. package/dist/view/index.js.map +14 -0
  613. package/dist/view/inertia/default-ssr.d.ts +15 -0
  614. package/dist/view/inertia/default-ssr.d.ts.map +1 -0
  615. package/dist/view/inertia/form-helper.d.ts +102 -0
  616. package/dist/view/inertia/form-helper.d.ts.map +1 -0
  617. package/dist/view/inertia/form-middleware.d.ts +53 -0
  618. package/dist/view/inertia/form-middleware.d.ts.map +1 -0
  619. package/dist/view/inertia/helpers.d.ts +149 -0
  620. package/dist/view/inertia/helpers.d.ts.map +1 -0
  621. package/dist/view/inertia/index.d.ts +18 -0
  622. package/dist/view/inertia/index.d.ts.map +1 -0
  623. package/dist/view/inertia/inertia-adapter.d.ts +93 -0
  624. package/dist/view/inertia/inertia-adapter.d.ts.map +1 -0
  625. package/dist/view/inertia/inertia-response.d.ts +51 -0
  626. package/dist/view/inertia/inertia-response.d.ts.map +1 -0
  627. package/dist/view/inertia/ssr/index.d.ts +13 -0
  628. package/dist/view/inertia/ssr/index.d.ts.map +1 -0
  629. package/dist/view/inertia/ssr/react-adapter.d.ts +33 -0
  630. package/dist/view/inertia/ssr/react-adapter.d.ts.map +1 -0
  631. package/dist/view/inertia/ssr/registry.d.ts +42 -0
  632. package/dist/view/inertia/ssr/registry.d.ts.map +1 -0
  633. package/dist/view/inertia/ssr/solid-adapter.d.ts +31 -0
  634. package/dist/view/inertia/ssr/solid-adapter.d.ts.map +1 -0
  635. package/dist/view/inertia/ssr/svelte-adapter.d.ts +31 -0
  636. package/dist/view/inertia/ssr/svelte-adapter.d.ts.map +1 -0
  637. package/dist/view/inertia/ssr/vue-adapter.d.ts +26 -0
  638. package/dist/view/inertia/ssr/vue-adapter.d.ts.map +1 -0
  639. package/dist/view/inertia/types.d.ts +131 -0
  640. package/dist/view/inertia/types.d.ts.map +1 -0
  641. package/dist/view/rendu.d.ts +11 -0
  642. package/dist/view/rendu.d.ts.map +1 -0
  643. package/dist/view/types.d.ts +52 -0
  644. package/dist/view/types.d.ts.map +1 -0
  645. package/dist/view/view-engine.d.ts +28 -0
  646. package/dist/view/view-engine.d.ts.map +1 -0
  647. package/dist/ws/client.d.ts +42 -0
  648. package/dist/ws/client.d.ts.map +1 -0
  649. package/dist/ws/decorators.d.ts +44 -0
  650. package/dist/ws/decorators.d.ts.map +1 -0
  651. package/dist/ws/index.d.ts +57 -0
  652. package/dist/ws/index.d.ts.map +1 -0
  653. package/dist/ws/index.js +796 -0
  654. package/dist/ws/index.js.map +26 -0
  655. package/dist/ws/module.d.ts +48 -0
  656. package/dist/ws/module.d.ts.map +1 -0
  657. package/dist/ws/runtime/bun.d.ts +41 -0
  658. package/dist/ws/runtime/bun.d.ts.map +1 -0
  659. package/dist/ws/runtime/index.d.ts +14 -0
  660. package/dist/ws/runtime/index.d.ts.map +1 -0
  661. package/dist/ws/runtime/node.d.ts +46 -0
  662. package/dist/ws/runtime/node.d.ts.map +1 -0
  663. package/dist/ws/runtime/types.d.ts +18 -0
  664. package/dist/ws/runtime/types.d.ts.map +1 -0
  665. package/dist/ws/service.d.ts +65 -0
  666. package/dist/ws/service.d.ts.map +1 -0
  667. package/dist/ws/types.d.ts +77 -0
  668. package/dist/ws/types.d.ts.map +1 -0
  669. package/package.json +262 -0
@@ -0,0 +1,24 @@
1
+ import type { SseStreamController } from "./types.js";
2
+ /**
3
+ * The `sse()` helper.
4
+ *
5
+ * @param c Hono context. Pass via `@Req()` in a controller.
6
+ * @param handler Callback that pushes events onto the stream.
7
+ * @returns A `Response` with `text/event-stream` content type.
8
+ */
9
+ export declare function sse(c: any, handler: (stream: SseStreamController) => void | Promise<void>): Response;
10
+ /**
11
+ * `sseJson()` — convenience alias for `sse()`. Object payloads are
12
+ * auto-JSON-stringified in either form.
13
+ */
14
+ export declare const sseJson: typeof sse;
15
+ /**
16
+ * Extract the `Last-Event-ID` header from a Hono context. Returns
17
+ * `null` if the header is missing.
18
+ */
19
+ export declare function getLastEventId(c: {
20
+ req: {
21
+ header(name: string): string | undefined;
22
+ };
23
+ }): string | null;
24
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/sse/sse.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAClB,CAAC,EAAE,GAAG,EACN,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5D,QAAQ,CAaV;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,YAAM,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,GAAG,EAAE;QAAE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAGtG"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * `nexusjs/sse` — Server-Sent Events.
3
+ *
4
+ * @Get('/events')
5
+ * events() {
6
+ * return sse((stream) => {
7
+ * const id = setInterval(() => {
8
+ * stream.send({ event: 'tick', data: Date.now() });
9
+ * }, 1000);
10
+ * stream.onClose(() => clearInterval(id));
11
+ * });
12
+ * }
13
+ *
14
+ * // Or with reconnection support:
15
+ * @Get('/events')
16
+ * events(@LastEventId() lastId: string | null) {
17
+ * return sse(async (stream) => {
18
+ * // Replay events with id > lastId (if you have them).
19
+ * // Then continue with the live stream.
20
+ * });
21
+ * }
22
+ *
23
+ * Features:
24
+ * - Type-safe event payloads
25
+ * - Auto-cleanup on client disconnect
26
+ * - Last-Event-ID support for reconnection
27
+ * - JSON helpers (auto-stringify objects)
28
+ * - `retry:` hint to control client reconnect timing
29
+ */
30
+ import "reflect-metadata";
31
+ import { METADATA_KEY } from "../core/constants.js";
32
+ /**
33
+ * A single SSE event. The shape mirrors the wire format:
34
+ *
35
+ * - `id` — event id (used for `Last-Event-ID` reconnection)
36
+ * - `event` — event name (client subscribes via EventSource.addEventListener)
37
+ * - `data` — payload (string, object, or number)
38
+ * - `retry` — reconnect delay in ms (sent as `retry: <ms>`)
39
+ *
40
+ * `data` accepts anything JSON-serializable. Objects are auto-stringified
41
+ * via `JSON.stringify`. Strings are sent verbatim (one `data:` line per
42
+ * newline).
43
+ */
44
+ export interface SseEvent<T = unknown> {
45
+ id?: string | number;
46
+ event?: string;
47
+ data: T;
48
+ /** Reconnect delay (ms) hint. */
49
+ retry?: number;
50
+ }
51
+ /**
52
+ * Per-stream controller. Returned to the `sse()` callback.
53
+ *
54
+ * const stream = new SseStream(api);
55
+ * stream.send({ data: 'hello' }); // data-only event
56
+ * stream.send({ event: 'tick', data: { x: 1 } });
57
+ * stream.close();
58
+ */
59
+ export interface SseStreamController {
60
+ /** Push an event. Safe to call after `close()` (no-op). */
61
+ send<T = unknown>(event: SseEvent<T> | string): void;
62
+ /** Close the stream. Idempotent. Awaits pending writes. */
63
+ close(): void | Promise<void>;
64
+ /** True after `close()` has been called. */
65
+ get closed(): boolean;
66
+ /** Register a callback to run on client disconnect (or `close()`). */
67
+ onClose(cb: () => void): void;
68
+ /** Sleep for `ms` milliseconds (preserves the connection). */
69
+ sleep(ms: number): Promise<void>;
70
+ }
71
+ /** Marks a controller method as an SSE endpoint. OpenAPI hint. */
72
+ export declare function SseEventMeta(options?: {
73
+ name?: string;
74
+ description?: string;
75
+ }): MethodDecorator;
76
+ /**
77
+ * `@LastEventId()` — inject the `Last-Event-ID` header from the
78
+ * client's reconnect attempt. `null` if the header is missing.
79
+ */
80
+ export declare function LastEventId(): ParameterDecorator;
81
+ export declare const SSE_META = "nexus:sse:event";
82
+ export declare const SSE_LAST_EVENT_ID_META = "nexus:sse:lastEventId";
83
+ export { METADATA_KEY };
84
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sse/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IACnC,2DAA2D;IAC3D,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACrD,2DAA2D;IAC3D,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,IAAI,MAAM,IAAI,OAAO,CAAC;IACtB,sEAAsE;IACtE,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAMD,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CASnG;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,kBAAkB,CAQhD;AAED,eAAO,MAAM,QAAQ,oBAAoB,CAAC;AAC1C,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Public API for `nexusjs/static`.
3
+ *
4
+ * Quick start:
5
+ *
6
+ * // src/app/app.module.ts
7
+ * import { Module } from 'nexusjs';
8
+ * import { StaticModule } from 'nexusjs/static';
9
+ *
10
+ * @Module({
11
+ * imports: [
12
+ * StaticModule.forRoot({
13
+ * root: './public',
14
+ * prefix: '/public',
15
+ * }),
16
+ * ],
17
+ * })
18
+ * export class AppModule {}
19
+ *
20
+ * // any service that needs to mount the middleware on a sub-app
21
+ * import { StaticService } from 'nexusjs/static';
22
+ *
23
+ * @Injectable()
24
+ * class CustomServer {
25
+ * constructor(@Inject(StaticService.TOKEN) private static: StaticService) {}
26
+ * mount(app: Hono) {
27
+ * app.use('/public/*', this.static.middleware());
28
+ * }
29
+ * }
30
+ *
31
+ * Features:
32
+ * - Path-traversal protection (no `..`, no absolute paths)
33
+ * - ETag-based conditional GET (304 Not Modified)
34
+ * - Range requests (HTTP 206) for video / large files
35
+ * - Sensible `Cache-Control` defaults
36
+ * - `index.html` fallback for directory requests
37
+ * - MIME-type inference for common formats
38
+ */
39
+ export { StaticService, type ServeStaticOptions } from "./static.service.js";
40
+ export { StaticModule } from "./static.module.js";
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/static/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,313 @@
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ function __accessProp(key) {
7
+ return this[key];
8
+ }
9
+ var __toCommonJS = (from) => {
10
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
11
+ if (entry)
12
+ return entry;
13
+ entry = __defProp({}, "__esModule", { value: true });
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (var key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(entry, key))
17
+ __defProp(entry, key, {
18
+ get: __accessProp.bind(from, key),
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ __moduleCache.set(from, entry);
23
+ return entry;
24
+ };
25
+ var __moduleCache;
26
+ var __returnValue = (v) => v;
27
+ function __exportSetter(name, newValue) {
28
+ this[name] = __returnValue.bind(null, newValue);
29
+ }
30
+ var __export = (target, all) => {
31
+ for (var name in all)
32
+ __defProp(target, name, {
33
+ get: all[name],
34
+ enumerable: true,
35
+ configurable: true,
36
+ set: __exportSetter.bind(all, name)
37
+ });
38
+ };
39
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
40
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
42
+ r = Reflect.decorate(decorators, target, key, desc);
43
+ else
44
+ for (var i = decorators.length - 1;i >= 0; i--)
45
+ if (d = decorators[i])
46
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
47
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
48
+ };
49
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
50
+ var __legacyMetadataTS = (k, v) => {
51
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
52
+ return Reflect.metadata(k, v);
53
+ };
54
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
55
+ var __require = import.meta.require;
56
+
57
+ // src/core/constants.ts
58
+ var METADATA_KEY, PARAM_TYPES, HTTP_METHODS;
59
+ var init_constants = __esm(() => {
60
+ METADATA_KEY = {
61
+ CONTROLLER: "nexus:controller",
62
+ INJECTABLE: "nexus:injectable",
63
+ REPOSITORY: "nexus:repository",
64
+ MODULE: "nexus:module",
65
+ ROUTES: "nexus:routes",
66
+ PARAMS: "nexus:params",
67
+ VALIDATE: "nexus:validate",
68
+ PARAMTYPES: "design:paramtypes",
69
+ TYPE: "design:type",
70
+ RETURNTYPE: "design:returntype",
71
+ INJECT: "nexus:inject"
72
+ };
73
+ PARAM_TYPES = {
74
+ REQUEST: 0,
75
+ RESPONSE: 1,
76
+ NEXT: 2,
77
+ BODY: 3,
78
+ QUERY: 4,
79
+ PARAM: 5,
80
+ HEADERS: 6,
81
+ CTX: 7,
82
+ USER: 8
83
+ };
84
+ HTTP_METHODS = [
85
+ "GET",
86
+ "POST",
87
+ "PUT",
88
+ "DELETE",
89
+ "PATCH",
90
+ "OPTIONS",
91
+ "HEAD"
92
+ ];
93
+ });
94
+
95
+ // src/static/static.service.ts
96
+ import { createReadStream } from "fs";
97
+ import { stat, open } from "fs/promises";
98
+ import { resolve as pathResolve, normalize, join, sep } from "path";
99
+
100
+ class StaticService {
101
+ static TOKEN = Symbol.for("nexus:StaticService");
102
+ #root;
103
+ #prefix;
104
+ #index;
105
+ #cacheControl;
106
+ #etag;
107
+ #range;
108
+ #maxFileSize;
109
+ constructor(options = {}) {
110
+ this.#root = pathResolve(options.root ?? "./public");
111
+ const prefix = options.prefix ?? "/";
112
+ this.#prefix = prefix === "/" ? "/" : prefix.replace(/\/$/, "");
113
+ this.#index = options.index === false ? false : options.index ?? "index.html";
114
+ this.#cacheControl = options.cacheControl ?? "public, max-age=3600";
115
+ this.#etag = options.etag ?? true;
116
+ this.#range = options.range ?? true;
117
+ this.#maxFileSize = options.maxFileSize ?? 100 * 1024 * 1024;
118
+ }
119
+ middleware() {
120
+ return async (c, next) => {
121
+ const url = new URL(c.req.url);
122
+ const pathname = decodeURIComponent(url.pathname);
123
+ if (!pathname.startsWith(this.#prefix)) {
124
+ return next();
125
+ }
126
+ const rel = pathname.slice(this.#prefix.length).replace(/^\//, "");
127
+ const safe = this.#safeResolve(rel);
128
+ if (!safe)
129
+ return next();
130
+ let statResult;
131
+ try {
132
+ statResult = await stat(safe);
133
+ } catch {
134
+ return next();
135
+ }
136
+ let filePath = safe;
137
+ if (statResult.isDirectory()) {
138
+ if (this.#index === false)
139
+ return next();
140
+ filePath = join(safe, this.#index);
141
+ try {
142
+ const idx = await stat(filePath);
143
+ if (!idx.isFile())
144
+ return next();
145
+ } catch {
146
+ return next();
147
+ }
148
+ }
149
+ let fileStat;
150
+ try {
151
+ fileStat = await stat(filePath);
152
+ } catch {
153
+ return next();
154
+ }
155
+ const size = fileStat.size;
156
+ if (size > this.#maxFileSize)
157
+ return next();
158
+ const etag = this.#etag ? `"${this.#computeEtag(filePath, size, fileStat.mtimeMs)}"` : null;
159
+ if (etag) {
160
+ const inm = c.req.header("if-none-match");
161
+ if (inm && inm === etag) {
162
+ return new Response(null, { status: 304 });
163
+ }
164
+ c.header("ETag", etag);
165
+ }
166
+ const range = c.req.header("range");
167
+ if (this.#range && range) {
168
+ const m = /^bytes=(\d*)-(\d*)$/.exec(range);
169
+ if (m) {
170
+ const start = m[1] ? Number(m[1]) : 0;
171
+ const end = m[2] ? Number(m[2]) : size - 1;
172
+ if (start >= size || end >= size || start > end) {
173
+ return new Response("Range Not Satisfiable", {
174
+ status: 416,
175
+ headers: { "Content-Range": `bytes */${size}` }
176
+ });
177
+ }
178
+ const slice = await this.#readSlice(filePath, start, end);
179
+ return new Response(slice, {
180
+ status: 206,
181
+ headers: {
182
+ "Content-Type": this.#mime(filePath),
183
+ "Content-Length": String(end - start + 1),
184
+ "Content-Range": `bytes ${start}-${end}/${size}`,
185
+ "Cache-Control": this.#cacheControl,
186
+ "Accept-Ranges": "bytes"
187
+ }
188
+ });
189
+ }
190
+ }
191
+ const body = createReadStream(filePath);
192
+ return new Response(body, {
193
+ status: 200,
194
+ headers: {
195
+ "Content-Type": this.#mime(filePath),
196
+ "Content-Length": String(size),
197
+ "Cache-Control": this.#cacheControl,
198
+ "Accept-Ranges": "bytes",
199
+ ...etag ? { ETag: etag } : {}
200
+ }
201
+ });
202
+ };
203
+ }
204
+ #safeResolve(rel) {
205
+ if (rel.includes(".."))
206
+ return null;
207
+ if (rel.startsWith("/") || /^[a-zA-Z]:/.test(rel))
208
+ return null;
209
+ const joined = join(this.#root, rel);
210
+ const norm = normalize(joined);
211
+ if (!norm.startsWith(this.#root + sep) && norm !== this.#root)
212
+ return null;
213
+ return norm;
214
+ }
215
+ #computeEtag(_path, size, mtimeMs) {
216
+ const bucket = Math.floor(mtimeMs / 1000);
217
+ const hash = `${size}-${bucket}`;
218
+ return Buffer.from(hash).toString("base64url");
219
+ }
220
+ async#readSlice(path, start, end) {
221
+ const fh = await open(path, "r");
222
+ try {
223
+ const length = end - start + 1;
224
+ const buf = Buffer.alloc(length);
225
+ await fh.read(buf, 0, length, start);
226
+ return buf;
227
+ } finally {
228
+ await fh.close();
229
+ }
230
+ }
231
+ #mime(path) {
232
+ const ext = path.slice(path.lastIndexOf(".") + 1).toLowerCase();
233
+ const map = {
234
+ html: "text/html; charset=utf-8",
235
+ htm: "text/html; charset=utf-8",
236
+ css: "text/css; charset=utf-8",
237
+ js: "application/javascript; charset=utf-8",
238
+ mjs: "application/javascript; charset=utf-8",
239
+ json: "application/json; charset=utf-8",
240
+ svg: "image/svg+xml",
241
+ png: "image/png",
242
+ jpeg: "image/jpeg",
243
+ jpg: "image/jpeg",
244
+ gif: "image/gif",
245
+ webp: "image/webp",
246
+ ico: "image/x-icon",
247
+ pdf: "application/pdf",
248
+ txt: "text/plain; charset=utf-8",
249
+ woff: "font/woff",
250
+ woff2: "font/woff2",
251
+ mp4: "video/mp4",
252
+ webm: "video/webm",
253
+ mp3: "audio/mpeg"
254
+ };
255
+ return map[ext] ?? "application/octet-stream";
256
+ }
257
+ }
258
+ // src/static/static.module.ts
259
+ import"reflect-metadata";
260
+
261
+ // src/core/decorators/module.ts
262
+ init_constants();
263
+ import"reflect-metadata";
264
+ function Module(options = {}) {
265
+ return (target) => {
266
+ Reflect.defineMetadata(METADATA_KEY.MODULE, options, target);
267
+ };
268
+ }
269
+ function getModuleOptions(target) {
270
+ return Reflect.getMetadata(METADATA_KEY.MODULE, target) ?? {};
271
+ }
272
+
273
+ // src/static/static.module.ts
274
+ class StaticModule {
275
+ static forRoot(options = {}) {
276
+ class ConfiguredStaticModule {
277
+ }
278
+ ConfiguredStaticModule = __legacyDecorateClassTS([
279
+ Module({
280
+ providers: [
281
+ StaticService,
282
+ { provide: StaticService.TOKEN, useExisting: StaticService },
283
+ { provide: "STATIC_OPTIONS", useValue: options }
284
+ ],
285
+ exports: [StaticService, StaticService.TOKEN]
286
+ })
287
+ ], ConfiguredStaticModule);
288
+ Object.defineProperty(ConfiguredStaticModule, "name", {
289
+ value: "ConfiguredStaticModule"
290
+ });
291
+ return ConfiguredStaticModule;
292
+ }
293
+ static mount(options = {}) {
294
+ const svc = new StaticService(options);
295
+ return svc.middleware();
296
+ }
297
+ }
298
+ StaticModule = __legacyDecorateClassTS([
299
+ Module({
300
+ providers: [
301
+ StaticService,
302
+ { provide: StaticService.TOKEN, useExisting: StaticService }
303
+ ],
304
+ exports: [StaticService, StaticService.TOKEN]
305
+ })
306
+ ], StaticModule);
307
+ export {
308
+ StaticService,
309
+ StaticModule
310
+ };
311
+
312
+ //# debugId=C32AAEEE9103D3BF64756E2164756E21
313
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/constants.ts", "../src/static/static.service.ts", "../src/static/static.module.ts", "../src/core/decorators/module.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Metadata keys used by reflect-metadata for storing decorator data.\n *\n * These constants are the contract between decorators and the framework\n * core (DI container, router, validator).\n */\nexport const METADATA_KEY = {\n\t/** Marks a class as a Nest-style controller, stores route prefix. */\n\tCONTROLLER: \"nexus:controller\",\n\n\t/** Marks a class as an injectable provider. */\n\tINJECTABLE: \"nexus:injectable\",\n\n\t/** Marks a class as a repository. */\n\tREPOSITORY: \"nexus:repository\",\n\n\t/** Marks a class as a module. Stores module options. */\n\tMODULE: \"nexus:module\",\n\n\t/** HTTP method routes registered on a controller (Get/Post/...). */\n\tROUTES: \"nexus:routes\",\n\n\t/** Method parameter type metadata (body/query/param/headers/ctx). */\n\tPARAMS: \"nexus:params\",\n\n\t/** Validation schema per method (Zod schema or class). */\n\tVALIDATE: \"nexus:validate\",\n\n\t/** Class-level design:paramtypes (built-in). */\n\tPARAMTYPES: \"design:paramtypes\",\n\n\t/** Class-level design:type (built-in). */\n\tTYPE: \"design:type\",\n\n\t/** Class-level design:returntype (built-in). */\n\tRETURNTYPE: \"design:returntype\",\n\n\t/** Provider token to inject for a parameter (for custom tokens). */\n\tINJECT: \"nexus:inject\",\n} as const;\n\nexport type MetadataKey = (typeof METADATA_KEY)[keyof typeof METADATA_KEY];\n\n/** Available parameter decorator locations. */\nexport const PARAM_TYPES = {\n\tREQUEST: 0,\n\tRESPONSE: 1,\n\tNEXT: 2,\n\tBODY: 3,\n\tQUERY: 4,\n\tPARAM: 5,\n\tHEADERS: 6,\n\tCTX: 7,\n\tUSER: 8,\n} as const;\n\nexport type ParamType = (typeof PARAM_TYPES)[keyof typeof PARAM_TYPES];\n\n/** HTTP methods supported by the router. */\nexport const HTTP_METHODS = [\n\t\"GET\",\n\t\"POST\",\n\t\"PUT\",\n\t\"DELETE\",\n\t\"PATCH\",\n\t\"OPTIONS\",\n\t\"HEAD\",\n] as const;\nexport type HttpMethod = (typeof HTTP_METHODS)[number];\n",
6
+ "/**\n * Static file serving — middleware + helpers.\n *\n * Mirrors `@adonisjs/static` + `serve-static`. Built on the platform's\n * native filesystem (Bun.file() on Bun, node:fs elsewhere).\n */\n\nimport type { Context, MiddlewareHandler } from \"hono\";\nimport { createReadStream } from \"node:fs\";\nimport { stat, open } from \"node:fs/promises\";\nimport { resolve as pathResolve, normalize, join, sep } from \"node:path\";\n\n/** Configuration for `serveStatic`. */\nexport interface ServeStaticOptions {\n\t/** Filesystem root to serve files from. Default: `./public`. */\n\troot?: string;\n\t/** URL prefix. Default: `/`. */\n\tprefix?: string;\n\t/** Default file when a directory is requested. Default: `index.html`. */\n\tindex?: string | false;\n\t/** `Cache-Control` header. Default: `'public, max-age=3600'`. */\n\tcacheControl?: string;\n\t/** Enable ETag generation. Default: `true`. */\n\tetag?: boolean;\n\t/** Enable range requests (for video / large files). Default: `true`. */\n\trange?: boolean;\n\t/** Max file size in bytes; larger files return 404. Default: 100 MB. */\n\tmaxFileSize?: number;\n}\n\n/** StaticService — emits the `serveStatic` middleware. */\nexport class StaticService {\n\t/** DI token — use with `@Inject(StaticService.TOKEN)`. */\n\tstatic readonly TOKEN = Symbol.for(\"nexus:StaticService\");\n\n\t#root: string;\n\t#prefix: string;\n\t#index: string | false;\n\t#cacheControl: string;\n\t#etag: boolean;\n\t#range: boolean;\n\t#maxFileSize: number;\n\n\tconstructor(options: ServeStaticOptions = {}) {\n\t\tthis.#root = pathResolve(options.root ?? \"./public\");\n\t\t// Normalize prefix to always start with `/` and end without `/` (except root).\n\t\tconst prefix = options.prefix ?? \"/\";\n\t\tthis.#prefix = prefix === \"/\" ? \"/\" : prefix.replace(/\\/$/, \"\");\n\t\tthis.#index =\n\t\t\toptions.index === false ? false : (options.index ?? \"index.html\");\n\t\tthis.#cacheControl = options.cacheControl ?? \"public, max-age=3600\";\n\t\tthis.#etag = options.etag ?? true;\n\t\tthis.#range = options.range ?? true;\n\t\tthis.#maxFileSize = options.maxFileSize ?? 100 * 1024 * 1024;\n\t}\n\n\t/**\n\t * Build a Hono middleware that serves files from `root`.\n\t *\n\t * app.use('/public/*', staticService.middleware());\n\t */\n\tmiddleware(): MiddlewareHandler {\n\t\treturn async (c, next) => {\n\t\t\tconst url = new URL(c.req.url);\n\t\t\tconst pathname = decodeURIComponent(url.pathname);\n\t\t\tif (!pathname.startsWith(this.#prefix)) {\n\t\t\t\treturn next();\n\t\t\t}\n\t\t\t// pathname e.g. \"/static/test.html\", prefix e.g. \"/static\"\n\t\t\t// → slice gives \"/test.html\". Strip leading \"/\" so\n\t\t\t// #safeResolve doesn't reject it as an absolute path.\n\t\t\tconst rel = pathname.slice(this.#prefix.length).replace(/^\\//, \"\");\n\t\t\tconst safe = this.#safeResolve(rel);\n\t\t\tif (!safe) return next();\n\n\t\t\tlet statResult: Awaited<ReturnType<typeof stat>>;\n\t\t\ttry {\n\t\t\t\tstatResult = await stat(safe);\n\t\t\t} catch {\n\t\t\t\treturn next();\n\t\t\t}\n\n\t\t\tlet filePath = safe;\n\t\t\tif (statResult.isDirectory()) {\n\t\t\t\tif (this.#index === false) return next();\n\t\t\t\tfilePath = join(safe, this.#index);\n\t\t\t\ttry {\n\t\t\t\t\tconst idx = await stat(filePath);\n\t\t\t\t\tif (!idx.isFile()) return next();\n\t\t\t\t} catch {\n\t\t\t\t\treturn next();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Size guard.\n\t\t\tlet fileStat: Awaited<ReturnType<typeof stat>>;\n\t\t\ttry {\n\t\t\t\tfileStat = await stat(filePath);\n\t\t\t} catch {\n\t\t\t\treturn next();\n\t\t\t}\n\t\t\tconst size = fileStat.size;\n\t\t\tif (size > this.#maxFileSize) return next();\n\n\t\t\t// ETag.\n\t\t\tconst etag = this.#etag\n\t\t\t\t? `\"${this.#computeEtag(filePath, size, fileStat.mtimeMs)}\"`\n\t\t\t\t: null;\n\t\t\tif (etag) {\n\t\t\t\tconst inm = c.req.header(\"if-none-match\");\n\t\t\t\tif (inm && inm === etag) {\n\t\t\t\t\treturn new Response(null, { status: 304 });\n\t\t\t\t}\n\t\t\t\tc.header(\"ETag\", etag);\n\t\t\t}\n\n\t\t\t// Range requests.\n\t\t\tconst range = c.req.header(\"range\");\n\t\t\tif (this.#range && range) {\n\t\t\t\tconst m = /^bytes=(\\d*)-(\\d*)$/.exec(range);\n\t\t\t\tif (m) {\n\t\t\t\t\tconst start = m[1] ? Number(m[1]) : 0;\n\t\t\t\t\tconst end = m[2] ? Number(m[2]) : size - 1;\n\t\t\t\t\tif (start >= size || end >= size || start > end) {\n\t\t\t\t\t\treturn new Response(\"Range Not Satisfiable\", {\n\t\t\t\t\t\t\tstatus: 416,\n\t\t\t\t\t\t\theaders: { \"Content-Range\": `bytes */${size}` },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst slice = await this.#readSlice(filePath, start, end);\n\t\t\t\t\treturn new Response(slice as BodyInit, {\n\t\t\t\t\t\tstatus: 206,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-Type\": this.#mime(filePath),\n\t\t\t\t\t\t\t\"Content-Length\": String(end - start + 1),\n\t\t\t\t\t\t\t\"Content-Range\": `bytes ${start}-${end}/${size}`,\n\t\t\t\t\t\t\t\"Cache-Control\": this.#cacheControl,\n\t\t\t\t\t\t\t\"Accept-Ranges\": \"bytes\",\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Full body.\n\t\t\tconst body = createReadStream(filePath);\n\t\t\treturn new Response(body as unknown as ReadableStream, {\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": this.#mime(filePath),\n\t\t\t\t\t\"Content-Length\": String(size),\n\t\t\t\t\t\"Cache-Control\": this.#cacheControl,\n\t\t\t\t\t\"Accept-Ranges\": \"bytes\",\n\t\t\t\t\t...(etag ? { ETag: etag } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t};\n\t}\n\n\t// ===========================================================================\n\t// Internal\n\t// ===========================================================================\n\n\t#safeResolve(rel: string): string | null {\n\t\t// Reject path traversal: no `..`, no absolute paths, no drive letters.\n\t\tif (rel.includes(\"..\")) return null;\n\t\tif (rel.startsWith(\"/\") || /^[a-zA-Z]:/.test(rel)) return null;\n\t\tconst joined = join(this.#root, rel);\n\t\tconst norm = normalize(joined);\n\t\t// Make sure the result is still under `root`.\n\t\tif (!norm.startsWith(this.#root + sep) && norm !== this.#root) return null;\n\t\treturn norm;\n\t}\n\n\t#computeEtag(_path: string, size: number, mtimeMs: number): string {\n\t\t// Simple hash: size + mtime bucket.\n\t\tconst bucket = Math.floor(mtimeMs / 1000);\n\t\tconst hash = `${size}-${bucket}`;\n\t\treturn Buffer.from(hash).toString(\"base64url\");\n\t}\n\n\tasync #readSlice(path: string, start: number, end: number): Promise<Buffer> {\n\t\tconst fh = await open(path, \"r\");\n\t\ttry {\n\t\t\tconst length = end - start + 1;\n\t\t\tconst buf = Buffer.alloc(length);\n\t\t\tawait fh.read(buf, 0, length, start);\n\t\t\treturn buf;\n\t\t} finally {\n\t\t\tawait fh.close();\n\t\t}\n\t}\n\n\t#mime(path: string): string {\n\t\tconst ext = path.slice(path.lastIndexOf(\".\") + 1).toLowerCase();\n\t\tconst map: Record<string, string> = {\n\t\t\thtml: \"text/html; charset=utf-8\",\n\t\t\thtm: \"text/html; charset=utf-8\",\n\t\t\tcss: \"text/css; charset=utf-8\",\n\t\t\tjs: \"application/javascript; charset=utf-8\",\n\t\t\tmjs: \"application/javascript; charset=utf-8\",\n\t\t\tjson: \"application/json; charset=utf-8\",\n\t\t\tsvg: \"image/svg+xml\",\n\t\t\tpng: \"image/png\",\n\t\t\tjpeg: \"image/jpeg\",\n\t\t\tjpg: \"image/jpeg\",\n\t\t\tgif: \"image/gif\",\n\t\t\twebp: \"image/webp\",\n\t\t\tico: \"image/x-icon\",\n\t\t\tpdf: \"application/pdf\",\n\t\t\ttxt: \"text/plain; charset=utf-8\",\n\t\t\twoff: \"font/woff\",\n\t\t\twoff2: \"font/woff2\",\n\t\t\tmp4: \"video/mp4\",\n\t\t\twebm: \"video/webm\",\n\t\t\tmp3: \"audio/mpeg\",\n\t\t};\n\t\treturn map[ext] ?? \"application/octet-stream\";\n\t}\n}\n",
7
+ "/**\n * `StaticModule` — drop-in module for static file serving.\n *\n * Usage:\n * @Module({\n * imports: [\n * StaticModule.forRoot({\n * root: './public',\n * prefix: '/public',\n * cacheControl: 'public, max-age=86400',\n * }),\n * ],\n * })\n * export class AppModule {}\n *\n * Then `GET /public/*` serves files from `./public/*` with proper\n * Content-Type, ETag, and Range support.\n */\n\nimport \"reflect-metadata\";\nimport { Module } from \"../core/decorators/module.js\";\nimport { StaticService } from \"./static.service.js\";\nimport type { ServeStaticOptions } from \"./static.service.js\";\n\n@Module({\n\tproviders: [\n\t\tStaticService,\n\t\t{ provide: StaticService.TOKEN, useExisting: StaticService },\n\t],\n\texports: [StaticService, StaticService.TOKEN],\n})\nexport class StaticModule {\n\tstatic forRoot(options: ServeStaticOptions = {}) {\n\t\t@Module({\n\t\t\tproviders: [\n\t\t\t\tStaticService,\n\t\t\t\t{ provide: StaticService.TOKEN, useExisting: StaticService },\n\t\t\t\t{ provide: \"STATIC_OPTIONS\", useValue: options },\n\t\t\t],\n\t\t\texports: [StaticService, StaticService.TOKEN],\n\t\t})\n\t\tclass ConfiguredStaticModule {}\n\n\t\tObject.defineProperty(ConfiguredStaticModule, \"name\", {\n\t\t\tvalue: \"ConfiguredStaticModule\",\n\t\t});\n\n\t\treturn ConfiguredStaticModule;\n\t}\n\n\t/**\n\t * Convenience: create a middleware handler and mount it directly\n\t * on the Hono app. Useful in `main.ts` to serve static files\n\t * without going through DI.\n\t *\n\t * ```ts\n\t * import { StaticModule } from 'nexusjs/static';\n\t * const app = new Application(AppModule);\n\t * app.server.app.use('/static/*', StaticModule.mount({\n\t * root: './public',\n\t * prefix: '/static',\n\t * }));\n\t * ```\n\t */\n\tstatic mount(options: ServeStaticOptions = {}) {\n\t\tconst svc = new StaticService(options);\n\t\treturn svc.middleware();\n\t}\n}\n",
8
+ "/**\n * @Module decorator.\n *\n * Marks a class as a Nest-style module: a logical grouping of\n * controllers and providers with explicit imports/exports.\n *\n * @example\n * ```ts\n * @Module({\n * imports: [UserModule],\n * controllers: [UserController],\n * providers: [UserService],\n * exports: [UserService],\n * })\n * class AppModule {}\n * ```\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY } from \"../constants.js\";\nimport type { ModuleOptions, Type } from \"../di/tokens.js\";\n\nexport function Module(options: ModuleOptions = {}): ClassDecorator {\n\treturn (target: object) => {\n\t\tReflect.defineMetadata(METADATA_KEY.MODULE, options, target);\n\t};\n}\n\n/** Read the @Module options from a class. */\nexport function getModuleOptions(target: Type<any>): ModuleOptions {\n\treturn Reflect.getMetadata(METADATA_KEY.MODULE, target) ?? {};\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "C32AAEEE9103D3BF64756E2164756E21",
12
+ "names": []
13
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `StaticModule` — drop-in module for static file serving.
3
+ *
4
+ * Usage:
5
+ * @Module({
6
+ * imports: [
7
+ * StaticModule.forRoot({
8
+ * root: './public',
9
+ * prefix: '/public',
10
+ * cacheControl: 'public, max-age=86400',
11
+ * }),
12
+ * ],
13
+ * })
14
+ * export class AppModule {}
15
+ *
16
+ * Then `GET /public/*` serves files from `./public/*` with proper
17
+ * Content-Type, ETag, and Range support.
18
+ */
19
+ import "reflect-metadata";
20
+ import type { ServeStaticOptions } from "./static.service.js";
21
+ export declare class StaticModule {
22
+ static forRoot(options?: ServeStaticOptions): {
23
+ new (): {};
24
+ };
25
+ /**
26
+ * Convenience: create a middleware handler and mount it directly
27
+ * on the Hono app. Useful in `main.ts` to serve static files
28
+ * without going through DI.
29
+ *
30
+ * ```ts
31
+ * import { StaticModule } from 'nexusjs/static';
32
+ * const app = new Application(AppModule);
33
+ * app.server.app.use('/static/*', StaticModule.mount({
34
+ * root: './public',
35
+ * prefix: '/static',
36
+ * }));
37
+ * ```
38
+ */
39
+ static mount(options?: ServeStaticOptions): import("hono").MiddlewareHandler;
40
+ }
41
+ //# sourceMappingURL=static.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.module.d.ts","sourceRoot":"","sources":["../../src/static/static.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,qBAOa,YAAY;IACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,kBAAuB;;;IAkB/C;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,GAAE,kBAAuB;CAI7C"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Static file serving — middleware + helpers.
3
+ *
4
+ * Mirrors `@adonisjs/static` + `serve-static`. Built on the platform's
5
+ * native filesystem (Bun.file() on Bun, node:fs elsewhere).
6
+ */
7
+ import type { MiddlewareHandler } from "hono";
8
+ /** Configuration for `serveStatic`. */
9
+ export interface ServeStaticOptions {
10
+ /** Filesystem root to serve files from. Default: `./public`. */
11
+ root?: string;
12
+ /** URL prefix. Default: `/`. */
13
+ prefix?: string;
14
+ /** Default file when a directory is requested. Default: `index.html`. */
15
+ index?: string | false;
16
+ /** `Cache-Control` header. Default: `'public, max-age=3600'`. */
17
+ cacheControl?: string;
18
+ /** Enable ETag generation. Default: `true`. */
19
+ etag?: boolean;
20
+ /** Enable range requests (for video / large files). Default: `true`. */
21
+ range?: boolean;
22
+ /** Max file size in bytes; larger files return 404. Default: 100 MB. */
23
+ maxFileSize?: number;
24
+ }
25
+ /** StaticService — emits the `serveStatic` middleware. */
26
+ export declare class StaticService {
27
+ #private;
28
+ /** DI token — use with `@Inject(StaticService.TOKEN)`. */
29
+ static readonly TOKEN: unique symbol;
30
+ constructor(options?: ServeStaticOptions);
31
+ /**
32
+ * Build a Hono middleware that serves files from `root`.
33
+ *
34
+ * app.use('/public/*', staticService.middleware());
35
+ */
36
+ middleware(): MiddlewareHandler;
37
+ }
38
+ //# sourceMappingURL=static.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.service.d.ts","sourceRoot":"","sources":["../../src/static/static.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAKvD,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IAClC,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0DAA0D;AAC1D,qBAAa,aAAa;;IACzB,0DAA0D;IAC1D,MAAM,CAAC,QAAQ,CAAC,KAAK,gBAAqC;gBAU9C,OAAO,GAAE,kBAAuB;IAa5C;;;;OAIG;IACH,UAAU,IAAI,iBAAiB;CA6J/B"}
@@ -0,0 +1,2 @@
1
+ export { Trace, getTraceOptions, type TraceOptions } from "./trace.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tracing/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `@Trace()` — class-method decorator that wraps the call in a span.
3
+ *
4
+ * Usage:
5
+ * class UserService {
6
+ * @Trace() // span name = class.method
7
+ * async findById(id: string) { ... }
8
+ *
9
+ * @Trace("user.lookup") // explicit span name
10
+ * async lookup(name: string) { ... }
11
+ *
12
+ * @Trace({ name: "user.cache.get", attributes: { cache: "lru" } })
13
+ * async getFromCache(key: string) { ... }
14
+ * }
15
+ *
16
+ * The decorator reads the `TracingService` from the global registry
17
+ * (set by `TracingModule.forRoot()`). When no service is registered
18
+ * the decorator is a pass-through.
19
+ *
20
+ * Sync methods stay sync; async methods stay async. The decorator
21
+ * detects `AsyncFunction` and uses `withSpan` / `withSpanSync` accordingly.
22
+ */
23
+ import type { SpanOptions } from "../types.js";
24
+ export type TraceOptions = string | undefined | (SpanOptions & {
25
+ name: string;
26
+ });
27
+ /**
28
+ * Method decorator: wrap a call in a span.
29
+ *
30
+ * The decorator works on both async and sync methods. The wrapped
31
+ * function preserves `this` so decorators on classes still see the
32
+ * right instance.
33
+ */
34
+ export declare function Trace(opts?: TraceOptions): (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
35
+ /** Read the @Trace options for a given method (used by OpenAPI integration). */
36
+ export declare function getTraceOptions(target: object, method: string): TraceOptions | undefined;
37
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/tracing/decorators/trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,MAAM,YAAY,GACrB,MAAM,GACN,SAAS,GACT,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAIpC;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,IACvB,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,YAAY,kBAAkB,wBAyC7F;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExF"}