create-nexwire 4.3.0 → 4.4.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 (326) hide show
  1. package/README.md +10 -5
  2. package/express/src/framework/facade.ts +1 -0
  3. package/express/src/framework/http/logger.ts +13 -4
  4. package/express/src/framework/maker-cli/runtime/core.mjs +1 -2
  5. package/express/src/framework/notification/channels/mail.ts +8 -6
  6. package/express/src/middlewares/auth-middleware.ts +1 -2
  7. package/express/src/middlewares/role-middleware.ts +3 -13
  8. package/express/src/modules/auth/routes/index.ts +1 -2
  9. package/express/src/providers/notification.ts +2 -2
  10. package/express/src/resources/src/components/Switch.vue +60 -65
  11. package/express/src/resources/src/pages/auth/forgetPassword.vue +23 -30
  12. package/express/src/resources/src/pages/auth/login.vue +25 -28
  13. package/express/src/resources/src/pages/auth/register.vue +35 -39
  14. package/express/src/resources/src/pages/auth/resetPassword.vue +29 -37
  15. package/express/src/resources/src/pages/auth/verifyEmail.vue +15 -19
  16. package/express/src/resources/src/plugins/gum.ts +519 -203
  17. package/express/src/resources/src/stores/auth.ts +9 -6
  18. package/express/src/storage/database/nexwire.sqlite +0 -0
  19. package/fastify/.dockerignore +14 -0
  20. package/fastify/.env +44 -0
  21. package/fastify/.env.example +42 -0
  22. package/fastify/.vscode/extensions.json +6 -0
  23. package/fastify/.vscode/settings.json +37 -0
  24. package/fastify/LICENSE +21 -0
  25. package/fastify/README.md +232 -0
  26. package/fastify/biome.json +99 -0
  27. package/fastify/drizzle.config.ts +25 -0
  28. package/fastify/gitignore-stub +31 -0
  29. package/fastify/package.json +130 -0
  30. package/fastify/public/.gitkeep +0 -0
  31. package/fastify/src/config/app.ts +41 -0
  32. package/fastify/src/config/auth.ts +12 -0
  33. package/fastify/src/config/cache.ts +16 -0
  34. package/fastify/src/config/cookie.ts +15 -0
  35. package/fastify/src/config/cors.ts +12 -0
  36. package/fastify/src/config/database.ts +48 -0
  37. package/fastify/src/config/index.ts +83 -0
  38. package/fastify/src/config/jwt.ts +19 -0
  39. package/fastify/src/config/logging.ts +13 -0
  40. package/fastify/src/config/mail.ts +24 -0
  41. package/fastify/src/config/openapi.ts +36 -0
  42. package/fastify/src/config/queue.ts +30 -0
  43. package/fastify/src/config/rateLimit.ts +17 -0
  44. package/fastify/src/config/realtime.ts +15 -0
  45. package/fastify/src/config/redis.ts +18 -0
  46. package/fastify/src/config/security.ts +44 -0
  47. package/fastify/src/config/session.ts +17 -0
  48. package/fastify/src/config/storage.ts +22 -0
  49. package/fastify/src/config/validate.ts +50 -0
  50. package/fastify/src/database/migrations/sqlite/0000_init.sql +48 -0
  51. package/fastify/src/database/migrations/sqlite/meta/0000_snapshot.json +324 -0
  52. package/fastify/src/database/migrations/sqlite/meta/_journal.json +13 -0
  53. package/fastify/src/database/schema.ts +2 -0
  54. package/fastify/src/env.ts +76 -0
  55. package/fastify/src/framework/cache/cache.ts +114 -0
  56. package/fastify/src/framework/circuit-breaker/cb.ts +88 -0
  57. package/fastify/src/framework/database/app-schema.ts +37 -0
  58. package/fastify/src/framework/database/connection.ts +223 -0
  59. package/fastify/src/framework/database/migrate-hooks.ts +87 -0
  60. package/fastify/src/framework/database/paginate.ts +226 -0
  61. package/fastify/src/framework/database/schema.ts +20 -0
  62. package/fastify/src/framework/database/seed.ts +152 -0
  63. package/fastify/src/framework/events/dispatcher.ts +61 -0
  64. package/fastify/src/framework/facade.ts +96 -0
  65. package/fastify/src/framework/http/app.ts +176 -0
  66. package/fastify/src/framework/http/cors.ts +13 -0
  67. package/fastify/src/framework/http/fastify.d.ts +13 -0
  68. package/fastify/src/framework/http/logger.ts +110 -0
  69. package/fastify/src/framework/http/metrics.ts +22 -0
  70. package/fastify/src/framework/http/openapi.ts +48 -0
  71. package/fastify/src/framework/http/ratelimiter.ts +47 -0
  72. package/fastify/src/framework/http/security.ts +25 -0
  73. package/fastify/src/framework/http/static.ts +83 -0
  74. package/fastify/src/framework/http/validation.ts +49 -0
  75. package/fastify/src/framework/kernel.ts +43 -0
  76. package/fastify/src/framework/maker-cli/db/core.mjs +291 -0
  77. package/fastify/src/framework/maker-cli/db/index.mjs +204 -0
  78. package/fastify/src/framework/maker-cli/deploy/core.mjs +1046 -0
  79. package/fastify/src/framework/maker-cli/deploy/index.mjs +91 -0
  80. package/fastify/src/framework/maker-cli/index.mjs +65 -0
  81. package/fastify/src/framework/maker-cli/middleware/core.mjs +41 -0
  82. package/fastify/src/framework/maker-cli/middleware/index.mjs +17 -0
  83. package/fastify/src/framework/maker-cli/module/core.mjs +1066 -0
  84. package/fastify/src/framework/maker-cli/module/index.mjs +211 -0
  85. package/fastify/src/framework/maker-cli/provider/core.mjs +49 -0
  86. package/fastify/src/framework/maker-cli/provider/index.mjs +12 -0
  87. package/fastify/src/framework/maker-cli/runtime/build-ui.mjs +16 -0
  88. package/fastify/src/framework/maker-cli/runtime/core.mjs +560 -0
  89. package/fastify/src/framework/maker-cli/runtime/index.mjs +120 -0
  90. package/fastify/src/framework/maker-cli/runtime/redis-commander-patch.cjs +20 -0
  91. package/fastify/src/framework/maker-cli/stubs/controller/openapi.ts.stub +74 -0
  92. package/fastify/src/framework/maker-cli/stubs/controller/plain.ts.stub +77 -0
  93. package/fastify/src/framework/maker-cli/stubs/controller/standalone.ts.stub +51 -0
  94. package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +52 -0
  95. package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +55 -0
  96. package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +51 -0
  97. package/fastify/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +55 -0
  98. package/fastify/src/framework/maker-cli/stubs/deploy/README.stub +59 -0
  99. package/fastify/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +45 -0
  100. package/fastify/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +45 -0
  101. package/fastify/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +45 -0
  102. package/fastify/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +68 -0
  103. package/fastify/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +68 -0
  104. package/fastify/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +67 -0
  105. package/fastify/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +41 -0
  106. package/fastify/src/framework/maker-cli/stubs/deploy/server/README.stub +78 -0
  107. package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +120 -0
  108. package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +133 -0
  109. package/fastify/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +131 -0
  110. package/fastify/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +11 -0
  111. package/fastify/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +25 -0
  112. package/fastify/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +25 -0
  113. package/fastify/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +16 -0
  114. package/fastify/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +13 -0
  115. package/fastify/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +14 -0
  116. package/fastify/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +7 -0
  117. package/fastify/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +54 -0
  118. package/fastify/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +70 -0
  119. package/fastify/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +25 -0
  120. package/fastify/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +24 -0
  121. package/fastify/src/framework/maker-cli/stubs/facade/name.ts.stub +12 -0
  122. package/fastify/src/framework/maker-cli/stubs/helper/name.ts.stub +14 -0
  123. package/fastify/src/framework/maker-cli/stubs/job/name.ts.stub +25 -0
  124. package/fastify/src/framework/maker-cli/stubs/middleware/name.local.ts.stub +15 -0
  125. package/fastify/src/framework/maker-cli/stubs/middleware/name.ts.stub +15 -0
  126. package/fastify/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +10 -0
  127. package/fastify/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +10 -0
  128. package/fastify/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +10 -0
  129. package/fastify/src/framework/maker-cli/stubs/notification/controller.ts.stub +79 -0
  130. package/fastify/src/framework/maker-cli/stubs/notification/job.ts.stub +11 -0
  131. package/fastify/src/framework/maker-cli/stubs/notification/model.ts.stub +29 -0
  132. package/fastify/src/framework/maker-cli/stubs/notification/provider.ts.stub +174 -0
  133. package/fastify/src/framework/maker-cli/stubs/notification/route.api.ts.stub +71 -0
  134. package/fastify/src/framework/maker-cli/stubs/notification/route.plain.ts.stub +15 -0
  135. package/fastify/src/framework/maker-cli/stubs/notification/schema.plain.ts.stub +26 -0
  136. package/fastify/src/framework/maker-cli/stubs/notification/schema.ts.stub +26 -0
  137. package/fastify/src/framework/maker-cli/stubs/provider/module-barrel.ts.stub +19 -0
  138. package/fastify/src/framework/maker-cli/stubs/provider/module.ts.stub +21 -0
  139. package/fastify/src/framework/maker-cli/stubs/provider/name.ts.stub +21 -0
  140. package/fastify/src/framework/maker-cli/stubs/route/api.ts.stub +101 -0
  141. package/fastify/src/framework/maker-cli/stubs/route/plain.ts.stub +23 -0
  142. package/fastify/src/framework/maker-cli/stubs/route/standalone.api.ts.stub +120 -0
  143. package/fastify/src/framework/maker-cli/stubs/route/standalone.plain.ts.stub +50 -0
  144. package/fastify/src/framework/maker-cli/stubs/schedule/name.ts.stub +36 -0
  145. package/fastify/src/framework/maker-cli/stubs/schema/name.plain.ts.stub +14 -0
  146. package/fastify/src/framework/maker-cli/stubs/schema/name.ts.stub +33 -0
  147. package/fastify/src/framework/maker-cli/stubs/seeder/name.ts.stub +18 -0
  148. package/fastify/src/framework/maker-cli/stubs/seeder/standalone.ts.stub +22 -0
  149. package/fastify/src/framework/maker-cli/stubs/service/name.plain.ts.stub +67 -0
  150. package/fastify/src/framework/maker-cli/stubs/service/name.ts.stub +65 -0
  151. package/fastify/src/framework/maker-cli/stubs/test/unit.ts.stub +22 -0
  152. package/fastify/src/framework/maker-cli/stubs/type/name.ts.stub +22 -0
  153. package/fastify/src/framework/maker-cli/utils/env-config.mjs +44 -0
  154. package/fastify/src/framework/maker-cli/utils/env-db.mjs +61 -0
  155. package/fastify/src/framework/maker-cli/utils/file-ops.mjs +30 -0
  156. package/fastify/src/framework/maker-cli/utils/flags.mjs +14 -0
  157. package/fastify/src/framework/maker-cli/utils/help.mjs +379 -0
  158. package/fastify/src/framework/maker-cli/utils/naming.mjs +119 -0
  159. package/fastify/src/framework/maker-cli/utils/process.mjs +52 -0
  160. package/fastify/src/framework/maker-cli/utils/project-commands.mjs +201 -0
  161. package/fastify/src/framework/modules/discover.ts +57 -0
  162. package/fastify/src/framework/modules/routes.ts +31 -0
  163. package/fastify/src/framework/notification/channels/broadcast.ts +15 -0
  164. package/fastify/src/framework/notification/channels/mail.ts +42 -0
  165. package/fastify/src/framework/notification/contracts.ts +29 -0
  166. package/fastify/src/framework/notification/index.ts +59 -0
  167. package/fastify/src/framework/notification/registry.ts +15 -0
  168. package/fastify/src/framework/providers/adapter.ts +149 -0
  169. package/fastify/src/framework/providers/contracts.ts +126 -0
  170. package/fastify/src/framework/providers/loader.ts +105 -0
  171. package/fastify/src/framework/providers/registry.ts +88 -0
  172. package/fastify/src/framework/queue/clear.ts +22 -0
  173. package/fastify/src/framework/queue/queue.ts +401 -0
  174. package/fastify/src/framework/queue/ui.ts +194 -0
  175. package/fastify/src/framework/queue/worker.ts +61 -0
  176. package/fastify/src/framework/realtime/broadcast.ts +70 -0
  177. package/fastify/src/framework/realtime/index.ts +2 -0
  178. package/fastify/src/framework/realtime/socket-cookie.ts +72 -0
  179. package/fastify/src/framework/realtime/socket.ts +149 -0
  180. package/fastify/src/framework/realtime/types.ts +6 -0
  181. package/fastify/src/framework/realtime/ui.ts +16 -0
  182. package/fastify/src/framework/redis/client.ts +148 -0
  183. package/fastify/src/framework/runtime/runtime.ts +23 -0
  184. package/fastify/src/framework/runtime/server-adapter.ts +33 -0
  185. package/fastify/src/framework/scheduler/lock.ts +128 -0
  186. package/fastify/src/framework/scheduler/run.ts +48 -0
  187. package/fastify/src/framework/scheduler/scheduler.ts +155 -0
  188. package/fastify/src/framework/server.ts +162 -0
  189. package/fastify/src/framework/session/session.ts +160 -0
  190. package/fastify/src/framework/storage/storage.ts +744 -0
  191. package/fastify/src/framework/support/cookie.ts +71 -0
  192. package/fastify/src/framework/support/jwt.ts +33 -0
  193. package/fastify/src/framework/support/lifecycle.ts +35 -0
  194. package/fastify/src/framework/support/logger.ts +148 -0
  195. package/fastify/src/framework/support/mail.ts +56 -0
  196. package/fastify/src/framework/support/password.ts +23 -0
  197. package/fastify/src/framework/support/status-codes.ts +75 -0
  198. package/fastify/src/framework/support/upload.ts +181 -0
  199. package/fastify/src/framework/support/url.ts +41 -0
  200. package/fastify/src/middlewares/auth-middleware.ts +134 -0
  201. package/fastify/src/middlewares/role-middleware.ts +19 -0
  202. package/fastify/src/modules/auth/__tests__/forgetpass.test.ts +200 -0
  203. package/fastify/src/modules/auth/__tests__/login.test.ts +171 -0
  204. package/fastify/src/modules/auth/__tests__/logout.test.ts +60 -0
  205. package/fastify/src/modules/auth/__tests__/logoutalldevices.test.ts +49 -0
  206. package/fastify/src/modules/auth/__tests__/me.test.ts +91 -0
  207. package/fastify/src/modules/auth/__tests__/refreshtoken.test.ts +305 -0
  208. package/fastify/src/modules/auth/__tests__/register.test.ts +291 -0
  209. package/fastify/src/modules/auth/__tests__/resetpass.test.ts +206 -0
  210. package/fastify/src/modules/auth/__tests__/verifyemail.test.ts +183 -0
  211. package/fastify/src/modules/auth/controllers/auth.ts +252 -0
  212. package/fastify/src/modules/auth/controllers/role.ts +35 -0
  213. package/fastify/src/modules/auth/database/models/role.ts +14 -0
  214. package/fastify/src/modules/auth/database/models/user.ts +46 -0
  215. package/fastify/src/modules/auth/database/seeders/role.ts +18 -0
  216. package/fastify/src/modules/auth/database/seeders/user.ts +35 -0
  217. package/fastify/src/modules/auth/facade.ts +12 -0
  218. package/fastify/src/modules/auth/helpers/auth.ts +115 -0
  219. package/fastify/src/modules/auth/jobs/forgetpass.ts +20 -0
  220. package/fastify/src/modules/auth/jobs/registeruser.ts +23 -0
  221. package/fastify/src/modules/auth/jobs/verifyemail.ts +18 -0
  222. package/fastify/src/modules/auth/routes/index.ts +185 -0
  223. package/fastify/src/modules/auth/routes/role.ts +56 -0
  224. package/fastify/src/modules/auth/schemas/auth.ts +116 -0
  225. package/fastify/src/modules/auth/services/forgetpassword.ts +66 -0
  226. package/fastify/src/modules/auth/services/login.ts +63 -0
  227. package/fastify/src/modules/auth/services/logout.ts +25 -0
  228. package/fastify/src/modules/auth/services/logoutalldevices.ts +19 -0
  229. package/fastify/src/modules/auth/services/me.ts +31 -0
  230. package/fastify/src/modules/auth/services/refreshtoken.ts +110 -0
  231. package/fastify/src/modules/auth/services/register.ts +141 -0
  232. package/fastify/src/modules/auth/services/resetpassword.ts +69 -0
  233. package/fastify/src/modules/auth/services/verifyemail.ts +77 -0
  234. package/fastify/src/modules/auth/types/auth.ts +31 -0
  235. package/fastify/src/providers/README.md +107 -0
  236. package/fastify/src/providers/notification.ts +4 -0
  237. package/fastify/src/resources/index.html +17 -0
  238. package/fastify/src/resources/src/App.vue +5 -0
  239. package/fastify/src/resources/src/assets/css/styles.css +14761 -0
  240. package/fastify/src/resources/src/assets/css/styles.css.map +1 -0
  241. package/fastify/src/resources/src/assets/fonts/public-sans/public-sans-latin-ext.woff2 +0 -0
  242. package/fastify/src/resources/src/assets/fonts/public-sans/public-sans-latin.woff2 +0 -0
  243. package/fastify/src/resources/src/assets/images/favicon/favicon.ico +0 -0
  244. package/fastify/src/resources/src/assets/images/logo.png +0 -0
  245. package/fastify/src/resources/src/assets/scss/custom.css +217 -0
  246. package/fastify/src/resources/src/assets/scss/custom.css.map +1 -0
  247. package/fastify/src/resources/src/assets/scss/custom.scss +1346 -0
  248. package/fastify/src/resources/src/components/Button.vue +32 -0
  249. package/fastify/src/resources/src/components/Checkbox.vue +32 -0
  250. package/fastify/src/resources/src/components/Datepicker.vue +106 -0
  251. package/fastify/src/resources/src/components/FeatureButton.vue +53 -0
  252. package/fastify/src/resources/src/components/FloatButton.vue +33 -0
  253. package/fastify/src/resources/src/components/Href.vue +32 -0
  254. package/fastify/src/resources/src/components/Input.vue +243 -0
  255. package/fastify/src/resources/src/components/InputGroup.vue +147 -0
  256. package/fastify/src/resources/src/components/InputPasswordToggle.vue +229 -0
  257. package/fastify/src/resources/src/components/Modal.vue +71 -0
  258. package/fastify/src/resources/src/components/Pagebar.vue +26 -0
  259. package/fastify/src/resources/src/components/Refresh.vue +19 -0
  260. package/fastify/src/resources/src/components/Select.vue +384 -0
  261. package/fastify/src/resources/src/components/Spinner.vue +42 -0
  262. package/fastify/src/resources/src/components/Switch.vue +60 -0
  263. package/fastify/src/resources/src/components/TextArea.vue +117 -0
  264. package/fastify/src/resources/src/components/Toast.vue +56 -0
  265. package/fastify/src/resources/src/components/datatable/DataTableSkeleton.vue +98 -0
  266. package/fastify/src/resources/src/components/datatable/Pagination.vue +147 -0
  267. package/fastify/src/resources/src/components/datatable/SelectOpption.vue +64 -0
  268. package/fastify/src/resources/src/components/datatable/index.vue +199 -0
  269. package/fastify/src/resources/src/composables/useAuth.ts +52 -0
  270. package/fastify/src/resources/src/helpers/assets.ts +51 -0
  271. package/fastify/src/resources/src/helpers/nformatter.ts +10 -0
  272. package/fastify/src/resources/src/helpers/utils.ts +75 -0
  273. package/fastify/src/resources/src/layouts/AuthLayout.vue +20 -0
  274. package/fastify/src/resources/src/layouts/Layout/Footer.vue +23 -0
  275. package/fastify/src/resources/src/layouts/Layout/Header.vue +124 -0
  276. package/fastify/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
  277. package/fastify/src/resources/src/layouts/Layout/index.vue +87 -0
  278. package/fastify/src/resources/src/main.ts +28 -0
  279. package/fastify/src/resources/src/pages/auth/forgetPassword.vue +76 -0
  280. package/fastify/src/resources/src/pages/auth/login.vue +96 -0
  281. package/fastify/src/resources/src/pages/auth/register.vue +129 -0
  282. package/fastify/src/resources/src/pages/auth/resetPassword.vue +110 -0
  283. package/fastify/src/resources/src/pages/auth/verifyEmail.vue +64 -0
  284. package/fastify/src/resources/src/pages/dashboard/index.vue +66 -0
  285. package/fastify/src/resources/src/plugins/axios.ts +31 -0
  286. package/fastify/src/resources/src/plugins/browserDetect.ts +55 -0
  287. package/fastify/src/resources/src/plugins/dialog.ts +216 -0
  288. package/fastify/src/resources/src/plugins/gum.ts +683 -0
  289. package/fastify/src/resources/src/plugins/pulse.ts +157 -0
  290. package/fastify/src/resources/src/plugins/routeProgress.ts +87 -0
  291. package/fastify/src/resources/src/router/index.ts +85 -0
  292. package/fastify/src/resources/src/stores/admin-ui.ts +148 -0
  293. package/fastify/src/resources/src/stores/auth.ts +187 -0
  294. package/fastify/src/resources/tsconfig.json +19 -0
  295. package/fastify/src/resources/vite.config.ts +64 -0
  296. package/fastify/src/storage/app/private/.gitkeep +0 -0
  297. package/fastify/src/storage/app/public/.gitkeep +0 -0
  298. package/fastify/src/storage/app/tmp/generated/.gitkeep +0 -0
  299. package/fastify/src/storage/database/nexwire.sqlite +0 -0
  300. package/fastify/src/storage/logs/.gitkeep +0 -0
  301. package/fastify/src/storage/logs/app.log +0 -0
  302. package/fastify/src/storage/logs/fatal.log +0 -0
  303. package/fastify/src/storage/tmp/.gitkeep +0 -0
  304. package/fastify/src/storage/trash/modules/.gitkeep +0 -0
  305. package/fastify/src/types/global.d.ts +32 -0
  306. package/fastify/tsconfig.json +19 -0
  307. package/fastify/vitest.config.ts +38 -0
  308. package/hono/src/framework/facade.ts +1 -0
  309. package/hono/src/framework/http/logger.ts +86 -81
  310. package/hono/src/framework/maker-cli/runtime/core.mjs +1 -2
  311. package/hono/src/framework/notification/channels/mail.ts +8 -6
  312. package/hono/src/middlewares/auth-middleware.ts +1 -2
  313. package/hono/src/middlewares/role-middleware.ts +3 -13
  314. package/hono/src/modules/auth/routes/index.ts +1 -2
  315. package/hono/src/providers/notification.ts +2 -2
  316. package/hono/src/resources/src/components/Switch.vue +60 -65
  317. package/hono/src/resources/src/pages/auth/forgetPassword.vue +23 -29
  318. package/hono/src/resources/src/pages/auth/login.vue +26 -29
  319. package/hono/src/resources/src/pages/auth/register.vue +36 -40
  320. package/hono/src/resources/src/pages/auth/resetPassword.vue +29 -37
  321. package/hono/src/resources/src/pages/auth/verifyEmail.vue +15 -19
  322. package/hono/src/resources/src/plugins/gum.ts +519 -203
  323. package/hono/src/resources/src/stores/auth.ts +9 -6
  324. package/hono/src/storage/database/nexwire.sqlite +0 -0
  325. package/package.json +3 -2
  326. package/src/index.js +11 -8
