alepha 0.15.0 → 0.15.2

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 (551) hide show
  1. package/README.md +43 -98
  2. package/dist/api/audits/index.d.ts +630 -653
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +12 -35
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +365 -358
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +12 -5
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +255 -248
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/jobs/index.js +10 -3
  13. package/dist/api/jobs/index.js.map +1 -1
  14. package/dist/api/keys/index.d.ts +413 -0
  15. package/dist/api/keys/index.d.ts.map +1 -0
  16. package/dist/api/keys/index.js +476 -0
  17. package/dist/api/keys/index.js.map +1 -0
  18. package/dist/api/notifications/index.browser.js +4 -4
  19. package/dist/api/notifications/index.browser.js.map +1 -1
  20. package/dist/api/notifications/index.d.ts +84 -78
  21. package/dist/api/notifications/index.d.ts.map +1 -1
  22. package/dist/api/notifications/index.js +14 -8
  23. package/dist/api/notifications/index.js.map +1 -1
  24. package/dist/api/parameters/index.d.ts +528 -535
  25. package/dist/api/parameters/index.d.ts.map +1 -1
  26. package/dist/api/parameters/index.js +30 -37
  27. package/dist/api/parameters/index.js.map +1 -1
  28. package/dist/api/users/index.d.ts +1221 -910
  29. package/dist/api/users/index.d.ts.map +1 -1
  30. package/dist/api/users/index.js +2556 -248
  31. package/dist/api/users/index.js.map +1 -1
  32. package/dist/api/verifications/index.d.ts +142 -136
  33. package/dist/api/verifications/index.d.ts.map +1 -1
  34. package/dist/api/verifications/index.js +12 -4
  35. package/dist/api/verifications/index.js.map +1 -1
  36. package/dist/batch/index.d.ts +142 -162
  37. package/dist/batch/index.d.ts.map +1 -1
  38. package/dist/batch/index.js +31 -44
  39. package/dist/batch/index.js.map +1 -1
  40. package/dist/bucket/index.d.ts +595 -171
  41. package/dist/bucket/index.d.ts.map +1 -1
  42. package/dist/bucket/index.js +1856 -12
  43. package/dist/bucket/index.js.map +1 -1
  44. package/dist/cache/core/index.d.ts +225 -53
  45. package/dist/cache/core/index.d.ts.map +1 -1
  46. package/dist/cache/core/index.js +213 -7
  47. package/dist/cache/core/index.js.map +1 -1
  48. package/dist/cache/redis/index.d.ts +1 -0
  49. package/dist/cache/redis/index.d.ts.map +1 -1
  50. package/dist/cache/redis/index.js +6 -2
  51. package/dist/cache/redis/index.js.map +1 -1
  52. package/dist/cli/index.d.ts +834 -226
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli/index.js +2872 -417
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/command/index.d.ts +458 -310
  57. package/dist/command/index.d.ts.map +1 -1
  58. package/dist/command/index.js +2011 -76
  59. package/dist/command/index.js.map +1 -1
  60. package/dist/core/index.browser.js +309 -97
  61. package/dist/core/index.browser.js.map +1 -1
  62. package/dist/core/index.d.ts +796 -701
  63. package/dist/core/index.d.ts.map +1 -1
  64. package/dist/core/index.js +329 -97
  65. package/dist/core/index.js.map +1 -1
  66. package/dist/core/index.native.js +309 -97
  67. package/dist/core/index.native.js.map +1 -1
  68. package/dist/datetime/index.d.ts +59 -44
  69. package/dist/datetime/index.d.ts.map +1 -1
  70. package/dist/datetime/index.js +15 -0
  71. package/dist/datetime/index.js.map +1 -1
  72. package/dist/email/index.d.ts +314 -19
  73. package/dist/email/index.d.ts.map +1 -1
  74. package/dist/email/index.js +1852 -7
  75. package/dist/email/index.js.map +1 -1
  76. package/dist/fake/index.d.ts +5500 -5418
  77. package/dist/fake/index.d.ts.map +1 -1
  78. package/dist/fake/index.js +113 -42
  79. package/dist/fake/index.js.map +1 -1
  80. package/dist/lock/core/index.d.ts +219 -212
  81. package/dist/lock/core/index.d.ts.map +1 -1
  82. package/dist/lock/core/index.js +11 -4
  83. package/dist/lock/core/index.js.map +1 -1
  84. package/dist/lock/redis/index.d.ts.map +1 -1
  85. package/dist/logger/index.d.ts +41 -90
  86. package/dist/logger/index.d.ts.map +1 -1
  87. package/dist/logger/index.js +15 -68
  88. package/dist/logger/index.js.map +1 -1
  89. package/dist/mcp/index.d.ts +228 -230
  90. package/dist/mcp/index.d.ts.map +1 -1
  91. package/dist/mcp/index.js +32 -31
  92. package/dist/mcp/index.js.map +1 -1
  93. package/dist/orm/index.browser.js +12 -12
  94. package/dist/orm/index.browser.js.map +1 -1
  95. package/dist/orm/index.bun.js +90 -80
  96. package/dist/orm/index.bun.js.map +1 -1
  97. package/dist/orm/index.d.ts +1434 -1459
  98. package/dist/orm/index.d.ts.map +1 -1
  99. package/dist/orm/index.js +112 -130
  100. package/dist/orm/index.js.map +1 -1
  101. package/dist/queue/core/index.d.ts +262 -254
  102. package/dist/queue/core/index.d.ts.map +1 -1
  103. package/dist/queue/core/index.js +14 -6
  104. package/dist/queue/core/index.js.map +1 -1
  105. package/dist/queue/redis/index.d.ts.map +1 -1
  106. package/dist/react/auth/index.browser.js +108 -0
  107. package/dist/react/auth/index.browser.js.map +1 -0
  108. package/dist/react/auth/index.d.ts +100 -0
  109. package/dist/react/auth/index.d.ts.map +1 -0
  110. package/dist/react/auth/index.js +145 -0
  111. package/dist/react/auth/index.js.map +1 -0
  112. package/dist/react/core/index.d.ts +469 -0
  113. package/dist/react/core/index.d.ts.map +1 -0
  114. package/dist/react/core/index.js +464 -0
  115. package/dist/react/core/index.js.map +1 -0
  116. package/dist/react/form/index.d.ts +232 -0
  117. package/dist/react/form/index.d.ts.map +1 -0
  118. package/dist/react/form/index.js +432 -0
  119. package/dist/react/form/index.js.map +1 -0
  120. package/dist/react/head/index.browser.js +423 -0
  121. package/dist/react/head/index.browser.js.map +1 -0
  122. package/dist/react/head/index.d.ts +288 -0
  123. package/dist/react/head/index.d.ts.map +1 -0
  124. package/dist/react/head/index.js +465 -0
  125. package/dist/react/head/index.js.map +1 -0
  126. package/dist/react/i18n/index.d.ts +175 -0
  127. package/dist/react/i18n/index.d.ts.map +1 -0
  128. package/dist/react/i18n/index.js +224 -0
  129. package/dist/react/i18n/index.js.map +1 -0
  130. package/dist/react/router/index.browser.js +1980 -0
  131. package/dist/react/router/index.browser.js.map +1 -0
  132. package/dist/react/router/index.d.ts +2068 -0
  133. package/dist/react/router/index.d.ts.map +1 -0
  134. package/dist/react/router/index.js +4932 -0
  135. package/dist/react/router/index.js.map +1 -0
  136. package/dist/react/websocket/index.d.ts +117 -0
  137. package/dist/react/websocket/index.d.ts.map +1 -0
  138. package/dist/react/websocket/index.js +107 -0
  139. package/dist/react/websocket/index.js.map +1 -0
  140. package/dist/redis/index.bun.js +4 -0
  141. package/dist/redis/index.bun.js.map +1 -1
  142. package/dist/redis/index.d.ts +127 -130
  143. package/dist/redis/index.d.ts.map +1 -1
  144. package/dist/redis/index.js +16 -25
  145. package/dist/redis/index.js.map +1 -1
  146. package/dist/retry/index.d.ts +80 -71
  147. package/dist/retry/index.d.ts.map +1 -1
  148. package/dist/retry/index.js +11 -2
  149. package/dist/retry/index.js.map +1 -1
  150. package/dist/router/index.d.ts +6 -6
  151. package/dist/router/index.d.ts.map +1 -1
  152. package/dist/scheduler/index.d.ts +119 -28
  153. package/dist/scheduler/index.d.ts.map +1 -1
  154. package/dist/scheduler/index.js +404 -3
  155. package/dist/scheduler/index.js.map +1 -1
  156. package/dist/security/index.d.ts +642 -228
  157. package/dist/security/index.d.ts.map +1 -1
  158. package/dist/security/index.js +1579 -37
  159. package/dist/security/index.js.map +1 -1
  160. package/dist/server/auth/index.d.ts +1141 -111
  161. package/dist/server/auth/index.d.ts.map +1 -1
  162. package/dist/server/auth/index.js +1261 -25
  163. package/dist/server/auth/index.js.map +1 -1
  164. package/dist/server/cache/index.d.ts +63 -78
  165. package/dist/server/cache/index.d.ts.map +1 -1
  166. package/dist/server/cache/index.js +7 -22
  167. package/dist/server/cache/index.js.map +1 -1
  168. package/dist/server/compress/index.d.ts +13 -5
  169. package/dist/server/compress/index.d.ts.map +1 -1
  170. package/dist/server/compress/index.js +10 -2
  171. package/dist/server/compress/index.js.map +1 -1
  172. package/dist/server/cookies/index.d.ts +46 -22
  173. package/dist/server/cookies/index.d.ts.map +1 -1
  174. package/dist/server/cookies/index.js +7 -5
  175. package/dist/server/cookies/index.js.map +1 -1
  176. package/dist/server/core/index.d.ts +307 -196
  177. package/dist/server/core/index.d.ts.map +1 -1
  178. package/dist/server/core/index.js +271 -38
  179. package/dist/server/core/index.js.map +1 -1
  180. package/dist/server/cors/index.d.ts +24 -34
  181. package/dist/server/cors/index.d.ts.map +1 -1
  182. package/dist/server/cors/index.js +7 -21
  183. package/dist/server/cors/index.js.map +1 -1
  184. package/dist/server/health/index.d.ts +25 -19
  185. package/dist/server/health/index.d.ts.map +1 -1
  186. package/dist/server/health/index.js +8 -2
  187. package/dist/server/health/index.js.map +1 -1
  188. package/dist/server/helmet/index.d.ts +13 -5
  189. package/dist/server/helmet/index.d.ts.map +1 -1
  190. package/dist/server/helmet/index.js +11 -3
  191. package/dist/server/helmet/index.js.map +1 -1
  192. package/dist/server/links/index.browser.js +9 -1
  193. package/dist/server/links/index.browser.js.map +1 -1
  194. package/dist/server/links/index.d.ts +133 -128
  195. package/dist/server/links/index.d.ts.map +1 -1
  196. package/dist/server/links/index.js +24 -11
  197. package/dist/server/links/index.js.map +1 -1
  198. package/dist/server/metrics/index.d.ts +524 -4
  199. package/dist/server/metrics/index.d.ts.map +1 -1
  200. package/dist/server/metrics/index.js +4472 -7
  201. package/dist/server/metrics/index.js.map +1 -1
  202. package/dist/server/multipart/index.d.ts +15 -9
  203. package/dist/server/multipart/index.d.ts.map +1 -1
  204. package/dist/server/multipart/index.js +9 -3
  205. package/dist/server/multipart/index.js.map +1 -1
  206. package/dist/server/proxy/index.d.ts +110 -104
  207. package/dist/server/proxy/index.d.ts.map +1 -1
  208. package/dist/server/proxy/index.js +8 -2
  209. package/dist/server/proxy/index.js.map +1 -1
  210. package/dist/server/rate-limit/index.d.ts +46 -51
  211. package/dist/server/rate-limit/index.d.ts.map +1 -1
  212. package/dist/server/rate-limit/index.js +18 -55
  213. package/dist/server/rate-limit/index.js.map +1 -1
  214. package/dist/server/static/index.d.ts +181 -48
  215. package/dist/server/static/index.d.ts.map +1 -1
  216. package/dist/server/static/index.js +1848 -5
  217. package/dist/server/static/index.js.map +1 -1
  218. package/dist/server/swagger/index.d.ts +348 -53
  219. package/dist/server/swagger/index.d.ts.map +1 -1
  220. package/dist/server/swagger/index.js +1849 -6
  221. package/dist/server/swagger/index.js.map +1 -1
  222. package/dist/sms/index.d.ts +312 -18
  223. package/dist/sms/index.d.ts.map +1 -1
  224. package/dist/sms/index.js +1854 -10
  225. package/dist/sms/index.js.map +1 -1
  226. package/dist/system/index.browser.js +496 -0
  227. package/dist/system/index.browser.js.map +1 -0
  228. package/dist/system/index.d.ts +1158 -0
  229. package/dist/system/index.d.ts.map +1 -0
  230. package/dist/{file → system}/index.js +412 -20
  231. package/dist/system/index.js.map +1 -0
  232. package/dist/thread/index.d.ts +82 -73
  233. package/dist/thread/index.d.ts.map +1 -1
  234. package/dist/thread/index.js +13 -4
  235. package/dist/thread/index.js.map +1 -1
  236. package/dist/topic/core/index.d.ts +330 -323
  237. package/dist/topic/core/index.d.ts.map +1 -1
  238. package/dist/topic/core/index.js +12 -5
  239. package/dist/topic/core/index.js.map +1 -1
  240. package/dist/topic/redis/index.d.ts +6 -6
  241. package/dist/topic/redis/index.d.ts.map +1 -1
  242. package/dist/vite/index.d.ts +163 -5825
  243. package/dist/vite/index.d.ts.map +1 -1
  244. package/dist/vite/index.js +130 -477
  245. package/dist/vite/index.js.map +1 -1
  246. package/dist/websocket/index.browser.js +3 -3
  247. package/dist/websocket/index.browser.js.map +1 -1
  248. package/dist/websocket/index.d.ts +287 -283
  249. package/dist/websocket/index.d.ts.map +1 -1
  250. package/dist/websocket/index.js +15 -11
  251. package/dist/websocket/index.js.map +1 -1
  252. package/package.json +86 -17
  253. package/src/api/audits/index.ts +10 -33
  254. package/src/api/files/__tests__/$bucket.spec.ts +1 -1
  255. package/src/api/files/controllers/AdminFileStatsController.spec.ts +1 -1
  256. package/src/api/files/controllers/FileController.spec.ts +1 -1
  257. package/src/api/files/index.ts +10 -3
  258. package/src/api/files/jobs/FileJobs.spec.ts +1 -1
  259. package/src/api/files/services/FileService.spec.ts +1 -1
  260. package/src/api/jobs/index.ts +10 -3
  261. package/src/api/keys/controllers/AdminApiKeyController.ts +75 -0
  262. package/src/api/keys/controllers/ApiKeyController.ts +103 -0
  263. package/src/api/keys/entities/apiKeyEntity.ts +41 -0
  264. package/src/api/keys/index.ts +49 -0
  265. package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +7 -0
  266. package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +17 -0
  267. package/src/api/keys/schemas/createApiKeyBodySchema.ts +7 -0
  268. package/src/api/keys/schemas/createApiKeyResponseSchema.ts +11 -0
  269. package/src/api/keys/schemas/listApiKeyResponseSchema.ts +15 -0
  270. package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +5 -0
  271. package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +5 -0
  272. package/src/api/keys/services/ApiKeyService.spec.ts +553 -0
  273. package/src/api/keys/services/ApiKeyService.ts +306 -0
  274. package/src/api/logs/TODO.md +52 -0
  275. package/src/api/notifications/index.ts +10 -4
  276. package/src/api/parameters/index.ts +9 -30
  277. package/src/api/parameters/primitives/$config.ts +12 -4
  278. package/src/api/parameters/services/ConfigStore.ts +9 -3
  279. package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1035 -0
  280. package/src/api/users/__tests__/ApiKeys.spec.ts +401 -0
  281. package/src/api/users/index.ts +14 -3
  282. package/src/api/users/primitives/$realm.ts +33 -5
  283. package/src/api/users/providers/RealmProvider.ts +1 -12
  284. package/src/api/users/services/SessionService.ts +1 -11
  285. package/src/api/verifications/controllers/VerificationController.ts +2 -0
  286. package/src/api/verifications/index.ts +10 -4
  287. package/src/batch/index.ts +9 -36
  288. package/src/batch/primitives/$batch.ts +0 -8
  289. package/src/batch/providers/BatchProvider.ts +29 -2
  290. package/src/bucket/__tests__/shared.ts +1 -1
  291. package/src/bucket/index.ts +13 -6
  292. package/src/bucket/primitives/$bucket.ts +1 -1
  293. package/src/bucket/providers/LocalFileStorageProvider.ts +1 -1
  294. package/src/bucket/providers/MemoryFileStorageProvider.ts +1 -1
  295. package/src/cache/core/__tests__/shared.ts +30 -0
  296. package/src/cache/core/index.ts +11 -6
  297. package/src/cache/core/primitives/$cache.spec.ts +5 -0
  298. package/src/cache/core/providers/CacheProvider.ts +17 -0
  299. package/src/cache/core/providers/MemoryCacheProvider.ts +300 -1
  300. package/src/cache/redis/__tests__/cache-redis.spec.ts +5 -0
  301. package/src/cache/redis/providers/RedisCacheProvider.ts +9 -0
  302. package/src/cli/apps/AlephaCli.ts +3 -16
  303. package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -2
  304. package/src/cli/atoms/appEntryOptions.ts +13 -0
  305. package/src/cli/atoms/buildOptions.ts +1 -1
  306. package/src/cli/atoms/changelogOptions.ts +1 -1
  307. package/src/cli/commands/build.ts +64 -52
  308. package/src/cli/commands/db.ts +17 -11
  309. package/src/cli/commands/deploy.ts +1 -1
  310. package/src/cli/commands/dev.ts +13 -49
  311. package/src/cli/commands/gen/env.ts +6 -3
  312. package/src/cli/commands/gen/openapi.ts +5 -2
  313. package/src/cli/commands/init.spec.ts +544 -0
  314. package/src/cli/commands/init.ts +101 -58
  315. package/src/cli/commands/lint.ts +8 -2
  316. package/src/cli/commands/typecheck.ts +11 -0
  317. package/src/cli/defineConfig.ts +9 -0
  318. package/src/cli/index.ts +2 -1
  319. package/src/cli/providers/AppEntryProvider.ts +131 -0
  320. package/src/cli/providers/ViteBuildProvider.ts +40 -0
  321. package/src/cli/providers/ViteDevServerProvider.ts +378 -0
  322. package/src/cli/services/AlephaCliUtils.ts +39 -93
  323. package/src/cli/services/PackageManagerUtils.ts +140 -17
  324. package/src/cli/services/ProjectScaffolder.ts +169 -101
  325. package/src/cli/services/ViteUtils.ts +82 -0
  326. package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +41 -28
  327. package/src/cli/{assets → templates}/apiHelloControllerTs.ts +2 -1
  328. package/src/cli/{assets → templates}/biomeJson.ts +2 -1
  329. package/src/cli/{assets → templates}/dummySpecTs.ts +2 -1
  330. package/src/cli/{assets → templates}/editorconfig.ts +2 -1
  331. package/src/cli/templates/gitignore.ts +39 -0
  332. package/src/cli/{assets → templates}/mainBrowserTs.ts +2 -1
  333. package/src/cli/templates/mainCss.ts +33 -0
  334. package/src/cli/templates/mainServerTs.ts +33 -0
  335. package/src/cli/{assets → templates}/tsconfigJson.ts +2 -1
  336. package/src/cli/templates/webAppRouterTs.ts +50 -0
  337. package/src/cli/templates/webHelloComponentTsx.ts +20 -0
  338. package/src/command/helpers/Runner.spec.ts +4 -0
  339. package/src/command/helpers/Runner.ts +3 -21
  340. package/src/command/index.ts +12 -4
  341. package/src/command/providers/CliProvider.spec.ts +1067 -0
  342. package/src/command/providers/CliProvider.ts +203 -40
  343. package/src/core/Alepha.ts +3 -9
  344. package/src/core/__tests__/Alepha-start.spec.ts +4 -4
  345. package/src/core/helpers/jsonSchemaToTypeBox.spec.ts +771 -0
  346. package/src/core/helpers/jsonSchemaToTypeBox.ts +62 -10
  347. package/src/core/index.shared.ts +1 -0
  348. package/src/core/index.ts +20 -0
  349. package/src/core/primitives/$module.ts +12 -0
  350. package/src/core/providers/EventManager.spec.ts +0 -71
  351. package/src/core/providers/EventManager.ts +3 -15
  352. package/src/core/providers/Json.ts +2 -14
  353. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
  354. package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
  355. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  356. package/src/datetime/index.ts +15 -0
  357. package/src/email/index.ts +10 -5
  358. package/src/email/providers/LocalEmailProvider.spec.ts +1 -1
  359. package/src/email/providers/LocalEmailProvider.ts +1 -1
  360. package/src/fake/__tests__/keyName.example.ts +1 -1
  361. package/src/fake/__tests__/keyName.spec.ts +5 -5
  362. package/src/fake/index.ts +9 -6
  363. package/src/fake/providers/FakeProvider.spec.ts +258 -40
  364. package/src/fake/providers/FakeProvider.ts +133 -19
  365. package/src/lock/core/index.ts +11 -4
  366. package/src/logger/index.ts +17 -66
  367. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  368. package/src/mcp/errors/McpError.ts +30 -0
  369. package/src/mcp/index.ts +13 -27
  370. package/src/mcp/transports/SseMcpTransport.ts +6 -7
  371. package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
  372. package/src/orm/index.browser.ts +2 -2
  373. package/src/orm/index.bun.ts +4 -2
  374. package/src/orm/index.ts +21 -47
  375. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  376. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -0
  377. package/src/orm/services/Repository.ts +18 -3
  378. package/src/queue/core/index.ts +14 -6
  379. package/src/react/auth/__tests__/$auth.spec.ts +202 -0
  380. package/src/react/auth/hooks/useAuth.ts +32 -0
  381. package/src/react/auth/index.browser.ts +13 -0
  382. package/src/react/auth/index.shared.ts +2 -0
  383. package/src/react/auth/index.ts +48 -0
  384. package/src/react/auth/providers/ReactAuthProvider.ts +16 -0
  385. package/src/react/auth/services/ReactAuth.ts +135 -0
  386. package/src/react/core/__tests__/Router.spec.tsx +169 -0
  387. package/src/react/core/components/ClientOnly.tsx +49 -0
  388. package/src/react/core/components/ErrorBoundary.tsx +73 -0
  389. package/src/react/core/contexts/AlephaContext.ts +7 -0
  390. package/src/react/core/contexts/AlephaProvider.tsx +42 -0
  391. package/src/react/core/hooks/useAction.browser.spec.tsx +569 -0
  392. package/src/react/core/hooks/useAction.ts +480 -0
  393. package/src/react/core/hooks/useAlepha.ts +26 -0
  394. package/src/react/core/hooks/useClient.ts +17 -0
  395. package/src/react/core/hooks/useEvents.ts +51 -0
  396. package/src/react/core/hooks/useInject.ts +12 -0
  397. package/src/react/core/hooks/useStore.ts +52 -0
  398. package/src/react/core/index.ts +90 -0
  399. package/src/react/form/components/FormState.tsx +17 -0
  400. package/src/react/form/errors/FormValidationError.ts +18 -0
  401. package/src/react/form/hooks/useForm.browser.spec.tsx +366 -0
  402. package/src/react/form/hooks/useForm.ts +47 -0
  403. package/src/react/form/hooks/useFormState.ts +130 -0
  404. package/src/react/form/index.ts +44 -0
  405. package/src/react/form/services/FormModel.ts +614 -0
  406. package/src/react/head/helpers/SeoExpander.spec.ts +203 -0
  407. package/src/react/head/helpers/SeoExpander.ts +142 -0
  408. package/src/react/head/hooks/useHead.spec.tsx +288 -0
  409. package/src/react/head/hooks/useHead.ts +62 -0
  410. package/src/react/head/index.browser.ts +26 -0
  411. package/src/react/head/index.ts +44 -0
  412. package/src/react/head/interfaces/Head.ts +105 -0
  413. package/src/react/head/primitives/$head.ts +25 -0
  414. package/src/react/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
  415. package/src/react/head/providers/BrowserHeadProvider.ts +212 -0
  416. package/src/react/head/providers/HeadProvider.ts +168 -0
  417. package/src/react/head/providers/ServerHeadProvider.ts +31 -0
  418. package/src/react/i18n/__tests__/integration.spec.tsx +239 -0
  419. package/src/react/i18n/components/Localize.spec.tsx +357 -0
  420. package/src/react/i18n/components/Localize.tsx +35 -0
  421. package/src/react/i18n/hooks/useI18n.browser.spec.tsx +438 -0
  422. package/src/react/i18n/hooks/useI18n.ts +18 -0
  423. package/src/react/i18n/index.ts +41 -0
  424. package/src/react/i18n/primitives/$dictionary.ts +69 -0
  425. package/src/react/i18n/providers/I18nProvider.spec.ts +389 -0
  426. package/src/react/i18n/providers/I18nProvider.ts +278 -0
  427. package/src/react/router/__tests__/page-head-browser.browser.spec.ts +95 -0
  428. package/src/react/router/__tests__/page-head.spec.ts +48 -0
  429. package/src/react/router/__tests__/seo-head.spec.ts +125 -0
  430. package/src/react/router/atoms/ssrManifestAtom.ts +58 -0
  431. package/src/react/router/components/ErrorViewer.tsx +872 -0
  432. package/src/react/router/components/Link.tsx +23 -0
  433. package/src/react/router/components/NestedView.tsx +223 -0
  434. package/src/react/router/components/NotFound.tsx +30 -0
  435. package/src/react/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
  436. package/src/react/router/contexts/RouterLayerContext.ts +12 -0
  437. package/src/react/router/errors/Redirection.ts +28 -0
  438. package/src/react/router/hooks/useActive.ts +52 -0
  439. package/src/react/router/hooks/useQueryParams.ts +63 -0
  440. package/src/react/router/hooks/useRouter.ts +20 -0
  441. package/src/react/router/hooks/useRouterState.ts +11 -0
  442. package/src/react/router/index.browser.ts +45 -0
  443. package/src/react/router/index.shared.ts +19 -0
  444. package/src/react/router/index.ts +142 -0
  445. package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
  446. package/src/react/router/primitives/$page.spec.tsx +708 -0
  447. package/src/react/router/primitives/$page.ts +497 -0
  448. package/src/react/router/providers/ReactBrowserProvider.ts +309 -0
  449. package/src/react/router/providers/ReactBrowserRendererProvider.ts +25 -0
  450. package/src/react/router/providers/ReactBrowserRouterProvider.ts +168 -0
  451. package/src/react/router/providers/ReactPageProvider.ts +726 -0
  452. package/src/react/router/providers/ReactServerProvider.spec.tsx +316 -0
  453. package/src/react/router/providers/ReactServerProvider.ts +558 -0
  454. package/src/react/router/providers/ReactServerTemplateProvider.ts +979 -0
  455. package/src/react/router/providers/SSRManifestProvider.ts +334 -0
  456. package/src/react/router/services/ReactPageServerService.ts +48 -0
  457. package/src/react/router/services/ReactPageService.ts +27 -0
  458. package/src/react/router/services/ReactRouter.ts +262 -0
  459. package/src/react/websocket/hooks/useRoom.tsx +242 -0
  460. package/src/react/websocket/index.ts +7 -0
  461. package/src/redis/__tests__/redis.spec.ts +13 -0
  462. package/src/redis/index.ts +9 -25
  463. package/src/redis/providers/BunRedisProvider.ts +9 -0
  464. package/src/redis/providers/NodeRedisProvider.ts +8 -0
  465. package/src/redis/providers/RedisProvider.ts +16 -0
  466. package/src/retry/index.ts +11 -2
  467. package/src/router/index.ts +15 -0
  468. package/src/scheduler/index.ts +11 -2
  469. package/src/security/__tests__/BasicAuth.spec.ts +2 -0
  470. package/src/security/__tests__/ServerSecurityProvider.spec.ts +13 -5
  471. package/src/security/index.ts +15 -10
  472. package/src/security/interfaces/IssuerResolver.ts +27 -0
  473. package/src/security/primitives/$issuer.ts +55 -0
  474. package/src/security/providers/SecurityProvider.ts +179 -0
  475. package/src/security/providers/ServerBasicAuthProvider.ts +6 -2
  476. package/src/security/providers/ServerSecurityProvider.ts +36 -22
  477. package/src/server/auth/index.ts +12 -7
  478. package/src/server/cache/index.ts +7 -22
  479. package/src/server/compress/index.ts +10 -2
  480. package/src/server/cookies/index.ts +7 -5
  481. package/src/server/cookies/primitives/$cookie.ts +33 -11
  482. package/src/server/core/index.ts +17 -7
  483. package/src/server/core/interfaces/ServerRequest.ts +83 -1
  484. package/src/server/core/primitives/$action.spec.ts +1 -1
  485. package/src/server/core/primitives/$action.ts +8 -3
  486. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  487. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  488. package/src/server/core/providers/NodeHttpServerProvider.ts +77 -22
  489. package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
  490. package/src/server/core/providers/ServerProvider.ts +9 -12
  491. package/src/server/core/services/ServerRequestParser.spec.ts +520 -0
  492. package/src/server/core/services/ServerRequestParser.ts +306 -13
  493. package/src/server/cors/index.ts +7 -21
  494. package/src/server/cors/primitives/$cors.ts +6 -2
  495. package/src/server/health/index.ts +8 -2
  496. package/src/server/helmet/index.ts +11 -3
  497. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  498. package/src/server/links/index.browser.ts +2 -0
  499. package/src/server/links/index.ts +13 -6
  500. package/src/server/metrics/index.ts +10 -3
  501. package/src/server/multipart/index.ts +9 -3
  502. package/src/server/proxy/index.ts +8 -2
  503. package/src/server/rate-limit/index.ts +21 -25
  504. package/src/server/rate-limit/primitives/$rateLimit.ts +6 -2
  505. package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +38 -14
  506. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +22 -56
  507. package/src/server/static/index.ts +8 -2
  508. package/src/server/static/providers/ServerStaticProvider.ts +1 -1
  509. package/src/server/swagger/index.ts +9 -4
  510. package/src/server/swagger/providers/ServerSwaggerProvider.ts +1 -1
  511. package/src/sms/index.ts +9 -5
  512. package/src/sms/providers/LocalSmsProvider.spec.ts +1 -1
  513. package/src/sms/providers/LocalSmsProvider.ts +1 -1
  514. package/src/system/index.browser.ts +11 -0
  515. package/src/system/index.ts +62 -0
  516. package/src/{file → system}/providers/FileSystemProvider.ts +16 -0
  517. package/src/{file → system}/providers/MemoryFileSystemProvider.ts +116 -3
  518. package/src/system/providers/MemoryShellProvider.ts +164 -0
  519. package/src/{file → system}/providers/NodeFileSystemProvider.spec.ts +2 -2
  520. package/src/{file → system}/providers/NodeFileSystemProvider.ts +36 -0
  521. package/src/system/providers/NodeShellProvider.ts +184 -0
  522. package/src/system/providers/ShellProvider.ts +74 -0
  523. package/src/{file → system}/services/FileDetector.spec.ts +2 -2
  524. package/src/thread/index.ts +11 -2
  525. package/src/topic/core/index.ts +12 -5
  526. package/src/vite/index.ts +3 -2
  527. package/src/vite/tasks/buildClient.ts +2 -8
  528. package/src/vite/tasks/buildServer.ts +84 -21
  529. package/src/vite/tasks/copyAssets.ts +5 -4
  530. package/src/vite/tasks/generateSitemap.ts +64 -23
  531. package/src/vite/tasks/index.ts +0 -2
  532. package/src/vite/tasks/prerenderPages.ts +49 -24
  533. package/src/websocket/index.ts +12 -8
  534. package/dist/file/index.d.ts +0 -839
  535. package/dist/file/index.d.ts.map +0 -1
  536. package/dist/file/index.js.map +0 -1
  537. package/src/cli/assets/indexHtml.ts +0 -15
  538. package/src/cli/assets/mainServerTs.ts +0 -24
  539. package/src/cli/assets/webAppRouterTs.ts +0 -15
  540. package/src/cli/assets/webHelloComponentTsx.ts +0 -16
  541. package/src/cli/commands/format.ts +0 -23
  542. package/src/file/index.ts +0 -43
  543. package/src/vite/helpers/boot.ts +0 -117
  544. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  545. package/src/vite/tasks/devServer.ts +0 -71
  546. package/src/vite/tasks/runAlepha.ts +0 -270
  547. /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
  548. /package/src/cli/{assets → templates}/apiIndexTs.ts +0 -0
  549. /package/src/cli/{assets → templates}/webIndexTs.ts +0 -0
  550. /package/src/{file → system}/errors/FileError.ts +0 -0
  551. /package/src/{file → system}/services/FileDetector.ts +0 -0
