alepha 0.13.6 → 0.13.8

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 (487) hide show
  1. package/README.md +5 -2
  2. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  3. package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
  4. package/assets/swagger-ui/swagger-ui.css +1 -1
  5. package/dist/api/audits/index.browser.js +116 -0
  6. package/dist/api/audits/index.browser.js.map +1 -0
  7. package/dist/api/audits/index.d.ts +1194 -0
  8. package/dist/api/audits/index.js +674 -0
  9. package/dist/api/audits/index.js.map +1 -0
  10. package/dist/{api-files → api/files}/index.browser.js +5 -5
  11. package/dist/api/files/index.browser.js.map +1 -0
  12. package/dist/{api-files → api/files}/index.d.ts +16 -9
  13. package/dist/{api-files → api/files}/index.js +10 -10
  14. package/dist/api/files/index.js.map +1 -0
  15. package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
  16. package/dist/api/jobs/index.browser.js.map +1 -0
  17. package/dist/{api-jobs → api/jobs}/index.d.ts +35 -35
  18. package/dist/{api-jobs → api/jobs}/index.js +9 -9
  19. package/dist/api/jobs/index.js.map +1 -0
  20. package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
  21. package/dist/api/notifications/index.browser.js.map +1 -0
  22. package/dist/api/notifications/index.d.ts +327 -0
  23. package/dist/{api-notifications → api/notifications}/index.js +11 -11
  24. package/dist/api/notifications/index.js.map +1 -0
  25. package/dist/api/parameters/index.browser.js +60 -0
  26. package/dist/api/parameters/index.browser.js.map +1 -0
  27. package/dist/api/parameters/index.d.ts +761 -0
  28. package/dist/api/parameters/index.js +877 -0
  29. package/dist/api/parameters/index.js.map +1 -0
  30. package/dist/{api-users → api/users}/index.browser.js +6 -6
  31. package/dist/api/users/index.browser.js.map +1 -0
  32. package/dist/{api-users → api/users}/index.d.ts +259 -247
  33. package/dist/{api-users → api/users}/index.js +125 -112
  34. package/dist/api/users/index.js.map +1 -0
  35. package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
  36. package/dist/api/verifications/index.browser.js.map +1 -0
  37. package/dist/api/verifications/index.d.ts +248 -0
  38. package/dist/{api-verifications → api/verifications}/index.js +13 -12
  39. package/dist/api/verifications/index.js.map +1 -0
  40. package/dist/bin/index.js +1 -0
  41. package/dist/bin/index.js.map +1 -1
  42. package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
  43. package/dist/cache/{index.js → core/index.js} +5 -5
  44. package/dist/cache/core/index.js.map +1 -0
  45. package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
  46. package/dist/{cache-redis → cache/redis}/index.js +2 -2
  47. package/dist/cache/redis/index.js.map +1 -0
  48. package/dist/cli/index.d.ts +71 -9
  49. package/dist/cli/index.js +280 -79
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/command/index.d.ts +63 -2
  52. package/dist/command/index.js +30 -3
  53. package/dist/command/index.js.map +1 -1
  54. package/dist/core/index.browser.js +241 -61
  55. package/dist/core/index.browser.js.map +1 -1
  56. package/dist/core/index.d.ts +170 -90
  57. package/dist/core/index.js +264 -67
  58. package/dist/core/index.js.map +1 -1
  59. package/dist/core/index.native.js +248 -65
  60. package/dist/core/index.native.js.map +1 -1
  61. package/dist/email/index.js +15 -10554
  62. package/dist/email/index.js.map +1 -1
  63. package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
  64. package/dist/lock/{index.js → core/index.js} +5 -5
  65. package/dist/lock/core/index.js.map +1 -0
  66. package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
  67. package/dist/{lock-redis → lock/redis}/index.js +2 -2
  68. package/dist/lock/redis/index.js.map +1 -0
  69. package/dist/logger/index.d.ts +4 -4
  70. package/dist/logger/index.js +77 -72
  71. package/dist/logger/index.js.map +1 -1
  72. package/dist/orm/index.d.ts +5 -1
  73. package/dist/orm/index.js +24 -7
  74. package/dist/orm/index.js.map +1 -1
  75. package/dist/queue/core/index.d.ts +548 -0
  76. package/dist/queue/core/index.js +391 -0
  77. package/dist/queue/core/index.js.map +1 -0
  78. package/dist/queue/redis/index.d.ts +28 -0
  79. package/dist/queue/redis/index.js +43 -0
  80. package/dist/queue/redis/index.js.map +1 -0
  81. package/dist/scheduler/index.d.ts +7 -7
  82. package/dist/scheduler/index.js +1 -393
  83. package/dist/scheduler/index.js.map +1 -1
  84. package/dist/security/index.d.ts +1 -1
  85. package/dist/security/index.js +2 -1413
  86. package/dist/security/index.js.map +1 -1
  87. package/dist/{server-auth → server/auth}/index.browser.js +6 -6
  88. package/dist/server/auth/index.browser.js.map +1 -0
  89. package/dist/{server-auth → server/auth}/index.d.ts +175 -164
  90. package/dist/server/auth/index.js +742 -0
  91. package/dist/server/auth/index.js.map +1 -0
  92. package/dist/{server-cache → server/cache}/index.d.ts +2 -2
  93. package/dist/{server-cache → server/cache}/index.js +2 -2
  94. package/dist/server/cache/index.js.map +1 -0
  95. package/dist/{server-compress → server/compress}/index.d.ts +2 -2
  96. package/dist/{server-compress → server/compress}/index.js +2 -2
  97. package/dist/server/compress/index.js.map +1 -0
  98. package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
  99. package/dist/server/cookies/index.browser.js.map +1 -0
  100. package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
  101. package/dist/{server-cookies → server/cookies}/index.js +9 -5
  102. package/dist/server/cookies/index.js.map +1 -0
  103. package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
  104. package/dist/server/core/index.browser.js.map +1 -0
  105. package/dist/server/{index.d.ts → core/index.d.ts} +46 -37
  106. package/dist/server/{index.js → core/index.js} +47 -33
  107. package/dist/server/core/index.js.map +1 -0
  108. package/dist/{server-cors → server/cors}/index.d.ts +3 -3
  109. package/dist/{server-cors → server/cors}/index.js +3 -3
  110. package/dist/server/cors/index.js.map +1 -0
  111. package/dist/{server-health → server/health}/index.d.ts +3 -3
  112. package/dist/{server-health → server/health}/index.js +3 -3
  113. package/dist/server/health/index.js.map +1 -0
  114. package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
  115. package/dist/{server-helmet → server/helmet}/index.js +2 -2
  116. package/dist/server/helmet/index.js.map +1 -0
  117. package/dist/{server-links → server/links}/index.browser.js +5 -5
  118. package/dist/server/links/index.browser.js.map +1 -0
  119. package/dist/{server-links → server/links}/index.d.ts +40 -40
  120. package/dist/{server-links → server/links}/index.js +7 -7
  121. package/dist/server/links/index.js.map +1 -0
  122. package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
  123. package/dist/server/metrics/index.js +74 -0
  124. package/dist/server/metrics/index.js.map +1 -0
  125. package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
  126. package/dist/{server-multipart → server/multipart}/index.js +2 -2
  127. package/dist/server/multipart/index.js.map +1 -0
  128. package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
  129. package/dist/{server-proxy → server/proxy}/index.js +3 -3
  130. package/dist/server/proxy/index.js.map +1 -0
  131. package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
  132. package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
  133. package/dist/server/rate-limit/index.js.map +1 -0
  134. package/dist/{server-security → server/security}/index.browser.js +1 -1
  135. package/dist/server/security/index.browser.js.map +1 -0
  136. package/dist/{server-security → server/security}/index.d.ts +4 -4
  137. package/dist/{server-security → server/security}/index.js +4 -4
  138. package/dist/server/security/index.js.map +1 -0
  139. package/dist/{server-static → server/static}/index.d.ts +3 -3
  140. package/dist/{server-static → server/static}/index.js +3 -3
  141. package/dist/server/static/index.js.map +1 -0
  142. package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
  143. package/dist/{server-swagger → server/swagger}/index.js +4 -4
  144. package/dist/server/swagger/index.js.map +1 -0
  145. package/dist/thread/index.js +2 -2
  146. package/dist/thread/index.js.map +1 -1
  147. package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
  148. package/dist/topic/{index.js → core/index.js} +6 -6
  149. package/dist/topic/core/index.js.map +1 -0
  150. package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
  151. package/dist/{topic-redis → topic/redis}/index.js +2 -2
  152. package/dist/topic/redis/index.js.map +1 -0
  153. package/dist/vite/index.d.ts +13 -2
  154. package/dist/vite/index.js +114 -50
  155. package/dist/vite/index.js.map +1 -1
  156. package/dist/websocket/index.browser.js +3 -3
  157. package/dist/websocket/index.browser.js.map +1 -1
  158. package/dist/websocket/index.js +4 -4
  159. package/dist/websocket/index.js.map +1 -1
  160. package/package.json +160 -156
  161. package/src/api/audits/controllers/AuditController.ts +186 -0
  162. package/src/api/audits/entities/audits.ts +132 -0
  163. package/src/api/audits/index.browser.ts +18 -0
  164. package/src/api/audits/index.ts +58 -0
  165. package/src/api/audits/primitives/$audit.ts +159 -0
  166. package/src/api/audits/schemas/auditQuerySchema.ts +23 -0
  167. package/src/api/audits/schemas/auditResourceSchema.ts +9 -0
  168. package/src/api/audits/schemas/createAuditSchema.ts +27 -0
  169. package/src/api/audits/services/AuditService.ts +412 -0
  170. package/src/{api-files → api/files}/index.ts +1 -0
  171. package/src/api/parameters/controllers/ConfigController.ts +324 -0
  172. package/src/api/parameters/entities/parameters.ts +113 -0
  173. package/src/api/parameters/index.ts +60 -0
  174. package/src/api/parameters/primitives/$config.ts +351 -0
  175. package/src/api/parameters/schedulers/ConfigActivationScheduler.ts +30 -0
  176. package/src/api/parameters/services/ConfigStore.ts +491 -0
  177. package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +19 -0
  178. package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -2
  179. package/src/{api-users → api/users}/index.ts +2 -0
  180. package/src/{api-users → api/users}/primitives/$userRealm.ts +18 -3
  181. package/src/{api-users → api/users}/providers/UserRealmProvider.ts +12 -10
  182. package/src/{api-users → api/users}/services/RegistrationService.ts +2 -1
  183. package/src/{api-users → api/users}/services/SessionService.ts +4 -0
  184. package/src/{api-users → api/users}/services/UserService.ts +3 -0
  185. package/src/{api-verifications → api/verifications}/index.ts +9 -1
  186. package/src/bin/index.ts +1 -0
  187. package/src/cli/apps/AlephaPackageBuilderCli.ts +73 -48
  188. package/src/cli/assets/appRouterTs.ts +1 -1
  189. package/src/cli/assets/biomeJson.ts +2 -2
  190. package/src/cli/assets/dummySpecTs.ts +7 -0
  191. package/src/cli/assets/editorconfig.ts +13 -0
  192. package/src/cli/assets/indexHtml.ts +1 -1
  193. package/src/cli/assets/mainBrowserTs.ts +1 -1
  194. package/src/cli/assets/mainTs.ts +14 -0
  195. package/src/cli/assets/viteConfigTs.ts +1 -1
  196. package/src/cli/commands/BiomeCommands.ts +2 -0
  197. package/src/cli/commands/CoreCommands.ts +38 -15
  198. package/src/cli/commands/VerifyCommands.ts +6 -2
  199. package/src/cli/commands/ViteCommands.ts +28 -18
  200. package/src/cli/services/AlephaCliUtils.ts +243 -37
  201. package/src/command/helpers/Asker.ts +0 -1
  202. package/src/command/primitives/$command.ts +67 -0
  203. package/src/command/providers/CliProvider.ts +39 -8
  204. package/src/core/Alepha.ts +40 -30
  205. package/src/core/helpers/jsonSchemaToTypeBox.ts +307 -0
  206. package/src/core/index.shared.ts +1 -0
  207. package/src/core/index.ts +30 -3
  208. package/src/core/providers/EventManager.ts +1 -1
  209. package/src/core/providers/SchemaValidator.ts +1 -1
  210. package/src/core/providers/StateManager.ts +23 -12
  211. package/src/core/providers/TypeProvider.ts +26 -34
  212. package/src/logger/index.ts +8 -6
  213. package/src/logger/primitives/$logger.ts +1 -1
  214. package/src/logger/providers/{SimpleFormatterProvider.ts → PrettyFormatterProvider.ts} +10 -1
  215. package/src/orm/index.ts +6 -0
  216. package/src/orm/services/PgRelationManager.ts +2 -2
  217. package/src/orm/services/PostgresModelBuilder.ts +11 -7
  218. package/src/orm/services/Repository.ts +16 -7
  219. package/src/orm/services/SqliteModelBuilder.ts +10 -0
  220. package/src/queue/{index.ts → core/index.ts} +2 -3
  221. package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
  222. package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
  223. package/src/queue/core/providers/QueueProvider.ts +23 -0
  224. package/src/queue/core/providers/WorkerProvider.ts +244 -0
  225. package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
  226. package/src/{server-auth → server/auth}/primitives/$auth.ts +7 -0
  227. package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +51 -8
  228. package/src/{server-cookies → server/cookies}/index.ts +2 -1
  229. package/src/server/{index.ts → core/index.ts} +7 -0
  230. package/src/server/{primitives → core/primitives}/$action.ts +10 -1
  231. package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +11 -5
  232. package/src/server/{providers → core/providers}/ServerRouterProvider.ts +13 -7
  233. package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
  234. package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
  235. package/src/thread/primitives/$thread.ts +2 -2
  236. package/src/vite/index.ts +0 -2
  237. package/src/vite/tasks/buildServer.ts +3 -4
  238. package/src/vite/tasks/copyAssets.ts +32 -8
  239. package/src/vite/tasks/generateCloudflare.ts +35 -19
  240. package/src/vite/tasks/generateDocker.ts +18 -4
  241. package/src/vite/tasks/generateSitemap.ts +5 -7
  242. package/src/vite/tasks/generateVercel.ts +76 -41
  243. package/src/vite/tasks/runAlepha.ts +16 -1
  244. package/src/websocket/providers/NodeWebSocketServerProvider.ts +3 -11
  245. package/src/websocket/services/WebSocketClient.ts +3 -3
  246. package/dist/api-files/index.browser.js.map +0 -1
  247. package/dist/api-files/index.js.map +0 -1
  248. package/dist/api-jobs/index.browser.js.map +0 -1
  249. package/dist/api-jobs/index.js.map +0 -1
  250. package/dist/api-notifications/index.browser.js.map +0 -1
  251. package/dist/api-notifications/index.d.ts +0 -327
  252. package/dist/api-notifications/index.js.map +0 -1
  253. package/dist/api-parameters/index.browser.js +0 -29
  254. package/dist/api-parameters/index.browser.js.map +0 -1
  255. package/dist/api-parameters/index.d.ts +0 -83
  256. package/dist/api-parameters/index.js +0 -63
  257. package/dist/api-parameters/index.js.map +0 -1
  258. package/dist/api-users/index.browser.js.map +0 -1
  259. package/dist/api-users/index.js.map +0 -1
  260. package/dist/api-verifications/index.browser.js.map +0 -1
  261. package/dist/api-verifications/index.d.ts +0 -229
  262. package/dist/api-verifications/index.js.map +0 -1
  263. package/dist/cache/index.js.map +0 -1
  264. package/dist/cache-redis/index.js.map +0 -1
  265. package/dist/cli/dist-BlfFtOk2.js +0 -2770
  266. package/dist/cli/dist-BlfFtOk2.js.map +0 -1
  267. package/dist/lock/index.js.map +0 -1
  268. package/dist/lock-redis/index.js.map +0 -1
  269. package/dist/queue/index.d.ts +0 -1265
  270. package/dist/queue/index.js +0 -1037
  271. package/dist/queue/index.js.map +0 -1
  272. package/dist/queue-redis/index.d.ts +0 -82
  273. package/dist/queue-redis/index.js +0 -872
  274. package/dist/queue-redis/index.js.map +0 -1
  275. package/dist/server/index.browser.js.map +0 -1
  276. package/dist/server/index.js.map +0 -1
  277. package/dist/server-auth/index.browser.js.map +0 -1
  278. package/dist/server-auth/index.js +0 -1943
  279. package/dist/server-auth/index.js.map +0 -1
  280. package/dist/server-cache/index.js.map +0 -1
  281. package/dist/server-compress/index.js.map +0 -1
  282. package/dist/server-cookies/index.browser.js.map +0 -1
  283. package/dist/server-cookies/index.js.map +0 -1
  284. package/dist/server-cors/index.js.map +0 -1
  285. package/dist/server-health/index.js.map +0 -1
  286. package/dist/server-helmet/index.js.map +0 -1
  287. package/dist/server-links/index.browser.js.map +0 -1
  288. package/dist/server-links/index.js.map +0 -1
  289. package/dist/server-metrics/index.js +0 -4532
  290. package/dist/server-metrics/index.js.map +0 -1
  291. package/dist/server-multipart/index.js.map +0 -1
  292. package/dist/server-proxy/index.js.map +0 -1
  293. package/dist/server-rate-limit/index.js.map +0 -1
  294. package/dist/server-security/index.browser.js.map +0 -1
  295. package/dist/server-security/index.js.map +0 -1
  296. package/dist/server-static/index.js.map +0 -1
  297. package/dist/server-swagger/index.js.map +0 -1
  298. package/dist/topic/index.js.map +0 -1
  299. package/dist/topic-redis/index.js.map +0 -1
  300. package/src/api-parameters/controllers/ParameterController.ts +0 -45
  301. package/src/api-parameters/entities/parameters.ts +0 -30
  302. package/src/api-parameters/index.ts +0 -21
  303. package/src/api-parameters/primitives/$config.ts +0 -79
  304. package/src/api-parameters/services/ParameterStore.ts +0 -23
  305. package/src/queue/interfaces/QueueJob.ts +0 -459
  306. package/src/queue/providers/MemoryQueueProvider.ts +0 -850
  307. package/src/queue/providers/QueueProvider.ts +0 -319
  308. package/src/queue/providers/WorkerProvider.ts +0 -344
  309. package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
  310. /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
  311. /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
  312. /package/src/{api-files → api/files}/entities/files.ts +0 -0
  313. /package/src/{api-files → api/files}/index.browser.ts +0 -0
  314. /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
  315. /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
  316. /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
  317. /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
  318. /package/src/{api-files → api/files}/services/FileService.ts +0 -0
  319. /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
  320. /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
  321. /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
  322. /package/src/{api-jobs → api/jobs}/index.ts +0 -0
  323. /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
  324. /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
  325. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
  326. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
  327. /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
  328. /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
  329. /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
  330. /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
  331. /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
  332. /package/src/{api-notifications → api/notifications}/index.ts +0 -0
  333. /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
  334. /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
  335. /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
  336. /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
  337. /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
  338. /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
  339. /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
  340. /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
  341. /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
  342. /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
  343. /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
  344. /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
  345. /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
  346. /package/src/{api-users → api/users}/entities/identities.ts +0 -0
  347. /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
  348. /package/src/{api-users → api/users}/entities/users.ts +0 -0
  349. /package/src/{api-users → api/users}/index.browser.ts +0 -0
  350. /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
  351. /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
  352. /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
  353. /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
  354. /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
  355. /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
  356. /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
  357. /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
  358. /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
  359. /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
  360. /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
  361. /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
  362. /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
  363. /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
  364. /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
  365. /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
  366. /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
  367. /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
  368. /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
  369. /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
  370. /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
  371. /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
  372. /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
  373. /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
  374. /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
  375. /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
  376. /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
  377. /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
  378. /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
  379. /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
  380. /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
  381. /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
  382. /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
  383. /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
  384. /package/src/cache/{index.ts → core/index.ts} +0 -0
  385. /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
  386. /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
  387. /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
  388. /package/src/{cache-redis → cache/redis}/index.ts +0 -0
  389. /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
  390. /package/src/lock/{index.ts → core/index.ts} +0 -0
  391. /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
  392. /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
  393. /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
  394. /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
  395. /package/src/{lock-redis → lock/redis}/index.ts +0 -0
  396. /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
  397. /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
  398. /package/src/{queue-redis → queue/redis}/index.ts +0 -0
  399. /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
  400. /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
  401. /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
  402. /package/src/{server-auth → server/auth}/index.ts +0 -0
  403. /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
  404. /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
  405. /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
  406. /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
  407. /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
  408. /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
  409. /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
  410. /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
  411. /package/src/{server-cache → server/cache}/index.ts +0 -0
  412. /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
  413. /package/src/{server-compress → server/compress}/index.ts +0 -0
  414. /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
  415. /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
  416. /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
  417. /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
  418. /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
  419. /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
  420. /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
  421. /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
  422. /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
  423. /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
  424. /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
  425. /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
  426. /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
  427. /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
  428. /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
  429. /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
  430. /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
  431. /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
  432. /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
  433. /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
  434. /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
  435. /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
  436. /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
  437. /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
  438. /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
  439. /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
  440. /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
  441. /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
  442. /package/src/server/{services → core/services}/HttpClient.ts +0 -0
  443. /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
  444. /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
  445. /package/src/{server-cors → server/cors}/index.ts +0 -0
  446. /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
  447. /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
  448. /package/src/{server-health → server/health}/index.ts +0 -0
  449. /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
  450. /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
  451. /package/src/{server-helmet → server/helmet}/index.ts +0 -0
  452. /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
  453. /package/src/{server-links → server/links}/index.browser.ts +0 -0
  454. /package/src/{server-links → server/links}/index.ts +0 -0
  455. /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
  456. /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
  457. /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
  458. /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
  459. /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
  460. /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
  461. /package/src/{server-metrics → server/metrics}/index.ts +0 -0
  462. /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
  463. /package/src/{server-multipart → server/multipart}/index.ts +0 -0
  464. /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
  465. /package/src/{server-proxy → server/proxy}/index.ts +0 -0
  466. /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
  467. /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
  468. /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
  469. /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
  470. /package/src/{server-security → server/security}/index.browser.ts +0 -0
  471. /package/src/{server-security → server/security}/index.ts +0 -0
  472. /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
  473. /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
  474. /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
  475. /package/src/{server-static → server/static}/index.ts +0 -0
  476. /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
  477. /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
  478. /package/src/{server-swagger → server/swagger}/index.ts +0 -0
  479. /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
  480. /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
  481. /package/src/topic/{index.ts → core/index.ts} +0 -0
  482. /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
  483. /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
  484. /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
  485. /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
  486. /package/src/{topic-redis → topic/redis}/index.ts +0 -0
  487. /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
