@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Bowofade Oyerinde
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # vono
2
+
3
+ Vono core runtime — config, composables, SSR helpers, and Vite plugin for building fullstack Vue applications.
4
+
5
+ ## Features
6
+
7
+ - 🔧 **Vite Plugin** — First-class Vite integration for dev and production builds
8
+ - 🖥️ **SSR Helpers** — Server-side rendering utilities with streaming support
9
+ - 🧩 **Composables** — Vue composables for state, head, routing, and more
10
+ - 🌐 **Server Runtime** — Hono-based server with middleware, sessions, and DB integration
11
+ - 📦 **Module System** — Extensible module architecture
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install vono
17
+ ```
18
+
19
+ ## Exports
20
+
21
+ | Entry | Description |
22
+ | ------------- | ---------------------------------- |
23
+ | `vono` | Core config and shared utilities |
24
+ | `vono/vite` | Vite plugin |
25
+ | `vono/server` | Server runtime (Hono, middleware) |
26
+ | `vono/client` | Client-side composables |
27
+ | `vono/types` | TypeScript type definitions |
28
+
29
+ ## Quick Start
30
+
31
+ ```ts
32
+ // vite.config.ts
33
+ import { vonoPlugin } from "vono/vite";
34
+
35
+ export default {
36
+ plugins: [vonoPlugin()],
37
+ };
38
+ ```
39
+
40
+ ## Peer Dependencies
41
+
42
+ - **Required**: `vue`, `vue-router`
43
+ - **Optional**: `hono`, `@unhead/vue`, `pinia`, `drizzle-orm`, `zod`
44
+
45
+ ## License
46
+
47
+ MIT © Bowofade Oyerinde
@@ -0,0 +1,37 @@
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 interface NavigateToOptions {
11
+ /** Replace current history entry instead of pushing */
12
+ replace?: boolean;
13
+ /** Navigate to an external URL (opens in same tab) */
14
+ external?: boolean;
15
+ /** HTTP redirect code for SSR redirects (default: 302) */
16
+ redirectCode?: number;
17
+ }
18
+ /**
19
+ * Set the SSR redirect handler. Called by the Hono renderer before
20
+ * rendering a page so that navigateTo() can trigger a server redirect.
21
+ */
22
+ export declare function setSSRRedirectHandler(handler: (url: string, code: number) => void): void;
23
+ /**
24
+ * Programmatic navigation — SSR-safe.
25
+ *
26
+ * - On server: triggers a 302 (or custom code) HTTP redirect
27
+ * - On client: uses Vue Router for SPA navigation
28
+ *
29
+ * Usage:
30
+ * ```ts
31
+ * await navigateTo('/dashboard')
32
+ * await navigateTo('/login', { replace: true })
33
+ * await navigateTo('https://example.com', { external: true })
34
+ * ```
35
+ */
36
+ export declare function navigateTo(path: string, options?: NavigateToOptions): Promise<void>;
37
+ //# sourceMappingURL=navigateTo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigateTo.d.ts","sourceRoot":"","sources":["../../../src/client/composables/navigateTo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAKD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAExF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -0,0 +1,56 @@
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
+ // SSR redirect context — set by the Hono handler before rendering
11
+ let _ssrRedirect = null;
12
+ /**
13
+ * Set the SSR redirect handler. Called by the Hono renderer before
14
+ * rendering a page so that navigateTo() can trigger a server redirect.
15
+ */
16
+ export function setSSRRedirectHandler(handler) {
17
+ _ssrRedirect = handler;
18
+ }
19
+ /**
20
+ * Programmatic navigation — SSR-safe.
21
+ *
22
+ * - On server: triggers a 302 (or custom code) HTTP redirect
23
+ * - On client: uses Vue Router for SPA navigation
24
+ *
25
+ * Usage:
26
+ * ```ts
27
+ * await navigateTo('/dashboard')
28
+ * await navigateTo('/login', { replace: true })
29
+ * await navigateTo('https://example.com', { external: true })
30
+ * ```
31
+ */
32
+ export async function navigateTo(path, options = {}) {
33
+ const { replace = false, external = false, redirectCode = 302 } = options;
34
+ // SSR: trigger server-side redirect
35
+ if (import.meta.env.SSR) {
36
+ if (_ssrRedirect) {
37
+ _ssrRedirect(path, redirectCode);
38
+ }
39
+ return;
40
+ }
41
+ // Client: use Vue Router
42
+ if (external) {
43
+ window.location.href = path;
44
+ return;
45
+ }
46
+ // Dynamic import to avoid bundling vue-router in SSR context
47
+ const { useRouter } = await import('vue-router');
48
+ const router = useRouter();
49
+ if (replace) {
50
+ await router.replace(path);
51
+ }
52
+ else {
53
+ await router.push(path);
54
+ }
55
+ }
56
+ //# sourceMappingURL=navigateTo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigateTo.js","sourceRoot":"","sources":["../../../src/client/composables/navigateTo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,kEAAkE;AAClE,IAAI,YAAY,GAAiD,IAAI,CAAA;AAErE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA4C;IAChF,YAAY,GAAG,OAAO,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,UAA6B,EAAE;IAE/B,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,YAAY,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;IAEzE,oCAAoC;IACpC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAClC,CAAC;QACD,OAAM;IACR,CAAC;IAED,yBAAyB;IACzB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;QAC3B,OAAM;IACR,CAAC;IAED,6DAA6D;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,35 @@
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 { Ref } from 'vue';
11
+ export interface AsyncDataOptions<T> {
12
+ /** Initial value before data is fetched */
13
+ default?: () => T | null;
14
+ /** Whether to skip fetching on the server */
15
+ server?: boolean;
16
+ /** Whether to skip fetching on the client (use SSR data only) */
17
+ lazy?: boolean;
18
+ }
19
+ export interface AsyncDataResult<T> {
20
+ data: Ref<T | null>;
21
+ pending: Ref<boolean>;
22
+ error: Ref<Error | null>;
23
+ refresh: () => Promise<void>;
24
+ }
25
+ /**
26
+ * Fetch data on the server during SSR, hydrate on the client without
27
+ * a duplicate fetch.
28
+ *
29
+ * Usage:
30
+ * ```ts
31
+ * const { data, pending } = useAsyncData('users', () => fetch('/api/users').then(r => r.json()))
32
+ * ```
33
+ */
34
+ export declare function useAsyncData<T>(key: string, fetcher: () => Promise<T>, options?: AsyncDataOptions<T>): AsyncDataResult<T>;
35
+ //# sourceMappingURL=useAsyncData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAsyncData.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useAsyncData.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACxB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACnB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAQD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,gBAAgB,CAAC,CAAC,CAAM,GAChC,eAAe,CAAC,CAAC,CAAC,CAkCpB"}
@@ -0,0 +1,55 @@
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 { ref, onServerPrefetch } from 'vue';
11
+ // SSR payload store — keyed by data key
12
+ const ssrPayload = typeof window !== 'undefined'
13
+ ? window.__VONO_ASYNC_DATA__ ?? {}
14
+ : {};
15
+ /**
16
+ * Fetch data on the server during SSR, hydrate on the client without
17
+ * a duplicate fetch.
18
+ *
19
+ * Usage:
20
+ * ```ts
21
+ * const { data, pending } = useAsyncData('users', () => fetch('/api/users').then(r => r.json()))
22
+ * ```
23
+ */
24
+ export function useAsyncData(key, fetcher, options = {}) {
25
+ const data = ref(ssrPayload[key] ?? options.default?.() ?? null);
26
+ const pending = ref(false);
27
+ const error = ref(null);
28
+ const fetch = async () => {
29
+ pending.value = true;
30
+ error.value = null;
31
+ try {
32
+ data.value = await fetcher();
33
+ // Store in SSR payload for client hydration
34
+ if (import.meta.env.SSR) {
35
+ ssrPayload[key] = data.value;
36
+ }
37
+ }
38
+ catch (err) {
39
+ error.value = err instanceof Error ? err : new Error(String(err));
40
+ }
41
+ finally {
42
+ pending.value = false;
43
+ }
44
+ };
45
+ // On server: fetch during SSR (before renderToString completes)
46
+ if (import.meta.env.SSR && options.server !== false) {
47
+ onServerPrefetch(fetch);
48
+ }
49
+ // On client: only fetch if data wasn't hydrated from SSR
50
+ if (!import.meta.env.SSR && !ssrPayload[key] && !options.lazy) {
51
+ fetch();
52
+ }
53
+ return { data, pending, error, refresh: fetch };
54
+ }
55
+ //# sourceMappingURL=useAsyncData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAsyncData.js","sourceRoot":"","sources":["../../../src/client/composables/useAsyncData.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAA;AAmB3C,wCAAwC;AACxC,MAAM,UAAU,GACd,OAAO,MAAM,KAAK,WAAW;IAC3B,CAAC,CAAG,MAA6C,CAAC,mBAA+C,IAAI,EAAE;IACvG,CAAC,CAAC,EAAE,CAAA;AAER;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,OAAyB,EACzB,UAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,GAAG,CACb,UAAU,CAAC,GAAG,CAAc,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAC5C,CAAA;IAClB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG,GAAG,CAAe,IAAI,CAAC,CAAA;IAErC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,MAAM,OAAO,EAAE,CAAA;YAC5B,4CAA4C;YAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACnE,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;IAED,gEAAgE;IAChE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACpD,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9D,KAAK,EAAE,CAAA;IACT,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AACjD,CAAC"}
@@ -0,0 +1,33 @@
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 { Ref } from 'vue';
11
+ export interface CookieOptions {
12
+ maxAge?: number;
13
+ expires?: Date;
14
+ path?: string;
15
+ domain?: string;
16
+ secure?: boolean;
17
+ httpOnly?: boolean;
18
+ sameSite?: 'Strict' | 'Lax' | 'None';
19
+ }
20
+ /**
21
+ * SSR-safe cookie read/write composable.
22
+ *
23
+ * - On server: reads from the SSR context (injected via provide/inject)
24
+ * - On client: reads/writes document.cookie
25
+ *
26
+ * Usage:
27
+ * ```ts
28
+ * const token = useCookie('auth_token')
29
+ * token.value = 'new-token' // sets cookie
30
+ * ```
31
+ */
32
+ export declare function useCookie(name: string, options?: CookieOptions): Ref<string | null>;
33
+ //# sourceMappingURL=useCookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCookie.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useCookie.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CACrC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCvF"}
@@ -0,0 +1,61 @@
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 { ref } from 'vue';
11
+ /**
12
+ * SSR-safe cookie read/write composable.
13
+ *
14
+ * - On server: reads from the SSR context (injected via provide/inject)
15
+ * - On client: reads/writes document.cookie
16
+ *
17
+ * Usage:
18
+ * ```ts
19
+ * const token = useCookie('auth_token')
20
+ * token.value = 'new-token' // sets cookie
21
+ * ```
22
+ */
23
+ export function useCookie(name, options = {}) {
24
+ const getValue = () => {
25
+ if (typeof document === 'undefined') {
26
+ // SSR: cookies are not directly accessible here
27
+ // The app should inject cookies via provide/inject from the Hono context
28
+ return null;
29
+ }
30
+ const match = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`));
31
+ return match ? decodeURIComponent(match[1]) : null;
32
+ };
33
+ const cookie = ref(getValue());
34
+ // Override the setter to write to document.cookie on the client
35
+ return new Proxy(cookie, {
36
+ set(target, prop, value) {
37
+ if (prop === 'value') {
38
+ target.value = value;
39
+ if (typeof document !== 'undefined' && value !== null) {
40
+ let cookieStr = `${name}=${encodeURIComponent(value)}`;
41
+ if (options.maxAge !== undefined)
42
+ cookieStr += `; max-age=${options.maxAge}`;
43
+ if (options.expires)
44
+ cookieStr += `; expires=${options.expires.toUTCString()}`;
45
+ if (options.path)
46
+ cookieStr += `; path=${options.path}`;
47
+ if (options.domain)
48
+ cookieStr += `; domain=${options.domain}`;
49
+ if (options.secure)
50
+ cookieStr += '; secure';
51
+ if (options.sameSite)
52
+ cookieStr += `; samesite=${options.sameSite}`;
53
+ document.cookie = cookieStr;
54
+ }
55
+ return true;
56
+ }
57
+ return Reflect.set(target, prop, value);
58
+ },
59
+ });
60
+ }
61
+ //# sourceMappingURL=useCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCookie.js","sourceRoot":"","sources":["../../../src/client/composables/useCookie.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAazB;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,UAAyB,EAAE;IACjE,MAAM,QAAQ,GAAG,GAAkB,EAAE;QACnC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,gDAAgD;YAChD,yEAAyE;YACzE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,CAAA;QAC1E,OAAO,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,GAAG,CAAgB,QAAQ,EAAE,CAAC,CAAA;IAE7C,gEAAgE;IAChE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK;YACrB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,GAAG,KAAsB,CAAA;gBAErC,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACtD,IAAI,SAAS,GAAG,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAe,CAAC,EAAE,CAAA;oBAChE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;wBAAE,SAAS,IAAI,aAAa,OAAO,CAAC,MAAM,EAAE,CAAA;oBAC5E,IAAI,OAAO,CAAC,OAAO;wBAAE,SAAS,IAAI,aAAa,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;oBAC9E,IAAI,OAAO,CAAC,IAAI;wBAAE,SAAS,IAAI,UAAU,OAAO,CAAC,IAAI,EAAE,CAAA;oBACvD,IAAI,OAAO,CAAC,MAAM;wBAAE,SAAS,IAAI,YAAY,OAAO,CAAC,MAAM,EAAE,CAAA;oBAC7D,IAAI,OAAO,CAAC,MAAM;wBAAE,SAAS,IAAI,UAAU,CAAA;oBAC3C,IAAI,OAAO,CAAC,QAAQ;wBAAE,SAAS,IAAI,cAAc,OAAO,CAAC,QAAQ,EAAE,CAAA;oBACnE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAA;gBAC7B,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,34 @@
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
+ /**
11
+ * Manage form validation errors from API responses.
12
+ *
13
+ * Maps the standard { errors: { field: message } } API error shape
14
+ * directly to form field error display.
15
+ *
16
+ * Usage:
17
+ * ```ts
18
+ * const { errors, setErrors, clearErrors, getError } = useFormErrors()
19
+ *
20
+ * try {
21
+ * await submitForm()
22
+ * } catch (err) {
23
+ * if (err.status === 422) setErrors(err.data.errors)
24
+ * }
25
+ * ```
26
+ */
27
+ export declare function useFormErrors(): {
28
+ errors: import("vue").Ref<Record<string, string>, Record<string, string>>;
29
+ hasErrors: import("vue").ComputedRef<boolean>;
30
+ setErrors: (newErrors: Record<string, string> | string[] | undefined) => void;
31
+ clearErrors: (field?: string) => void;
32
+ getError: (field: string) => string | undefined;
33
+ };
34
+ //# sourceMappingURL=useFormErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormErrors.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useFormErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa;;;2BAIG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,KAAG,IAAI;0BAarD,MAAM,KAAG,IAAI;sBASjB,MAAM,KAAG,MAAM,GAAG,SAAS;EAKrD"}
@@ -0,0 +1,59 @@
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 { ref, computed } from 'vue';
11
+ /**
12
+ * Manage form validation errors from API responses.
13
+ *
14
+ * Maps the standard { errors: { field: message } } API error shape
15
+ * directly to form field error display.
16
+ *
17
+ * Usage:
18
+ * ```ts
19
+ * const { errors, setErrors, clearErrors, getError } = useFormErrors()
20
+ *
21
+ * try {
22
+ * await submitForm()
23
+ * } catch (err) {
24
+ * if (err.status === 422) setErrors(err.data.errors)
25
+ * }
26
+ * ```
27
+ */
28
+ export function useFormErrors() {
29
+ const errors = ref({});
30
+ const hasErrors = computed(() => Object.keys(errors.value).length > 0);
31
+ function setErrors(newErrors) {
32
+ if (!newErrors)
33
+ return;
34
+ if (Array.isArray(newErrors)) {
35
+ // Array of error strings — map to a generic key
36
+ errors.value = newErrors.reduce((acc, msg, i) => {
37
+ acc[`error_${i}`] = msg;
38
+ return acc;
39
+ }, {});
40
+ }
41
+ else {
42
+ errors.value = { ...newErrors };
43
+ }
44
+ }
45
+ function clearErrors(field) {
46
+ if (field) {
47
+ const { [field]: _, ...rest } = errors.value;
48
+ errors.value = rest;
49
+ }
50
+ else {
51
+ errors.value = {};
52
+ }
53
+ }
54
+ function getError(field) {
55
+ return errors.value[field];
56
+ }
57
+ return { errors, hasErrors, setErrors, clearErrors, getError };
58
+ }
59
+ //# sourceMappingURL=useFormErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormErrors.js","sourceRoot":"","sources":["../../../src/client/composables/useFormErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAyB,EAAE,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEtE,SAAS,SAAS,CAAC,SAAwD;QACzE,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,gDAAgD;YAChD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;gBACvB,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QACR,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;QACjC,CAAC;IACH,CAAC;IAED,SAAS,WAAW,CAAC,KAAc;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;YAC5C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAChE,CAAC"}
@@ -0,0 +1,26 @@
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 { RouteRule } from '../../server/route-rules.js';
11
+ /**
12
+ * Get the route rule for the current page.
13
+ *
14
+ * Usage:
15
+ * ```ts
16
+ * const { mode, cache } = useRouteRules()
17
+ * if (mode.value === 'spa') { ... }
18
+ * ```
19
+ */
20
+ export declare function useRouteRules(): {
21
+ mode: import("vue").ComputedRef<import("../../server/route-rules.js").RenderMode>;
22
+ cache: import("vue").ComputedRef<number | undefined>;
23
+ swr: import("vue").ComputedRef<boolean | undefined>;
24
+ rule: import("vue").ComputedRef<RouteRule>;
25
+ };
26
+ //# sourceMappingURL=useRouteRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRouteRules.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useRouteRules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAK5D;;;;;;;;GAQG;AACH,wBAAgB,aAAa;;;;;EAwB5B"}
@@ -0,0 +1,44 @@
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 { computed } from 'vue';
11
+ import { useRoute } from 'vue-router';
12
+ /**
13
+ * Get the route rule for the current page.
14
+ *
15
+ * Usage:
16
+ * ```ts
17
+ * const { mode, cache } = useRouteRules()
18
+ * if (mode.value === 'spa') { ... }
19
+ * ```
20
+ */
21
+ export function useRouteRules() {
22
+ const route = useRoute();
23
+ const rule = computed(() => {
24
+ const rules = typeof __VONO_ROUTE_RULES__ !== 'undefined' ? __VONO_ROUTE_RULES__ : {};
25
+ const path = route.path;
26
+ for (const [pattern, r] of Object.entries(rules)) {
27
+ if (pattern === path)
28
+ return r;
29
+ if (pattern.endsWith('/**')) {
30
+ const prefix = pattern.slice(0, -3);
31
+ if (path === prefix || path.startsWith(prefix + '/'))
32
+ return r;
33
+ }
34
+ }
35
+ return { mode: 'ssr' };
36
+ });
37
+ return {
38
+ mode: computed(() => rule.value.mode),
39
+ cache: computed(() => rule.value.cache),
40
+ swr: computed(() => rule.value.swr),
41
+ rule,
42
+ };
43
+ }
44
+ //# sourceMappingURL=useRouteRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRouteRules.js","sourceRoot":"","sources":["../../../src/client/composables/useRouteRules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAMrC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAY,GAAG,EAAE;QACpC,MAAM,KAAK,GAAG,OAAO,oBAAoB,KAAK,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAA;QACrF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QAEvB,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAA;YAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACnC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;oBAAE,OAAO,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACnC,IAAI;KACL,CAAA;AACH,CAAC"}
@@ -0,0 +1,35 @@
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 interface SeoOptions {
11
+ title: string;
12
+ description: string;
13
+ canonical?: string;
14
+ ogImage?: string;
15
+ ogType?: string;
16
+ twitterCard?: 'summary' | 'summary_large_image';
17
+ noIndex?: boolean;
18
+ structuredData?: Record<string, unknown>;
19
+ }
20
+ /**
21
+ * Set all SEO meta tags for the current page.
22
+ * Works in both SSR and client — tags are server-rendered into HTML.
23
+ *
24
+ * Usage:
25
+ * ```ts
26
+ * useSeo({
27
+ * title: 'My Page',
28
+ * description: 'Page description',
29
+ * canonical: '/my-page',
30
+ * ogImage: '/images/og.png',
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function useSeo(options: SeoOptions): void;
35
+ //# sourceMappingURL=useSeo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSeo.d.ts","sourceRoot":"","sources":["../../../src/client/composables/useSeo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAA;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAyChD"}