@@ -35,14 +35,14 @@ var __exportAll = (all, symbols) => {
35
35
  }
36
36
  return target;
37
37
  };
38
- var __copyProps = (to, from, except, desc$1) => {
38
+ var __copyProps = (to, from, except, desc) => {
39
39
  if (from && typeof from === "object" || typeof from === "function") {
40
40
  for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
41
41
  key = keys[i];
42
42
  if (!__hasOwnProp.call(to, key) && key !== except) {
43
43
  __defProp(to, key, {
44
44
  get: ((k) => from[k]).bind(null, key),
45
- enumerable: !(desc$1 = __getOwnPropDesc(from, key)) || desc$1.enumerable
45
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
46
46
  });
47
47
  }
48
48
  }
@@ -92,14 +92,14 @@ const insertSchema = (obj) => {
92
92
 
93
93
  //#endregion
94
94
  //#region ../../src/orm/schemas/updateSchema.ts
95
- const updateSchema = (schema$1) => {
95
+ const updateSchema = (schema) => {
96
96
  const newProperties = {};
97
- for (const key in schema$1.properties) {
98
- const prop = schema$1.properties[key];
97
+ for (const key in schema.properties) {
98
+ const prop = schema.properties[key];
99
99
  if (t.schema.isOptional(prop)) newProperties[key] = t.optional(t.union([prop, t.raw.Null()]));
100
100
  else newProperties[key] = prop;
101
101
  }
102
- return t.object(newProperties, "options" in schema$1 && typeof schema$1.options === "object" ? { ...schema$1.options } : {});
102
+ return t.object(newProperties, "options" in schema && typeof schema.options === "object" ? { ...schema.options } : {});
103
103
  };
104
104
 
105
105
  //#endregion
@@ -130,10 +130,10 @@ var EntityPrimitive = class EntityPrimitive {
130
130
  constructor(options) {
131
131
  this.options = options;
132
132
  }
133
- alias(alias$1) {
133
+ alias(alias) {
134
134
  const aliased = new EntityPrimitive(this.options);
135
135
  return new Proxy(aliased, { get(target, prop, receiver) {
136
- if (prop === "$alias") return alias$1;
136
+ if (prop === "$alias") return alias;
137
137
  return Reflect.get(target, prop, receiver);
138
138
  } });
139
139
  }
@@ -199,8 +199,8 @@ var DatabaseProvider = class {
199
199
  registerSequence(sequence) {
200
200
  this.builder.buildSequence(sequence, this);
201
201
  }
202
- async run(statement, schema$1) {
203
- return (await this.execute(statement)).map((row) => this.alepha.codec.decode(schema$1, row));
202
+ async run(statement, schema) {
203
+ return (await this.execute(statement)).map((row) => this.alepha.codec.decode(schema, row));
204
204
  }
205
205
  /**
206
206
  * Get migrations folder path - can be overridden
@@ -323,7 +323,7 @@ var DrizzleKitProvider = class {
323
323
  await this.executeStatements(statements, provider, true);
324
324
  await this.saveDevMigrations(provider, snapshot, entry);
325
325
  }
326
- this.log.info(`Db '${provider.name}' synchronization OK [${Date.now() - now}ms]`);
326
+ this.log.info(`Sync with '${provider.name}' OK [${Date.now() - now}ms]`);
327
327
  }
328
328
  /**
329
329
  * Mostly used for testing purposes. You can generate SQL migration statements without executing them.
@@ -333,16 +333,16 @@ var DrizzleKitProvider = class {
333
333
  const models = this.getModels(provider);
334
334
  if (Object.keys(models).length > 0) {
335
335
  if (provider.dialect === "sqlite") {
336
- const prev$1 = prevSnapshot ?? await kit.generateSQLiteDrizzleJson({});
337
- const curr$1 = await kit.generateSQLiteDrizzleJson(models);
336
+ const prev = prevSnapshot ?? await kit.generateSQLiteDrizzleJson({});
337
+ const curr = await kit.generateSQLiteDrizzleJson(models);
338
338
  return {
339
339
  models,
340
- statements: await kit.generateSQLiteMigration(prev$1, curr$1),
341
- snapshot: curr$1
340
+ statements: await kit.generateSQLiteMigration(prev, curr),
341
+ snapshot: curr
342
342
  };
343
343
  }
344
- const prev = prevSnapshot ?? await kit.generateDrizzleJson({});
345
- const curr = await kit.generateDrizzleJson(models);
344
+ const prev = prevSnapshot ?? kit.generateDrizzleJson({});
345
+ const curr = kit.generateDrizzleJson(models);
346
346
  return {
347
347
  models,
348
348
  statements: await kit.generateMigration(prev, curr),
@@ -629,8 +629,8 @@ var PostgresModelBuilder = class extends ModelBuilder {
629
629
  };
630
630
  return this.buildTableConfig(entity, pgBuilders, tableResolver);
631
631
  }
632
- schemaToPgColumns = (tableName, schema$1, nsp, enums, tables) => {
633
- return Object.entries(schema$1.properties).reduce((columns, [key, value]) => {
632
+ schemaToPgColumns = (tableName, schema, nsp, enums, tables) => {
633
+ return Object.entries(schema.properties).reduce((columns, [key, value]) => {
634
634
  let col = this.mapFieldToColumn(tableName, key, value, nsp, enums);
635
635
  if ("default" in value && value.default != null) col = col.default(value.default);
636
636
  if (PG_PRIMARY_KEY in value) col = col.primaryKey();
@@ -645,7 +645,7 @@ var PostgresModelBuilder = class extends ModelBuilder {
645
645
  return target;
646
646
  }, config.actions);
647
647
  }
648
- if (schema$1.required?.includes(key)) col = col.notNull();
648
+ if (schema.required?.includes(key)) col = col.notNull();
649
649
  return {
650
650
  ...columns,
651
651
  [key]: col
@@ -684,7 +684,7 @@ var PostgresModelBuilder = class extends ModelBuilder {
684
684
  if (t.schema.isBoolean(value)) return pg$2.boolean(key);
685
685
  if (t.schema.isObject(value)) return schema(key, value);
686
686
  if (t.schema.isRecord(value)) return schema(key, value);
687
- const isTypeEnum = (value$1) => t.schema.isUnsafe(value$1) && "type" in value$1 && value$1.type === "string" && "enum" in value$1 && Array.isArray(value$1.enum);
687
+ const isTypeEnum = (value) => t.schema.isUnsafe(value) && "type" in value && value.type === "string" && "enum" in value && Array.isArray(value.enum);
688
688
  if (t.schema.isArray(value)) {
689
689
  if (t.schema.isObject(value.items)) return schema(key, value);
690
690
  if (t.schema.isRecord(value.items)) return schema(key, value);
@@ -812,8 +812,8 @@ var BunPostgresProvider = class extends DatabaseProvider {
812
812
  return this.bunDb;
813
813
  }
814
814
  async executeMigrations(migrationsFolder) {
815
- const { migrate: migrate$1 } = await import("drizzle-orm/bun-sql/migrator");
816
- await migrate$1(this.bunDb, { migrationsFolder });
815
+ const { migrate } = await import("drizzle-orm/bun-sql/migrator");
816
+ await migrate(this.bunDb, { migrationsFolder });
817
817
  }
818
818
  onStart = $hook({
819
819
  on: "start",
@@ -841,10 +841,10 @@ var BunPostgresProvider = class extends DatabaseProvider {
841
841
  async connect() {
842
842
  this.log.debug("Connect ..");
843
843
  if (typeof Bun === "undefined") throw new AlephaError("BunPostgresProvider requires the Bun runtime. Use NodePostgresProvider for Node.js.");
844
- const { drizzle: drizzle$1 } = await import("drizzle-orm/bun-sql");
844
+ const { drizzle } = await import("drizzle-orm/bun-sql");
845
845
  this.client = new Bun.SQL(this.url);
846
846
  await this.client.unsafe("SELECT 1");
847
- this.bunDb = drizzle$1({
847
+ this.bunDb = drizzle({
848
848
  client: this.client,
849
849
  logger: { logQuery: (query, params) => {
850
850
  this.log.trace(query, { params });
@@ -897,8 +897,8 @@ var SqliteModelBuilder = class extends ModelBuilder {
897
897
  return Array.isArray(customConfigs) ? customConfigs : [];
898
898
  });
899
899
  }
900
- schemaToSqliteColumns = (tableName, schema$1, enums, tables) => {
901
- return Object.entries(schema$1.properties).reduce((columns, [key, value]) => {
900
+ schemaToSqliteColumns = (tableName, schema, enums, tables) => {
901
+ return Object.entries(schema.properties).reduce((columns, [key, value]) => {
902
902
  let col = this.mapFieldToSqliteColumn(tableName, key, value, enums);
903
903
  if ("default" in value && value.default != null) col = col.default(value.default);
904
904
  if (PG_PRIMARY_KEY in value) col = col.primaryKey();
@@ -913,7 +913,7 @@ var SqliteModelBuilder = class extends ModelBuilder {
913
913
  return target;
914
914
  }, config.actions);
915
915
  }
916
- if (schema$1.required?.includes(key)) col = col.notNull();
916
+ if (schema.required?.includes(key)) col = col.notNull();
917
917
  return {
918
918
  ...columns,
919
919
  [key]: col
@@ -1062,14 +1062,14 @@ var BunSqliteProvider = class extends DatabaseProvider {
1062
1062
  handler: async () => {
1063
1063
  if (typeof Bun === "undefined") throw new AlephaError("BunSqliteProvider requires the Bun runtime. Use NodeSqliteProvider for Node.js.");
1064
1064
  const { Database } = await import("bun:sqlite");
1065
- const { drizzle: drizzle$1 } = await import("drizzle-orm/bun-sqlite");
1065
+ const { drizzle } = await import("drizzle-orm/bun-sqlite");
1066
1066
  const filepath = this.url.replace("sqlite://", "").replace("sqlite:", "");
1067
1067
  if (filepath !== ":memory:" && filepath !== "") {
1068
1068
  const dirname = filepath.split("/").slice(0, -1).join("/");
1069
1069
  if (dirname) await mkdir(dirname, { recursive: true }).catch(() => null);
1070
1070
  }
1071
1071
  this.sqlite = new Database(filepath);
1072
- this.bunDb = drizzle$1({
1072
+ this.bunDb = drizzle({
1073
1073
  client: this.sqlite,
1074
1074
  logger: { logQuery: (query, params) => {
1075
1075
  this.log.trace(query, { params });
@@ -1081,6 +1081,7 @@ var BunSqliteProvider = class extends DatabaseProvider {
1081
1081
  });
1082
1082
  onStop = $hook({
1083
1083
  on: "stop",
1084
+ priority: "last",
1084
1085
  handler: async () => {
1085
1086
  if (this.sqlite) {
1086
1087
  this.log.debug("Closing Bun SQLite connection...");
@@ -1092,8 +1093,8 @@ var BunSqliteProvider = class extends DatabaseProvider {
1092
1093
  }
1093
1094
  });
1094
1095
  async executeMigrations(migrationsFolder) {
1095
- const { migrate: migrate$1 } = await import("drizzle-orm/bun-sqlite/migrator");
1096
- await migrate$1(this.bunDb, { migrationsFolder });
1096
+ const { migrate } = await import("drizzle-orm/bun-sqlite/migrator");
1097
+ await migrate(this.bunDb, { migrationsFolder });
1097
1098
  }
1098
1099
  };
1099
1100
 
@@ -1145,15 +1146,15 @@ var CloudflareD1Provider = class extends DatabaseProvider {
1145
1146
  const binding = cloudflareEnv[bindingName];
1146
1147
  if (!binding) throw new AlephaError(`D1 binding '${bindingName}' not found in Cloudflare Workers environment.`);
1147
1148
  this.d1 = binding;
1148
- const { drizzle: drizzle$1 } = await import("drizzle-orm/d1");
1149
- this.drizzleDb = drizzle$1(this.d1);
1149
+ const { drizzle } = await import("drizzle-orm/d1");
1150
+ this.drizzleDb = drizzle(this.d1);
1150
1151
  await this.migrate();
1151
1152
  this.log.info("Using Cloudflare D1 database");
1152
1153
  }
1153
1154
  });
1154
1155
  async executeMigrations(migrationsFolder) {
1155
- const { migrate: migrate$1 } = await import("drizzle-orm/d1/migrator");
1156
- await migrate$1(this.db, { migrationsFolder });
1156
+ const { migrate } = await import("drizzle-orm/d1/migrator");
1157
+ await migrate(this.db, { migrationsFolder });
1157
1158
  }
1158
1159
  /**
1159
1160
  * Override development migration to skip sync (not supported on D1).
@@ -1220,13 +1221,13 @@ var PglitePostgresProvider = class PglitePostgresProvider extends DatabaseProvid
1220
1221
  if (Object.keys(this.kit.getModels(this)).length === 0) return;
1221
1222
  const module = PglitePostgresProvider.importPglite();
1222
1223
  if (!module) throw new AlephaError("@electric-sql/pglite is not installed. Please install it to use the pglite driver.");
1223
- const { drizzle: drizzle$1 } = createRequire(import.meta.url)("drizzle-orm/pglite");
1224
+ const { drizzle } = createRequire(import.meta.url)("drizzle-orm/pglite");
1224
1225
  const path = this.url;
1225
1226
  if (path !== ":memory:") {
1226
1227
  await mkdir(path, { recursive: true }).catch(() => null);
1227
1228
  this.client = new module.PGlite(path);
1228
1229
  } else this.client = new module.PGlite();
1229
- this.pglite = drizzle$1({ client: this.client });
1230
+ this.pglite = drizzle({ client: this.client });
1230
1231
  await this.migrate();
1231
1232
  this.log.info(`Using PGlite database at ${path}`);
1232
1233
  }
@@ -1303,10 +1304,10 @@ const pgAttr = (type, attr, value) => {
1303
1304
  /**
1304
1305
  * Retrieves the fields of a schema that have a specific attribute.
1305
1306
  */
1306
- const getAttrFields = (schema$1, name) => {
1307
+ const getAttrFields = (schema, name) => {
1307
1308
  const fields = [];
1308
- for (const key of Object.keys(schema$1.properties)) {
1309
- const value = schema$1.properties[key];
1309
+ for (const key of Object.keys(schema.properties)) {
1310
+ const value = schema.properties[key];
1310
1311
  if (name in value) fields.push({
1311
1312
  type: value,
1312
1313
  key,
@@ -1342,13 +1343,13 @@ var PgRelationManager = class {
1342
1343
  /**
1343
1344
  * Map a row with its joined relations based on the joins definition
1344
1345
  */
1345
- mapRowWithJoins(record, row, schema$1, joins, parentKey) {
1346
+ mapRowWithJoins(record, row, schema, joins, parentKey) {
1346
1347
  for (const join of joins) if (join.parent === parentKey) {
1347
1348
  const joinedData = row[join.table];
1348
1349
  if (this.isAllNull(joinedData)) record[join.key] = void 0;
1349
1350
  else {
1350
1351
  record[join.key] = joinedData;
1351
- this.mapRowWithJoins(record[join.key], row, schema$1, joins, parentKey ? `${parentKey}.${join.key}` : join.key);
1352
+ this.mapRowWithJoins(record[join.key], row, schema, joins, parentKey ? `${parentKey}.${join.key}` : join.key);
1352
1353
  }
1353
1354
  }
1354
1355
  return record;
@@ -1365,16 +1366,16 @@ var PgRelationManager = class {
1365
1366
  * Build a schema that includes all join properties recursively
1366
1367
  */
1367
1368
  buildSchemaWithJoins(baseSchema, joins, parentPath) {
1368
- const schema$1 = Value.Clone(baseSchema);
1369
+ const schema = Value.Clone(baseSchema);
1369
1370
  const joinsAtThisLevel = joins.filter((j) => j.parent === parentPath);
1370
1371
  for (const join of joinsAtThisLevel) {
1371
1372
  const joinPath = parentPath ? `${parentPath}.${join.key}` : join.key;
1372
1373
  const childJoins = joins.filter((j) => j.parent === joinPath);
1373
1374
  let joinSchema = join.schema;
1374
1375
  if (childJoins.length > 0) joinSchema = this.buildSchemaWithJoins(join.schema, joins, joinPath);
1375
- schema$1.properties[join.key] = t.optional(joinSchema);
1376
+ schema.properties[join.key] = t.optional(joinSchema);
1376
1377
  }
1377
- return schema$1;
1378
+ return schema;
1378
1379
  }
1379
1380
  };
1380
1381
 
@@ -1386,7 +1387,7 @@ var QueryManager = class {
1386
1387
  * Convert a query object to a SQL query.
1387
1388
  */
1388
1389
  toSQL(query, options) {
1389
- const { schema: schema$1, col, joins } = options;
1390
+ const { schema, col, joins } = options;
1390
1391
  const conditions = [];
1391
1392
  if (isSQLWrapper(query)) conditions.push(query);
1392
1393
  else {
@@ -1408,13 +1409,13 @@ var QueryManager = class {
1408
1409
  parent: newParent
1409
1410
  };
1410
1411
  });
1411
- const sql$2 = this.toSQL(query[key], {
1412
+ const sql = this.toSQL(query[key], {
1412
1413
  schema: join.schema,
1413
1414
  col: join.col,
1414
1415
  joins: recursiveJoins.length > 0 ? recursiveJoins : void 0,
1415
1416
  dialect: options.dialect
1416
1417
  });
1417
- if (sql$2) conditions.push(sql$2);
1418
+ if (sql) conditions.push(sql);
1418
1419
  continue;
1419
1420
  }
1420
1421
  }
@@ -1422,7 +1423,7 @@ var QueryManager = class {
1422
1423
  const operations = operator.map((it) => {
1423
1424
  if (isSQLWrapper(it)) return it;
1424
1425
  return this.toSQL(it, {
1425
- schema: schema$1,
1426
+ schema,
1426
1427
  col,
1427
1428
  joins,
1428
1429
  dialect: options.dialect
@@ -1433,7 +1434,7 @@ var QueryManager = class {
1433
1434
  }
1434
1435
  if (key === "not") {
1435
1436
  const where = this.toSQL(operator, {
1436
- schema: schema$1,
1437
+ schema,
1437
1438
  col,
1438
1439
  joins,
1439
1440
  dialect: options.dialect
@@ -1442,8 +1443,8 @@ var QueryManager = class {
1442
1443
  }
1443
1444
  if (operator) {
1444
1445
  const column = col(key);
1445
- const sql$2 = this.mapOperatorToSql(operator, column, schema$1, key, options.dialect);
1446
- if (sql$2) conditions.push(sql$2);
1446
+ const sql = this.mapOperatorToSql(operator, column, schema, key, options.dialect);
1447
+ if (sql) conditions.push(sql);
1447
1448
  }
1448
1449
  }
1449
1450
  }
@@ -1612,7 +1613,7 @@ var QueryManager = class {
1612
1613
 
1613
1614
  //#endregion
1614
1615
  //#region ../../src/orm/services/Repository.ts
1615
- var Repository = class {
1616
+ var Repository = class Repository {
1616
1617
  entity;
1617
1618
  provider;
1618
1619
  log = $logger();
@@ -1620,6 +1621,13 @@ var Repository = class {
1620
1621
  queryManager = $inject(QueryManager);
1621
1622
  dateTimeProvider = $inject(DateTimeProvider);
1622
1623
  alepha = $inject(Alepha);
1624
+ static of(entity, provider = DatabaseProvider) {
1625
+ return class InlineRepository extends Repository {
1626
+ constructor() {
1627
+ super(entity, provider);
1628
+ }
1629
+ };
1630
+ }
1623
1631
  constructor(entity, provider = DatabaseProvider) {
1624
1632
  this.entity = entity;
1625
1633
  this.provider = this.alepha.inject(provider);
@@ -1674,11 +1682,11 @@ var Repository = class {
1674
1682
  * }
1675
1683
  * ```
1676
1684
  */
1677
- async query(query, schema$1) {
1685
+ async query(query, schema) {
1678
1686
  const raw = typeof query === "function" ? query(this.table, this.db) : query;
1679
1687
  if (typeof raw === "string" && raw.includes("[object Object]")) throw new AlephaError("Invalid SQL query. Did you forget to call the 'sql' function?");
1680
1688
  return (await this.provider.execute(raw)).map((it) => {
1681
- return this.clean(this.mapRawFieldsToEntity(it), schema$1 ?? this.entity.schema);
1689
+ return this.clean(this.mapRawFieldsToEntity(it), schema ?? this.entity.schema);
1682
1690
  });
1683
1691
  }
1684
1692
  /**
@@ -1724,11 +1732,11 @@ var Repository = class {
1724
1732
  * Start a SELECT DISTINCT query on the table.
1725
1733
  */
1726
1734
  rawSelectDistinct(opts = {}, columns = []) {
1727
- const db$1 = opts.tx ?? this.db;
1735
+ const db = opts.tx ?? this.db;
1728
1736
  const table = this.table;
1729
1737
  const fields = {};
1730
1738
  for (const column of columns) if (typeof column === "string") fields[column] = this.col(column);
1731
- return db$1.selectDistinct(fields).from(table);
1739
+ return db.selectDistinct(fields).from(table);
1732
1740
  }
1733
1741
  /**
1734
1742
  * Start an INSERT query on the table.
@@ -1780,21 +1788,21 @@ var Repository = class {
1780
1788
  }
1781
1789
  try {
1782
1790
  let rows = await builder.execute();
1783
- let schema$1 = this.entity.schema;
1784
- if (columns) schema$1 = t.pick(schema$1, columns);
1791
+ let schema = this.entity.schema;
1792
+ if (columns) schema = t.pick(schema, columns);
1785
1793
  if (joins.length) rows = rows.map((row) => {
1786
1794
  const rowSchema = {
1787
- ...schema$1,
1788
- properties: { ...schema$1.properties }
1795
+ ...schema,
1796
+ properties: { ...schema.properties }
1789
1797
  };
1790
1798
  return this.relationManager.mapRowWithJoins(row[this.tableName], row, rowSchema, joins);
1791
1799
  });
1792
1800
  rows = rows.map((row) => {
1793
1801
  if (joins.length) {
1794
- const joinedSchema = this.relationManager.buildSchemaWithJoins(schema$1, joins);
1802
+ const joinedSchema = this.relationManager.buildSchemaWithJoins(schema, joins);
1795
1803
  return this.cleanWithJoins(row, joinedSchema, joins);
1796
1804
  }
1797
- return this.clean(row, schema$1);
1805
+ return this.clean(row, schema);
1798
1806
  });
1799
1807
  await this.alepha.events.emit("repository:read:after", {
1800
1808
  tableName: this.tableName,
@@ -2140,27 +2148,27 @@ var Repository = class {
2140
2148
  * Convert something to valid Pg Insert Value.
2141
2149
  */
2142
2150
  cast(data, insert) {
2143
- const schema$1 = insert ? this.entity.insertSchema : t.partial(this.entity.updateSchema);
2144
- return this.alepha.codec.encode(schema$1, data);
2151
+ const schema = insert ? this.entity.insertSchema : t.partial(this.entity.updateSchema);
2152
+ return this.alepha.codec.encode(schema, data);
2145
2153
  }
2146
2154
  /**
2147
2155
  * Transform a row from the database into a clean entity.
2148
2156
  */
2149
- clean(row, schema$1) {
2150
- for (const key of Object.keys(schema$1.properties)) {
2151
- const value = schema$1.properties[key];
2157
+ clean(row, schema) {
2158
+ for (const key of Object.keys(schema.properties)) {
2159
+ const value = schema.properties[key];
2152
2160
  if (typeof row[key] === "string") {
2153
2161
  if (t.schema.isDateTime(value)) row[key] = this.dateTimeProvider.of(row[key]).toISOString();
2154
2162
  else if (t.schema.isDate(value)) row[key] = this.dateTimeProvider.of(`${row[key]}T00:00:00Z`).toISOString().split("T")[0];
2155
2163
  }
2156
2164
  if (typeof row[key] === "bigint" && t.schema.isBigInt(value)) row[key] = row[key].toString();
2157
2165
  }
2158
- return this.alepha.codec.decode(schema$1, row);
2166
+ return this.alepha.codec.decode(schema, row);
2159
2167
  }
2160
2168
  /**
2161
2169
  * Clean a row with joins recursively
2162
2170
  */
2163
- cleanWithJoins(row, schema$1, joins, parentPath) {
2171
+ cleanWithJoins(row, schema, joins, parentPath) {
2164
2172
  const joinsAtThisLevel = joins.filter((j) => j.parent === parentPath);
2165
2173
  const cleanRow = { ...row };
2166
2174
  const joinedData = {};
@@ -2168,7 +2176,7 @@ var Repository = class {
2168
2176
  joinedData[join.key] = cleanRow[join.key];
2169
2177
  delete cleanRow[join.key];
2170
2178
  }
2171
- const entity = this.clean(cleanRow, schema$1);
2179
+ const entity = this.clean(cleanRow, schema);
2172
2180
  for (const join of joinsAtThisLevel) {
2173
2181
  const joinedValue = joinedData[join.key];
2174
2182
  if (joinedValue != null) {
@@ -2204,8 +2212,8 @@ var Repository = class {
2204
2212
  /**
2205
2213
  * Find a primary key in the schema.
2206
2214
  */
2207
- getPrimaryKey(schema$1) {
2208
- const primaryKeys = getAttrFields(schema$1, PG_PRIMARY_KEY);
2215
+ getPrimaryKey(schema) {
2216
+ const primaryKeys = getAttrFields(schema, PG_PRIMARY_KEY);
2209
2217
  if (primaryKeys.length === 0) throw new AlephaError("Primary key not found in schema");
2210
2218
  if (primaryKeys.length > 1) throw new AlephaError(`Multiple primary keys (${primaryKeys.length}) are not supported`);
2211
2219
  return {
@@ -2523,8 +2531,8 @@ function buildQueryString(where) {
2523
2531
  if (!where || typeof where !== "object") return "";
2524
2532
  if ("and" in where && Array.isArray(where.and)) return where.and.map((w) => buildQueryString(w)).join("&");
2525
2533
  if ("or" in where && Array.isArray(where.or)) {
2526
- const parts$1 = where.or.map((w) => buildQueryString(w));
2527
- return parts$1.length > 1 ? `(${parts$1.join("|")})` : parts$1[0];
2534
+ const parts = where.or.map((w) => buildQueryString(w));
2535
+ return parts.length > 1 ? `(${parts.join("|")})` : parts[0];
2528
2536
  }
2529
2537
  if ("not" in where) return "";
2530
2538
  const parts = [];
@@ -2719,7 +2727,7 @@ var index_bun_exports = /* @__PURE__ */ __exportAll({
2719
2727
  $repository: () => $repository,
2720
2728
  $sequence: () => $sequence,
2721
2729
  $transaction: () => $transaction,
2722
- AlephaPostgres: () => AlephaPostgres,
2730
+ AlephaOrm: () => AlephaOrm,
2723
2731
  BunPostgresProvider: () => BunPostgresProvider,
2724
2732
  BunSqliteProvider: () => BunSqliteProvider,
2725
2733
  CloudflareD1Provider: () => CloudflareD1Provider,
@@ -2745,6 +2753,7 @@ var index_bun_exports = /* @__PURE__ */ __exportAll({
2745
2753
  Repository: () => Repository,
2746
2754
  RepositoryProvider: () => RepositoryProvider,
2747
2755
  SequencePrimitive: () => SequencePrimitive,
2756
+ SqliteProvider: () => SqliteProvider,
2748
2757
  buildQueryString: () => buildQueryString,
2749
2758
  bunSqliteOptions: () => bunSqliteOptions,
2750
2759
  db: () => db,
@@ -2761,8 +2770,9 @@ var index_bun_exports = /* @__PURE__ */ __exportAll({
2761
2770
  sql: () => sql,
2762
2771
  updateSchema: () => updateSchema
2763
2772
  });
2764
- const AlephaPostgres = $module({
2765
- name: "alepha.postgres",
2773
+ const SqliteProvider = BunSqliteProvider;
2774
+ const AlephaOrm = $module({
2775
+ name: "alepha.orm",
2766
2776
  primitives: [$sequence, $entity],
2767
2777
  services: [
2768
2778
  AlephaDateTime,
@@ -2810,5 +2820,5 @@ const AlephaPostgres = $module({
2810
2820
  });
2811
2821
 
2812
2822
  //#endregion
2813
- export { $entity, $repository, $sequence, $transaction, AlephaPostgres, BunPostgresProvider, BunSqliteProvider, CloudflareD1Provider, DatabaseProvider, DatabaseTypeProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityPrimitive, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Repository, RepositoryProvider, SequencePrimitive, buildQueryString, bunSqliteOptions, db, drizzle, getAttrFields, insertSchema, legacyIdSchema, pageQuerySchema, pageSchema, parseQueryString, pg, pgAttr, schema, sql, updateSchema };
2823
+ export { $entity, $repository, $sequence, $transaction, AlephaOrm, BunPostgresProvider, BunSqliteProvider, CloudflareD1Provider, DatabaseProvider, DatabaseTypeProvider, DbConflictError, DbEntityNotFoundError, DbError, DbMigrationError, DbVersionMismatchError, DrizzleKitProvider, EntityPrimitive, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_ENUM, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Repository, RepositoryProvider, SequencePrimitive, SqliteProvider, buildQueryString, bunSqliteOptions, db, drizzle, getAttrFields, insertSchema, legacyIdSchema, pageQuerySchema, pageSchema, parseQueryString, pg, pgAttr, schema, sql, updateSchema };
2814
2824
  //# sourceMappingURL=index.bun.js.map