@@ -1,12 +1,15 @@
1
1
  import { $module } from "alepha";
2
2
  import { VerificationController } from "./controllers/VerificationController.ts";
3
3
  import { VerificationJobs } from "./jobs/VerificationJobs.ts";
4
+ import { VerificationParameters } from "./parameters/VerificationParameters.ts";
4
5
  import { VerificationService } from "./services/VerificationService.ts";
5
6
 
6
7
  // ---------------------------------------------------------------------------------------------------------------------
7
8
 
8
9
  export * from "./controllers/VerificationController.ts";
9
10
  export * from "./entities/verifications.ts";
11
+ export * from "./jobs/VerificationJobs.ts";
12
+ export * from "./parameters/VerificationParameters.ts";
10
13
  export * from "./schemas/requestVerificationCodeResponseSchema.ts";
11
14
  export * from "./schemas/validateVerificationCodeResponseSchema.ts";
12
15
  export * from "./schemas/verificationTypeEnumSchema.ts";
@@ -25,5 +28,10 @@ export * from "./services/VerificationService.ts";
25
28
  */
26
29
  export const AlephaApiVerification = $module({
27
30
  name: "alepha.api.verifications",
28
- services: [VerificationController, VerificationJobs, VerificationService],
31
+ services: [
32
+ VerificationController,
33
+ VerificationJobs,
34
+ VerificationService,
35
+ VerificationParameters,
36
+ ],
29
37
  });
