@fade_networker/vono 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/client/composables/navigateTo.d.ts +37 -0
  4. package/dist/client/composables/navigateTo.d.ts.map +1 -0
  5. package/dist/client/composables/navigateTo.js +56 -0
  6. package/dist/client/composables/navigateTo.js.map +1 -0
  7. package/dist/client/composables/useAsyncData.d.ts +35 -0
  8. package/dist/client/composables/useAsyncData.d.ts.map +1 -0
  9. package/dist/client/composables/useAsyncData.js +55 -0
  10. package/dist/client/composables/useAsyncData.js.map +1 -0
  11. package/dist/client/composables/useCookie.d.ts +33 -0
  12. package/dist/client/composables/useCookie.d.ts.map +1 -0
  13. package/dist/client/composables/useCookie.js +61 -0
  14. package/dist/client/composables/useCookie.js.map +1 -0
  15. package/dist/client/composables/useFormErrors.d.ts +34 -0
  16. package/dist/client/composables/useFormErrors.d.ts.map +1 -0
  17. package/dist/client/composables/useFormErrors.js +59 -0
  18. package/dist/client/composables/useFormErrors.js.map +1 -0
  19. package/dist/client/composables/useRouteRules.d.ts +26 -0
  20. package/dist/client/composables/useRouteRules.d.ts.map +1 -0
  21. package/dist/client/composables/useRouteRules.js +44 -0
  22. package/dist/client/composables/useRouteRules.js.map +1 -0
  23. package/dist/client/composables/useSeo.d.ts +35 -0
  24. package/dist/client/composables/useSeo.d.ts.map +1 -0
  25. package/dist/client/composables/useSeo.js +62 -0
  26. package/dist/client/composables/useSeo.js.map +1 -0
  27. package/dist/client/composables/useState.d.ts +35 -0
  28. package/dist/client/composables/useState.d.ts.map +1 -0
  29. package/dist/client/composables/useState.js +73 -0
  30. package/dist/client/composables/useState.js.map +1 -0
  31. package/dist/client/composables/useVonoFetch.d.ts +24 -0
  32. package/dist/client/composables/useVonoFetch.d.ts.map +1 -0
  33. package/dist/client/composables/useVonoFetch.js +49 -0
  34. package/dist/client/composables/useVonoFetch.js.map +1 -0
  35. package/dist/client/index.d.ts +19 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/client/index.js +20 -0
  38. package/dist/client/index.js.map +1 -0
  39. package/dist/client/layouts/index.d.ts +12 -0
  40. package/dist/client/layouts/index.d.ts.map +1 -0
  41. package/dist/client/layouts/index.js +11 -0
  42. package/dist/client/layouts/index.js.map +1 -0
  43. package/dist/client/layouts/resolve-layout.d.ts +23 -0
  44. package/dist/client/layouts/resolve-layout.d.ts.map +1 -0
  45. package/dist/client/layouts/resolve-layout.js +31 -0
  46. package/dist/client/layouts/resolve-layout.js.map +1 -0
  47. package/dist/client/nuxt-ui/index.d.ts +11 -0
  48. package/dist/client/nuxt-ui/index.d.ts.map +1 -0
  49. package/dist/client/nuxt-ui/index.js +11 -0
  50. package/dist/client/nuxt-ui/index.js.map +1 -0
  51. package/dist/client/nuxt-ui/setup.d.ts +27 -0
  52. package/dist/client/nuxt-ui/setup.d.ts.map +1 -0
  53. package/dist/client/nuxt-ui/setup.js +40 -0
  54. package/dist/client/nuxt-ui/setup.js.map +1 -0
  55. package/dist/client/pinia-hydration.d.ts +35 -0
  56. package/dist/client/pinia-hydration.d.ts.map +1 -0
  57. package/dist/client/pinia-hydration.js +48 -0
  58. package/dist/client/pinia-hydration.js.map +1 -0
  59. package/dist/config/define-config.d.ts +25 -0
  60. package/dist/config/define-config.d.ts.map +1 -0
  61. package/dist/config/define-config.js +63 -0
  62. package/dist/config/define-config.js.map +1 -0
  63. package/dist/config/env-helpers.d.ts +30 -0
  64. package/dist/config/env-helpers.d.ts.map +1 -0
  65. package/dist/config/env-helpers.js +50 -0
  66. package/dist/config/env-helpers.js.map +1 -0
  67. package/dist/config/use-config.d.ts +31 -0
  68. package/dist/config/use-config.d.ts.map +1 -0
  69. package/dist/config/use-config.js +49 -0
  70. package/dist/config/use-config.js.map +1 -0
  71. package/dist/index.d.ts +16 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +15 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/module-system/define-module.d.ts +82 -0
  76. package/dist/module-system/define-module.d.ts.map +1 -0
  77. package/dist/module-system/define-module.js +37 -0
  78. package/dist/module-system/define-module.js.map +1 -0
  79. package/dist/module-system/index.d.ts +14 -0
  80. package/dist/module-system/index.d.ts.map +1 -0
  81. package/dist/module-system/index.js +13 -0
  82. package/dist/module-system/index.js.map +1 -0
  83. package/dist/module-system/module-registry.d.ts +37 -0
  84. package/dist/module-system/module-registry.d.ts.map +1 -0
  85. package/dist/module-system/module-registry.js +68 -0
  86. package/dist/module-system/module-registry.js.map +1 -0
  87. package/dist/module-system/vite-integration.d.ts +23 -0
  88. package/dist/module-system/vite-integration.d.ts.map +1 -0
  89. package/dist/module-system/vite-integration.js +67 -0
  90. package/dist/module-system/vite-integration.js.map +1 -0
  91. package/dist/server/app-template.d.ts +47 -0
  92. package/dist/server/app-template.d.ts.map +1 -0
  93. package/dist/server/app-template.js +224 -0
  94. package/dist/server/app-template.js.map +1 -0
  95. package/dist/server/auth/gates.d.ts +79 -0
  96. package/dist/server/auth/gates.d.ts.map +1 -0
  97. package/dist/server/auth/gates.js +125 -0
  98. package/dist/server/auth/gates.js.map +1 -0
  99. package/dist/server/auth/index.d.ts +12 -0
  100. package/dist/server/auth/index.d.ts.map +1 -0
  101. package/dist/server/auth/index.js +12 -0
  102. package/dist/server/auth/index.js.map +1 -0
  103. package/dist/server/dto/query.dto.d.ts +44 -0
  104. package/dist/server/dto/query.dto.d.ts.map +1 -0
  105. package/dist/server/dto/query.dto.js +86 -0
  106. package/dist/server/dto/query.dto.js.map +1 -0
  107. package/dist/server/email/define-email.d.ts +41 -0
  108. package/dist/server/email/define-email.d.ts.map +1 -0
  109. package/dist/server/email/define-email.js +50 -0
  110. package/dist/server/email/define-email.js.map +1 -0
  111. package/dist/server/email/drivers/console.d.ts +16 -0
  112. package/dist/server/email/drivers/console.d.ts.map +1 -0
  113. package/dist/server/email/drivers/console.js +22 -0
  114. package/dist/server/email/drivers/console.js.map +1 -0
  115. package/dist/server/email/drivers/postmark.d.ts +19 -0
  116. package/dist/server/email/drivers/postmark.d.ts.map +1 -0
  117. package/dist/server/email/drivers/postmark.js +39 -0
  118. package/dist/server/email/drivers/postmark.js.map +1 -0
  119. package/dist/server/email/drivers/resend.d.ts +19 -0
  120. package/dist/server/email/drivers/resend.d.ts.map +1 -0
  121. package/dist/server/email/drivers/resend.js +37 -0
  122. package/dist/server/email/drivers/resend.js.map +1 -0
  123. package/dist/server/email/drivers/smtp.d.ts +26 -0
  124. package/dist/server/email/drivers/smtp.d.ts.map +1 -0
  125. package/dist/server/email/drivers/smtp.js +37 -0
  126. package/dist/server/email/drivers/smtp.js.map +1 -0
  127. package/dist/server/email/send-email.d.ts +42 -0
  128. package/dist/server/email/send-email.d.ts.map +1 -0
  129. package/dist/server/email/send-email.js +69 -0
  130. package/dist/server/email/send-email.js.map +1 -0
  131. package/dist/server/env-validation/define-env.d.ts +45 -0
  132. package/dist/server/env-validation/define-env.d.ts.map +1 -0
  133. package/dist/server/env-validation/define-env.js +41 -0
  134. package/dist/server/env-validation/define-env.js.map +1 -0
  135. package/dist/server/env-validation/index.d.ts +13 -0
  136. package/dist/server/env-validation/index.d.ts.map +1 -0
  137. package/dist/server/env-validation/index.js +12 -0
  138. package/dist/server/env-validation/index.js.map +1 -0
  139. package/dist/server/env-validation/validate-at-startup.d.ts +29 -0
  140. package/dist/server/env-validation/validate-at-startup.d.ts.map +1 -0
  141. package/dist/server/env-validation/validate-at-startup.js +61 -0
  142. package/dist/server/env-validation/validate-at-startup.js.map +1 -0
  143. package/dist/server/i18n/composables/useI18n.d.ts +39 -0
  144. package/dist/server/i18n/composables/useI18n.d.ts.map +1 -0
  145. package/dist/server/i18n/composables/useI18n.js +93 -0
  146. package/dist/server/i18n/composables/useI18n.js.map +1 -0
  147. package/dist/server/i18n/detect-locale.d.ts +22 -0
  148. package/dist/server/i18n/detect-locale.d.ts.map +1 -0
  149. package/dist/server/i18n/detect-locale.js +42 -0
  150. package/dist/server/i18n/detect-locale.js.map +1 -0
  151. package/dist/server/i18n/index.d.ts +14 -0
  152. package/dist/server/i18n/index.d.ts.map +1 -0
  153. package/dist/server/i18n/index.js +13 -0
  154. package/dist/server/i18n/index.js.map +1 -0
  155. package/dist/server/i18n/translate.d.ts +38 -0
  156. package/dist/server/i18n/translate.d.ts.map +1 -0
  157. package/dist/server/i18n/translate.js +83 -0
  158. package/dist/server/i18n/translate.js.map +1 -0
  159. package/dist/server/index.d.ts +40 -0
  160. package/dist/server/index.d.ts.map +1 -0
  161. package/dist/server/index.js +36 -0
  162. package/dist/server/index.js.map +1 -0
  163. package/dist/server/jobs/define-job.d.ts +50 -0
  164. package/dist/server/jobs/define-job.d.ts.map +1 -0
  165. package/dist/server/jobs/define-job.js +32 -0
  166. package/dist/server/jobs/define-job.js.map +1 -0
  167. package/dist/server/jobs/index.d.ts +13 -0
  168. package/dist/server/jobs/index.d.ts.map +1 -0
  169. package/dist/server/jobs/index.js +12 -0
  170. package/dist/server/jobs/index.js.map +1 -0
  171. package/dist/server/jobs/runner.d.ts +37 -0
  172. package/dist/server/jobs/runner.d.ts.map +1 -0
  173. package/dist/server/jobs/runner.js +75 -0
  174. package/dist/server/jobs/runner.js.map +1 -0
  175. package/dist/server/middleware/configProvider.d.ts +26 -0
  176. package/dist/server/middleware/configProvider.d.ts.map +1 -0
  177. package/dist/server/middleware/configProvider.js +78 -0
  178. package/dist/server/middleware/configProvider.js.map +1 -0
  179. package/dist/server/middleware/dbProvider.d.ts +27 -0
  180. package/dist/server/middleware/dbProvider.d.ts.map +1 -0
  181. package/dist/server/middleware/dbProvider.js +66 -0
  182. package/dist/server/middleware/dbProvider.js.map +1 -0
  183. package/dist/server/middleware/rateLimiter.d.ts +74 -0
  184. package/dist/server/middleware/rateLimiter.d.ts.map +1 -0
  185. package/dist/server/middleware/rateLimiter.js +164 -0
  186. package/dist/server/middleware/rateLimiter.js.map +1 -0
  187. package/dist/server/middleware/validator.d.ts +57 -0
  188. package/dist/server/middleware/validator.d.ts.map +1 -0
  189. package/dist/server/middleware/validator.js +128 -0
  190. package/dist/server/middleware/validator.js.map +1 -0
  191. package/dist/server/openapi/append-tag.d.ts +21 -0
  192. package/dist/server/openapi/append-tag.d.ts.map +1 -0
  193. package/dist/server/openapi/append-tag.js +54 -0
  194. package/dist/server/openapi/append-tag.js.map +1 -0
  195. package/dist/server/openapi/index.d.ts +13 -0
  196. package/dist/server/openapi/index.d.ts.map +1 -0
  197. package/dist/server/openapi/index.js +12 -0
  198. package/dist/server/openapi/index.js.map +1 -0
  199. package/dist/server/openapi/spec-template.d.ts +45 -0
  200. package/dist/server/openapi/spec-template.d.ts.map +1 -0
  201. package/dist/server/openapi/spec-template.js +132 -0
  202. package/dist/server/openapi/spec-template.js.map +1 -0
  203. package/dist/server/renderer.d.ts +62 -0
  204. package/dist/server/renderer.d.ts.map +1 -0
  205. package/dist/server/renderer.js +115 -0
  206. package/dist/server/renderer.js.map +1 -0
  207. package/dist/server/resolvers/cache-driver.d.ts +22 -0
  208. package/dist/server/resolvers/cache-driver.d.ts.map +1 -0
  209. package/dist/server/resolvers/cache-driver.js +29 -0
  210. package/dist/server/resolvers/cache-driver.js.map +1 -0
  211. package/dist/server/resolvers/index.d.ts +17 -0
  212. package/dist/server/resolvers/index.d.ts.map +1 -0
  213. package/dist/server/resolvers/index.js +14 -0
  214. package/dist/server/resolvers/index.js.map +1 -0
  215. package/dist/server/resolvers/queue-driver.d.ts +25 -0
  216. package/dist/server/resolvers/queue-driver.d.ts.map +1 -0
  217. package/dist/server/resolvers/queue-driver.js +44 -0
  218. package/dist/server/resolvers/queue-driver.js.map +1 -0
  219. package/dist/server/resolvers/storage-driver.d.ts +24 -0
  220. package/dist/server/resolvers/storage-driver.d.ts.map +1 -0
  221. package/dist/server/resolvers/storage-driver.js +38 -0
  222. package/dist/server/resolvers/storage-driver.js.map +1 -0
  223. package/dist/server/resolvers/validate-compatibility.d.ts +22 -0
  224. package/dist/server/resolvers/validate-compatibility.d.ts.map +1 -0
  225. package/dist/server/resolvers/validate-compatibility.js +83 -0
  226. package/dist/server/resolvers/validate-compatibility.js.map +1 -0
  227. package/dist/server/resources/base-resource.d.ts +57 -0
  228. package/dist/server/resources/base-resource.d.ts.map +1 -0
  229. package/dist/server/resources/base-resource.js +74 -0
  230. package/dist/server/resources/base-resource.js.map +1 -0
  231. package/dist/server/route-rules.d.ts +45 -0
  232. package/dist/server/route-rules.d.ts.map +1 -0
  233. package/dist/server/route-rules.js +66 -0
  234. package/dist/server/route-rules.js.map +1 -0
  235. package/dist/server/seo.d.ts +58 -0
  236. package/dist/server/seo.d.ts.map +1 -0
  237. package/dist/server/seo.js +85 -0
  238. package/dist/server/seo.js.map +1 -0
  239. package/dist/server/storage/drivers/bunny.d.ts +33 -0
  240. package/dist/server/storage/drivers/bunny.d.ts.map +1 -0
  241. package/dist/server/storage/drivers/bunny.js +70 -0
  242. package/dist/server/storage/drivers/bunny.js.map +1 -0
  243. package/dist/server/storage/drivers/cloudinary.d.ts +30 -0
  244. package/dist/server/storage/drivers/cloudinary.d.ts.map +1 -0
  245. package/dist/server/storage/drivers/cloudinary.js +86 -0
  246. package/dist/server/storage/drivers/cloudinary.js.map +1 -0
  247. package/dist/server/storage/drivers/local.d.ts +28 -0
  248. package/dist/server/storage/drivers/local.d.ts.map +1 -0
  249. package/dist/server/storage/drivers/local.js +57 -0
  250. package/dist/server/storage/drivers/local.js.map +1 -0
  251. package/dist/server/storage/drivers/r2.d.ts +32 -0
  252. package/dist/server/storage/drivers/r2.d.ts.map +1 -0
  253. package/dist/server/storage/drivers/r2.js +70 -0
  254. package/dist/server/storage/drivers/r2.js.map +1 -0
  255. package/dist/server/storage/drivers/s3.d.ts +29 -0
  256. package/dist/server/storage/drivers/s3.d.ts.map +1 -0
  257. package/dist/server/storage/drivers/s3.js +68 -0
  258. package/dist/server/storage/drivers/s3.js.map +1 -0
  259. package/dist/server/storage/index.d.ts +17 -0
  260. package/dist/server/storage/index.d.ts.map +1 -0
  261. package/dist/server/storage/index.js +16 -0
  262. package/dist/server/storage/index.js.map +1 -0
  263. package/dist/server/storage/types.d.ts +70 -0
  264. package/dist/server/storage/types.d.ts.map +1 -0
  265. package/dist/server/storage/types.js +11 -0
  266. package/dist/server/storage/types.js.map +1 -0
  267. package/dist/server/storage/use-storage.d.ts +54 -0
  268. package/dist/server/storage/use-storage.d.ts.map +1 -0
  269. package/dist/server/storage/use-storage.js +150 -0
  270. package/dist/server/storage/use-storage.js.map +1 -0
  271. package/dist/server/stream-renderer.d.ts +49 -0
  272. package/dist/server/stream-renderer.d.ts.map +1 -0
  273. package/dist/server/stream-renderer.js +89 -0
  274. package/dist/server/stream-renderer.js.map +1 -0
  275. package/dist/server/templates/health.routes.d.ts +22 -0
  276. package/dist/server/templates/health.routes.d.ts.map +1 -0
  277. package/dist/server/templates/health.routes.js +28 -0
  278. package/dist/server/templates/health.routes.js.map +1 -0
  279. package/dist/server/utils/storage-url.d.ts +36 -0
  280. package/dist/server/utils/storage-url.d.ts.map +1 -0
  281. package/dist/server/utils/storage-url.js +53 -0
  282. package/dist/server/utils/storage-url.js.map +1 -0
  283. package/dist/shared/utils/autoRoutes.d.ts +22 -0
  284. package/dist/shared/utils/autoRoutes.d.ts.map +1 -0
  285. package/dist/shared/utils/autoRoutes.js +29 -0
  286. package/dist/shared/utils/autoRoutes.js.map +1 -0
  287. package/dist/shared/utils/id.d.ts +25 -0
  288. package/dist/shared/utils/id.d.ts.map +1 -0
  289. package/dist/shared/utils/id.js +29 -0
  290. package/dist/shared/utils/id.js.map +1 -0
  291. package/dist/shared/utils/logger.d.ts +33 -0
  292. package/dist/shared/utils/logger.d.ts.map +1 -0
  293. package/dist/shared/utils/logger.js +65 -0
  294. package/dist/shared/utils/logger.js.map +1 -0
  295. package/dist/shared/utils/mappers.d.ts +23 -0
  296. package/dist/shared/utils/mappers.d.ts.map +1 -0
  297. package/dist/shared/utils/mappers.js +37 -0
  298. package/dist/shared/utils/mappers.js.map +1 -0
  299. package/dist/shared/utils/pagination.d.ts +26 -0
  300. package/dist/shared/utils/pagination.d.ts.map +1 -0
  301. package/dist/shared/utils/pagination.js +28 -0
  302. package/dist/shared/utils/pagination.js.map +1 -0
  303. package/dist/shared/utils/response.d.ts +38 -0
  304. package/dist/shared/utils/response.d.ts.map +1 -0
  305. package/dist/shared/utils/response.js +46 -0
  306. package/dist/shared/utils/response.js.map +1 -0
  307. package/dist/shared/utils/softDeletes.d.ts +90 -0
  308. package/dist/shared/utils/softDeletes.d.ts.map +1 -0
  309. package/dist/shared/utils/softDeletes.js +72 -0
  310. package/dist/shared/utils/softDeletes.js.map +1 -0
  311. package/dist/types/index.d.ts +191 -0
  312. package/dist/types/index.d.ts.map +1 -0
  313. package/dist/types/index.js +12 -0
  314. package/dist/types/index.js.map +1 -0
  315. package/dist/vite/index.d.ts +30 -0
  316. package/dist/vite/index.d.ts.map +1 -0
  317. package/dist/vite/index.js +218 -0
  318. package/dist/vite/index.js.map +1 -0
  319. package/package.json +77 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Logger } from '../shared/utils/logger.js';
