@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,32 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/constants.ts", "../src/core/decorators/controller.ts", "../src/core/decorators/http-methods.ts", "../src/core/decorators/params.ts", "../src/core/decorators/validate.ts", "../src/drizzle/types.ts", "../src/core/decorators/module.ts", "../src/core/decorators/index.ts", "../src/core/decorators/injectable.ts", "../src/core/decorators/repository.ts", "../src/core/decorators/metadata.ts", "../src/drizzle/drivers/postgres.ts", "../src/drizzle/drivers/mysql.ts", "../src/drizzle/drivers/sqlite.ts", "../src/drizzle/drivers/bun-sqlite.ts", "../src/drizzle/drivers/d1.ts", "../src/drizzle/drivers/index.ts", "../src/drizzle/raw-query.ts", "../src/drizzle/drizzle.service.ts", "../src/drizzle/drizzle.module.ts", "../src/drizzle/decorators/columns.ts", "../src/drizzle/model.ts", "../src/drizzle/repository/repository.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 * @Controller decorator.\n *\n * Marks a class as a controller and registers a route prefix.\n * Routes inside the controller class are decorated with @Get/@Post/etc.\n *\n * @example\n * ```ts\n * @Controller('/users')\n * class UserController {\n * @Get('/')\n * list() { ... }\n * }\n * ```\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY } from \"../constants.js\";\nimport type { ControllerMetadata } from \"../di/tokens.js\";\n\nexport function Controller(prefix: string = \"/\"): ClassDecorator {\n\treturn (target: object) => {\n\t\tconst normalized = normalizePrefix(prefix);\n\t\tconst meta: ControllerMetadata = { prefix: normalized };\n\t\tReflect.defineMetadata(METADATA_KEY.CONTROLLER, meta, target);\n\t};\n}\n\nexport function getControllerMetadata(target: any): ControllerMetadata {\n\treturn (\n\t\tReflect.getMetadata(METADATA_KEY.CONTROLLER, target) ?? { prefix: \"/\" }\n\t);\n}\n\nexport function isController(target: any): boolean {\n\treturn Reflect.hasMetadata(METADATA_KEY.CONTROLLER, target);\n}\n\n/**\n * Normalize a prefix so we can safely concatenate it with handler paths.\n * - Empty string becomes '/'.\n * - Trailing slashes are trimmed (we re-add them on the join).\n * - No leading slash is added; the router always joins with `/`.\n */\nfunction normalizePrefix(prefix: string): string {\n\tif (!prefix) return \"\";\n\tif (prefix !== \"/\" && prefix.endsWith(\"/\")) {\n\t\treturn prefix.slice(0, -1);\n\t}\n\treturn prefix;\n}\n",
7
+ "/**\n * HTTP method decorators.\n *\n * `@Get`, `@Post`, `@Put`, `@Delete`, `@Patch`, `@Options`, `@Head` mark a\n * controller method as a route handler. The path argument is appended to\n * the controller's prefix.\n *\n * @example\n * ```ts\n * @Controller('/users')\n * class UserController {\n * @Get('/')\n * list() {}\n *\n * @Post('/')\n * create(@Body() body: CreateUserDto) {}\n * }\n * ```\n */\nimport \"reflect-metadata\";\nimport { HTTP_METHODS, METADATA_KEY, type HttpMethod } from \"../constants.js\";\nimport type { RouteMetadata } from \"../di/tokens.js\";\n\nfunction defineRoute(method: HttpMethod, path: string): MethodDecorator {\n\treturn (\n\t\ttarget: object,\n\t\tpropertyKey: string | symbol,\n\t\tdescriptor: PropertyDescriptor,\n\t) => {\n\t\tconst routes: RouteMetadata[] =\n\t\t\tReflect.getMetadata(METADATA_KEY.ROUTES, target.constructor) ?? [];\n\n\t\troutes.push({\n\t\t\tmethod,\n\t\t\tpath: normalizePath(path),\n\t\t\tpropertyKey,\n\t\t\thandler: descriptor.value,\n\t\t});\n\n\t\tReflect.defineMetadata(METADATA_KEY.ROUTES, routes, target.constructor);\n\t};\n}\n\nfunction normalizePath(path: string): string {\n\tif (!path || path === \"/\") return \"/\";\n\treturn path.startsWith(\"/\") ? path : `/${path}`;\n}\n\nexport const Get = (path: string = \"/\") => defineRoute(\"GET\", path);\nexport const Post = (path: string = \"/\") => defineRoute(\"POST\", path);\nexport const Put = (path: string = \"/\") => defineRoute(\"PUT\", path);\nexport const Delete = (path: string = \"/\") => defineRoute(\"DELETE\", path);\nexport const Patch = (path: string = \"/\") => defineRoute(\"PATCH\", path);\nexport const Options = (path: string = \"/\") => defineRoute(\"OPTIONS\", path);\nexport const Head = (path: string = \"/\") => defineRoute(\"HEAD\", path);\n\nexport function getRoutes(target: any): RouteMetadata[] {\n\treturn Reflect.getMetadata(METADATA_KEY.ROUTES, target) ?? [];\n}\n\nexport { HTTP_METHODS };\nexport type { RouteMetadata };\n",
8
+ "/**\n * Parameter decorators.\n *\n * These mark a controller method argument as a source of request data:\n * - `@Req()` → Hono context\n * - `@Res()` → Response helper\n * - `@Next()` → next() callback (for middleware-style handlers)\n * - `@Body()` → request body (parsed)\n * - `@Query('key')` → a single query param, or full query object\n * - `@Param('key')` → a single path param, or full params object\n * - `@Headers('k')` → a single header, or full headers object\n * - `@Ctx()` → Hono context (alias for @Req)\n * - `@User()` → authenticated user (resolved via auth provider)\n *\n * The metadata is read by the router at mount time to build the\n * handler invocation list.\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY, PARAM_TYPES } from \"../constants.js\";\nimport type { ParamMetadata } from \"../di/tokens.js\";\n\nexport function createParamDecorator(\n\ttype: number,\n\tdata?: string | object,\n): ParameterDecorator {\n\treturn (\n\t\ttarget: object,\n\t\tpropertyKey: string | symbol | undefined,\n\t\tparameterIndex: number,\n\t) => {\n\t\t// Method parameter: target is the prototype, propertyKey is the method name.\n\t\t// Constructor parameter: target is the class, propertyKey is undefined.\n\t\tif (propertyKey !== undefined) {\n\t\t\tconst params: ParamMetadata[] =\n\t\t\t\tReflect.getMetadata(METADATA_KEY.PARAMS, target, propertyKey) ?? [];\n\t\t\tparams.push({\n\t\t\t\tindex: parameterIndex,\n\t\t\t\ttype,\n\t\t\t\tname: typeof data === \"string\" ? data : undefined,\n\t\t\t\tdata: typeof data === \"object\" ? data : undefined,\n\t\t\t});\n\t\t\tReflect.defineMetadata(METADATA_KEY.PARAMS, params, target, propertyKey);\n\t\t} else {\n\t\t\tconst params: ParamMetadata[] =\n\t\t\t\tReflect.getMetadata(METADATA_KEY.PARAMS, target) ?? [];\n\t\t\tparams.push({\n\t\t\t\tindex: parameterIndex,\n\t\t\t\ttype,\n\t\t\t\tname: typeof data === \"string\" ? data : undefined,\n\t\t\t\tdata: typeof data === \"object\" ? data : undefined,\n\t\t\t});\n\t\t\tReflect.defineMetadata(METADATA_KEY.PARAMS, params, target);\n\t\t}\n\t};\n}\n\nexport const Req = () => createParamDecorator(PARAM_TYPES.REQUEST);\nexport const Res = () => createParamDecorator(PARAM_TYPES.RESPONSE);\nexport const Next = () => createParamDecorator(PARAM_TYPES.NEXT);\nexport const Body = (key?: string) =>\n\tcreateParamDecorator(PARAM_TYPES.BODY, key);\nexport const Query = (key?: string) =>\n\tcreateParamDecorator(PARAM_TYPES.QUERY, key);\nexport const Param = (key?: string) =>\n\tcreateParamDecorator(PARAM_TYPES.PARAM, key);\nexport const Headers = (key?: string) =>\n\tcreateParamDecorator(PARAM_TYPES.HEADERS, key);\nexport const Ctx = () => createParamDecorator(PARAM_TYPES.CTX);\nexport const User = () => createParamDecorator(PARAM_TYPES.USER);\n\nexport function getParamMetadata(\n\ttarget: any,\n\tpropertyKey: string | symbol,\n): ParamMetadata[] {\n\treturn Reflect.getMetadata(METADATA_KEY.PARAMS, target, propertyKey) ?? [];\n}\n\nexport { PARAM_TYPES };\n",
9
+ "/**\n * @Validate decorator.\n *\n * Attaches Zod schemas (or class validators) to a route handler. Each\n * schema is run against the corresponding request part before the handler\n * executes; failed validation throws or returns a 400 response.\n *\n * @example\n * ```ts\n * const UserSchema = z.object({ name: z.string(), email: z.email() });\n *\n * @Post('/')\n * @Validate({ body: UserSchema })\n * create(@Body() body: z.infer<typeof UserSchema>) { ... }\n * ```\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY } from \"../constants.js\";\nimport type { ValidationMetadata } from \"../di/tokens.js\";\n\nexport function Validate(options: ValidationMetadata): MethodDecorator {\n\treturn (\n\t\ttarget: object,\n\t\tpropertyKey: string | symbol,\n\t\tdescriptor: PropertyDescriptor,\n\t) => {\n\t\tReflect.defineMetadata(\n\t\t\tMETADATA_KEY.VALIDATE,\n\t\t\toptions,\n\t\t\ttarget.constructor,\n\t\t\tpropertyKey,\n\t\t);\n\t};\n}\n\nexport function getValidationMetadata(\n\ttarget: any,\n\tpropertyKey: string | symbol,\n): ValidationMetadata | undefined {\n\treturn Reflect.getMetadata(METADATA_KEY.VALIDATE, target, propertyKey);\n}\n",
10
+ "/**\n * `nexusjs/drizzle` — Drizzle ORM integration. Default ORM for NexusJS.\n *\n * @Module({\n * imports: [\n * DrizzleModule.forRoot({\n * dialect: 'postgres',\n * url: process.env.DATABASE_URL!,\n * }),\n * ],\n * })\n *\n * class UserService {\n * constructor(@Inject(DrizzleService.TOKEN) private db: DrizzleService) {}\n * list() { return this.db.select().from(users).all(); }\n * }\n *\n * Drivers:\n * - `postgres` — node-postgres / postgres.js\n * - `mysql` — mysql2\n * - `sqlite` — better-sqlite3 / libsql\n * - `bun-sqlite`— bun:sqlite (built-in)\n * - `d1` — Cloudflare D1 (Workers)\n *\n * Lucid gap closure:\n * - `DrizzleRepository<TTable, TRow>` — repository pattern (model + queries)\n * - `DrizzleModel` — base class for entity models\n * - `@Table()`, `@Column()`, `@PrimaryKey()` decorators\n * - `db.migrate(folder)` — automatic migrations\n * - `db.transaction(fn)` — ACID transactions\n *\n * Raw queries:\n * - `db.raw\\`SELECT * FROM users WHERE id = ${id}\\`` — parameterized, safe.\n */\n\nimport \"reflect-metadata\";\n\n// ---------------------------------------------------------------------------\n// Dialect\n// ---------------------------------------------------------------------------\n\nexport type DrizzleDialect =\n\t| \"postgres\"\n\t| \"mysql\"\n\t| \"sqlite\"\n\t| \"bun-sqlite\"\n\t| \"d1\";\n\n// ---------------------------------------------------------------------------\n// Connection options\n// ---------------------------------------------------------------------------\n\nexport interface PostgresConnectionOptions {\n\t/** Postgres connection URL. */\n\turl?: string;\n\t/** Individual connection fields (alternative to `url`). */\n\thost?: string;\n\tport?: number;\n\tuser?: string;\n\tpassword?: string;\n\tdatabase?: string;\n\t/** SSL mode. */\n\tssl?: boolean | \"require\" | \"prefer\" | \"allow\";\n\t/** Pool settings. */\n\tpool?: { max?: number; idleTimeoutMs?: number; connectionTimeoutMs?: number };\n\t/** Schema (default 'public'). */\n\tschema?: string;\n}\n\nexport interface MysqlConnectionOptions {\n\turl?: string;\n\thost?: string;\n\tport?: number;\n\tuser?: string;\n\tpassword?: string;\n\tdatabase?: string;\n\tpool?: { max?: number; idleTimeoutMs?: number; connectionTimeoutMs?: number };\n}\n\nexport interface SqliteConnectionOptions {\n\t/** File path or ':memory:'. */\n\tfilename: string;\n\t/** Optional readonly mode. */\n\treadonly?: boolean;\n}\n\nexport interface D1ConnectionOptions {\n\t/** A Cloudflare D1 binding (D1Database). */\n\tbinding: unknown;\n}\n\nexport type ConnectionOptions =\n\t| { dialect: \"postgres\"; connection: PostgresConnectionOptions }\n\t| { dialect: \"mysql\"; connection: MysqlConnectionOptions }\n\t| { dialect: \"sqlite\"; connection: SqliteConnectionOptions }\n\t| { dialect: \"bun-sqlite\"; connection: SqliteConnectionOptions }\n\t| { dialect: \"d1\"; connection: D1ConnectionOptions };\n\n// ---------------------------------------------------------------------------\n// Top-level config\n// ---------------------------------------------------------------------------\n\nexport interface DrizzleConfig {\n\tdialect: DrizzleDialect;\n\t/** Connection details. Dialect-specific. */\n\tconnection:\n\t\t| PostgresConnectionOptions\n\t\t| MysqlConnectionOptions\n\t\t| SqliteConnectionOptions\n\t\t| D1ConnectionOptions;\n\t/** Enable query logging. */\n\tlogging?: boolean | ((query: string, params: unknown[]) => void);\n\t/** Schema name (Postgres only). Default: 'public'. */\n\tschema?: string;\n\t/** Migration folder. Used by `db.migrate(folder)`. */\n\tmigrationsFolder?: string;\n\t/** Whether to auto-run migrations on boot. */\n\tautoMigrate?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Migrations\n// ---------------------------------------------------------------------------\n\nexport interface MigrationMeta {\n\t/** Folder filename (e.g. '0001_init.sql'). */\n\tfilename: string;\n\t/** Hash of the file content. */\n\thash: string;\n}\n\nexport interface MigrationRecord {\n\tid: number;\n\thash: string;\n\t/** When this migration was applied. */\n\tappliedAt: Date;\n}\n\nexport interface MigrateResult {\n\t/** Newly-applied migrations. */\n\tapplied: MigrationRecord[];\n\t/** Total count after this run. */\n\ttotal: number;\n}\n\n// ---------------------------------------------------------------------------\n// Raw query result\n// ---------------------------------------------------------------------------\n\nexport interface RawQueryResult<T = Record<string, unknown>> {\n\trows: T[];\n\t/** Number of affected rows (UPDATE/DELETE/INSERT). */\n\taffectedRows: number;\n\t/** Insert ID (MySQL/SQLite). */\n\tinsertId?: number | string;\n}\n\n// ---------------------------------------------------------------------------\n// Decorator metadata\n// ---------------------------------------------------------------------------\n\nexport interface ColumnMetadata {\n\tname: string;\n\ttype: string;\n\tnullable: boolean;\n\tprimaryKey: boolean;\n\tautoIncrement: boolean;\n\tunique: boolean;\n\tdefault?: unknown;\n\treferences?: {\n\t\ttable: string;\n\t\tcolumn: string;\n\t\tonDelete?: \"cascade\" | \"set null\" | \"restrict\";\n\t};\n}\n\nexport interface TableMetadata {\n\tname: string;\n\tcolumns: Map<string, ColumnMetadata>;\n}\n\n/** Internal metadata key. */\nexport const DRIZZLE_TABLE_META = \"nexus:drizzle:table\";\n\nexport interface DrizzleTransaction {\n\t/** Run a callback in this transaction. */\n\tcommit<T>(fn: (tx: DrizzleTransaction) => Promise<T>): Promise<T>;\n\t/** Roll back the transaction. */\n\trollback(): Promise<void>;\n}\n",
11
+ "/**\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",
12
+ "/**\n * Convenience barrel for all decorators.\n */\nexport * from \"./module.js\";\nexport * from \"./controller.js\";\nexport * from \"./injectable.js\";\nexport * from \"./http-methods.js\";\nexport * from \"./params.js\";\nexport * from \"./validate.js\";\nexport * from \"./repository.js\";\nexport * from \"./metadata.js\";\n",
13
+ "/**\n * @Injectable decorator.\n *\n * Marks a class as available for DI. The container uses reflect-metadata's\n * `design:paramtypes` to read constructor parameter types and resolve them\n * automatically.\n *\n * @example\n * ```ts\n * @Injectable()\n * class UserService {\n * constructor(private repo: UserRepository) {}\n * }\n *\n * @Injectable({ scope: 'request' })\n * class RequestContext {\n * constructor(@Inject(REQUEST) private req: any) {}\n * }\n * ```\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY } from \"../constants.js\";\n\nexport interface InjectableOptions {\n\tscope?: \"singleton\" | \"request\" | \"transient\";\n}\n\nexport function Injectable(options: InjectableOptions = {}): ClassDecorator {\n\treturn (target: object) => {\n\t\tReflect.defineMetadata(METADATA_KEY.INJECTABLE, true, target);\n\t\tif (options.scope) {\n\t\t\tReflect.defineMetadata(\n\t\t\t\t\"nexus:di:scope\",\n\t\t\t\toptions.scope,\n\t\t\t\ttarget,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isInjectable(target: any): boolean {\n\treturn Reflect.hasMetadata(METADATA_KEY.INJECTABLE, target);\n}\n\n/**\n * Read the scope declared on a class via `@Injectable({ scope })`.\n * Returns undefined when no scope is declared (defaults to singleton).\n */\nexport function getScope(\n\ttarget: any,\n): \"singleton\" | \"request\" | \"transient\" | undefined {\n\treturn Reflect.getMetadata(\"nexus:di:scope\", target);\n}\n\n/**\n * Mark a parameter as resolved by a specific token instead of its declared\n * type. Useful for interfaces, abstract classes, or string tokens.\n *\n * @example\n * ```ts\n * constructor(@Inject('CONFIG') private config: AppConfig) {}\n * ```\n */\nexport function Inject<T = any>(token: any): ParameterDecorator {\n\treturn (\n\t\ttarget: object,\n\t\tpropertyKey: string | symbol | undefined,\n\t\tparameterIndex: number,\n\t) => {\n\t\tconst existing: Map<number, any> =\n\t\t\tReflect.getMetadata(METADATA_KEY.INJECT, target) ?? new Map();\n\t\texisting.set(parameterIndex, token);\n\t\tReflect.defineMetadata(METADATA_KEY.INJECT, existing, target);\n\t};\n}",
14
+ "/**\n * @Repository decorator.\n *\n * Marks a class as a Spring-style repository. Repositories are normal\n * `@Injectable()` classes; the decorator is a marker so the framework\n * can register them with a database adapter (Drizzle/Prisma) and emit\n * a friendly error if you forget to wire one.\n *\n * @example\n * ```ts\n * @Repository()\n * class UserRepository {\n * findAll() { return db.select().from(users); }\n * }\n * ```\n */\nimport \"reflect-metadata\";\nimport { METADATA_KEY } from \"../constants.js\";\nimport type { InjectionToken } from \"../di/tokens.js\";\n\nexport function Repository(entityToken?: InjectionToken<any>): ClassDecorator {\n\treturn (target: object) => {\n\t\tReflect.defineMetadata(\n\t\t\tMETADATA_KEY.REPOSITORY,\n\t\t\t{ entity: entityToken },\n\t\t\ttarget,\n\t\t);\n\t\tReflect.defineMetadata(METADATA_KEY.INJECTABLE, true, target);\n\t};\n}\n\nexport function getRepositoryMetadata(\n\ttarget: any,\n): { entity?: InjectionToken<any> } | undefined {\n\treturn Reflect.getMetadata(METADATA_KEY.REPOSITORY, target);\n}\n\nexport function isRepository(target: any): boolean {\n\treturn Reflect.hasMetadata(METADATA_KEY.REPOSITORY, target);\n}\n",
15
+ "/**\n * Reflect-metadata helper. Centralizes the keys the framework uses so\n * decorator files stay clean.\n */\nexport { METADATA_KEY, PARAM_TYPES, HTTP_METHODS } from \"../constants.js\";\nexport type { MetadataKey, ParamType, HttpMethod } from \"../constants.js\";\n",
16
+ "/**\n * PostgreSQL driver. Two implementations are supported:\n *\n * - `postgres` (postgres.js) — fast, modern, default.\n * - `pg` (node-postgres) — classic, used in many existing projects.\n *\n * The first available driver is loaded at boot. The migrator path\n * follows whichever driver was selected.\n */\nimport type {\n\tDrizzleDriverResult,\n\tDriverFactory,\n\tRawExecutor,\n} from \"./base.js\";\nimport type { DrizzleConfig, PostgresConnectionOptions } from \"../types.js\";\n\nexport const postgresDriver: DriverFactory = async (config) => {\n\tconst conn = config.connection as PostgresConnectionOptions;\n\tlet driverName: \"postgres-js\" | \"node-postgres\" = \"postgres-js\";\n\tlet db: any;\n\tlet pool: any;\n\n\ttry {\n\t\tconst mod = await import(\"drizzle-orm/postgres-js\");\n\t\tconst postgres =\n\t\t\t(await import(\"postgres-js\" as any).catch(() => null)) ?? null;\n\t\tif (!postgres) {\n\t\t\t// Fall back to bundled 'postgres' if available\n\t\t\tthrow new Error(\"postgres-js not installed\");\n\t\t}\n\t\t// We don't have the 'postgres' package types here; cast.\n\t\tconst sql = (postgres as any).default\n\t\t\t? (postgres as any).default(conn.url ?? thisBuildUrl(conn))\n\t\t\t: (postgres as any)(conn.url ?? thisBuildUrl(conn));\n\t\tpool = sql;\n\t\tdb = mod.drizzle(sql, {\n\t\t\tschema: undefined,\n\t\t\tlogger: config.logging,\n\t\t});\n\t} catch {\n\t\t// Fallback to node-postgres\n\t\tdriverName = \"node-postgres\";\n\t\tconst drizzleMod = await import(\"drizzle-orm/node-postgres\");\n\t\tconst pgMod = await import(\"pg\");\n\t\tconst Pool = (pgMod as any).Pool;\n\t\tpool = new Pool({\n\t\t\thost: conn.host,\n\t\t\tport: conn.port,\n\t\t\tuser: conn.user,\n\t\t\tpassword: conn.password,\n\t\t\tdatabase: conn.database,\n\t\t\tssl: conn.ssl,\n\t\t\tmax: conn.pool?.max ?? 10,\n\t\t\tidleTimeoutMillis: conn.pool?.idleTimeoutMs,\n\t\t\tconnectionTimeoutMillis: conn.pool?.connectionTimeoutMs,\n\t\t});\n\t\tdb = drizzleMod.drizzle(pool, {\n\t\t\tschema: undefined,\n\t\t\tlogger: config.logging,\n\t\t});\n\t}\n\n\tconst rawExecutor: RawExecutor = {\n\t\tasync query<T>(sql: string, params: unknown[] = []) {\n\t\t\tif (driverName === \"postgres-js\") {\n\t\t\t\tconst r = await pool.unsafe(sql, params as any[]);\n\t\t\t\treturn { rows: r as T[], affectedRows: r.length, insertId: undefined };\n\t\t\t} else {\n\t\t\t\tconst r = await pool.query(sql, params);\n\t\t\t\treturn {\n\t\t\t\t\trows: r.rows as T[],\n\t\t\t\t\taffectedRows: r.rowCount ?? 0,\n\t\t\t\t\tinsertId: undefined,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tplaceholder: (i) => `$${i}`,\n\t};\n\n\treturn {\n\t\tdb,\n\t\tdialect: \"postgres\",\n\t\trawExecutor,\n\t\tasync close() {\n\t\t\tif (pool?.end) await pool.end();\n\t\t},\n\t\tloadMigrator: async () => {\n\t\t\tif (driverName === \"postgres-js\") {\n\t\t\t\tconst mod = await import(\"drizzle-orm/postgres-js/migrator\");\n\t\t\t\treturn (folder: string) =>\n\t\t\t\t\tmod.migrate(db, {\n\t\t\t\t\t\tmigrationsFolder: folder,\n\t\t\t\t\t\tmigrationsSchema: config.schema,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tconst mod = await import(\"drizzle-orm/node-postgres/migrator\");\n\t\t\treturn (folder: string) =>\n\t\t\t\tmod.migrate(db, {\n\t\t\t\t\tmigrationsFolder: folder,\n\t\t\t\t\tmigrationsSchema: config.schema,\n\t\t\t\t});\n\t\t},\n\t};\n};\n\nfunction thisBuildUrl(c: PostgresConnectionOptions): string {\n\tconst user = encodeURIComponent(c.user ?? \"\");\n\tconst pass = encodeURIComponent(c.password ?? \"\");\n\tconst host = c.host ?? \"localhost\";\n\tconst port = c.port ?? 5432;\n\tconst db = c.database ?? \"postgres\";\n\treturn `postgres://${user}:${pass}@${host}:${port}/${db}`;\n}\n",
17
+ "/**\n * MySQL driver. Uses `mysql2/promise` under the hood.\n */\nimport type { DriverFactory, RawExecutor } from \"./base.js\";\nimport type { MysqlConnectionOptions } from \"../types.js\";\n\nexport const mysqlDriver: DriverFactory = async (config) => {\n\tconst conn = config.connection as MysqlConnectionOptions;\n\tconst drizzleMod = await import(\"drizzle-orm/mysql2\");\n\tconst mysqlMod = await import(\"mysql2/promise\");\n\n\tconst pool = (mysqlMod as any).createPool({\n\t\thost: conn.host,\n\t\tport: conn.port,\n\t\tuser: conn.user,\n\t\tpassword: conn.password,\n\t\tdatabase: conn.database,\n\t\tconnectionLimit: conn.pool?.max ?? 10,\n\t\t...conn,\n\t});\n\n\tconst db = drizzleMod.drizzle(pool, {\n\t\tschema: undefined,\n\t\tlogger: config.logging,\n\t});\n\n\tconst rawExecutor: RawExecutor = {\n\t\tasync query<T>(sql: string, params: unknown[] = []) {\n\t\t\tconst [rows] = await pool.query(sql, params as any[]);\n\t\t\treturn {\n\t\t\t\trows: rows as T[],\n\t\t\t\taffectedRows: Array.isArray(rows) ? rows.length : 0,\n\t\t\t\tinsertId: undefined,\n\t\t\t};\n\t\t},\n\t\tplaceholder: () => \"?\",\n\t};\n\n\treturn {\n\t\tdb,\n\t\tdialect: \"mysql\",\n\t\trawExecutor,\n\t\tasync close() {\n\t\t\tif (pool?.end) await pool.end();\n\t\t},\n\t\tloadMigrator: async () => {\n\t\t\tconst mod = await import(\"drizzle-orm/mysql2/migrator\");\n\t\t\treturn (folder: string) => mod.migrate(db, { migrationsFolder: folder });\n\t\t},\n\t};\n};\n",
18
+ "/**\n * SQLite driver. Uses `better-sqlite3` (synchronous, fast).\n *\n * For edge / Workers, use `bun-sqlite` or `d1` instead.\n */\nimport type { DriverFactory, RawExecutor } from \"./base.js\";\nimport type { SqliteConnectionOptions } from \"../types.js\";\n\nexport const sqliteDriver: DriverFactory = async (config) => {\n\tconst conn = config.connection as SqliteConnectionOptions;\n\tconst drizzleMod = await import(\"drizzle-orm/better-sqlite3\");\n\tconst sqliteMod = await import(\"better-sqlite3\");\n\n\tconst Database = (sqliteMod as any).Database;\n\tconst sqlite = new Database(conn.filename, { readonly: conn.readonly });\n\n\tconst db = drizzleMod.drizzle(sqlite, {\n\t\tschema: undefined,\n\t\tlogger: config.logging,\n\t});\n\n\tconst rawExecutor: RawExecutor = {\n\t\tasync query<T>(sql: string, params: unknown[] = []) {\n\t\t\tconst stmt = sqlite.prepare(sql);\n\t\t\tconst isSelect = /^\\s*(select|pragma|with)\\b/i.test(sql);\n\t\t\tif (isSelect) {\n\t\t\t\tconst rows = stmt.all(...params);\n\t\t\t\treturn { rows: rows as T[], affectedRows: 0 };\n\t\t\t}\n\t\t\tconst r = stmt.run(...params);\n\t\t\treturn {\n\t\t\t\trows: [],\n\t\t\t\taffectedRows: r.changes,\n\t\t\t\tinsertId: r.lastInsertRowid,\n\t\t\t};\n\t\t},\n\t\tplaceholder: () => \"?\",\n\t};\n\n\treturn {\n\t\tdb,\n\t\tdialect: \"sqlite\",\n\t\trawExecutor,\n\t\tasync close() {\n\t\t\tif (sqlite?.close) sqlite.close();\n\t\t},\n\t\tloadMigrator: async () => {\n\t\t\tconst mod = await import(\"drizzle-orm/better-sqlite3/migrator\");\n\t\t\treturn (folder: string) => mod.migrate(db, { migrationsFolder: folder });\n\t\t},\n\t};\n};\n",
19
+ "/**\n * Bun's native `bun:sqlite` driver. Zero deps, fastest possible SQLite.\n */\nimport type { DriverFactory, RawExecutor } from \"./base.js\";\nimport type { SqliteConnectionOptions } from \"../types.js\";\n\nexport const bunSqliteDriver: DriverFactory = async (config) => {\n\tconst conn = config.connection as SqliteConnectionOptions;\n\tconst drizzleMod = await import(\"drizzle-orm/bun-sqlite\");\n\tconst { Database } = await import(\"bun:sqlite\" as any);\n\n\tconst sqlite = new Database(conn.filename);\n\n\tconst db = drizzleMod.drizzle(sqlite, {\n\t\tschema: undefined,\n\t\tlogger: config.logging,\n\t});\n\n\tconst rawExecutor: RawExecutor = {\n\t\tasync query<T>(sql: string, params: unknown[] = []) {\n\t\t\tconst stmt = sqlite.prepare(sql);\n\t\t\tconst isSelect = /^\\s*(select|pragma|with)\\b/i.test(sql);\n\t\t\tif (isSelect) {\n\t\t\t\tconst rows = stmt.all(...params);\n\t\t\t\treturn { rows: rows as T[], affectedRows: 0 };\n\t\t\t}\n\t\t\tconst r = stmt.run(...params);\n\t\t\treturn {\n\t\t\t\trows: [],\n\t\t\t\taffectedRows: Number(r.changes ?? 0),\n\t\t\t\tinsertId: r.lastInsertRowid as number | string,\n\t\t\t};\n\t\t},\n\t\tplaceholder: () => \"?\",\n\t};\n\n\treturn {\n\t\tdb,\n\t\tdialect: \"bun-sqlite\",\n\t\trawExecutor,\n\t\tasync close() {\n\t\t\tif (sqlite?.close) sqlite.close();\n\t\t},\n\t\t// bun-sqlite ships with the same migrator as better-sqlite3.\n\t\tloadMigrator: async () => {\n\t\t\tconst mod = await import(\"drizzle-orm/better-sqlite3/migrator\");\n\t\t\treturn (folder: string) => mod.migrate(db, { migrationsFolder: folder });\n\t\t},\n\t};\n};\n",
20
+ "/**\n * Cloudflare D1 driver. Used inside Workers — the binding is passed in\n * from the Worker's env.\n */\nimport type { DriverFactory, RawExecutor } from \"./base.js\";\n\nexport const d1Driver: DriverFactory = async (config) => {\n\tconst conn = config.connection as { binding: unknown };\n\tif (!conn.binding) {\n\t\tthrow new Error(\"d1 driver requires `connection.binding` (a D1Database)\");\n\t}\n\tconst drizzleMod = await import(\"drizzle-orm/d1\");\n\n\tconst db = drizzleMod.drizzle(conn.binding as any, {\n\t\tschema: undefined,\n\t\tlogger: config.logging,\n\t});\n\n\tconst binding = conn.binding as any;\n\n\tconst rawExecutor: RawExecutor = {\n\t\tasync query<T>(sql: string, params: unknown[] = []) {\n\t\t\t// D1 binding: prepared/statement API.\n\t\t\tconst stmt = binding.prepare(sql);\n\t\t\tconst lower = sql.trim().toLowerCase();\n\t\t\tif (\n\t\t\t\tlower.startsWith(\"select\") ||\n\t\t\t\tlower.startsWith(\"pragma\") ||\n\t\t\t\tlower.startsWith(\"with\")\n\t\t\t) {\n\t\t\t\tconst r = await stmt.bind(...params).all();\n\t\t\t\treturn {\n\t\t\t\t\trows: (r.results ?? []) as T[],\n\t\t\t\t\taffectedRows: (r.results ?? []).length,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst r = await stmt.bind(...params).run();\n\t\t\treturn {\n\t\t\t\trows: [],\n\t\t\t\taffectedRows: r.meta?.changes ?? 0,\n\t\t\t\tinsertId: r.meta?.last_row_id,\n\t\t\t};\n\t\t},\n\t\tplaceholder: () => \"?\",\n\t};\n\n\treturn {\n\t\tdb,\n\t\tdialect: \"d1\",\n\t\trawExecutor,\n\t\t// D1 binding is owned by the Worker runtime.\n\t\tclose: undefined,\n\t\tloadMigrator: undefined,\n\t};\n};\n",
21
+ "/**\n * Drivers barrel — exports a `resolveDriver` that picks the right one\n * based on `config.dialect`.\n */\nimport type { DrizzleConfig } from \"../types.js\";\nimport type { DrizzleDriverResult } from \"./base.js\";\nimport { postgresDriver } from \"./postgres.js\";\nimport { mysqlDriver } from \"./mysql.js\";\nimport { sqliteDriver } from \"./sqlite.js\";\nimport { bunSqliteDriver } from \"./bun-sqlite.js\";\nimport { d1Driver } from \"./d1.js\";\n\nexport { postgresDriver } from \"./postgres.js\";\nexport { mysqlDriver } from \"./mysql.js\";\nexport { sqliteDriver } from \"./sqlite.js\";\nexport { bunSqliteDriver } from \"./bun-sqlite.js\";\nexport { d1Driver } from \"./d1.js\";\nexport type {\n\tDrizzleDriverResult,\n\tRawExecutor,\n\tDriverFactory,\n} from \"./base.js\";\n\nexport async function resolveDriver(\n\tconfig: DrizzleConfig,\n): Promise<DrizzleDriverResult> {\n\tswitch (config.dialect) {\n\t\tcase \"postgres\":\n\t\t\treturn postgresDriver(config);\n\t\tcase \"mysql\":\n\t\t\treturn mysqlDriver(config);\n\t\tcase \"sqlite\":\n\t\t\treturn sqliteDriver(config);\n\t\tcase \"bun-sqlite\":\n\t\t\treturn bunSqliteDriver(config);\n\t\tcase \"d1\":\n\t\t\treturn d1Driver(config);\n\t}\n}\n",
22
+ "/**\n * SQL-safe raw query builder.\n *\n * Wraps Drizzle's `sql` template tag with:\n * - Multi-dialect placeholder normalization (`$1` for postgres, `?` for sqlite/mysql)\n * - Type-safe `execute<T>()`, `first<T>()`, `all<T>()` methods\n * - Optional logging via the parent `DrizzleService`\n * - Automatic parameter binding (Drizzle handles escaping)\n *\n * **Why this is SQL-injection safe:**\n * - Drizzle's `sql\\`...\\`` parses the template literal into a parameterized\n * statement. Every interpolated `${value}` becomes a bound parameter\n * (`$1`, `?`, ...), not a string concatenation.\n * - The values are sent separately from the SQL text — the database\n * driver handles the protocol-level separation.\n * - Identifier interpolation uses `sql.raw(...)` which is the *only*\n * place where you must be careful (it's deliberately not allowed here).\n *\n * const q = db.raw`SELECT * FROM users WHERE id = ${userId}`;\n * const rows = await q.all<User>();\n */\nimport type { RawExecutor } from \"./drivers/base.js\";\nimport type { RawQueryResult } from \"./types.js\";\n\nexport class RawQuery {\n\tprivate sqlText: string;\n\tprivate params: unknown[];\n\tprivate executor: RawExecutor;\n\tprivate logger?: (q: string, p: unknown[]) => void;\n\n\tconstructor(\n\t\tsqlText: string,\n\t\tparams: unknown[],\n\t\texecutor: RawExecutor,\n\t\tlogger?: (q: string, p: unknown[]) => void,\n\t) {\n\t\tthis.sqlText = sqlText;\n\t\tthis.params = params;\n\t\tthis.executor = executor;\n\t\tthis.logger = logger;\n\t}\n\n\t/** Execute and return all rows. */\n\tasync all<T = Record<string, unknown>>(): Promise<T[]> {\n\t\tconst r = await this.run<T>();\n\t\treturn r.rows;\n\t}\n\n\t/** Execute and return the first row, or undefined. */\n\tasync first<T = Record<string, unknown>>(): Promise<T | undefined> {\n\t\tconst r = await this.run<T>();\n\t\treturn r.rows[0];\n\t}\n\n\t/** Execute and return the full result (rows + affectedRows + insertId). */\n\tasync execute<T = Record<string, unknown>>(): Promise<RawQueryResult<T>> {\n\t\treturn this.run<T>();\n\t}\n\n\t/** Inspect the generated SQL (after dialect placeholders are normalized). */\n\ttoSQL(): string {\n\t\treturn this.sqlText;\n\t}\n\n\tgetParameters(): unknown[] {\n\t\treturn [...this.params];\n\t}\n\n\tprivate async run<T>(): Promise<RawQueryResult<T>> {\n\t\tif (this.logger) this.logger(this.sqlText, this.params);\n\t\tconst r = await this.executor.query<T>(this.sqlText, this.params);\n\t\treturn {\n\t\t\trows: r.rows,\n\t\t\taffectedRows: r.affectedRows,\n\t\t\tinsertId: r.insertId,\n\t\t};\n\t}\n}\n",
23
+ "/**\n * `DrizzleService` — the main entry point for database access.\n *\n * Wraps a Drizzle ORM client with:\n * - `select()`, `insert()`, `update()`, `delete()` — passthroughs\n * - `transaction(fn)` — ACID transaction support\n * - `raw\\`SELECT ...\\`` — SQL-injection-safe raw queries\n * - `migrate(folder)` — run schema migrations\n * - `close()` — release the connection\n *\n * const db = new DrizzleService({ dialect: 'bun-sqlite', connection: { filename: ':memory:' } });\n * await db.open();\n *\n * const users = pgTable('users', { id: serial('id').primaryKey(), email: text('email') });\n * const rows = await db.select().from(users).all();\n */\nimport { Inject, Injectable } from \"../core/decorators/index.js\";\nimport type { DrizzleConfig, MigrateResult, MigrationRecord } from \"./types.js\";\nimport { resolveDriver, type RawExecutor } from \"./drivers/index.js\";\nimport { RawQuery } from \"./raw-query.js\";\n\n@Injectable()\nexport class DrizzleService {\n\t/** DI token. */\n\tstatic readonly TOKEN = Symbol.for(\"nexus:DrizzleService\");\n\n\tdriver: DrizzleDriverHandle | null = null;\n\tprivate _client: any = null;\n\tprivate _rawExecutor: RawExecutor | null = null;\n\tprivate _config: DrizzleConfig;\n\tprivate _opened = false;\n\tprivate _migratorFn: ((folder: string) => Promise<void>) | null = null;\n\tprivate _logger: ((q: string, p: unknown[]) => void) | null = null;\n\tprivate _migrationsTable = \"__nexus_migrations\";\n\n\tconstructor(@Inject(\"DRIZZLE_CONFIG\") config: DrizzleConfig) {\n\t\tthis._config = config;\n\t\t// Auto-open synchronously so the client getter works\n\t\t// immediately. For bun-sqlite the Database constructor\n\t\t// is synchronous; for other drivers the first request\n\t\t// will fire the async open() and cache the result.\n\t\tif (config.dialect === \"bun-sqlite\" || (config.connection as any)?.filename) {\n\t\t\t// Synchronous path for bun-sqlite.\n\t\t\tthis.openSync();\n\t\t}\n\t}\n\n\t/** Synchronous open for bun-sqlite. */\n\tprivate openSync(): void {\n\t\ttry {\n\t\t\tconst conn = this._config.connection as any;\n\t\t\tconst { Database } = require(\"bun:sqlite\" as any);\n\t\t\tconst sqlite = new Database((conn as any)?.filename ?? (this._config as any).url ?? \"app.db\");\n\t\t\tconst { drizzle } = require(\"drizzle-orm/bun-sqlite\" as any);\n\t\t\tthis._client = drizzle(sqlite, { logger: this._config.logging });\n\t\t\tthis._rawExecutor = {\n\t\t\t\tquery: async (sql: string, params: unknown[] = []) => {\n\t\t\t\t\tconst stmt = sqlite.prepare(sql);\n\t\t\t\t\tconst isSelect = /^\\s*(select|pragma|with)\\b/i.test(sql);\n\t\t\t\t\tif (isSelect) {\n\t\t\t\t\t\tconst rows = stmt.all(...params);\n\t\t\t\t\t\treturn { rows: rows as any[], affectedRows: 0 };\n\t\t\t\t\t}\n\t\t\t\t\tconst r = stmt.run(...params);\n\t\t\t\t\treturn {\n\t\t\t\t\t\trows: [],\n\t\t\t\t\t\taffectedRows: Number(r.changes ?? 0),\n\t\t\t\t\t\tinsertId: r.lastInsertRowid as number | string,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tplaceholder: () => \"?\",\n\t\t\t};\n\t\t\tthis.driver = {\n\t\t\t\tdb: this._client,\n\t\t\t\tdialect: \"bun-sqlite\",\n\t\t\t} as any;\n\t\t\tthis._opened = true;\n\t\t} catch {\n\t\t\t// Fall through — the async open() will handle it.\n\t\t}\n\t}\n\n\t/** Lazy-open the connection. */\n\tasync open(): Promise<void> {\n\t\tif (this._opened) return;\n\t\tconst drv = await resolveDriver(this._config);\n\t\tthis.driver = drv;\n\t\tthis._client = drv.db;\n\t\tthis._rawExecutor = drv.rawExecutor ?? null;\n\t\tif (this._config.logging) {\n\t\t\tthis._logger =\n\t\t\t\ttypeof this._config.logging === \"function\"\n\t\t\t\t\t? this._config.logging\n\t\t\t\t\t: (q, p) => {\n\t\t\t\t\t\t\tconst trimmed = q.replace(/\\s+/g, \" \").trim();\n\t\t\t\t\t\t\tif (p.length === 0) console.log(`[drizzle] ${trimmed}`);\n\t\t\t\t\t\t\telse console.log(`[drizzle] ${trimmed} -- params: ${JSON.stringify(p)}`);\n\t\t\t\t\t\t};\n\t\t}\n\t\tif (drv.loadMigrator) {\n\t\t\tthis._migratorFn = await drv.loadMigrator();\n\t\t}\n\t\tif (this._config.autoMigrate && this._config.migrationsFolder && this._migratorFn) {\n\t\t\tawait this.migrate(this._config.migrationsFolder);\n\t\t}\n\t\tthis._opened = true;\n\t}\n\n\t/** The raw Drizzle client. Use this for type-safe queries. */\n\tget client(): any {\n\t\tthis._assertOpen();\n\t\treturn this._client;\n\t}\n\n\t/** Configured dialect. */\n\tget dialect(): string {\n\t\treturn this._config.dialect;\n\t}\n\n\t// ===========================================================================\n\t// Query API (passthrough to Drizzle)\n\t// ===========================================================================\n\n\tselect() {\n\t\treturn this.client.select();\n\t}\n\n\tinsert(table: any) {\n\t\treturn this.client.insert(table);\n\t}\n\n\tupdate(table: any) {\n\t\treturn this.client.update(table);\n\t}\n\n\tdelete(table: any) {\n\t\treturn this.client.delete(table);\n\t}\n\n\t// ===========================================================================\n\t// Transactions\n\t// ===========================================================================\n\n\tasync transaction<T>(fn: (tx: DrizzleService) => Promise<T>): Promise<T> {\n\t\tthis._assertOpen();\n\t\treturn this.client.transaction(async (tx: any) => {\n\t\t\tconst txService = Object.create(this) as DrizzleService;\n\t\t\tObject.defineProperty(txService, \"_client\", { value: tx, writable: false });\n\t\t\treturn fn(txService);\n\t\t});\n\t}\n\n\t// ===========================================================================\n\t// Raw SQL (SQL-injection safe)\n\t// ===========================================================================\n\n\t/**\n\t * Tagged-template raw query.\n\t *\n\t * const id = \"user-42\";\n\t * const rows = await db.raw`SELECT * FROM users WHERE id = ${id}`.all();\n\t *\n\t * Interpolation values are sent as bound parameters — never\n\t * concatenated into the SQL text. This is the same primitive as\n\t * Drizzle's `sql\\`...\\`` but exposed through the service so logging\n\t * and dialect placeholders are handled consistently.\n\t */\n\traw(strings: TemplateStringsArray, ...values: unknown[]): RawQuery {\n\t\tif (!this._rawExecutor) {\n\t\t\tthrow new Error(\"[drizzle] driver does not support raw queries\");\n\t\t}\n\t\tconst text = buildSqlText(strings);\n\t\treturn new RawQuery(text, values, this._rawExecutor, this._logger ?? undefined);\n\t}\n\n\t/** Direct parameterized query (no template tag). */\n\tasync rawQuery<T = Record<string, unknown>>(\n\t\tsql: string,\n\t\tparams: unknown[] = [],\n\t): Promise<T[]> {\n\t\tif (!this._rawExecutor) {\n\t\t\tthrow new Error(\"[drizzle] driver does not support raw queries\");\n\t\t}\n\t\tconst r = new RawQuery(sql, params, this._rawExecutor, this._logger ?? undefined);\n\t\treturn r.all<T>();\n\t}\n\n\t// ===========================================================================\n\t// Migrations\n\t// ===========================================================================\n\n\tasync migrate(folder: string): Promise<MigrateResult> {\n\t\tif (!this._migratorFn) {\n\t\t\tthrow new Error(\n\t\t\t\t`[drizzle] this dialect (${this._config.dialect}) does not ship a built-in migrator. ` +\n\t\t\t\t\t`Run migrations manually using drizzle-kit.`,\n\t\t\t);\n\t\t}\n\t\tawait this._migratorFn(folder);\n\t\tconst applied = await this.appliedMigrations();\n\t\treturn { applied, total: applied.length };\n\t}\n\n\tasync appliedMigrations(): Promise<MigrationRecord[]> {\n\t\ttry {\n\t\t\tconst r = await this.rawQuery<{ id: number; hash: string; created_at: string | number }>(\n\t\t\t\t`SELECT id, hash, created_at FROM ${this._migrationsTable} ORDER BY id`,\n\t\t\t);\n\t\t\treturn r.map((row) => ({\n\t\t\t\tid: Number(row.id),\n\t\t\t\thash: String(row.hash),\n\t\t\t\tappliedAt: parseTimestamp(row.created_at),\n\t\t\t}));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// ===========================================================================\n\t// Lifecycle\n\t// ===========================================================================\n\n\tasync close(): Promise<void> {\n\t\tif (!this._opened) return;\n\t\tif (this.driver?.close) await this.driver.close();\n\t\tthis._opened = false;\n\t\tthis._client = null;\n\t\tthis._rawExecutor = null;\n\t}\n\n\tattachLogger(fn: (q: string, p: unknown[]) => void): void {\n\t\tthis._logger = fn;\n\t}\n\n\t// ===========================================================================\n\t// Internal\n\t// ===========================================================================\n\n\tprivate _assertOpen(): void {\n\t\tif (!this._opened) {\n\t\t\tthrow new Error(\"[drizzle] service not opened. Call open() first.\");\n\t\t}\n\t}\n}\n\n/** Internal: an open driver. */\ntype DrizzleDriverHandle = Awaited<ReturnType<typeof resolveDriver>>;\n\n/** Build SQL text with `?` placeholders. */\nfunction buildSqlText(strings: TemplateStringsArray): string {\n\tlet s = strings[0] ?? \"\";\n\tfor (let i = 0; i < strings.length - 1; i++) {\n\t\ts += \"?\";\n\t\ts += strings[i + 1];\n\t}\n\treturn s;\n}\n\nfunction parseTimestamp(v: string | number | Date): Date {\n\tif (v instanceof Date) return v;\n\tif (typeof v === \"number\") return new Date(v);\n\treturn new Date(String(v));\n}\n",
24
+ "/**\n * `DrizzleModule` — drop-in database module.\n *\n * @Module({\n * imports: [\n * DrizzleModule.forRoot({\n * dialect: 'bun-sqlite',\n * connection: { filename: './data.db' },\n * logging: true,\n * }),\n * ],\n * })\n * export class AppModule {}\n *\n * For Postgres:\n * DrizzleModule.forRoot({\n * dialect: 'postgres',\n * connection: { url: process.env.DATABASE_URL! },\n * pool: { max: 10 },\n * });\n */\nimport \"reflect-metadata\";\nimport { Module } from \"../core/decorators/module.js\";\nimport { DrizzleService } from \"./drizzle.service.js\";\nimport type { DrizzleConfig } from \"./types.js\";\n\n@Module({\n\tproviders: [\n\t\tDrizzleService,\n\t\t{ provide: DrizzleService.TOKEN, useExisting: DrizzleService },\n\t],\n\texports: [DrizzleService, DrizzleService.TOKEN],\n})\nexport class DrizzleModule {\n\tstatic forRoot(config: DrizzleConfig) {\n\t\t@Module({\n\t\t\tproviders: [\n\t\t\t\tDrizzleService,\n\t\t\t\t{ provide: DrizzleService.TOKEN, useExisting: DrizzleService },\n\t\t\t\t{ provide: \"DRIZZLE_CONFIG\", useValue: config },\n\t\t\t],\n\t\t\texports: [DrizzleService, DrizzleService.TOKEN],\n\t\t})\n\t\tclass ConfiguredDrizzleModule {}\n\t\tObject.defineProperty(ConfiguredDrizzleModule, \"name\", {\n\t\t\tvalue: \"ConfiguredDrizzleModule\",\n\t\t});\n\t\treturn ConfiguredDrizzleModule;\n\t}\n}\n",
25
+ "/**\n * Decorator metadata for the @Table / @Column / @PrimaryKey stack.\n *\n * These are used together with `DrizzleModel` to give Lucid-like\n * ergonomics on top of Drizzle's table-builder API. The decorators\n * record metadata that the repository can read for default queries.\n */\nimport \"reflect-metadata\";\nimport {\n\tDRIZZLE_TABLE_META,\n\ttype ColumnMetadata,\n\ttype TableMetadata,\n} from \"../types.js\";\n\nexport function Table(name: string): ClassDecorator {\n\treturn (target: any) => {\n\t\tconst existing: TableMetadata = Reflect.getMetadata(\n\t\t\tDRIZZLE_TABLE_META,\n\t\t\ttarget,\n\t\t) ?? {\n\t\t\tname,\n\t\t\tcolumns: new Map(),\n\t\t};\n\t\texisting.name = name;\n\t\tReflect.defineMetadata(DRIZZLE_TABLE_META, existing, target);\n\t};\n}\n\nexport function Column(opts: Partial<ColumnMetadata> = {}): PropertyDecorator {\n\treturn (target: object, propertyKey: string | symbol) => {\n\t\tconst meta = getTableMeta(target.constructor);\n\t\tmeta.columns.set(String(propertyKey), {\n\t\t\tname: opts.name ?? String(propertyKey),\n\t\t\ttype: opts.type ?? \"text\",\n\t\t\tnullable: opts.nullable ?? false,\n\t\t\tprimaryKey: opts.primaryKey ?? false,\n\t\t\tautoIncrement: opts.autoIncrement ?? false,\n\t\t\tunique: opts.unique ?? false,\n\t\t\tdefault: opts.default,\n\t\t\treferences: opts.references,\n\t\t});\n\t};\n}\n\nexport function PrimaryKey(\n\topts: Partial<ColumnMetadata> = {},\n): PropertyDecorator {\n\treturn (target: object, propertyKey: string | symbol) => {\n\t\tconst meta = getTableMeta(target.constructor);\n\t\tmeta.columns.set(String(propertyKey), {\n\t\t\tname: opts.name ?? String(propertyKey),\n\t\t\ttype: opts.type ?? \"integer\",\n\t\t\tnullable: false,\n\t\t\tprimaryKey: true,\n\t\t\tautoIncrement: opts.autoIncrement ?? false,\n\t\t\tunique: true,\n\t\t\tdefault: opts.default,\n\t\t});\n\t};\n}\n\nexport function getTableMeta(target: any): TableMetadata {\n\tconst m: TableMetadata = Reflect.getMetadata(DRIZZLE_TABLE_META, target) ?? {\n\t\tname: target.name.toLowerCase(),\n\t\tcolumns: new Map(),\n\t};\n\tReflect.defineMetadata(DRIZZLE_TABLE_META, m, target);\n\treturn m;\n}\n\nexport function readTableMeta(target: any): TableMetadata | undefined {\n\treturn Reflect.getMetadata(DRIZZLE_TABLE_META, target);\n}\n\nexport type { ColumnMetadata, TableMetadata } from \"../types.js\";\n",
26
+ "/**\n * `DrizzleModel` — base class for entity models (Lucid-style).\n *\n * @Table('users')\n * class User extends DrizzleModel {\n * @PrimaryKey({ autoIncrement: true, type: 'integer' })\n * id!: number;\n *\n * @Column({ type: 'text' })\n * email!: string;\n * }\n *\n * Models carry decorator metadata. The actual Drizzle table object\n * (created with `pgTable` / `mysqlTable` / `sqliteTable`) is supplied\n * to the repository so Drizzle's typed query API is preserved.\n */\nimport { readTableMeta, type TableMetadata } from \"./decorators/index.js\";\n\nexport class DrizzleModel {\n\t/** Decorator metadata for this model class. */\n\tstatic getMeta(this: any): TableMetadata | undefined {\n\t\treturn readTableMeta(DrizzleModel);\n\t}\n\n\t/** Table name. */\n\tstatic getTableName(this: any): string | undefined {\n\t\treturn readTableMeta(DrizzleModel)?.name;\n\t}\n\n\t/** Plain JS object representation. */\n\ttoJSON(): Record<string, unknown> {\n\t\tconst out: Record<string, unknown> = {};\n\t\tfor (const [k, v] of Object.entries(this)) {\n\t\t\tif (typeof v !== \"function\") out[k] = v;\n\t\t}\n\t\treturn out;\n\t}\n}\n",
27
+ "/**\n * `DrizzleRepository` — Lucid-style repository pattern.\n *\n * Subclass it with a Drizzle table object to get typed queries out of\n * the box. Drizzle's own column types and operators are passed in via\n * the `where`, `orderBy`, etc. options — this class is intentionally\n * thin so it doesn't fight Drizzle's type system.\n *\n * import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';\n * import { eq, desc } from 'drizzle-orm';\n * import { DrizzleRepository, DrizzleService } from 'nexusjs/drizzle';\n *\n * const users = pgTable('users', {\n * id: serial('id').primaryKey(),\n * email: text('email').notNull(),\n * createdAt: timestamp('created_at').defaultNow(),\n * });\n *\n * class UserRepository extends DrizzleRepository<typeof users> {\n * constructor(db: DrizzleService) { super(db, users); }\n * }\n *\n * const repo = new UserRepository(db);\n * await repo.findAll({ where: eq(users.email, 'a@b.com'), limit: 10, orderBy: desc(users.createdAt) });\n * await repo.create({ email: 'a@b.com' });\n * await repo.updateById(42, { email: 'new@x.com' });\n * await repo.deleteById(42);\n */\nimport type { DrizzleService } from \"../drizzle.service.js\";\n\nexport type Where = any;\nexport type OrderBy = any;\n\nexport interface FindAllOptions {\n\twhere?: Where;\n\tlimit?: number;\n\toffset?: number;\n\torderBy?: OrderBy | OrderBy[];\n}\n\nexport class DrizzleRepository<TTable = any, TRow = Record<string, unknown>> {\n\tconstructor(\n\t\tprotected readonly db: DrizzleService,\n\t\tprotected readonly table: TTable,\n\t) {}\n\n\t/** Direct Drizzle client (for advanced queries). */\n\tget client(): any {\n\t\treturn this.db.client;\n\t}\n\n\t/** Return all rows matching `opts`. */\n\tasync findAll(opts: FindAllOptions = {}): Promise<TRow[]> {\n\t\tlet q: any = this.db.client.select().from(this.table);\n\t\tif (opts.where) q = q.where(opts.where);\n\t\tif (opts.orderBy) {\n\t\t\tconst arr = Array.isArray(opts.orderBy) ? opts.orderBy : [opts.orderBy];\n\t\t\tq = q.orderBy(...arr);\n\t\t}\n\t\tif (opts.limit !== undefined) q = q.limit(opts.limit);\n\t\tif (opts.offset !== undefined) q = q.offset(opts.offset);\n\t\tconst result = q.all ? await q.all() : await q;\n\t\treturn result as TRow[];\n\t}\n\n\t/** Return the first row matching `where`. */\n\tasync findOne(where: Where): Promise<TRow | undefined> {\n\t\tconst rows = await this.findAll({ where, limit: 1 });\n\t\treturn rows[0];\n\t}\n\n\t/** Count rows matching `where`. */\n\tasync count(where?: Where): Promise<number> {\n\t\tconst tableName = this._tableName();\n\t\tconst rows = where\n\t\t\t? await this.db.rawQuery<{ count: number }>(\n\t\t\t\t\t`SELECT COUNT(*) as count FROM ${tableName} WHERE ${whereSql(where)}`,\n\t\t\t\t\twhereParams(where),\n\t\t\t\t)\n\t\t\t: await this.db.rawQuery<{ count: number }>(\n\t\t\t\t\t`SELECT COUNT(*) as count FROM ${tableName}`,\n\t\t\t\t);\n\t\treturn Number(rows[0]?.count ?? 0);\n\t}\n\n\t/** Insert one or more rows. Returns the inserted row(s). */\n\tasync create(\n\t\tvalues: Partial<TRow> | Array<Partial<TRow>>,\n\t): Promise<TRow | TRow[]> {\n\t\tconst isArr = Array.isArray(values);\n\t\tconst q = (this.db.client.insert(this.table) as any)\n\t\t\t.values(values as any)\n\t\t\t.returning();\n\t\tconst rows = (await q) as TRow[];\n\t\treturn isArr ? rows : rows[0];\n\t}\n\n\t/** Update rows matching `where`. Returns the updated rows. */\n\tasync update(where: Where, patch: Partial<TRow>): Promise<TRow[]> {\n\t\tconst q = (this.db.client.update(this.table) as any)\n\t\t\t.set(patch)\n\t\t\t.where(where)\n\t\t\t.returning();\n\t\treturn (await q) as TRow[];\n\t}\n\n\t/** Delete rows matching `where`. Returns the number of affected rows. */\n\tasync delete(where: Where): Promise<number> {\n\t\tconst tableName = this._tableName();\n\t\tconst r = await this.db.rawQuery(\n\t\t\t`DELETE FROM ${tableName} WHERE ${whereSql(where)}`,\n\t\t\twhereParams(where),\n\t\t);\n\t\treturn r.length;\n\t}\n\n\t/** Run `fn` inside a transaction. */\n\tasync transaction<T>(\n\t\tfn: (tx: DrizzleRepository<TTable, TRow>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.db.transaction(async (txDb) => {\n\t\t\tconst txRepo = Object.create(this) as DrizzleRepository<TTable, TRow>;\n\t\t\tObject.defineProperty(txRepo, \"db\", { value: txDb, writable: false });\n\t\t\treturn fn(txRepo);\n\t\t});\n\t}\n\n\tprivate _tableName(): string {\n\t\tconst t = this.table as any;\n\t\treturn t?._?.name ?? t?.name ?? String(t);\n\t}\n}\n\n/**\n * Translate a Drizzle `where` (which is a SQL chunk tree) into a SQL\n * text + params array suitable for `db.rawQuery`.\n *\n * For simple column-value objects, produces `col = ?` with the value.\n * For Drizzle SQL chunks, recurses into the chunk tree to extract the\n * rendered text + bound params.\n */\nfunction whereSql(where: Where): string {\n\t// Column equality shortcut: `{ email: 'a@b.com' }` becomes `email = ?`.\n\tif (\n\t\twhere &&\n\t\ttypeof where === \"object\" &&\n\t\t!Array.isArray(where) &&\n\t\t!(where as any).queryChunks\n\t) {\n\t\tconst parts: string[] = [];\n\t\tfor (const k of Object.keys(where)) parts.push(`${k} = ?`);\n\t\treturn parts.join(\" AND \");\n\t}\n\t// Drizzle SQL chunk — render to text + params.\n\treturn drizzleSqlToText(where).text;\n}\n\nfunction whereParams(where: Where): unknown[] {\n\tif (\n\t\twhere &&\n\t\ttypeof where === \"object\" &&\n\t\t!Array.isArray(where) &&\n\t\t!(where as any).queryChunks\n\t) {\n\t\treturn Object.values(where);\n\t}\n\treturn drizzleSqlToText(where).params;\n}\n\n/**\n * Render a Drizzle SQL chunk into (text, params).\n *\n * Drizzle's `sql` chunks are nested trees of `SQL` and `Param`\n * objects. We walk the tree:\n * - string chunk → part of SQL text\n * - Param → `?` placeholder, value goes into params\n * - SQL chunk → recurse\n *\n * This is a portable conversion that produces text compatible with\n * every dialect (postgres / mysql / sqlite — they all accept `?` in\n * prepared statements via their respective drivers).\n */\nfunction drizzleSqlToText(\n\tnode: any,\n\tout?: { text: string; params: unknown[] },\n): {\n\ttext: string;\n\tparams: unknown[];\n} {\n\tout = out ?? { text: \"\", params: [] };\n\tif (node === null || node === undefined) return out;\n\tif (typeof node === \"string\") {\n\t\tout.text += node;\n\t\treturn out;\n\t}\n\tif (typeof node === \"number\" || typeof node === \"boolean\") {\n\t\tout.text += String(node);\n\t\treturn out;\n\t}\n\tif (Array.isArray(node)) {\n\t\tfor (const c of node) drizzleSqlToText(c, out);\n\t\treturn out;\n\t}\n\t// Drizzle SQL class.\n\tif (node.queryChunks && Array.isArray(node.queryChunks)) {\n\t\tfor (const c of node.queryChunks) drizzleSqlToText(c, out);\n\t\treturn out;\n\t}\n\t// Drizzle Param class — has `value` and renders to a placeholder.\n\tif (\"value\" in node && node.value !== undefined) {\n\t\tout.text += \"?\";\n\t\tout.params.push(node.value);\n\t\treturn out;\n\t}\n\tif (typeof node.getSQL === \"function\") {\n\t\treturn drizzleSqlToText(node.getSQL(), out);\n\t}\n\treturn out;\n}\n"
28
+ ],
29
+ "mappings": "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",
30
+ "debugId": "FB207F5418791DF864756E2164756E21",
31
+ "names": []
32
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `DrizzleModel` — base class for entity models (Lucid-style).
3
+ *
4
+ * @Table('users')
5
+ * class User extends DrizzleModel {
6
+ * @PrimaryKey({ autoIncrement: true, type: 'integer' })
7
+ * id!: number;
8
+ *
9
+ * @Column({ type: 'text' })
10
+ * email!: string;
11
+ * }
12
+ *
13
+ * Models carry decorator metadata. The actual Drizzle table object
14
+ * (created with `pgTable` / `mysqlTable` / `sqliteTable`) is supplied
15
+ * to the repository so Drizzle's typed query API is preserved.
16
+ */
17
+ import { type TableMetadata } from "./decorators/index.js";
18
+ export declare class DrizzleModel {
19
+ /** Decorator metadata for this model class. */
20
+ static getMeta(this: any): TableMetadata | undefined;
21
+ /** Table name. */
22
+ static getTableName(this: any): string | undefined;
23
+ /** Plain JS object representation. */
24
+ toJSON(): Record<string, unknown>;
25
+ }
26
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/drizzle/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE1E,qBAAa,YAAY;IACxB,+CAA+C;IAC/C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS;IAIpD,kBAAkB;IAClB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIlD,sCAAsC;IACtC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOjC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * SQL-safe raw query builder.
3
+ *
4
+ * Wraps Drizzle's `sql` template tag with:
5
+ * - Multi-dialect placeholder normalization (`$1` for postgres, `?` for sqlite/mysql)
6
+ * - Type-safe `execute<T>()`, `first<T>()`, `all<T>()` methods
7
+ * - Optional logging via the parent `DrizzleService`
8
+ * - Automatic parameter binding (Drizzle handles escaping)
9
+ *
10
+ * **Why this is SQL-injection safe:**
11
+ * - Drizzle's `sql\`...\`` parses the template literal into a parameterized
12
+ * statement. Every interpolated `${value}` becomes a bound parameter
13
+ * (`$1`, `?`, ...), not a string concatenation.
14
+ * - The values are sent separately from the SQL text — the database
15
+ * driver handles the protocol-level separation.
16
+ * - Identifier interpolation uses `sql.raw(...)` which is the *only*
17
+ * place where you must be careful (it's deliberately not allowed here).
18
+ *
19
+ * const q = db.raw`SELECT * FROM users WHERE id = ${userId}`;
20
+ * const rows = await q.all<User>();
21
+ */
22
+ import type { RawExecutor } from "./drivers/base.js";
23
+ import type { RawQueryResult } from "./types.js";
24
+ export declare class RawQuery {
25
+ private sqlText;
26
+ private params;
27
+ private executor;
28
+ private logger?;
29
+ constructor(sqlText: string, params: unknown[], executor: RawExecutor, logger?: (q: string, p: unknown[]) => void);
30
+ /** Execute and return all rows. */
31
+ all<T = Record<string, unknown>>(): Promise<T[]>;
32
+ /** Execute and return the first row, or undefined. */
33
+ first<T = Record<string, unknown>>(): Promise<T | undefined>;
34
+ /** Execute and return the full result (rows + affectedRows + insertId). */
35
+ execute<T = Record<string, unknown>>(): Promise<RawQueryResult<T>>;
36
+ /** Inspect the generated SQL (after dialect placeholders are normalized). */
37
+ toSQL(): string;
38
+ getParameters(): unknown[];
39
+ private run;
40
+ }
41
+ //# sourceMappingURL=raw-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-query.d.ts","sourceRoot":"","sources":["../../src/drizzle/raw-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,QAAQ;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAoC;gBAGlD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,WAAW,EACrB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI;IAQ3C,mCAAmC;IAC7B,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;IAKtD,sDAAsD;IAChD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKlE,2EAA2E;IACrE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAIxE,6EAA6E;IAC7E,KAAK,IAAI,MAAM;IAIf,aAAa,IAAI,OAAO,EAAE;YAIZ,GAAG;CASjB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Repository barrel.
3
+ */
4
+ export { DrizzleRepository } from "./repository.js";
5
+ export type { FindAllOptions, Where, OrderBy } from "./repository.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drizzle/repository/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * `DrizzleRepository` — Lucid-style repository pattern.
3
+ *
4
+ * Subclass it with a Drizzle table object to get typed queries out of
5
+ * the box. Drizzle's own column types and operators are passed in via
6
+ * the `where`, `orderBy`, etc. options — this class is intentionally
7
+ * thin so it doesn't fight Drizzle's type system.
8
+ *
9
+ * import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';
10
+ * import { eq, desc } from 'drizzle-orm';
11
+ * import { DrizzleRepository, DrizzleService } from 'nexusjs/drizzle';
12
+ *
13
+ * const users = pgTable('users', {
14
+ * id: serial('id').primaryKey(),
15
+ * email: text('email').notNull(),
16
+ * createdAt: timestamp('created_at').defaultNow(),
17
+ * });
18
+ *
19
+ * class UserRepository extends DrizzleRepository<typeof users> {
20
+ * constructor(db: DrizzleService) { super(db, users); }
21
+ * }
22
+ *
23
+ * const repo = new UserRepository(db);
24
+ * await repo.findAll({ where: eq(users.email, 'a@b.com'), limit: 10, orderBy: desc(users.createdAt) });
25
+ * await repo.create({ email: 'a@b.com' });
26
+ * await repo.updateById(42, { email: 'new@x.com' });
27
+ * await repo.deleteById(42);
28
+ */
29
+ import type { DrizzleService } from "../drizzle.service.js";
30
+ export type Where = any;
31
+ export type OrderBy = any;
32
+ export interface FindAllOptions {
33
+ where?: Where;
34
+ limit?: number;
35
+ offset?: number;
36
+ orderBy?: OrderBy | OrderBy[];
37
+ }
38
+ export declare class DrizzleRepository<TTable = any, TRow = Record<string, unknown>> {
39
+ protected readonly db: DrizzleService;
40
+ protected readonly table: TTable;
41
+ constructor(db: DrizzleService, table: TTable);
42
+ /** Direct Drizzle client (for advanced queries). */
43
+ get client(): any;
44
+ /** Return all rows matching `opts`. */
45
+ findAll(opts?: FindAllOptions): Promise<TRow[]>;
46
+ /** Return the first row matching `where`. */
47
+ findOne(where: Where): Promise<TRow | undefined>;
48
+ /** Count rows matching `where`. */
49
+ count(where?: Where): Promise<number>;
50
+ /** Insert one or more rows. Returns the inserted row(s). */
51
+ create(values: Partial<TRow> | Array<Partial<TRow>>): Promise<TRow | TRow[]>;
52
+ /** Update rows matching `where`. Returns the updated rows. */
53
+ update(where: Where, patch: Partial<TRow>): Promise<TRow[]>;
54
+ /** Delete rows matching `where`. Returns the number of affected rows. */
55
+ delete(where: Where): Promise<number>;
56
+ /** Run `fn` inside a transaction. */
57
+ transaction<T>(fn: (tx: DrizzleRepository<TTable, TRow>) => Promise<T>): Promise<T>;
58
+ private _tableName;
59
+ }
60
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/drizzle/repository/repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC;AACxB,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;CAC9B;AAED,qBAAa,iBAAiB,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc;IACrC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;gBADb,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM;IAGjC,oDAAoD;IACpD,IAAI,MAAM,IAAI,GAAG,CAEhB;IAED,uCAAuC;IACjC,OAAO,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAazD,6CAA6C;IACvC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAKtD,mCAAmC;IAC7B,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3C,4DAA4D;IACtD,MAAM,CACX,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAC1C,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IASzB,8DAA8D;IACxD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQjE,yEAAyE;IACnE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAS3C,qCAAqC;IAC/B,WAAW,CAAC,CAAC,EAClB,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC;IAQb,OAAO,CAAC,UAAU;CAIlB"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * `nexusjs/drizzle` — Drizzle ORM integration. Default ORM for NexusJS.
3
+ *
4
+ * @Module({
5
+ * imports: [
6
+ * DrizzleModule.forRoot({
7
+ * dialect: 'postgres',
8
+ * url: process.env.DATABASE_URL!,
9
+ * }),
10
+ * ],
11
+ * })
12
+ *
13
+ * class UserService {
14
+ * constructor(@Inject(DrizzleService.TOKEN) private db: DrizzleService) {}
15
+ * list() { return this.db.select().from(users).all(); }
16
+ * }
17
+ *
18
+ * Drivers:
19
+ * - `postgres` — node-postgres / postgres.js
20
+ * - `mysql` — mysql2
21
+ * - `sqlite` — better-sqlite3 / libsql
22
+ * - `bun-sqlite`— bun:sqlite (built-in)
23
+ * - `d1` — Cloudflare D1 (Workers)
24
+ *
25
+ * Lucid gap closure:
26
+ * - `DrizzleRepository<TTable, TRow>` — repository pattern (model + queries)
27
+ * - `DrizzleModel` — base class for entity models
28
+ * - `@Table()`, `@Column()`, `@PrimaryKey()` decorators
29
+ * - `db.migrate(folder)` — automatic migrations
30
+ * - `db.transaction(fn)` — ACID transactions
31
+ *
32
+ * Raw queries:
33
+ * - `db.raw\`SELECT * FROM users WHERE id = ${id}\`` — parameterized, safe.
34
+ */
35
+ import "reflect-metadata";
36
+ export type DrizzleDialect = "postgres" | "mysql" | "sqlite" | "bun-sqlite" | "d1";
37
+ export interface PostgresConnectionOptions {
38
+ /** Postgres connection URL. */
39
+ url?: string;
40
+ /** Individual connection fields (alternative to `url`). */
41
+ host?: string;
42
+ port?: number;
43
+ user?: string;
44
+ password?: string;
45
+ database?: string;
46
+ /** SSL mode. */
47
+ ssl?: boolean | "require" | "prefer" | "allow";
48
+ /** Pool settings. */
49
+ pool?: {
50
+ max?: number;
51
+ idleTimeoutMs?: number;
52
+ connectionTimeoutMs?: number;
53
+ };
54
+ /** Schema (default 'public'). */
55
+ schema?: string;
56
+ }
57
+ export interface MysqlConnectionOptions {
58
+ url?: string;
59
+ host?: string;
60
+ port?: number;
61
+ user?: string;
62
+ password?: string;
63
+ database?: string;
64
+ pool?: {
65
+ max?: number;
66
+ idleTimeoutMs?: number;
67
+ connectionTimeoutMs?: number;
68
+ };
69
+ }
70
+ export interface SqliteConnectionOptions {
71
+ /** File path or ':memory:'. */
72
+ filename: string;
73
+ /** Optional readonly mode. */
74
+ readonly?: boolean;
75
+ }
76
+ export interface D1ConnectionOptions {
77
+ /** A Cloudflare D1 binding (D1Database). */
78
+ binding: unknown;
79
+ }
80
+ export type ConnectionOptions = {
81
+ dialect: "postgres";
82
+ connection: PostgresConnectionOptions;
83
+ } | {
84
+ dialect: "mysql";
85
+ connection: MysqlConnectionOptions;
86
+ } | {
87
+ dialect: "sqlite";
88
+ connection: SqliteConnectionOptions;
89
+ } | {
90
+ dialect: "bun-sqlite";
91
+ connection: SqliteConnectionOptions;
92
+ } | {
93
+ dialect: "d1";
94
+ connection: D1ConnectionOptions;
95
+ };
96
+ export interface DrizzleConfig {
97
+ dialect: DrizzleDialect;
98
+ /** Connection details. Dialect-specific. */
99
+ connection: PostgresConnectionOptions | MysqlConnectionOptions | SqliteConnectionOptions | D1ConnectionOptions;
100
+ /** Enable query logging. */
101
+ logging?: boolean | ((query: string, params: unknown[]) => void);
102
+ /** Schema name (Postgres only). Default: 'public'. */
103
+ schema?: string;
104
+ /** Migration folder. Used by `db.migrate(folder)`. */
105
+ migrationsFolder?: string;
106
+ /** Whether to auto-run migrations on boot. */
107
+ autoMigrate?: boolean;
108
+ }
109
+ export interface MigrationMeta {
110
+ /** Folder filename (e.g. '0001_init.sql'). */
111
+ filename: string;
112
+ /** Hash of the file content. */
113
+ hash: string;
114
+ }
115
+ export interface MigrationRecord {
116
+ id: number;
117
+ hash: string;
118
+ /** When this migration was applied. */
119
+ appliedAt: Date;
120
+ }
121
+ export interface MigrateResult {
122
+ /** Newly-applied migrations. */
123
+ applied: MigrationRecord[];
124
+ /** Total count after this run. */
125
+ total: number;
126
+ }
127
+ export interface RawQueryResult<T = Record<string, unknown>> {
128
+ rows: T[];
129
+ /** Number of affected rows (UPDATE/DELETE/INSERT). */
130
+ affectedRows: number;
131
+ /** Insert ID (MySQL/SQLite). */
132
+ insertId?: number | string;
133
+ }
134
+ export interface ColumnMetadata {
135
+ name: string;
136
+ type: string;
137
+ nullable: boolean;
138
+ primaryKey: boolean;
139
+ autoIncrement: boolean;
140
+ unique: boolean;
141
+ default?: unknown;
142
+ references?: {
143
+ table: string;
144
+ column: string;
145
+ onDelete?: "cascade" | "set null" | "restrict";
146
+ };
147
+ }
148
+ export interface TableMetadata {
149
+ name: string;
150
+ columns: Map<string, ColumnMetadata>;
151
+ }
152
+ /** Internal metadata key. */
153
+ export declare const DRIZZLE_TABLE_META = "nexus:drizzle:table";
154
+ export interface DrizzleTransaction {
155
+ /** Run a callback in this transaction. */
156
+ commit<T>(fn: (tx: DrizzleTransaction) => Promise<T>): Promise<T>;
157
+ /** Roll back the transaction. */
158
+ rollback(): Promise<void>;
159
+ }
160
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drizzle/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * `@OnEvent(pattern)` — register a method as an event listener.
3
+ *
4
+ * Mirrors `@nestjs/event-emitter`. Pair with
5
+ * `EventModule.scanForListeners(instance, service)` at boot to wire
6
+ * up all decorated methods.
7
+ *
8
+ * Usage:
9
+ * @Injectable()
10
+ * class UserListeners {
11
+ * constructor(@Inject(EventService.TOKEN) private events: EventService) {}
12
+ *
13
+ * @OnEvent('user.created')
14
+ * async onUserCreated(payload: { userId: string; email: string }) {
15
+ * await this.sendWelcome(payload.email);
16
+ * }
17
+ *
18
+ * @OnEvent('user.*', { priority: 1 })
19
+ * async onAnyUser(payload: any) {
20
+ * // logger
21
+ * }
22
+ *
23
+ * @OnEvent('order.shipped', { once: true })
24
+ * async onFirstShip(payload: any) {
25
+ * // ...
26
+ * }
27
+ * }
28
+ */
29
+ import "reflect-metadata";
30
+ import type { EventService } from "../event.service.js";
31
+ import type { EventName, ListenerOptions } from "../types.js";
32
+ interface StoredHook {
33
+ method: string;
34
+ pattern: EventName;
35
+ options: ListenerOptions;
36
+ }
37
+ /**
38
+ * Mark a method as an event listener.
39
+ */
40
+ export declare function OnEvent(pattern: EventName, options?: ListenerOptions): MethodDecorator;
41
+ /** Get the on-event hooks declared on a class. */
42
+ export declare function getOnEventHooks(target: unknown): StoredHook[];
43
+ /**
44
+ * Scan an instance for `@OnEvent` hooks and register them with the
45
+ * `EventService`. Returns the assigned listener ids.
46
+ */
47
+ export declare function scanForListeners(instance: object, service: EventService): string[];
48
+ export type { EventService };
49
+ //# sourceMappingURL=on-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-event.d.ts","sourceRoot":"","sources":["../../../src/events/decorators/on-event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAI7E,UAAU,UAAU;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,OAAO,CACtB,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE,eAAoB,GAC3B,eAAe,CAYjB;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,EAAE,CAM7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GACnB,MAAM,EAAE,CAiBV;AAGD,YAAY,EAAE,YAAY,EAAE,CAAC"}