package/src/bin/index.ts CHANGED
@@ -5,6 +5,7 @@ import { AlephaCli, version } from "alepha/cli";
5
5
 
6
6
  const alepha = Alepha.create({
7
7
  env: {
8
+ APP_NAME: "CLI",
8
9
  LOG_LEVEL: "alepha.core:warn,info",
9
10
  LOG_FORMAT: "raw",
10
11
  CLI_NAME: "alepha",
@@ -37,8 +37,10 @@ export class AlephaPackageBuilderCli {
37
37
  pkgData.exports = {};
38
38
 
39
39
  for (const item of modules) {
40
- const path =
41
- item.name === "core" ? "." : `./${item.name.replace("-", "/")}`;
40
+ let m = `./${item.name.replace("core", "")}`;
41
+ if (m.endsWith("/")) m = m.slice(0, -1);
42
+ const path = m;
43
+
42
44
  pkgData.exports[path] = {};
43
45
  // order is important here for compatibility
44
46
  pkgData.exports[path].types = `./src/${item.name}/index.ts`;
@@ -81,7 +83,8 @@ export class AlephaPackageBuilderCli {
81
83
  "alepha",
82
84
  packageName,
83
85
  ...modules.map(
84
- (item) => `${packageName}/${item.name.replace("-", "/")}`,
86
+ (item) =>
87
+ `${packageName}/${item.name.replace("-", "/").replace("/core", "")}`,
85
88
  ),
86
89
  ];
87
90
 
@@ -124,13 +127,16 @@ export class AlephaPackageBuilderCli {
124
127
  });
125
128
  }
126
129
 
127
- const config = join(tmpDir, `tsdown-${item.name}.config.js`);
130
+ const config = join(
131
+ tmpDir,
132
+ `tsdown-${item.name.replace("/", "-")}.config.js`,
133
+ );
128
134
  await this.fs.writeFile(
129
135
  config,
130
136
  `export default ${JSON.stringify(entries, null, 2)};`,
131
137
  );
132
138
  await run(`npx tsdown -c=${config}`);
133
- await this.fs.rm(config);
139
+ //await this.fs.rm(config);
134
140
  };
135
141
 
136
142
  const concurrency = Math.ceil(os.cpus().length / 2);
@@ -257,57 +263,76 @@ export async function analyzeModules(
257
263
  packageName: string,
258
264
  ): Promise<Module[]> {
259
265
  const modules: Module[] = [];
260
- const entries = await readdir(srcDir, { withFileTypes: true });
261
-
262
- for (const entry of entries) {
263
- if (entry.isDirectory()) {
264
- const moduleName = entry.name;
265
- const modulePath = join(srcDir, moduleName);
266
- const dependencies = new Set<string>();
267
-
268
- // Check for browser/node entry points
269
- const hasBrowser = await fileExists(join(modulePath, "index.browser.ts"));
270
- const hasNative = await fileExists(join(modulePath, "index.native.ts"));
271
- const hasNode = await fileExists(join(modulePath, "index.node.ts"));
272
-
273
- // Get all .ts/.tsx files in this module
274
- const files = await getAllFiles(modulePath);
275
-
276
- for (const file of files) {
277
- const content = await readFile(file, "utf-8");
278
- const deps = extractAlephaDependencies(
279
- content,
280
- packageName,
281
- moduleName,
282
- );
283
- for (const dep of deps) {
284
- if (dep.endsWith(".ts")) {
285
- throw new Error(
286
- `Invalid dependency '${dep}' in module '${moduleName}'. Do not include file extensions in Alepha module imports.`,
287
- );
288
- }
289
- if (dep.includes("-")) {
290
- throw new Error(
291
- `Invalid dependency '${dep}' in module '${moduleName}'. Use '/' instead of '-' in Alepha module imports.`,
266
+
267
+ async function scanDirectory(dir: string, prefix: string): Promise<void> {
268
+ const entries = await readdir(dir, { withFileTypes: true });
269
+
270
+ for (const entry of entries) {
271
+ if (entry.isDirectory()) {
272
+ const moduleName = prefix ? `${prefix}/${entry.name}` : entry.name;
273
+ const modulePath = join(dir, entry.name);
274
+
275
+ // Check if this directory has an index.ts (is a module)
276
+ const hasIndex = await fileExists(join(modulePath, "index.ts"));
277
+
278
+ if (hasIndex) {
279
+ // This is a module
280
+ const dependencies = new Set<string>();
281
+
282
+ // Check for browser/node entry points
283
+ const hasBrowser = await fileExists(
284
+ join(modulePath, "index.browser.ts"),
285
+ );
286
+ const hasNative = await fileExists(
287
+ join(modulePath, "index.native.ts"),
288
+ );
289
+ const hasNode = await fileExists(join(modulePath, "index.node.ts"));
290
+
291
+ // Get all .ts/.tsx files in this module
292
+ const files = await getAllFiles(modulePath);
293
+
294
+ for (const file of files) {
295
+ const content = await readFile(file, "utf-8");
296
+ const deps = extractAlephaDependencies(
297
+ content,
298
+ packageName,
299
+ moduleName,
292
300
  );
301
+ for (const dep of deps) {
302
+ if (dep.endsWith(".ts")) {
303
+ throw new Error(
304
+ `Invalid dependency '${dep}' in module '${moduleName}'. Do not include file extensions in Alepha module imports.`,
305
+ );
306
+ }
307
+ if (dep.includes("-")) {
308
+ throw new Error(
309
+ `Invalid dependency '${dep}' in module '${moduleName}'. Use '/' instead of '-' in Alepha module imports.`,
310
+ );
311
+ }
312
+ dependencies.add(dep);
313
+ }
293
314
  }
294
- dependencies.add(dep);
295
- }
296
- }
297
315
 
298
- const module: Module = {
299
- name: moduleName,
300
- dependencies: Array.from(dependencies),
301
- };
316
+ const module: Module = {
317
+ name: moduleName,
318
+ dependencies: Array.from(dependencies),
319
+ };
302
320
 
303
- if (hasNative) module.native = true;
304
- if (hasBrowser) module.browser = true;
305
- if (hasNode) module.node = true;
321
+ if (hasNative) module.native = true;
322
+ if (hasBrowser) module.browser = true;
323
+ if (hasNode) module.node = true;
306
324
 
307
- modules.push(module);
325
+ modules.push(module);
326
+ } else {
327
+ // No index.ts, check subdirectories for modules
328
+ await scanDirectory(modulePath, moduleName);
329
+ }
330
+ }
308
331
  }
309
332
  }
310
333
 
334
+ await scanDirectory(srcDir, "");
335
+
311
336
  // Check for circular dependencies
312
337
  detectCircularDependencies(modules);
313
338
 
@@ -6,4 +6,4 @@ export class AppRouter {
6
6
  component: () => "Hello World",
7
7
  });
8
8
  }
9
- `.trim()
9
+ `.trim();
@@ -11,7 +11,7 @@ export const biomeJson = `
11
11
  },
12
12
  "formatter": {
13
13
  "enabled": true,
14
- "indentStyle": "space"
14
+ "useEditorconfig": true
15
15
  },
16
16
  "linter": {
17
17
  "enabled": true,
@@ -30,4 +30,4 @@ export const biomeJson = `
30
30
  }
31
31
  }
32
32
  }
33
- `.trim()
33
+ `.trim();
@@ -0,0 +1,7 @@
1
+ export const dummySpecTs = () => `
2
+ import { test, expect } from "vitest";
3
+
4
+ test("dummy test", () => {
5
+ expect(1 + 1).toBe(2);
6
+ });
7
+ `.trim();
@@ -0,0 +1,13 @@
1
+ export const editorconfig = `
2
+ # https://editorconfig.org
3
+
4
+ root = true
5
+
6
+ [*]
7
+ charset = utf-8
8
+ end_of_line = lf
9
+ insert_final_newline = true
10
+ trim_trailing_whitespace = true
11
+ indent_style = space
12
+ indent_size = 2
13
+ `.trim();
@@ -12,4 +12,4 @@ export const indexHtml = (
12
12
  <script type="module" src="${browserEntry}"></script>
13
13
  </body>
14
14
  </html>
15
- `.trim()
15
+ `.trim();
@@ -7,4 +7,4 @@ const alepha = Alepha.create();
7
7
  alepha.with(AppRouter);
8
8
 
9
9
  run(alepha);
10
- `.trim()
10
+ `.trim();
@@ -0,0 +1,14 @@
1
+ export const mainTs = () => `
2
+ import { Alepha, run } from "alepha";
3
+ import { $logger } from "alepha/logger";
4
+
5
+ const alepha = Alepha.create();
6
+
7
+ alepha.with(() => {
8
+ const log = $logger();
9
+
10
+ log.info("Hello from Alepha!");
11
+ });
12
+
13
+ run(alepha);
14
+ `.trim();
@@ -11,4 +11,4 @@ export default {
11
11
  globals: true,
12
12
  },
13
13
  };
14
- `.trim()
14
+ `.trim();
@@ -12,6 +12,7 @@ export class BiomeCommands {
12
12
  description: "Format the codebase using Biome",
13
13
  handler: async ({ root }) => {
14
14
  await this.utils.ensureConfig(root, { biomeJson: true });
15
+ await this.utils.ensureDependency(root, "@biomejs/biome");
15
16
  await this.utils.exec(`biome format --fix`);
16
17
  },
17
18
  });
@@ -21,6 +22,7 @@ export class BiomeCommands {
21
22
  description: "Run linter across the codebase using Biome",
22
23
  handler: async ({ root }) => {
23
24
  await this.utils.ensureConfig(root, { biomeJson: true });
25
+ await this.utils.ensureDependency(root, "@biomejs/biome");
24
26
  await this.utils.exec(`biome check --formatter-enabled=false --fix`);
25
27
  },
26
28
  });