@@ -0,0 +1,71 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { HttpStatusCodes, z } from "@/framework/facade.js";
3
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
4
+ import { list, markAllRead, markRead, remove, unreadCount } from "../controllers/{{leaf}}.js";
5
+ import { PaginatedNotificationsSchema, UnreadCountSchema } from "../schemas/{{leaf}}.js";
6
+
7
+ const notificationId = z.object({ id: z.string().min(1) });
8
+ const okResponse = z.object({ ok: z.boolean() });
9
+
10
+ const notificationRoutes: FastifyPluginAsyncZod = async (app) => {
11
+ app.addHook("preHandler", authMiddleware);
12
+
13
+ app.route({
14
+ method: "GET",
15
+ url: "/",
16
+ schema: {
17
+ tags: ["Notifications"],
18
+ description: "List notifications",
19
+ response: { [HttpStatusCodes.OK]: PaginatedNotificationsSchema }
20
+ },
21
+ handler: list
22
+ });
23
+
24
+ app.route({
25
+ method: "GET",
26
+ url: "/unread-count",
27
+ schema: {
28
+ tags: ["Notifications"],
29
+ description: "Count unread notifications",
30
+ response: { [HttpStatusCodes.OK]: UnreadCountSchema }
31
+ },
32
+ handler: unreadCount
33
+ });
34
+
35
+ app.route({
36
+ method: "PATCH",
37
+ url: "/:id/read",
38
+ schema: {
39
+ tags: ["Notifications"],
40
+ description: "Mark a notification as read",
41
+ params: notificationId,
42
+ response: { [HttpStatusCodes.OK]: okResponse }
43
+ },
44
+ handler: markRead
45
+ });
46
+
47
+ app.route({
48
+ method: "PATCH",
49
+ url: "/read-all",
50
+ schema: {
51
+ tags: ["Notifications"],
52
+ description: "Mark every notification as read",
53
+ response: { [HttpStatusCodes.OK]: okResponse }
54
+ },
55
+ handler: markAllRead
56
+ });
57
+
58
+ app.route({
59
+ method: "DELETE",
60
+ url: "/:id",
61
+ schema: {
62
+ tags: ["Notifications"],
63
+ description: "Delete a notification",
64
+ params: notificationId,
65
+ response: { [HttpStatusCodes.OK]: okResponse }
66
+ },
67
+ handler: remove
68
+ });
69
+ };
70
+
71
+ export default notificationRoutes;
@@ -0,0 +1,15 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
3
+ import { list, unreadCount, markRead, markAllRead, remove } from "../controllers/{{leaf}}.js";
4
+
5
+ const notificationRoutes: FastifyPluginAsyncZod = async (app) => {
6
+ app.addHook("preHandler", authMiddleware);
7
+
8
+ app.get("/", list);
9
+ app.get("/unread-count", unreadCount);
10
+ app.patch("/:id/read", markRead);
11
+ app.patch("/read-all", markAllRead);
12
+ app.delete("/:id", remove);
13
+ };
14
+
15
+ export default notificationRoutes;
@@ -0,0 +1,26 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const NotificationSchema = z.object({
4
+ id: z.string(),
5
+ notifiableType: z.string(),
6
+ notifiableId: z.string(),
7
+ type: z.string(),
8
+ title: z.string(),
9
+ body: z.string().nullable(),
10
+ data: z.any().nullable(),
11
+ link: z.string().nullable(),
12
+ readAt: z.string().nullable(),
13
+ createdAt: z.string()
14
+ });
15
+
16
+ export const UnreadCountSchema = z.object({
17
+ count: z.number()
18
+ });
19
+
20
+ export const PaginatedNotificationsSchema = z.object({
21
+ data: z.array(NotificationSchema),
22
+ total: z.number(),
23
+ unread: z.number(),
24
+ page: z.number(),
25
+ perPage: z.number()
26
+ });
@@ -0,0 +1,26 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const NotificationSchema = z.object({
4
+ id: z.string(),
5
+ notifiableType: z.string(),
6
+ notifiableId: z.string(),
7
+ type: z.string(),
8
+ title: z.string(),
9
+ body: z.string().nullable(),
10
+ data: z.any().nullable(),
11
+ link: z.string().nullable(),
12
+ readAt: z.string().nullable(),
13
+ createdAt: z.string()
14
+ });
15
+
16
+ export const UnreadCountSchema = z.object({
17
+ count: z.number()
18
+ });
19
+
20
+ export const PaginatedNotificationsSchema = z.object({
21
+ data: z.array(NotificationSchema),
22
+ total: z.number(),
23
+ unread: z.number(),
24
+ page: z.number(),
25
+ perPage: z.number()
26
+ });
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Providers for the {{module}} module.
3
+ *
4
+ * This file is imported automatically at boot, so whatever it registers is
5
+ * available to the whole application. Use this to plug implementations (e.g.
6
+ * auth, payments) into the app - not to export the module's API to other
7
+ * modules (that is what facade.ts is for):
8
+ *
9
+ * import { registerProvider } from "@/framework/facade.js";
10
+ *
11
+ * registerProvider("{{module}}", { ... });
12
+ *
13
+ * A module with more than one provider keeps them in providers/*.ts instead -
14
+ * those files are imported at boot too.
15
+ *
16
+ * Rule: a module never imports another module's provider implementation.
17
+ */
18
+
19
+ export {};
@@ -0,0 +1,21 @@
1
+ import { registerProvider } from "@/framework/facade.js";
2
+
3
+ /**
4
+ * Why: Plugs the {{name}} implementation into the application.
5
+ * When: Imported automatically at boot from each module's providers folder.
6
+ * Where: src/modules/{{module}}/providers/{{name}}.ts
7
+ *
8
+ * Reach it from anywhere in the app:
9
+ *
10
+ * import { getProvider } from "@/framework/facade.js";
11
+ * const {{camel}} = getProvider<typeof {{camel}}Provider>("{{name}}");
12
+ *
13
+ * Rule: a provider never imports another module's provider implementation.
14
+ */
15
+ export const {{camel}}Provider = {
16
+ async handle(input: unknown) {
17
+ return input;
18
+ }
19
+ };
20
+
21
+ registerProvider("{{name}}", {{camel}}Provider);
@@ -0,0 +1,21 @@
1
+ import { registerProvider } from "@/framework/facade.js";
2
+
3
+ /**
4
+ * Why: Plugs the {{name}} implementation into the application.
5
+ * When: Imported automatically at boot from src/providers/.
6
+ * Where: src/providers/{{name}}.ts
7
+ *
8
+ * Reach it from anywhere in the app:
9
+ *
10
+ * import { getProvider } from "@/framework/facade.js";
11
+ * const {{camel}} = getProvider<typeof {{camel}}Provider>("{{name}}");
12
+ *
13
+ * Rule: a provider never imports another provider's implementation.
14
+ */
15
+ export const {{camel}}Provider = {
16
+ async handle(input: unknown) {
17
+ return input;
18
+ }
19
+ };
20
+
21
+ registerProvider("{{name}}", {{camel}}Provider);
@@ -0,0 +1,101 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { HttpStatusCodes, ValidationErrorSchema } from "@/framework/facade.js";
3
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
4
+ import { requireRole } from "@/middlewares/role-middleware.js";
5
+ import { destroy, index, show, store, update } from "@/modules/{{module}}/controllers/{{controller}}.js";
6
+ import {
7
+ Create{{ClassName}}Schema,
8
+ {{ClassName}}IdParamsSchema,
9
+ {{ClassName}}ListResponseSchema,
10
+ {{ClassName}}MessageSchema,
11
+ {{ClassName}}ResponseSchema,
12
+ Update{{ClassName}}Schema
13
+ } from "@/modules/{{module}}/schemas/{{controller}}.js";
14
+
15
+ const routes: FastifyPluginAsyncZod = async (app) => {
16
+ app.route({
17
+ method: "GET",
18
+ url: "/",
19
+ schema: {
20
+ tags: ["{{ModuleClass}}"],
21
+ description: "List {{module}}",
22
+ response: {
23
+ [HttpStatusCodes.OK]: {{ClassName}}ListResponseSchema
24
+ }
25
+ },
26
+ handler: index
27
+ });
28
+
29
+ app.route({
30
+ method: "GET",
31
+ url: "/:id",
32
+ schema: {
33
+ tags: ["{{ModuleClass}}"],
34
+ description: "Get one {{module}}",
35
+ params: {{ClassName}}IdParamsSchema,
36
+ response: {
37
+ [HttpStatusCodes.OK]: {{ClassName}}ResponseSchema,
38
+ [HttpStatusCodes.NOT_FOUND]: {{ClassName}}MessageSchema
39
+ }
40
+ },
41
+ handler: show
42
+ });
43
+
44
+ app.route({
45
+ method: "POST",
46
+ url: "/",
47
+ schema: {
48
+ tags: ["{{ModuleClass}}"],
49
+ description: "Create {{module}}",
50
+ body: Create{{ClassName}}Schema,
51
+ response: {
52
+ [HttpStatusCodes.CREATED]: {{ClassName}}ResponseSchema,
53
+ [HttpStatusCodes.UNPROCESSABLE_ENTITY]: ValidationErrorSchema
54
+ }
55
+ },
56
+ handler: store
57
+ });
58
+
59
+ app.route({
60
+ method: "PUT",
61
+ url: "/:id",
62
+ schema: {
63
+ tags: ["{{ModuleClass}}"],
64
+ description: "Update {{module}}",
65
+ params: {{ClassName}}IdParamsSchema,
66
+ body: Update{{ClassName}}Schema,
67
+ response: {
68
+ [HttpStatusCodes.OK]: {{ClassName}}ResponseSchema,
69
+ [HttpStatusCodes.NOT_FOUND]: {{ClassName}}MessageSchema,
70
+ [HttpStatusCodes.UNPROCESSABLE_ENTITY]: ValidationErrorSchema
71
+ }
72
+ },
73
+ handler: update
74
+ });
75
+
76
+ app.route({
77
+ method: "DELETE",
78
+ url: "/:id",
79
+ schema: {
80
+ tags: ["{{ModuleClass}}"],
81
+ description: "Delete {{module}}",
82
+ params: {{ClassName}}IdParamsSchema,
83
+ response: {
84
+ [HttpStatusCodes.OK]: {{ClassName}}MessageSchema,
85
+ [HttpStatusCodes.NOT_FOUND]: {{ClassName}}MessageSchema
86
+ }
87
+ },
88
+ handler: destroy
89
+ });
90
+
91
+ // Gate the whole plugin (authMiddleware resolves the session once for every route):
92
+ // app.addHook("preHandler", authMiddleware);
93
+ //
94
+ // Or gate a single route by role. requireRole reads the role authMiddleware set,
95
+ // so authMiddleware must run first:
96
+ // app.route({ ..., preHandler: [authMiddleware, requireRole("admin")], handler: destroy });
97
+ //
98
+ // Delete the imports above when you do not need them.
99
+ };
100
+
101
+ export default routes;
@@ -0,0 +1,23 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
3
+ import { requireRole } from "@/middlewares/role-middleware.js";
4
+ import { index, show, store, update, destroy } from "@/modules/{{module}}/controllers/{{controller}}.js";
5
+
6
+ const routes: FastifyPluginAsyncZod = async (app) => {
7
+ app.get("/", index);
8
+ app.get("/:id", show);
9
+ app.post("/", store);
10
+ app.put("/:id", update);
11
+ app.delete("/:id", destroy);
12
+
13
+ // Gate the whole plugin (authMiddleware resolves the session once for every route):
14
+ // app.addHook("preHandler", authMiddleware);
15
+ //
16
+ // Or gate a single route by role. requireRole reads the role authMiddleware set,
17
+ // so authMiddleware must run first:
18
+ // app.route({ method: "DELETE", url: "/:id", preHandler: [authMiddleware, requireRole("admin")], handler: destroy });
19
+ //
20
+ // Delete the imports above when you do not need them.
21
+ };
22
+
23
+ export default routes;
@@ -0,0 +1,120 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { HttpStatusCodes, z } from "@/framework/facade.js";
3
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
4
+ import { requireRole } from "@/middlewares/role-middleware.js";
5
+
6
+ /**
7
+ * {{module}} routes for {{controller}}.
8
+ *
9
+ * Wire each route to a handler:
10
+ * import { index, show, store, update, destroy } from "@/modules/{{module}}/controllers/{{controller}}.js";
11
+ * app.get("/", index);
12
+ *
13
+ * Wire each route to its validation schema:
14
+ * import {
15
+ * Create{{ClassName}}Schema,
16
+ * {{ClassName}}IdParamsSchema,
17
+ * {{ClassName}}ListResponseSchema,
18
+ * {{ClassName}}MessageSchema,
19
+ * {{ClassName}}ResponseSchema,
20
+ * Update{{ClassName}}Schema
21
+ * } from "@/modules/{{module}}/schemas/{{controller}}.js";
22
+ */
23
+
24
+ const listResponse = z.object({
25
+ message: z.string(),
26
+ data: z.array(z.object({ id: z.number(), name: z.string() }))
27
+ });
28
+
29
+ const itemResponse = z.object({
30
+ message: z.string(),
31
+ data: z.object({ id: z.number(), name: z.string() })
32
+ });
33
+
34
+ const messageResponse = z.object({ message: z.string() });
35
+
36
+ const routes: FastifyPluginAsyncZod = async (app) => {
37
+ app.route({
38
+ method: "GET",
39
+ url: "/",
40
+ schema: {
41
+ tags: ["{{ModuleClass}}"],
42
+ description: "List {{module}}",
43
+ response: {
44
+ [HttpStatusCodes.OK]: listResponse
45
+ }
46
+ },
47
+ handler: async (_request, reply) =>
48
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} list not implemented", data: [] })
49
+ });
50
+
51
+ app.route({
52
+ method: "GET",
53
+ url: "/:id",
54
+ schema: {
55
+ tags: ["{{ModuleClass}}"],
56
+ description: "Get one {{module}}",
57
+ response: {
58
+ [HttpStatusCodes.OK]: itemResponse,
59
+ [HttpStatusCodes.NOT_FOUND]: messageResponse
60
+ }
61
+ },
62
+ handler: async (_request, reply) =>
63
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} item not implemented", data: { id: 0, name: "" } })
64
+ });
65
+
66
+ app.route({
67
+ method: "POST",
68
+ url: "/",
69
+ schema: {
70
+ tags: ["{{ModuleClass}}"],
71
+ description: "Create {{module}}",
72
+ response: {
73
+ [HttpStatusCodes.CREATED]: messageResponse
74
+ }
75
+ },
76
+ handler: async (_request, reply) =>
77
+ reply.code(HttpStatusCodes.CREATED).send({ message: "{{module}} create not implemented" })
78
+ });
79
+
80
+ app.route({
81
+ method: "PUT",
82
+ url: "/:id",
83
+ schema: {
84
+ tags: ["{{ModuleClass}}"],
85
+ description: "Update {{module}}",
86
+ response: {
87
+ [HttpStatusCodes.OK]: messageResponse,
88
+ [HttpStatusCodes.NOT_FOUND]: messageResponse
89
+ }
90
+ },
91
+ handler: async (_request, reply) =>
92
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} update not implemented" })
93
+ });
94
+
95
+ app.route({
96
+ method: "DELETE",
97
+ url: "/:id",
98
+ schema: {
99
+ tags: ["{{ModuleClass}}"],
100
+ description: "Delete {{module}}",
101
+ response: {
102
+ [HttpStatusCodes.OK]: messageResponse,
103
+ [HttpStatusCodes.NOT_FOUND]: messageResponse
104
+ }
105
+ },
106
+ handler: async (_request, reply) =>
107
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} delete not implemented" })
108
+ });
109
+
110
+ // Gate the whole plugin (authMiddleware resolves the session once for every route):
111
+ // app.addHook("preHandler", authMiddleware);
112
+ //
113
+ // Or gate a single route by role. requireRole reads the role authMiddleware set,
114
+ // so authMiddleware must run first:
115
+ // app.route({ ..., preHandler: [authMiddleware, requireRole("admin")], handler: destroy });
116
+ //
117
+ // Delete the imports above when you do not need them.
118
+ };
119
+
120
+ export default routes;
@@ -0,0 +1,50 @@
1
+ import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
2
+ import { HttpStatusCodes } from "@/framework/facade.js";
3
+ import { authMiddleware } from "@/middlewares/auth-middleware.js";
4
+ import { requireRole } from "@/middlewares/role-middleware.js";
5
+
6
+ /**
7
+ * {{module}} routes for {{controller}}.
8
+ *
9
+ * Wire each handler to a controller:
10
+ * import { index, show, store, update, destroy } from "@/modules/{{module}}/controllers/{{controller}}.js";
11
+ * app.get("/", index);
12
+ *
13
+ * Add validation with the validate() helper:
14
+ * import { validate } from "@/framework/facade.js";
15
+ * import { {{ClassName}}IdParamsSchema } from "@/modules/{{module}}/schemas/{{controller}}.js";
16
+ * const params = await validate({{ClassName}}IdParamsSchema, request.params);
17
+ */
18
+
19
+ const routes: FastifyPluginAsyncZod = async (app) => {
20
+ app.get("/", async (_request, reply) =>
21
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} list not implemented", data: [] })
22
+ );
23
+
24
+ app.get("/:id", async (_request, reply) =>
25
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} item not implemented", data: { id: 0, name: "" } })
26
+ );
27
+
28
+ app.post("/", async (_request, reply) =>
29
+ reply.code(HttpStatusCodes.CREATED).send({ message: "{{module}} create not implemented" })
30
+ );
31
+
32
+ app.put("/:id", async (_request, reply) =>
33
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} update not implemented" })
34
+ );
35
+
36
+ app.delete("/:id", async (_request, reply) =>
37
+ reply.code(HttpStatusCodes.OK).send({ message: "{{module}} delete not implemented" })
38
+ );
39
+
40
+ // Gate the whole plugin (authMiddleware resolves the session once for every route):
41
+ // app.addHook("preHandler", authMiddleware);
42
+ //
43
+ // Or gate a single route by role. requireRole reads the role authMiddleware set,
44
+ // so authMiddleware must run first:
45
+ // app.route({ method: "DELETE", url: "/:id", preHandler: [authMiddleware, requireRole("admin")], handler: destroy });
46
+ //
47
+ // Delete the imports above when you do not need them.
48
+ };
49
+
50
+ export default routes;
@@ -0,0 +1,36 @@
1
+ import { DateTime } from "luxon";
2
+ import { defineSchedule, dispatchEvent } from "@/framework/facade.js";
3
+
4
+ /**
5
+ * name: Unique schedule id used as the distributed lock key.
6
+ * expression: Cron expression that controls when the task runs.
7
+ * timezone: IANA timezone for cron evaluation (example: "UTC").
8
+ * runOnInit: Runs once immediately when scheduler starts.
9
+ * enabled: Enables or disables this schedule without deleting code.
10
+ * ttlMs: Lock TTL in milliseconds to avoid duplicate execution.
11
+ */
12
+ defineSchedule({
13
+ name: "{{module}}:{{name}}",
14
+ expression: "0 * * * * *",
15
+ // timezone: "UTC",
16
+ // runOnInit: false,
17
+ // enabled: true,
18
+ // ttlMs: 120000,
19
+ handler: async () => {
20
+ /**
21
+ * dispatchEvent name: Event id to publish to listeners.
22
+ * payload: Data sent to queue/broadcast consumers.
23
+ * queue: Optional queue target for async event consumers.
24
+ * broadcast: Optional realtime fanout (all/users/roles/rooms).
25
+ */
26
+ // await dispatchEvent("{{module}}.{{name}}", {
27
+ // origin: "scheduler",
28
+ // createdAt: DateTime.now()
29
+ // }, {
30
+ // queue: "default"
31
+ // });
32
+
33
+ DateTime.now().toISO();
34
+ }
35
+ });
36
+
@@ -0,0 +1,14 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const Create{{ClassName}}Schema = z.object({
4
+ name: z.string().min(1)
5
+ });
6
+
7
+ export const Update{{ClassName}}Schema = z.object({
8
+ name: z.string().min(1)
9
+ });
10
+
11
+ export const {{ClassName}}IdParamsSchema = z.object({
12
+ id: z.coerce.number().int().positive()
13
+ });
14
+
@@ -0,0 +1,33 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const {{ClassName}}ItemSchema = z.object({
4
+ id: z.number(),
5
+ name: z.string()
6
+ });
7
+
8
+ export const Create{{ClassName}}Schema = z.object({
9
+ name: z.string().min(1)
10
+ });
11
+
12
+ export const Update{{ClassName}}Schema = z.object({
13
+ name: z.string().min(1)
14
+ });
15
+
16
+ export const {{ClassName}}IdParamsSchema = z.object({
17
+ id: z.coerce.number().int().positive()
18
+ });
19
+
20
+ export const {{ClassName}}ListResponseSchema = z.object({
21
+ message: z.string(),
22
+ data: z.array({{ClassName}}ItemSchema)
23
+ });
24
+
25
+ export const {{ClassName}}ResponseSchema = z.object({
26
+ message: z.string(),
27
+ data: {{ClassName}}ItemSchema
28
+ });
29
+
30
+ export const {{ClassName}}MessageSchema = z.object({
31
+ message: z.string()
32
+ });
33
+
@@ -0,0 +1,18 @@
1
+ import { db } from "@/framework/facade.js";
2
+ import { {{tableVariable}} } from "@/modules/{{module}}/database/models/{{name}}.js";
3
+
4
+ export const table = {{tableVariable}};
5
+
6
+ export default async function {{ClassName}}Seeder() {
7
+ const rows = [
8
+ // Add your seed data here
9
+ // Example:
10
+ // { name: "{{ClassName}} 1", description: "This is the first {{name}}" },
11
+ // { name: "{{ClassName}} 2", description: "This is the second {{name}}" }
12
+ ];
13
+
14
+ for (const row of rows) await db.insert({{tableVariable}}).values(row);
15
+
16
+ console.log(`{{ClassName}}: ${rows.length} row(s) prepared`);
17
+ }
18
+
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Standalone seeder for "{{name}}" — no model of that name exists in module
3
+ * "{{module}}", so nothing was imported for you. Uncomment the two lines below,
4
+ * point them at the table you want, then add your rows.
5
+ *
6
+ * Run with: bun maker module:seed {{module}}
7
+ */
8
+
9
+ import { db } from "@/framework/facade.js";
10
+ // import { {{tableVariable}} } from "@/modules/{{module}}/database/models/{{name}}.js";
11
+ // export const table = {{tableVariable}};
12
+
13
+ export default async function {{ClassName}}Seeder() {
14
+ const rows: Record<string, unknown>[] = [
15
+ // { name: "{{ClassName}} 1" },
16
+ // { name: "{{ClassName}} 2" }
17
+ ];
18
+
19
+ // for (const row of rows) await db.insert({{tableVariable}}).values(row);
20
+
21
+ console.log(`{{ClassName}}: ${rows.length} row(s) ready`);
22
+ }