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
@@ -1,5 +1,5 @@
1
1
  import { ServerRouteSecure, ServiceAccountPrimitive, UserAccountToken } from "alepha/security";
2
- import * as alepha23 from "alepha";
2
+ import * as alepha25 from "alepha";
3
3
  import { Alepha, Async, KIND, Primitive, Static } from "alepha";
4
4
  import * as alepha_server0 from "alepha/server";
5
5
  import { ActionPrimitive, ClientRequestEntry, ClientRequestOptions, ClientRequestResponse, FetchResponse, HttpClient, RequestConfigSchema, ServerRequest, ServerRequestConfigEntry, ServerResponseBody, ServerTimingProvider } from "alepha/server";
@@ -8,30 +8,30 @@ import * as alepha_retry0 from "alepha/retry";
8
8
  import { ProxyPrimitiveOptions, ServerProxyProvider } from "alepha/server/proxy";
9
9
 
10
10
  //#region ../../src/server/links/schemas/apiLinksResponseSchema.d.ts
11
- declare const apiLinkSchema: alepha23.TObject<{
12
- name: alepha23.TString;
13
- group: alepha23.TOptional<alepha23.TString>;
14
- path: alepha23.TString;
15
- method: alepha23.TOptional<alepha23.TString>;
16
- requestBodyType: alepha23.TOptional<alepha23.TString>;
17
- service: alepha23.TOptional<alepha23.TString>;
18
- rawSchema: alepha23.TOptional<alepha23.TObject<{
19
- body: alepha23.TOptional<alepha23.TString>;
20
- response: alepha23.TOptional<alepha23.TString>;
11
+ declare const apiLinkSchema: alepha25.TObject<{
12
+ name: alepha25.TString;
13
+ group: alepha25.TOptional<alepha25.TString>;
14
+ path: alepha25.TString;
15
+ method: alepha25.TOptional<alepha25.TString>;
16
+ requestBodyType: alepha25.TOptional<alepha25.TString>;
17
+ service: alepha25.TOptional<alepha25.TString>;
18
+ rawSchema: alepha25.TOptional<alepha25.TObject<{
19
+ body: alepha25.TOptional<alepha25.TString>;
20
+ response: alepha25.TOptional<alepha25.TString>;
21
21
  }>>;
22
22
  }>;
23
- declare const apiLinksResponseSchema: alepha23.TObject<{
24
- prefix: alepha23.TOptional<alepha23.TString>;
25
- links: alepha23.TArray<alepha23.TObject<{
26
- name: alepha23.TString;
27
- group: alepha23.TOptional<alepha23.TString>;
28
- path: alepha23.TString;
29
- method: alepha23.TOptional<alepha23.TString>;
30
- requestBodyType: alepha23.TOptional<alepha23.TString>;
31
- service: alepha23.TOptional<alepha23.TString>;
32
- rawSchema: alepha23.TOptional<alepha23.TObject<{
33
- body: alepha23.TOptional<alepha23.TString>;
34
- response: alepha23.TOptional<alepha23.TString>;
23
+ declare const apiLinksResponseSchema: alepha25.TObject<{
24
+ prefix: alepha25.TOptional<alepha25.TString>;
25
+ links: alepha25.TArray<alepha25.TObject<{
26
+ name: alepha25.TString;
27
+ group: alepha25.TOptional<alepha25.TString>;
28
+ path: alepha25.TString;
29
+ method: alepha25.TOptional<alepha25.TString>;
30
+ requestBodyType: alepha25.TOptional<alepha25.TString>;
31
+ service: alepha25.TOptional<alepha25.TString>;
32
+ rawSchema: alepha25.TOptional<alepha25.TObject<{
33
+ body: alepha25.TOptional<alepha25.TString>;
34
+ response: alepha25.TOptional<alepha25.TString>;
35
35
  }>>;
36
36
  }>>;
37
37
  }>;
@@ -51,35 +51,35 @@ declare class LinkProvider {
51
51
  protected readonly httpClient: HttpClient;
52
52
  protected serverLinks: Array<HttpClientLink>;
53
53
  /**
54
- * Get applicative links registered on the server.
55
- * This does not include lazy-loaded remote links.
56
- */
54
+ * Get applicative links registered on the server.
55
+ * This does not include lazy-loaded remote links.
56
+ */
57
57
  getServerLinks(): HttpClientLink[];
58
58
  /**
59
- * Register a new link for the application.
60
- */
59
+ * Register a new link for the application.
60
+ */
61
61
  registerLink(link: HttpClientLink): void;
62
62
  get links(): HttpClientLink[];
63
63
  /**
64
- * Force browser to refresh links from the server.
65
- */
64
+ * Force browser to refresh links from the server.
65
+ */
66
66
  fetchLinks(): Promise<HttpClientLink[]>;
67
67
  /**
68
- * Create a virtual client that can be used to call actions.
69
- *
70
- * Use js Proxy under the hood.
71
- */
68
+ * Create a virtual client that can be used to call actions.
69
+ *
70
+ * Use js Proxy under the hood.
71
+ */
72
72
  client<T extends object>(scope?: ClientScope): HttpVirtualClient<T>;
73
73
  /**
74
- * Check if a link with the given name exists.
75
- * @param name
76
- */
74
+ * Check if a link with the given name exists.
75
+ * @param name
76
+ */
77
77
  can(name: string): boolean;
78
78
  /**
79
- * Resolve a link by its name and call it.
80
- * - If link is local, it will call the local handler.
81
- * - If link is remote, it will make a fetch request to the remote server.
82
- */
79
+ * Resolve a link by its name and call it.
80
+ * - If link is local, it will call the local handler.
81
+ * - If link is remote, it will make a fetch request to the remote server.
82
+ */
83
83
  follow(name: string, config?: Partial<ServerRequestConfigEntry>, options?: ClientRequestOptions & ClientScope): Promise<any>;
84
84
  protected createVirtualAction<T extends RequestConfigSchema>(name: string, scope?: ClientScope): VirtualAction<T>;
85
85
  protected followRemote(link: HttpClientLink, config?: Partial<ServerRequestConfigEntry>, options?: ClientRequestOptions): Promise<FetchResponse>;
@@ -133,46 +133,46 @@ declare const $remote: {
133
133
  };
134
134
  interface RemotePrimitiveOptions {
135
135
  /**
136
- * The URL of the remote service.
137
- * You can use a function to generate the URL dynamically.
138
- * You probably should use $env(env) to get the URL from the environment.
139
- *
140
- * @example
141
- * ```ts
142
- * import { $remote } from "alepha/server";
143
- * import { $inject, t } from "alepha";
144
- *
145
- * class App {
146
- * env = $env(t.object({
147
- * REMOTE_URL: t.text({default: "http://localhost:3000"}),
148
- * }));
149
- * remote = $remote({
150
- * url: this.env.REMOTE_URL,
151
- * });
152
- * }
153
- * ```
154
- */
136
+ * The URL of the remote service.
137
+ * You can use a function to generate the URL dynamically.
138
+ * You probably should use $env(env) to get the URL from the environment.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * import { $remote } from "alepha/server";
143
+ * import { $inject, t } from "alepha";
144
+ *
145
+ * class App {
146
+ * env = $env(t.object({
147
+ * REMOTE_URL: t.text({default: "http://localhost:3000"}),
148
+ * }));
149
+ * remote = $remote({
150
+ * url: this.env.REMOTE_URL,
151
+ * });
152
+ * }
153
+ * ```
154
+ */
155
155
  url: string | (() => string);
156
156
  /**
157
- * The name of the remote service.
158
- *
159
- * @default Member of the class containing the remote service.
160
- */
157
+ * The name of the remote service.
158
+ *
159
+ * @default Member of the class containing the remote service.
160
+ */
161
161
  name?: string;
162
162
  /**
163
- * If true, all methods of the remote service will be exposed as actions in this context.
164
- * > Note: Proxy will never use the service account, it just... proxies the request.
165
- */
163
+ * If true, all methods of the remote service will be exposed as actions in this context.
164
+ * > Note: Proxy will never use the service account, it just... proxies the request.
165
+ */
166
166
  proxy?: boolean | Partial<ProxyPrimitiveOptions & {
167
167
  /**
168
- * If true, the remote service won't be available internally, only through the proxy.
169
- */
168
+ * If true, the remote service won't be available internally, only through the proxy.
169
+ */
170
170
  noInternal: boolean;
171
171
  }>;
172
172
  /**
173
- * For communication between the server and the remote service with a security layer.
174
- * This will be used for internal communication and will not be exposed to the client.
175
- */
173
+ * For communication between the server and the remote service with a security layer.
174
+ * This will be used for internal communication and will not be exposed to the client.
175
+ */
176
176
  serviceAccount?: ServiceAccountPrimitive;
177
177
  }
178
178
  declare class RemotePrimitive extends Primitive<RemotePrimitiveOptions> {
@@ -190,62 +190,62 @@ declare class RemotePrimitiveProvider {
190
190
  protected readonly remotes: Array<ServerRemote>;
191
191
  protected readonly log: alepha_logger0.Logger;
192
192
  getRemotes(): ServerRemote[];
193
- readonly configure: alepha23.HookPrimitive<"configure">;
194
- readonly start: alepha23.HookPrimitive<"start">;
193
+ readonly configure: alepha25.HookPrimitive<"configure">;
194
+ readonly start: alepha25.HookPrimitive<"start">;
195
195
  registerRemote(value: RemotePrimitive): Promise<void>;
196
196
  protected readonly fetchLinks: alepha_retry0.RetryPrimitiveFn<(opts: FetchLinksOptions) => Promise<ApiLinksResponse>>;
197
197
  }
198
198
  interface FetchLinksOptions {
199
199
  /**
200
- * Name of the remote service.
201
- */
200
+ * Name of the remote service.
201
+ */
202
202
  service: string;
203
203
  /**
204
- * URL to fetch links from.
205
- */
204
+ * URL to fetch links from.
205
+ */
206
206
  url: string;
207
207
  /**
208
- * Authorization header containing access token.
209
- */
208
+ * Authorization header containing access token.
209
+ */
210
210
  authorization?: string;
211
211
  }
212
212
  interface ServerRemote {
213
213
  /**
214
- * URL of the remote service.
215
- */
214
+ * URL of the remote service.
215
+ */
216
216
  url: string;
217
217
  /**
218
- * Name of the remote service.
219
- */
218
+ * Name of the remote service.
219
+ */
220
220
  name: string;
221
221
  /**
222
- * Expose links as endpoint. It's not only internal.
223
- */
222
+ * Expose links as endpoint. It's not only internal.
223
+ */
224
224
  proxy: boolean;
225
225
  /**
226
- * It's only used inside the application.
227
- */
226
+ * It's only used inside the application.
227
+ */
228
228
  internal: boolean;
229
229
  /**
230
- * Links fetcher.
231
- */
230
+ * Links fetcher.
231
+ */
232
232
  links: (args: {
233
233
  authorization?: string;
234
234
  }) => Promise<ApiLinksResponse>;
235
235
  /**
236
- * Fetches schema for the remote service.
237
- */
236
+ * Fetches schema for the remote service.
237
+ */
238
238
  schema: (args: {
239
239
  name: string;
240
240
  authorization?: string;
241
241
  }) => Promise<any>;
242
242
  /**
243
- * Force a default access token provider when not provided.
244
- */
243
+ * Force a default access token provider when not provided.
244
+ */
245
245
  serviceAccount?: ServiceAccountPrimitive;
246
246
  /**
247
- * Prefix for the remote service links.
248
- */
247
+ * Prefix for the remote service links.
248
+ */
249
249
  prefix: string;
250
250
  }
251
251
  //#endregion
@@ -259,33 +259,33 @@ declare class ServerLinksProvider {
259
259
  protected readonly remoteProvider: RemotePrimitiveProvider;
260
260
  protected readonly serverTimingProvider: ServerTimingProvider;
261
261
  get prefix(): string;
262
- readonly onRoute: alepha23.HookPrimitive<"configure">;
262
+ readonly onRoute: alepha25.HookPrimitive<"configure">;
263
263
  /**
264
- * First API - Get all API links for the user.
265
- *
266
- * This is based on the user's permissions.
267
- */
264
+ * First API - Get all API links for the user.
265
+ *
266
+ * This is based on the user's permissions.
267
+ */
268
268
  readonly links: alepha_server0.RoutePrimitive<{
269
- response: alepha23.TObject<{
270
- prefix: alepha23.TOptional<alepha23.TString>;
271
- links: alepha23.TArray<alepha23.TObject<{
272
- name: alepha23.TString;
273
- group: alepha23.TOptional<alepha23.TString>;
274
- path: alepha23.TString;
275
- method: alepha23.TOptional<alepha23.TString>;
276
- requestBodyType: alepha23.TOptional<alepha23.TString>;
277
- service: alepha23.TOptional<alepha23.TString>;
278
- rawSchema: alepha23.TOptional<alepha23.TObject<{
279
- body: alepha23.TOptional<alepha23.TString>;
280
- response: alepha23.TOptional<alepha23.TString>;
269
+ response: alepha25.TObject<{
270
+ prefix: alepha25.TOptional<alepha25.TString>;
271
+ links: alepha25.TArray<alepha25.TObject<{
272
+ name: alepha25.TString;
273
+ group: alepha25.TOptional<alepha25.TString>;
274
+ path: alepha25.TString;
275
+ method: alepha25.TOptional<alepha25.TString>;
276
+ requestBodyType: alepha25.TOptional<alepha25.TString>;
277
+ service: alepha25.TOptional<alepha25.TString>;
278
+ rawSchema: alepha25.TOptional<alepha25.TObject<{
279
+ body: alepha25.TOptional<alepha25.TString>;
280
+ response: alepha25.TOptional<alepha25.TString>;
281
281
  }>>;
282
282
  }>>;
283
283
  }>;
284
284
  }>;
285
285
  /**
286
- * Retrieves API links for the user based on their permissions.
287
- * Will check on local links and remote links.
288
- */
286
+ * Retrieves API links for the user based on their permissions.
287
+ * Will check on local links and remote links.
288
+ */
289
289
  getUserApiLinks(options: GetApiLinksOptions): Promise<ApiLinksResponse>;
290
290
  }
291
291
  interface GetApiLinksOptions {
@@ -297,26 +297,31 @@ interface GetApiLinksOptions {
297
297
  declare module "alepha" {
298
298
  interface State {
299
299
  /**
300
- * API links attached to the server request state.
301
- *
302
- * @see {@link ApiLinksResponse}
303
- * @internal
304
- */
300
+ * API links attached to the server request state.
301
+ *
302
+ * @see {@link ApiLinksResponse}
303
+ * @internal
304
+ */
305
305
  "alepha.server.request.apiLinks"?: ApiLinksResponse;
306
306
  }
307
307
  }
308
308
  /**
309
- * Provides server-side link management and remote capabilities for client-server interactions.
309
+ * | type | quality | stability |
310
+ * |------|---------|-----------|
311
+ * | backend | standard | stable |
310
312
  *
311
- * The server-links module enables declarative link definitions using `$remote` and `$client` primitives,
312
- * facilitating seamless API endpoint management and client-server communication. It integrates with server
313
- * security features to ensure safe and controlled access to resources.
313
+ * Type-safe API client with request deduplication.
314
+ *
315
+ * **Features:**
316
+ * - Virtual HTTP client for type-safe API calls
317
+ * - Remote action definitions
318
+ * - Type inference from action schemas
319
+ * - Request deduplication
320
+ * - Automatic error handling
314
321
  *
315
- * @see {@link $remote}
316
- * @see {@link $client}
317
322
  * @module alepha.server.links
318
323
  */
319
- declare const AlephaServerLinks: alepha23.Service<alepha23.Module>;
324
+ declare const AlephaServerLinks: alepha25.Service<alepha25.Module>;
320
325
  //#endregion
321
326
  export { $client, $remote, AlephaServerLinks, ApiLink, ApiLinksResponse, ClientScope, FetchLinksOptions, GetApiLinksOptions, HttpClientLink, HttpVirtualClient, LinkProvider, RemotePrimitive, RemotePrimitiveOptions, RemotePrimitiveProvider, ServerLinksProvider, ServerRemote, VirtualAction, apiLinkSchema, apiLinksResponseSchema };
322
327
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/links/schemas/apiLinksResponseSchema.ts","../../../src/server/links/providers/LinkProvider.ts","../../../src/server/links/primitives/$client.ts","../../../src/server/links/primitives/$remote.ts","../../../src/server/links/providers/RemotePrimitiveProvider.ts","../../../src/server/links/providers/ServerLinksProvider.ts","../../../src/server/links/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/links/schemas/apiLinksResponseSchema.ts","../../../src/server/links/providers/LinkProvider.ts","../../../src/server/links/primitives/$client.ts","../../../src/server/links/primitives/$remote.ts","../../../src/server/links/providers/RemotePrimitiveProvider.ts","../../../src/server/links/providers/ServerLinksProvider.ts","../../../src/server/links/index.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { SecurityProvider } from "alepha/security";
2
- import { $env, $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, createPrimitive, jsonSchemaToTypeBox, t } from "alepha";
2
+ import { $atom, $env, $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, createPrimitive, jsonSchemaToTypeBox, t } from "alepha";
3
3
  import { $action, $route, AlephaServer, HttpClient, ServerReply, ServerTimingProvider, UnauthorizedError } from "alepha/server";
4
4
  import { $logger } from "alepha/logger";
5
5
  import { $retry } from "alepha/retry";
@@ -23,6 +23,13 @@ const apiLinksResponseSchema = t.object({
23
23
  links: t.array(apiLinkSchema)
24
24
  });
25
25
 
26
+ //#endregion
27
+ //#region ../../src/server/links/atoms/apiLinksAtom.ts
28
+ const apiLinksAtom = $atom({
29
+ name: "alepha.server.request.apiLinks",
30
+ schema: t.optional(apiLinksResponseSchema)
31
+ });
32
+
26
33
  //#endregion
27
34
  //#region ../../src/server/links/providers/LinkProvider.ts
28
35
  /**
@@ -309,8 +316,8 @@ var RemotePrimitiveProvider = class {
309
316
  proxy: !!options.proxy,
310
317
  internal: !proxy.noInternal,
311
318
  schema: async (opts) => {
312
- const { authorization, name: name$1 } = opts;
313
- return await fetch(`${url}${linkPath}/${name$1}/schema`, { headers: new Headers(authorization ? { authorization } : {}) }).then((it) => it.json());
319
+ const { authorization, name } = opts;
320
+ return await fetch(`${url}${linkPath}/${name}/schema`, { headers: new Headers(authorization ? { authorization } : {}) }).then((it) => it.json());
314
321
  },
315
322
  links: async (opts) => {
316
323
  const { authorization } = opts;
@@ -327,8 +334,8 @@ var RemotePrimitiveProvider = class {
327
334
  if (options.proxy) this.proxyProvider.createProxy({
328
335
  path: `${this.env.SERVER_API_PREFIX}/${name}/*`,
329
336
  target: url,
330
- rewrite: (url$1) => {
331
- url$1.pathname = url$1.pathname.replace(`${this.env.SERVER_API_PREFIX}/${name}`, remote.prefix);
337
+ rewrite: (url) => {
338
+ url.pathname = url.pathname.replace(`${this.env.SERVER_API_PREFIX}/${name}`, remote.prefix);
332
339
  },
333
340
  ...proxy
334
341
  });
@@ -461,18 +468,24 @@ var ServerLinksProvider = class {
461
468
  //#endregion
462
469
  //#region ../../src/server/links/index.ts
463
470
  /**
464
- * Provides server-side link management and remote capabilities for client-server interactions.
471
+ * | type | quality | stability |
472
+ * |------|---------|-----------|
473
+ * | backend | standard | stable |
474
+ *
475
+ * Type-safe API client with request deduplication.
465
476
  *
466
- * The server-links module enables declarative link definitions using `$remote` and `$client` primitives,
467
- * facilitating seamless API endpoint management and client-server communication. It integrates with server
468
- * security features to ensure safe and controlled access to resources.
477
+ * **Features:**
478
+ * - Virtual HTTP client for type-safe API calls
479
+ * - Remote action definitions
480
+ * - Type inference from action schemas
481
+ * - Request deduplication
482
+ * - Automatic error handling
469
483
  *
470
- * @see {@link $remote}
471
- * @see {@link $client}
472
484
  * @module alepha.server.links
473
485
  */
474
486
  const AlephaServerLinks = $module({
475
487
  name: "alepha.server.links",
488
+ atoms: [apiLinksAtom],
476
489
  primitives: [$remote, $client],
477
490
  services: [
478
491
  AlephaServer,