@@ -51,13 +51,11 @@ export class CoreCommands {
51
51
  name: "init",
52
52
  description: "Add missing Alepha configuration files to the project",
53
53
  flags: t.object({
54
- // TODO:
55
- // force: t.boolean({
56
- // description: "If true, all config files will be overwritten",
57
- // }),
58
54
  // choose package manager
59
55
  yarn: t.optional(t.boolean({ description: "Use Yarn package manager" })),
60
56
  pnpm: t.optional(t.boolean({ description: "Use pnpm package manager" })),
57
+ npm: t.optional(t.boolean({ description: "Use npm package manager" })),
58
+ bun: t.optional(t.boolean({ description: "Use Bun package manager" })),
61
59
  // choose which dependencies to add
62
60
  react: t.optional(
63
61
  t.boolean({ description: "Include Alepha React dependencies" }),
@@ -65,38 +63,63 @@ export class CoreCommands {
65
63
  ui: t.optional(
66
64
  t.boolean({ description: "Include Alepha UI dependencies" }),
67
65
  ),
66
+ test: t.optional(
67
+ t.boolean({ description: "Include Vitest and create test directory" }),
68
+ ),
68
69
  }),
69
70
  handler: async ({ run, flags, root }) => {
70
71
  if (flags.ui) {
71
72
  flags.react = true;
72
73
  }
73
74
 
75
+ const isExpo = await this.utils.hasExpo(root);
76
+
74
77
  await run({
75
- name: "Ensuring configuration files",
78
+ name: "ensuring configuration files",
76
79
  handler: async () => {
77
80
  await this.utils.ensureConfig(root, {
78
81
  tsconfigJson: true,
79
82
  packageJson: flags,
80
83
  biomeJson: true,
81
- viteConfigTs: true,
82
- indexHtml: !!flags.react,
84
+ viteConfigTs: !isExpo,
85
+ editorconfig: true,
86
+ indexHtml: !!flags.react && !isExpo,
83
87
  });
88
+
89
+ // Create src/main.ts if src directory is empty or doesn't exist
90
+ if (!flags.react) {
91
+ await this.utils.ensureSrcMain(root);
92
+ }
84
93
  },
85
94
  });
86
95
 
87
96
  // TODO: check if all alepha dependencies are same version
88
97
 
89
- const guessedPm = await this.utils.getPackageManager(root);
90
-
91
- if (flags.yarn || guessedPm === "yarn") {
98
+ const pm = await this.utils.getPackageManager(root, flags);
99
+ if (pm === "yarn") {
92
100
  await this.utils.ensureYarn(root);
93
101
  await run("yarn set version stable");
94
- await run("yarn install", {
95
- alias: "Installing dependencies with Yarn",
96
- });
102
+ } else if (pm === "pnpm") {
103
+ await this.utils.ensurePnpm(root);
97
104
  } else {
98
- await run("npm install", {
99
- alias: "Installing dependencies with npm",
105
+ await this.utils.ensureNpm(root);
106
+ }
107
+
108
+ await run(`${pm} install`, {
109
+ alias: `installing dependencies with ${pm}`,
110
+ });
111
+
112
+ if (!isExpo) {
113
+ await this.utils.ensureDependency(root, "vite", { run });
114
+ }
115
+
116
+ await this.utils.ensureDependency(root, "@biomejs/biome", { run });
117
+
118
+ // Install vitest and create test directory if --test flag is set
119
+ if (flags.test) {
120
+ await this.utils.ensureTestDir(root);
121
+ await run(`${pm} ${pm === "yarn" ? "add" : "install"} -D vitest`, {
122
+ alias: "setup testing with Vitest",
100
123
  });
101
124
  }
102
125
  },
@@ -37,7 +37,10 @@ export class VerifyCommands {
37
37
  await run("alepha db:check-migrations");
38
38
  }
39
39
 
40
- await run("alepha build");
40
+ const isExpo = await this.utils.hasExpo(root);
41
+ if (!isExpo) {
42
+ await run("alepha build");
43
+ }
41
44
  await run("alepha clean");
42
45
  },
43
46
  });
@@ -48,7 +51,8 @@ export class VerifyCommands {
48
51
  public readonly typecheck = $command({
49
52
  name: "typecheck",
50
53
  description: "Check TypeScript types across the codebase",
51
- handler: async () => {
54
+ handler: async ({ root }) => {
55
+ await this.utils.ensureDependency(root, "typescript");
52
56
  await this.utils.exec("tsc --noEmit");
53
57
  },
54
58
  });
@@ -29,6 +29,7 @@ export class ViteCommands {
29
29
 
30
30
  public readonly run = $command({
31
31
  name: "run",
32
+ hide: true,
32
33
  description: "Run a TypeScript file directly",
33
34
  flags: t.object({
34
35
  watch: t.optional(
@@ -54,11 +55,18 @@ export class ViteCommands {
54
55
  description: "Run the project in development mode",
55
56
  args: t.optional(t.text({ title: "path", description: "Filepath to run" })),
56
57
  handler: async ({ args, root }) => {
58
+ const expo = await this.utils.hasExpo(root);
59
+
57
60
  await this.utils.ensureConfig(root, {
58
- viteConfigTs: true,
61
+ viteConfigTs: !expo,
59
62
  tsconfigJson: true,
60
63
  });
61
64
 
65
+ if (expo) {
66
+ await this.utils.exec(`expo start`);
67
+ return;
68
+ }
69
+
62
70
  const entry = await boot.getServerEntry(root, args);
63
71
  this.log.trace("Entry file found", { entry });
64
72
 
@@ -75,6 +83,8 @@ export class ViteCommands {
75
83
  return;
76
84
  }
77
85
 
86
+ // Ensure vite is installed before running
87
+ await this.utils.ensureDependency(root, "vite");
78
88
  await this.utils.exec(`vite`);
79
89
  },
80
90
  });
@@ -121,6 +131,12 @@ export class ViteCommands {
121
131
  // Tell viteAlephaBuild plugin to skip - CLI handles all tasks
122
132
  process.env.ALEPHA_BUILD_MODE = "cli";
123
133
 
134
+ if (await this.utils.hasExpo(root)) {
135
+ // will coming soon
136
+ // 1. ensure "expo prebuild" is run
137
+ return;
138
+ }
139
+
124
140
  await this.utils.ensureConfig(root, {
125
141
  viteConfigTs: true,
126
142
  tsconfigJson: true,
@@ -132,6 +148,10 @@ export class ViteCommands {
132
148
  const distDir = "dist";
133
149
  const clientDir = "public";
134
150
 
151
+ await this.utils.ensureDependency(root, "vite", {
152
+ run,
153
+ });
154
+
135
155
  await run.rm("dist", {
136
156
  alias: "clean dist",
137
157
  });
@@ -195,14 +215,11 @@ export class ViteCommands {
195
215
  });
196
216
 
197
217
  // Copy assets
198
- // TODO: only copy if assets are found? Currently will always run
199
- await run({
200
- name: "copy assets",
201
- handler: () =>
202
- copyAssets({
203
- entry: `${distDir}/index.js`,
204
- distDir,
205
- }),
218
+ await copyAssets({
219
+ root,
220
+ entry: `${distDir}/index.js`,
221
+ distDir,
222
+ run,
206
223
  });
207
224
 
208
225
  if (hasClient) {
@@ -301,15 +318,8 @@ export class ViteCommands {
301
318
  viteConfigTs: true,
302
319
  });
303
320
 
304
- // check if vitest is installed
305
- try {
306
- await import("vitest");
307
- } catch {
308
- this.log.error(
309
- "Vitest is not installed. Please install it with `npm install -D vitest` or `yarn add -D vitest`.",
310
- );
311
- process.exit(1);
312
- }
321
+ // Ensure vitest is installed before running
322
+ await this.utils.ensureDependency(root, "vitest");
313
323
 
314
324
  await this.utils.exec(`vitest run ${this.env.VITEST_ARGS}`);
315
325
  },