11
+ // ─── applyModulesToViteConfig ────────────────────────────────────────
12
+ /**
13
+ * applyModulesToViteConfig — merges module schemas, routes,
14
+ * auto-imports, and pages into the Vite config at build time.
15
+ *
16
+ * Called by the Vono Vite plugin when building the project.
17
+ *
18
+ * @param modules — registered VonoModuleDefinition array
19
+ * @param config — existing Vite UserConfig to merge into
20
+ * @returns merged Vite config
21
+ */
22
+ export function applyModulesToViteConfig(modules, config) {
23
+ const merged = { ...config };
24
+ // Collect all server-side auto-imports from modules
25
+ const serverImports = [];
26
+ const clientImports = [];
27
+ for (const module of modules) {
28
+ if (module.serverImports?.length) {
29
+ serverImports.push(...module.serverImports);
30
+ Logger.info(`[vono] Merging server imports from module: ${module.name}`);
31
+ }
32
+ if (module.clientImports?.length) {
33
+ clientImports.push(...module.clientImports);
34
+ Logger.info(`[vono] Merging client imports from module: ${module.name}`);
35
+ }
36
+ }
37
+ // Merge into Vite config via the resolve.alias or plugin options
38
+ // The actual unplugin-auto-import config is handled by the Vono Vite plugin;
39
+ // here we attach the collected imports as metadata for the plugin to consume.
40
+ if (serverImports.length > 0 || clientImports.length > 0) {
41
+ merged.define = {
42
+ ...merged.define,
43
+ '__VONO_MODULE_SERVER_IMPORTS__': JSON.stringify(serverImports),
44
+ '__VONO_MODULE_CLIENT_IMPORTS__': JSON.stringify(clientImports),
45
+ };
46
+ }
47
+ // Collect page routes from modules
48
+ const modulePages = modules.flatMap((m) => m.pages ?? []);
49
+ if (modulePages.length > 0) {
50
+ merged.define = {
51
+ ...merged.define,
52
+ '__VONO_MODULE_PAGES__': JSON.stringify(modulePages),
53
+ };
54
+ Logger.info(`[vono] Registered ${modulePages.length} page(s) from modules`);
55
+ }
56
+ // Collect API routes from modules
57
+ const moduleRoutes = modules.flatMap((m) => m.routes ?? []);
58
+ if (moduleRoutes.length > 0) {
59
+ merged.define = {
60
+ ...merged.define,
61
+ '__VONO_MODULE_ROUTES__': JSON.stringify(moduleRoutes),
62
+ };
63
+ Logger.info(`[vono] Registered ${moduleRoutes.length} route(s) from modules`);
64
+ }
65
+ return merged;
66
+ }
67
+ //# sourceMappingURL=vite-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-integration.js","sourceRoot":"","sources":["../../src/module-system/vite-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,wEAAwE;AAExE;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA+B,EAC/B,MAAkB;IAElB,MAAM,MAAM,GAAe,EAAE,GAAG,MAAM,EAAE,CAAA;IAExC,oDAAoD;IACpD,MAAM,aAAa,GAA+C,EAAE,CAAA;IACpE,MAAM,aAAa,GAA+C,EAAE,CAAA;IAEpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,8CAA8C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,8CAA8C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAC/D,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SAChE,CAAA;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SACrD,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,qBAAqB,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAA;IAC7E,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SACvD,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,qBAAqB,YAAY,CAAC,MAAM,wBAAwB,CAAC,CAAA;IAC/E,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Hono } from 'hono';
11
+ import type { VonoConfig, AppVariables, Env } from '../types/index.js';
12
+ export interface VonoAppOptions {
13
+ /**
14
+ * The resolved vono.config.ts object.
15
+ * Pass the result of defineVonoConfig() here.
16
+ */
17
+ config: VonoConfig;
18
+ /**
19
+ * Optional OpenAPI spec object.
20
+ * If provided, GET /openapi.json will serve it.
21
+ */
22
+ openApiSpec?: Record<string, unknown>;
23
+ }
24
+ /**
25
+ * createVonoApp — two-layer Hono app factory.
26
+ *
27
+ * Layer 1 (outer): global middleware (logger, prettyJSON, CORS),
28
+ * health check, robots.txt, sitemap.xml, API docs endpoints.
29
+ *
30
+ * Layer 2 (inner): versioned API router at /api/v1 with
31
+ * configProvider, dbProvider, and auto-registered module routes.
32
+ *
33
+ * Usage in your project's src/index.ts:
34
+ * ```ts
35
+ * import { createVonoApp } from 'vono/server'
36
+ * import config from '../vono.config.js'
37
+ * import openApiSpec from './openapi.js'
38
+ *
39
+ * const app = createVonoApp({ config, openApiSpec })
40
+ * export default app
41
+ * ```
42
+ */
43
+ export declare function createVonoApp(options: VonoAppOptions): Hono<{
44
+ Variables: AppVariables;
45
+ Bindings: Env;
46
+ }>;
47
+ //# sourceMappingURL=app-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-template.d.ts","sourceRoot":"","sources":["../../src/server/app-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAQ3B,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAItE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAA;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAAE,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAkFvG"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { Hono } from 'hono';
11
+ import { logger as honoLogger } from 'hono/logger';
12
+ import { prettyJSON } from 'hono/pretty-json';
13
+ import { cors } from 'hono/cors';
14
+ import { configProvider } from './middleware/configProvider.js';
15
+ import { dbProvider } from './middleware/dbProvider.js';
16
+ import { autoRegisterRoutes } from '../shared/utils/autoRoutes.js';
17
+ import { Logger } from '../shared/utils/logger.js';
18
+ // ─── Factory ────────────────────────────────────────────────────────
19
+ /**
20
+ * createVonoApp — two-layer Hono app factory.
21
+ *
22
+ * Layer 1 (outer): global middleware (logger, prettyJSON, CORS),
23
+ * health check, robots.txt, sitemap.xml, API docs endpoints.
24
+ *
25
+ * Layer 2 (inner): versioned API router at /api/v1 with
26
+ * configProvider, dbProvider, and auto-registered module routes.
27
+ *
28
+ * Usage in your project's src/index.ts:
29
+ * ```ts
30
+ * import { createVonoApp } from 'vono/server'
31
+ * import config from '../vono.config.js'
32
+ * import openApiSpec from './openapi.js'
33
+ *
34
+ * const app = createVonoApp({ config, openApiSpec })
35
+ * export default app
36
+ * ```
37
+ */
38
+ export function createVonoApp(options) {
39
+ const { config, openApiSpec } = options;
40
+ // ── Outer app ────────────────────────────────────────────────────
41
+ const app = new Hono();
42
+ // ── Global middleware ────────────────────────────────────────────
43
+ // Structured request logging via Hono's built-in logger
44
+ app.use('*', honoLogger((message) => {
45
+ Logger.info(message);
46
+ }));
47
+ // Pretty-print JSON in development
48
+ if (config.app.env !== 'production') {
49
+ app.use('*', prettyJSON());
50
+ }
51
+ // ── CORS ─────────────────────────────────────────────────────────
52
+ app.use('*', buildCorsMiddleware(config));
53
+ // ── Outer health check (GET /) ───────────────────────────────────
54
+ app.get('/', (c) => {
55
+ return c.json({
56
+ success: true,
57
+ message: `${config.app.name} API is running`,
58
+ timestamp: new Date().toISOString(),
59
+ });
60
+ });
61
+ // ── robots.txt ───────────────────────────────────────────────────
62
+ app.get('/robots.txt', (c) => {
63
+ const appUrl = config.app.url ?? '';
64
+ const body = [
65
+ 'User-agent: *',
66
+ 'Disallow: /dashboard',
67
+ 'Disallow: /admin',
68
+ 'Disallow: /settings',
69
+ 'Disallow: /api',
70
+ '',
71
+ `Sitemap: ${appUrl}/sitemap.xml`,
72
+ ].join('\n');
73
+ return c.text(body, 200, { 'Content-Type': 'text/plain' });
74
+ });
75
+ // ── sitemap.xml ──────────────────────────────────────────────────
76
+ app.get('/sitemap.xml', (c) => {
77
+ const appUrl = config.app.url ?? '';
78
+ const xml = [
79
+ '<?xml version="1.0" encoding="UTF-8"?>',
80
+ '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
81
+ ` <url><loc>${appUrl}/</loc></url>`,
82
+ '</urlset>',
83
+ ].join('\n');
84
+ return c.text(xml, 200, { 'Content-Type': 'application/xml' });
85
+ });
86
+ // ── API docs endpoints ───────────────────────────────────────────
87
+ if (config.docs) {
88
+ mountDocEndpoints(app, config, openApiSpec);
89
+ }
90
+ // ── Inner API router (Layer 2) ───────────────────────────────────
91
+ const api = new Hono();
92
+ // Apply per-request middleware on the inner router
93
+ api.use('*', configProvider);
94
+ api.use('*', dbProvider);
95
+ // Auto-discover and mount all *.routes.ts files from src/modules/
96
+ autoRegisterRoutes(api).catch((err) => {
97
+ Logger.error('[vono] autoRegisterRoutes failed', { error: String(err) });
98
+ });
99
+ // Mount inner router at /api/v1
100
+ app.route('/api/v1', api);
101
+ Logger.info(`[vono] App created — ${config.app.name} (${config.app.env})`);
102
+ return app;
103
+ }
104
+ // ─── CORS helper ────────────────────────────────────────────────────
105
+ /**
106
+ * Build CORS middleware from vono.config.ts + ALLOWED_ORIGINS env var.
107
+ *
108
+ * Priority:
109
+ * 1. config.cors.origins (explicit list in vono.config.ts)
110
+ * 2. ALLOWED_ORIGINS env var (comma-separated)
111
+ * 3. Dev auto-allow: localhost:4000 and localhost:5173
112
+ */
113
+ function buildCorsMiddleware(config) {
114
+ const isDev = config.app.env !== 'production';
115
+ // Collect allowed origins
116
+ const configOrigins = config.cors?.origins ?? [];
117
+ const envOrigins = (() => {
118
+ const raw = (typeof process !== 'undefined' ? process.env['ALLOWED_ORIGINS'] : undefined) ?? '';
119
+ return raw
120
+ .split(',')
121
+ .map((o) => o.trim())
122
+ .filter(Boolean);
123
+ })();
124
+ const devOrigins = isDev ? ['http://localhost:4000', 'http://localhost:5173'] : [];
125
+ const allOrigins = [...new Set([...configOrigins, ...envOrigins, ...devOrigins])];
126
+ return cors({
127
+ origin: allOrigins.length > 0 ? allOrigins : '*',
128
+ allowHeaders: config.cors?.allowHeaders ?? ['Content-Type', 'Authorization'],
129
+ allowMethods: config.cors?.allowMethods ?? ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
130
+ credentials: config.cors?.credentials ?? true,
131
+ });
132
+ }
133
+ // ─── API docs helper ─────────────────────────────────────────────────
134
+ /**
135
+ * Mount API documentation endpoints:
136
+ * GET /openapi.json — raw OpenAPI 3.1 spec
137
+ * GET /docs — Swagger UI
138
+ * GET /reference — Scalar API reference
139
+ * GET /fp/* — Fiberplane dev tools
140
+ */
141
+ function mountDocEndpoints(app, config, openApiSpec) {
142
+ const docsConfig = config.docs;
143
+ // ── GET /openapi.json ────────────────────────────────────────────
144
+ app.get('/openapi.json', (c) => {
145
+ if (openApiSpec) {
146
+ return c.json(openApiSpec);
147
+ }
148
+ // Fallback: minimal spec
149
+ return c.json({
150
+ openapi: '3.1.0',
151
+ info: { title: config.app.name, version: '1.0.0' },
152
+ paths: {},
153
+ });
154
+ });
155
+ // ── GET /docs (Swagger UI) ───────────────────────────────────────
156
+ if (docsConfig.swagger) {
157
+ app.get('/docs', (c) => {
158
+ const html = buildSwaggerHtml(docsConfig.openapi ?? '/openapi.json');
159
+ return c.html(html);
160
+ });
161
+ }
162
+ // ── GET /reference (Scalar) ──────────────────────────────────────
163
+ if (docsConfig.scalar) {
164
+ app.get('/reference', (c) => {
165
+ const html = buildScalarHtml(docsConfig.openapi ?? '/openapi.json', config.app.name);
166
+ return c.html(html);
167
+ });
168
+ }
169
+ // ── GET /fp/* (Fiberplane) ───────────────────────────────────────
170
+ if (docsConfig.fiberplane) {
171
+ app.get('/fp/*', (c) => {
172
+ return c.json({
173
+ message: 'Fiberplane integration — mount @fiberplane/hono in your project',
174
+ docs: 'https://fiberplane.com/docs',
175
+ });
176
+ });
177
+ }
178
+ }
179
+ // ─── HTML builders ───────────────────────────────────────────────────
180
+ function buildSwaggerHtml(specUrl) {
181
+ // Use pinned CDN versions with SRI for security
182
+ return `<!DOCTYPE html>
183
+ <html lang="en">
184
+ <head>
185
+ <meta charset="UTF-8" />
186
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
187
+ <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://unpkg.com 'unsafe-inline'; style-src 'self' https://unpkg.com 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self'">
188
+ <title>API Docs — Swagger UI</title>
189
+ <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css" />
190
+ </head>
191
+ <body>
192
+ <div id="swagger-ui"></div>
193
+ <script src="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
194
+ <script>
195
+ SwaggerUIBundle({
196
+ url: ${JSON.stringify(specUrl)},
197
+ dom_id: '#swagger-ui',
198
+ presets: [SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset],
199
+ layout: 'BaseLayout',
200
+ })
201
+ </script>
202
+ </body>
203
+ </html>`;
204
+ }
205
+ function buildScalarHtml(specUrl, title) {
206
+ // Escape title to prevent XSS
207
+ const safeTitle = title.replace(/[<>&"']/g, (c) => ({ '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;', "'": '&#39;' }[c] ?? c));
208
+ return `<!DOCTYPE html>
209
+ <html lang="en">
210
+ <head>
211
+ <meta charset="UTF-8" />
212
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
213
+ <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'unsafe-inline'; style-src 'self' 'unsafe-inline'; connect-src 'self'">
214
+ <title>${safeTitle} — API Reference</title>
215
+ </head>
216
+ <body>
217
+ <script
218
+ id="api-reference"
219
+ data-url="${specUrl}"
220
+ src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@latest/dist/browser/standalone.min.js"></script>
221
+ </body>
222
+ </html>`;
223
+ }
224
+ //# sourceMappingURL=app-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-template.js","sourceRoot":"","sources":["../../src/server/app-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import type { AuthAccount, AppVariables } from '../../types/index.js';
11
+ /** A gate handler receives the user and returns true if permitted */
12
+ export type GateHandler = (user: AuthAccount) => boolean | Promise<boolean>;
13
+ /** A policy handler receives the user and the resource */
14
+ export type PolicyHandler<T = unknown> = (user: AuthAccount, resource: T) => boolean | Promise<boolean>;
15
+ /**
16
+ * Register a gate for a named ability.
17
+ *
18
+ * @example
19
+ * registerGate('publish-post', (user) => user.currentRole === 'admin')
20
+ */
21
+ export declare function registerGate(ability: string, handler: GateHandler): void;
22
+ /**
23
+ * Register a policy for a resource type and ability.
24
+ * The key is `resourceType:ability`.
25
+ *
26
+ * @example
27
+ * registerPolicy('post:update', (user, post) => post.authorId === user.id)
28
+ */
29
+ export declare function registerPolicy<T = unknown>(resourceType: string, handler: PolicyHandler<T>): void;
30
+ /**
31
+ * Check a gate — returns true/false without throwing.
32
+ */
33
+ export declare function checkGate(user: AuthAccount, ability: string): Promise<boolean>;
34
+ /**
35
+ * Check a policy — returns true/false without throwing.
36
+ */
37
+ export declare function checkPolicy(user: AuthAccount, ability: string, resource: unknown): Promise<boolean>;
38
+ /**
39
+ * `can(user, ability, resource?)` — returns boolean, never throws.
40
+ *
41
+ * When a resource is provided, checks the policy registry.
42
+ * Otherwise checks the gate registry.
43
+ */
44
+ export declare function can(user: AuthAccount, ability: string, resource?: unknown): Promise<boolean>;
45
+ /**
46
+ * `authorize(user, ability, resource?)` — throws HTTP 403 if not permitted.
47
+ *
48
+ * @throws HTTPException 403
49
+ */
50
+ export declare function authorize(user: AuthAccount, ability: string, resource?: unknown): Promise<void>;
51
+ /**
52
+ * `gate(ability)` — Hono middleware that calls `authorize(user, ability)`.
53
+ *
54
+ * Requires `authMiddleware` to have run first (sets c.var.account).
55
+ *
56
+ * @example
57
+ * router.delete('/posts/:id', gate('delete-post'), deletePostController)
58
+ */
59
+ export declare function gate(ability: string): import("hono").MiddlewareHandler<{
60
+ Variables: AppVariables;
61
+ }, string, {}>;
62
+ /**
63
+ * `policy(ability)` — Hono middleware that calls `authorize(user, ability, resource)`.
64
+ *
65
+ * Reads the resource from `c.var.resource`. Set it in a preceding middleware:
66
+ * ```ts
67
+ * router.put('/posts/:id',
68
+ * loadResource('post', (c) => db.query.posts.findFirst({ where: eq(posts.id, c.req.param('id')) })),
69
+ * policy('post:update'),
70
+ * updatePostController,
71
+ * )
72
+ * ```
73
+ */
74
+ export declare function policy(ability: string): import("hono").MiddlewareHandler<{
75
+ Variables: AppVariables & {
76
+ resource: unknown;
77
+ };
78
+ }, string, {}>;
79
+ //# sourceMappingURL=gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../src/server/auth/gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKrE,qEAAqE;AACrE,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3E,0DAA0D;AAC1D,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CACvC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,KACR,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAO/B;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAExE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,EACxC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,IAAI,CAEN;AAID;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAID;;;;;GAKG;AACH,wBAAsB,GAAG,CACvB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC,CAMf;AAID;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM;eACG,YAAY;eAQlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM;eACC,YAAY,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE;eAW1E"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { HTTPException } from 'hono/http-exception';
11
+ import { createMiddleware } from 'hono/factory';
12
+ import { Logger } from '../../shared/utils/logger.js';
13
+ // ─── Registries ──────────────────────────────────────────────────────────────
14
+ const gateRegistry = new Map();
15
+ const policyRegistry = new Map();
16
+ /**
17
+ * Register a gate for a named ability.
18
+ *
19
+ * @example
20
+ * registerGate('publish-post', (user) => user.currentRole === 'admin')
21
+ */
22
+ export function registerGate(ability, handler) {
23
+ gateRegistry.set(ability, handler);
24
+ }
25
+ /**
26
+ * Register a policy for a resource type and ability.
27
+ * The key is `resourceType:ability`.
28
+ *
29
+ * @example
30
+ * registerPolicy('post:update', (user, post) => post.authorId === user.id)
31
+ */
32
+ export function registerPolicy(resourceType, handler) {
33
+ policyRegistry.set(resourceType, handler);
34
+ }
35
+ // ─── Core checks ─────────────────────────────────────────────────────────────
36
+ /**
37
+ * Check a gate — returns true/false without throwing.
38
+ */
39
+ export async function checkGate(user, ability) {
40
+ const handler = gateRegistry.get(ability);
41
+ if (!handler) {
42
+ Logger.warn('[gates] No gate registered for ability', { ability });
43
+ return false;
44
+ }
45
+ return handler(user);
46
+ }
47
+ /**
48
+ * Check a policy — returns true/false without throwing.
49
+ */
50
+ export async function checkPolicy(user, ability, resource) {
51
+ const handler = policyRegistry.get(ability);
52
+ if (!handler) {
53
+ Logger.warn('[gates] No policy registered for ability', { ability });
54
+ return false;
55
+ }
56
+ return handler(user, resource);
57
+ }
58
+ // ─── Public API ───────────────────────────────────────────────────────────────
59
+ /**
60
+ * `can(user, ability, resource?)` — returns boolean, never throws.
61
+ *
62
+ * When a resource is provided, checks the policy registry.
63
+ * Otherwise checks the gate registry.
64
+ */
65
+ export async function can(user, ability, resource) {
66
+ if (resource !== undefined) {
67
+ return checkPolicy(user, ability, resource);
68
+ }
69
+ return checkGate(user, ability);
70
+ }
71
+ /**
72
+ * `authorize(user, ability, resource?)` — throws HTTP 403 if not permitted.
73
+ *
74
+ * @throws HTTPException 403
75
+ */
76
+ export async function authorize(user, ability, resource) {
77
+ const permitted = await can(user, ability, resource);
78
+ if (!permitted) {
79
+ Logger.warn('[gates] Authorization denied', { userId: user.id, ability });
80
+ throw new HTTPException(403, { message: 'Forbidden: insufficient permissions' });
81
+ }
82
+ }
83
+ // ─── Middleware factories ─────────────────────────────────────────────────────
84
+ /**
85
+ * `gate(ability)` — Hono middleware that calls `authorize(user, ability)`.
86
+ *
87
+ * Requires `authMiddleware` to have run first (sets c.var.account).
88
+ *
89
+ * @example
90
+ * router.delete('/posts/:id', gate('delete-post'), deletePostController)
91
+ */
92
+ export function gate(ability) {
93
+ return createMiddleware(async (c, next) => {
94
+ const user = c.var.account;
95
+ if (!user) {
96
+ throw new HTTPException(401, { message: 'Unauthorized: not authenticated' });
97
+ }
98
+ await authorize(user, ability);
99
+ await next();
100
+ });
101
+ }
102
+ /**
103
+ * `policy(ability)` — Hono middleware that calls `authorize(user, ability, resource)`.
104
+ *
105
+ * Reads the resource from `c.var.resource`. Set it in a preceding middleware:
106
+ * ```ts
107
+ * router.put('/posts/:id',
108
+ * loadResource('post', (c) => db.query.posts.findFirst({ where: eq(posts.id, c.req.param('id')) })),
109
+ * policy('post:update'),
110
+ * updatePostController,
111
+ * )
112
+ * ```
113
+ */
114
+ export function policy(ability) {
115
+ return createMiddleware(async (c, next) => {
116
+ const user = c.var.account;
117
+ if (!user) {
118
+ throw new HTTPException(401, { message: 'Unauthorized: not authenticated' });
119
+ }
120
+ const resource = c.var.resource;
121
+ await authorize(user, ability, resource);
122
+ await next();
123
+ });
124
+ }
125
+ //# sourceMappingURL=gates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gates.js","sourceRoot":"","sources":["../../../src/server/auth/gates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ export { registerGate, registerPolicy, checkGate, checkPolicy, can, authorize, gate, policy, } from './gates.js';
11
+ export type { GateHandler, PolicyHandler } from './gates.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,EACX,GAAG,EACH,SAAS,EACT,IAAI,EACJ,MAAM,GACP,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ // Authorization — Gates & Policies
11
+ export { registerGate, registerPolicy, checkGate, checkPolicy, can, authorize, gate, policy, } from './gates.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mCAAmC;AACnC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,EACX,GAAG,EACH,SAAS,EACT,IAAI,EACJ,MAAM,GACP,MAAM,YAAY,CAAA"}