alepha 0.13.1 → 0.13.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 (296) hide show
  1. package/README.md +1 -1
  2. package/dist/api-files/index.d.ts +28 -91
  3. package/dist/api-files/index.js +10 -755
  4. package/dist/api-files/index.js.map +1 -1
  5. package/dist/api-jobs/index.d.ts +46 -46
  6. package/dist/api-jobs/index.js +13 -13
  7. package/dist/api-jobs/index.js.map +1 -1
  8. package/dist/api-notifications/index.d.ts +129 -146
  9. package/dist/api-notifications/index.js +17 -39
  10. package/dist/api-notifications/index.js.map +1 -1
  11. package/dist/api-parameters/index.d.ts +21 -22
  12. package/dist/api-parameters/index.js +22 -22
  13. package/dist/api-parameters/index.js.map +1 -1
  14. package/dist/api-users/index.d.ts +223 -2000
  15. package/dist/api-users/index.js +914 -4787
  16. package/dist/api-users/index.js.map +1 -1
  17. package/dist/api-verifications/index.d.ts +96 -96
  18. package/dist/batch/index.d.ts +13 -13
  19. package/dist/batch/index.js +8 -8
  20. package/dist/batch/index.js.map +1 -1
  21. package/dist/bucket/index.d.ts +14 -14
  22. package/dist/bucket/index.js +12 -12
  23. package/dist/bucket/index.js.map +1 -1
  24. package/dist/cache/index.d.ts +11 -11
  25. package/dist/cache/index.js +9 -9
  26. package/dist/cache/index.js.map +1 -1
  27. package/dist/cli/index.d.ts +28 -26
  28. package/dist/cli/index.js +50 -13
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/command/index.d.ts +19 -19
  31. package/dist/command/index.js +25 -25
  32. package/dist/command/index.js.map +1 -1
  33. package/dist/core/index.browser.js +218 -218
  34. package/dist/core/index.browser.js.map +1 -1
  35. package/dist/core/index.d.ts +232 -232
  36. package/dist/core/index.js +218 -218
  37. package/dist/core/index.js.map +1 -1
  38. package/dist/core/index.native.js +2113 -0
  39. package/dist/core/index.native.js.map +1 -0
  40. package/dist/datetime/index.d.ts +9 -9
  41. package/dist/datetime/index.js +7 -7
  42. package/dist/datetime/index.js.map +1 -1
  43. package/dist/email/index.d.ts +16 -16
  44. package/dist/email/index.js +9 -9
  45. package/dist/email/index.js.map +1 -1
  46. package/dist/file/index.js +1 -1
  47. package/dist/file/index.js.map +1 -1
  48. package/dist/lock/index.d.ts +9 -9
  49. package/dist/lock/index.js +8 -8
  50. package/dist/lock/index.js.map +1 -1
  51. package/dist/lock-redis/index.js +3 -66
  52. package/dist/lock-redis/index.js.map +1 -1
  53. package/dist/logger/index.d.ts +5 -5
  54. package/dist/logger/index.js +8 -8
  55. package/dist/logger/index.js.map +1 -1
  56. package/dist/orm/index.browser.js +114 -114
  57. package/dist/orm/index.browser.js.map +1 -1
  58. package/dist/orm/index.d.ts +218 -218
  59. package/dist/orm/index.js +46 -46
  60. package/dist/orm/index.js.map +1 -1
  61. package/dist/queue/index.d.ts +29 -29
  62. package/dist/queue/index.js +20 -20
  63. package/dist/queue/index.js.map +1 -1
  64. package/dist/queue-redis/index.d.ts +2 -2
  65. package/dist/redis/index.d.ts +10 -10
  66. package/dist/retry/index.d.ts +19 -19
  67. package/dist/retry/index.js +7 -7
  68. package/dist/retry/index.js.map +1 -1
  69. package/dist/scheduler/index.d.ts +16 -16
  70. package/dist/scheduler/index.js +9 -9
  71. package/dist/scheduler/index.js.map +1 -1
  72. package/dist/security/index.d.ts +80 -80
  73. package/dist/security/index.js +32 -32
  74. package/dist/security/index.js.map +1 -1
  75. package/dist/server/index.browser.js +1 -1
  76. package/dist/server/index.browser.js.map +1 -1
  77. package/dist/server/index.d.ts +101 -101
  78. package/dist/server/index.js +16 -16
  79. package/dist/server/index.js.map +1 -1
  80. package/dist/server-auth/index.browser.js +4 -982
  81. package/dist/server-auth/index.browser.js.map +1 -1
  82. package/dist/server-auth/index.d.ts +204 -785
  83. package/dist/server-auth/index.js +47 -1239
  84. package/dist/server-auth/index.js.map +1 -1
  85. package/dist/server-cache/index.d.ts +10 -10
  86. package/dist/server-cache/index.js +2 -2
  87. package/dist/server-cache/index.js.map +1 -1
  88. package/dist/server-compress/index.d.ts +4 -4
  89. package/dist/server-compress/index.js +1 -1
  90. package/dist/server-compress/index.js.map +1 -1
  91. package/dist/server-cookies/index.browser.js +8 -8
  92. package/dist/server-cookies/index.browser.js.map +1 -1
  93. package/dist/server-cookies/index.d.ts +17 -17
  94. package/dist/server-cookies/index.js +10 -10
  95. package/dist/server-cookies/index.js.map +1 -1
  96. package/dist/server-cors/index.d.ts +17 -17
  97. package/dist/server-cors/index.js +9 -9
  98. package/dist/server-cors/index.js.map +1 -1
  99. package/dist/server-health/index.d.ts +19 -19
  100. package/dist/server-helmet/index.d.ts +1 -1
  101. package/dist/server-links/index.browser.js +12 -12
  102. package/dist/server-links/index.browser.js.map +1 -1
  103. package/dist/server-links/index.d.ts +59 -251
  104. package/dist/server-links/index.js +23 -502
  105. package/dist/server-links/index.js.map +1 -1
  106. package/dist/server-metrics/index.d.ts +4 -4
  107. package/dist/server-multipart/index.d.ts +2 -2
  108. package/dist/server-proxy/index.d.ts +12 -12
  109. package/dist/server-proxy/index.js +10 -10
  110. package/dist/server-proxy/index.js.map +1 -1
  111. package/dist/server-rate-limit/index.d.ts +22 -22
  112. package/dist/server-rate-limit/index.js +12 -12
  113. package/dist/server-rate-limit/index.js.map +1 -1
  114. package/dist/server-security/index.d.ts +22 -22
  115. package/dist/server-security/index.js +15 -15
  116. package/dist/server-security/index.js.map +1 -1
  117. package/dist/server-static/index.d.ts +14 -14
  118. package/dist/server-static/index.js +8 -8
  119. package/dist/server-static/index.js.map +1 -1
  120. package/dist/server-swagger/index.d.ts +25 -184
  121. package/dist/server-swagger/index.js +21 -724
  122. package/dist/server-swagger/index.js.map +1 -1
  123. package/dist/sms/index.d.ts +14 -14
  124. package/dist/sms/index.js +9 -9
  125. package/dist/sms/index.js.map +1 -1
  126. package/dist/thread/index.d.ts +11 -11
  127. package/dist/thread/index.js +17 -17
  128. package/dist/thread/index.js.map +1 -1
  129. package/dist/topic/index.d.ts +26 -26
  130. package/dist/topic/index.js +16 -16
  131. package/dist/topic/index.js.map +1 -1
  132. package/dist/topic-redis/index.d.ts +1 -1
  133. package/dist/vite/index.d.ts +3 -3
  134. package/dist/vite/index.js +8 -8
  135. package/dist/vite/index.js.map +1 -1
  136. package/dist/websocket/index.browser.js +11 -11
  137. package/dist/websocket/index.browser.js.map +1 -1
  138. package/dist/websocket/index.d.ts +58 -58
  139. package/dist/websocket/index.js +13 -13
  140. package/dist/websocket/index.js.map +1 -1
  141. package/package.json +113 -52
  142. package/src/api-files/services/FileService.ts +5 -7
  143. package/src/api-jobs/index.ts +1 -1
  144. package/src/api-jobs/{descriptors → primitives}/$job.ts +8 -8
  145. package/src/api-jobs/providers/JobProvider.ts +9 -9
  146. package/src/api-jobs/services/JobService.ts +5 -5
  147. package/src/api-notifications/index.ts +5 -15
  148. package/src/api-notifications/{descriptors → primitives}/$notification.ts +10 -10
  149. package/src/api-notifications/services/NotificationSenderService.ts +3 -3
  150. package/src/api-parameters/index.ts +1 -1
  151. package/src/api-parameters/{descriptors → primitives}/$config.ts +7 -12
  152. package/src/api-users/index.ts +1 -1
  153. package/src/api-users/{descriptors → primitives}/$userRealm.ts +8 -8
  154. package/src/api-users/providers/UserRealmProvider.ts +1 -1
  155. package/src/batch/index.ts +3 -3
  156. package/src/batch/{descriptors → primitives}/$batch.ts +13 -16
  157. package/src/bucket/index.ts +8 -8
  158. package/src/bucket/{descriptors → primitives}/$bucket.ts +8 -8
  159. package/src/bucket/providers/LocalFileStorageProvider.ts +3 -3
  160. package/src/cache/index.ts +4 -4
  161. package/src/cache/{descriptors → primitives}/$cache.ts +15 -15
  162. package/src/cli/apps/AlephaPackageBuilderCli.ts +24 -2
  163. package/src/cli/commands/DrizzleCommands.ts +6 -6
  164. package/src/cli/commands/VerifyCommands.ts +1 -1
  165. package/src/cli/commands/ViteCommands.ts +6 -1
  166. package/src/cli/services/ProjectUtils.ts +34 -3
  167. package/src/command/index.ts +5 -5
  168. package/src/command/{descriptors → primitives}/$command.ts +9 -12
  169. package/src/command/providers/CliProvider.ts +10 -10
  170. package/src/core/Alepha.ts +30 -33
  171. package/src/core/constants/KIND.ts +1 -1
  172. package/src/core/constants/OPTIONS.ts +1 -1
  173. package/src/core/helpers/{descriptor.ts → primitive.ts} +18 -18
  174. package/src/core/helpers/ref.ts +1 -1
  175. package/src/core/index.shared.ts +8 -8
  176. package/src/core/{descriptors → primitives}/$context.ts +5 -5
  177. package/src/core/{descriptors → primitives}/$hook.ts +4 -4
  178. package/src/core/{descriptors → primitives}/$inject.ts +2 -2
  179. package/src/core/{descriptors → primitives}/$module.ts +9 -9
  180. package/src/core/{descriptors → primitives}/$use.ts +2 -2
  181. package/src/core/providers/CodecManager.ts +1 -1
  182. package/src/core/providers/JsonSchemaCodec.ts +1 -1
  183. package/src/core/providers/StateManager.ts +2 -2
  184. package/src/datetime/index.ts +3 -3
  185. package/src/datetime/{descriptors → primitives}/$interval.ts +6 -6
  186. package/src/email/index.ts +4 -4
  187. package/src/email/{descriptors → primitives}/$email.ts +8 -8
  188. package/src/file/index.ts +1 -1
  189. package/src/lock/index.ts +3 -3
  190. package/src/lock/{descriptors → primitives}/$lock.ts +10 -10
  191. package/src/logger/index.ts +8 -8
  192. package/src/logger/{descriptors → primitives}/$logger.ts +2 -2
  193. package/src/logger/services/Logger.ts +1 -1
  194. package/src/orm/constants/PG_SYMBOLS.ts +2 -2
  195. package/src/orm/index.browser.ts +2 -2
  196. package/src/orm/index.ts +8 -8
  197. package/src/orm/{descriptors → primitives}/$entity.ts +11 -11
  198. package/src/orm/{descriptors → primitives}/$repository.ts +2 -2
  199. package/src/orm/{descriptors → primitives}/$sequence.ts +8 -8
  200. package/src/orm/{descriptors → primitives}/$transaction.ts +4 -4
  201. package/src/orm/providers/PostgresTypeProvider.ts +3 -3
  202. package/src/orm/providers/RepositoryProvider.ts +4 -4
  203. package/src/orm/providers/drivers/DatabaseProvider.ts +7 -7
  204. package/src/orm/services/ModelBuilder.ts +9 -9
  205. package/src/orm/services/PgRelationManager.ts +2 -2
  206. package/src/orm/services/PostgresModelBuilder.ts +5 -5
  207. package/src/orm/services/Repository.ts +7 -7
  208. package/src/orm/services/SqliteModelBuilder.ts +5 -5
  209. package/src/queue/index.ts +7 -7
  210. package/src/queue/{descriptors → primitives}/$consumer.ts +15 -15
  211. package/src/queue/{descriptors → primitives}/$queue.ts +12 -12
  212. package/src/queue/providers/WorkerProvider.ts +7 -7
  213. package/src/retry/index.ts +3 -3
  214. package/src/retry/{descriptors → primitives}/$retry.ts +14 -14
  215. package/src/scheduler/index.ts +3 -3
  216. package/src/scheduler/{descriptors → primitives}/$scheduler.ts +9 -9
  217. package/src/scheduler/providers/CronProvider.ts +1 -1
  218. package/src/security/index.ts +9 -9
  219. package/src/security/{descriptors → primitives}/$permission.ts +7 -7
  220. package/src/security/{descriptors → primitives}/$realm.ts +6 -12
  221. package/src/security/{descriptors → primitives}/$role.ts +12 -12
  222. package/src/security/{descriptors → primitives}/$serviceAccount.ts +8 -8
  223. package/src/server/index.browser.ts +1 -1
  224. package/src/server/index.ts +14 -14
  225. package/src/server/{descriptors → primitives}/$action.ts +13 -13
  226. package/src/server/{descriptors → primitives}/$route.ts +9 -9
  227. package/src/server/providers/NodeHttpServerProvider.ts +1 -1
  228. package/src/server/services/HttpClient.ts +1 -1
  229. package/src/server-auth/index.browser.ts +1 -1
  230. package/src/server-auth/index.ts +6 -6
  231. package/src/server-auth/{descriptors → primitives}/$auth.ts +10 -10
  232. package/src/server-auth/{descriptors → primitives}/$authCredentials.ts +4 -4
  233. package/src/server-auth/{descriptors → primitives}/$authGithub.ts +4 -4
  234. package/src/server-auth/{descriptors → primitives}/$authGoogle.ts +4 -4
  235. package/src/server-auth/providers/ServerAuthProvider.ts +4 -4
  236. package/src/server-cache/providers/ServerCacheProvider.ts +7 -7
  237. package/src/server-compress/providers/ServerCompressProvider.ts +3 -3
  238. package/src/server-cookies/index.browser.ts +2 -2
  239. package/src/server-cookies/index.ts +5 -5
  240. package/src/server-cookies/{descriptors → primitives}/$cookie.browser.ts +12 -12
  241. package/src/server-cookies/{descriptors → primitives}/$cookie.ts +13 -13
  242. package/src/server-cookies/providers/ServerCookiesProvider.ts +4 -4
  243. package/src/server-cookies/services/CookieParser.ts +1 -1
  244. package/src/server-cors/index.ts +3 -3
  245. package/src/server-cors/{descriptors → primitives}/$cors.ts +11 -13
  246. package/src/server-cors/providers/ServerCorsProvider.ts +5 -5
  247. package/src/server-links/index.browser.ts +5 -5
  248. package/src/server-links/index.ts +9 -9
  249. package/src/server-links/{descriptors → primitives}/$remote.ts +11 -11
  250. package/src/server-links/providers/LinkProvider.ts +7 -7
  251. package/src/server-links/providers/{RemoteDescriptorProvider.ts → RemotePrimitiveProvider.ts} +6 -6
  252. package/src/server-links/providers/ServerLinksProvider.ts +3 -3
  253. package/src/server-proxy/index.ts +3 -3
  254. package/src/server-proxy/{descriptors → primitives}/$proxy.ts +8 -8
  255. package/src/server-proxy/providers/ServerProxyProvider.ts +4 -4
  256. package/src/server-rate-limit/index.ts +6 -6
  257. package/src/server-rate-limit/{descriptors → primitives}/$rateLimit.ts +13 -13
  258. package/src/server-rate-limit/providers/ServerRateLimitProvider.ts +5 -5
  259. package/src/server-security/index.ts +3 -3
  260. package/src/server-security/{descriptors → primitives}/$basicAuth.ts +13 -13
  261. package/src/server-security/providers/ServerBasicAuthProvider.ts +5 -5
  262. package/src/server-security/providers/ServerSecurityProvider.ts +4 -4
  263. package/src/server-static/index.ts +3 -3
  264. package/src/server-static/{descriptors → primitives}/$serve.ts +8 -10
  265. package/src/server-static/providers/ServerStaticProvider.ts +6 -6
  266. package/src/server-swagger/index.ts +5 -5
  267. package/src/server-swagger/{descriptors → primitives}/$swagger.ts +9 -9
  268. package/src/server-swagger/providers/ServerSwaggerProvider.ts +11 -10
  269. package/src/sms/index.ts +4 -4
  270. package/src/sms/{descriptors → primitives}/$sms.ts +8 -8
  271. package/src/thread/index.ts +3 -3
  272. package/src/thread/{descriptors → primitives}/$thread.ts +13 -13
  273. package/src/thread/providers/ThreadProvider.ts +7 -9
  274. package/src/topic/index.ts +5 -5
  275. package/src/topic/{descriptors → primitives}/$subscriber.ts +14 -14
  276. package/src/topic/{descriptors → primitives}/$topic.ts +10 -10
  277. package/src/topic/providers/TopicProvider.ts +4 -4
  278. package/src/vite/tasks/copyAssets.ts +1 -1
  279. package/src/vite/tasks/generateSitemap.ts +3 -3
  280. package/src/vite/tasks/prerenderPages.ts +2 -2
  281. package/src/vite/tasks/runAlepha.ts +2 -2
  282. package/src/websocket/index.browser.ts +3 -3
  283. package/src/websocket/index.shared.ts +2 -2
  284. package/src/websocket/index.ts +4 -4
  285. package/src/websocket/interfaces/WebSocketInterfaces.ts +3 -3
  286. package/src/websocket/{descriptors → primitives}/$channel.ts +10 -10
  287. package/src/websocket/{descriptors → primitives}/$websocket.ts +8 -8
  288. package/src/websocket/providers/NodeWebSocketServerProvider.ts +7 -7
  289. package/src/websocket/providers/WebSocketServerProvider.ts +3 -3
  290. package/src/websocket/services/WebSocketClient.ts +5 -5
  291. package/src/api-notifications/providers/MemorySmsProvider.ts +0 -20
  292. package/src/api-notifications/providers/SmsProvider.ts +0 -8
  293. /package/src/core/{descriptors → primitives}/$atom.ts +0 -0
  294. /package/src/core/{descriptors → primitives}/$env.ts +0 -0
  295. /package/src/server-auth/{descriptors → primitives}/$authApple.ts +0 -0
  296. /package/src/server-links/{descriptors → primitives}/$client.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  import { $inject, Alepha, AlephaError, type Async, t } from "alepha";
2
2
  import { $logger } from "alepha/logger";
3
3
  import {
4
- type ActionDescriptor,
4
+ type ActionPrimitive,
5
5
  type ClientRequestEntry,
6
6
  type ClientRequestOptions,
7
7
  type ClientRequestResponse,
@@ -79,7 +79,7 @@ export class LinkProvider {
79
79
 
80
80
  public get links(): HttpClientLink[] {
81
81
  // TODO: not performant at all, use a map instead for ServerLinks
82
- const apiLinks = this.alepha.state.get(
82
+ const apiLinks = this.alepha.store.get(
83
83
  "alepha.server.request.apiLinks",
84
84
  )?.links;
85
85
  if (apiLinks) {
@@ -114,7 +114,7 @@ export class LinkProvider {
114
114
  },
115
115
  );
116
116
 
117
- this.alepha.state.set("alepha.server.request.apiLinks", data);
117
+ this.alepha.store.set("alepha.server.request.apiLinks", data);
118
118
 
119
119
  return data.links;
120
120
  }
@@ -277,7 +277,7 @@ export class LinkProvider {
277
277
  ): Promise<HttpClientLink> {
278
278
  if (
279
279
  this.alepha.isBrowser() &&
280
- !this.alepha.state.get("alepha.server.request.apiLinks")
280
+ !this.alepha.store.get("alepha.server.request.apiLinks")
281
281
  ) {
282
282
  await this.fetchLinks();
283
283
  }
@@ -334,15 +334,15 @@ export interface ClientScope {
334
334
  }
335
335
 
336
336
  export type HttpVirtualClient<T> = {
337
- [K in keyof T as T[K] extends ActionDescriptor<RequestConfigSchema>
337
+ [K in keyof T as T[K] extends ActionPrimitive<RequestConfigSchema>
338
338
  ? K
339
- : never]: T[K] extends ActionDescriptor<infer Schema>
339
+ : never]: T[K] extends ActionPrimitive<infer Schema>
340
340
  ? VirtualAction<Schema>
341
341
  : never;
342
342
  };
343
343
 
344
344
  export interface VirtualAction<T extends RequestConfigSchema>
345
- extends Pick<ActionDescriptor<T>, "name" | "run" | "fetch"> {
345
+ extends Pick<ActionPrimitive<T>, "name" | "run" | "fetch"> {
346
346
  (
347
347
  config?: ClientRequestEntry<T>,
348
348
  opts?: ClientRequestOptions,
@@ -1,9 +1,9 @@
1
1
  import { $env, $hook, $inject, Alepha, t } from "alepha";
2
2
  import { $logger } from "alepha/logger";
3
3
  import { $retry } from "alepha/retry";
4
- import type { ServiceAccountDescriptor } from "alepha/security";
4
+ import type { ServiceAccountPrimitive } from "alepha/security";
5
5
  import { ServerProxyProvider } from "alepha/server/proxy";
6
- import { $remote, type RemoteDescriptor } from "../descriptors/$remote.ts";
6
+ import { $remote, type RemotePrimitive } from "../primitives/$remote.ts";
7
7
  import {
8
8
  type ApiLinksResponse,
9
9
  apiLinksResponseSchema,
@@ -17,7 +17,7 @@ const envSchema = t.object({
17
17
  }),
18
18
  });
19
19
 
20
- export class RemoteDescriptorProvider {
20
+ export class RemotePrimitiveProvider {
21
21
  protected readonly env = $env(envSchema);
22
22
  protected readonly alepha = $inject(Alepha);
23
23
  protected readonly proxyProvider = $inject(ServerProxyProvider);
@@ -32,7 +32,7 @@ export class RemoteDescriptorProvider {
32
32
  public readonly configure = $hook({
33
33
  on: "configure",
34
34
  handler: async () => {
35
- const remotes = this.alepha.descriptors($remote);
35
+ const remotes = this.alepha.primitives($remote);
36
36
  for (const remote of remotes) {
37
37
  await this.registerRemote(remote);
38
38
  }
@@ -78,7 +78,7 @@ export class RemoteDescriptorProvider {
78
78
  },
79
79
  });
80
80
 
81
- public async registerRemote(value: RemoteDescriptor): Promise<void> {
81
+ public async registerRemote(value: RemotePrimitive): Promise<void> {
82
82
  const options = value.options;
83
83
  const url = typeof options.url === "string" ? options.url : options.url();
84
84
  const linkPath = LinkProvider.path.apiLinks;
@@ -225,7 +225,7 @@ export interface ServerRemote {
225
225
  /**
226
226
  * Force a default access token provider when not provided.
227
227
  */
228
- serviceAccount?: ServiceAccountDescriptor;
228
+ serviceAccount?: ServiceAccountPrimitive;
229
229
 
230
230
  /**
231
231
  * Prefix for the remote service links.
@@ -18,7 +18,7 @@ import {
18
18
  apiLinksResponseSchema,
19
19
  } from "../schemas/apiLinksResponseSchema.ts";
20
20
  import { LinkProvider } from "./LinkProvider.ts";
21
- import { RemoteDescriptorProvider } from "./RemoteDescriptorProvider.ts";
21
+ import { RemotePrimitiveProvider } from "./RemotePrimitiveProvider.ts";
22
22
 
23
23
  const envSchema = t.object({
24
24
  SERVER_API_PREFIX: t.text({
@@ -31,7 +31,7 @@ export class ServerLinksProvider {
31
31
  protected readonly env = $env(envSchema);
32
32
  protected readonly alepha = $inject(Alepha);
33
33
  protected readonly linkProvider = $inject(LinkProvider);
34
- protected readonly remoteProvider = $inject(RemoteDescriptorProvider);
34
+ protected readonly remoteProvider = $inject(RemotePrimitiveProvider);
35
35
  protected readonly serverTimingProvider = $inject(ServerTimingProvider);
36
36
 
37
37
  public get prefix() {
@@ -42,7 +42,7 @@ export class ServerLinksProvider {
42
42
  on: "configure",
43
43
  handler: () => {
44
44
  // convert all $action to local links
45
- for (const action of this.alepha.descriptors($action)) {
45
+ for (const action of this.alepha.primitives($action)) {
46
46
  this.linkProvider.registerLink({
47
47
  name: action.name,
48
48
  group: action.group,
@@ -1,11 +1,11 @@
1
1
  import { $module } from "alepha";
2
2
  import { AlephaServer } from "alepha/server";
3
- import { $proxy } from "./descriptors/$proxy.ts";
3
+ import { $proxy } from "./primitives/$proxy.ts";
4
4
  import { ServerProxyProvider } from "./providers/ServerProxyProvider.ts";
5
5
 
6
6
  // ---------------------------------------------------------------------------------------------------------------------
7
7
 
8
- export * from "./descriptors/$proxy.ts";
8
+ export * from "./primitives/$proxy.ts";
9
9
  export * from "./providers/ServerProxyProvider.ts";
10
10
 
11
11
  // ---------------------------------------------------------------------------------------------------------------------
@@ -18,6 +18,6 @@ export * from "./providers/ServerProxyProvider.ts";
18
18
  */
19
19
  export const AlephaServerProxy = $module({
20
20
  name: "alepha.server.proxy",
21
- descriptors: [$proxy],
21
+ primitives: [$proxy],
22
22
  services: [AlephaServer, ServerProxyProvider],
23
23
  });
@@ -1,10 +1,10 @@
1
- import { type Async, createDescriptor, Descriptor, KIND } from "alepha";
1
+ import { type Async, createPrimitive, KIND, Primitive } from "alepha";
2
2
  import type { ServerRequest } from "alepha/server";
3
3
 
4
4
  /**
5
- * Creates a proxy descriptor to forward requests to another server.
5
+ * Creates a proxy primitive to forward requests to another server.
6
6
  *
7
- * This descriptor enables you to create reverse proxy functionality, allowing your Alepha server
7
+ * This primitive enables you to create reverse proxy functionality, allowing your Alepha server
8
8
  * to forward requests to other services while maintaining a unified API surface. It's particularly
9
9
  * useful for microservice architectures, API gateways, or when you need to aggregate multiple
10
10
  * services behind a single endpoint.
@@ -84,11 +84,11 @@ import type { ServerRequest } from "alepha/server";
84
84
  * }
85
85
  * ```
86
86
  */
87
- export const $proxy = (options: ProxyDescriptorOptions): ProxyDescriptor => {
88
- return createDescriptor(ProxyDescriptor, options);
87
+ export const $proxy = (options: ProxyPrimitiveOptions): ProxyPrimitive => {
88
+ return createPrimitive(ProxyPrimitive, options);
89
89
  };
90
90
 
91
- export type ProxyDescriptorOptions = {
91
+ export type ProxyPrimitiveOptions = {
92
92
  /**
93
93
  * Path pattern to match for proxying requests.
94
94
  *
@@ -219,6 +219,6 @@ export type ProxyDescriptorOptions = {
219
219
  // retry?: RetryOptions;
220
220
  };
221
221
 
222
- export class ProxyDescriptor extends Descriptor<ProxyDescriptorOptions> {}
222
+ export class ProxyPrimitive extends Primitive<ProxyPrimitiveOptions> {}
223
223
 
224
- $proxy[KIND] = ProxyDescriptor;
224
+ $proxy[KIND] = ProxyPrimitive;
@@ -7,7 +7,7 @@ import {
7
7
  type ServerRequest,
8
8
  ServerRouterProvider,
9
9
  } from "alepha/server";
10
- import { $proxy, type ProxyDescriptorOptions } from "../descriptors/$proxy.ts";
10
+ import { $proxy, type ProxyPrimitiveOptions } from "../primitives/$proxy.ts";
11
11
 
12
12
  export class ServerProxyProvider {
13
13
  protected readonly log = $logger();
@@ -17,13 +17,13 @@ export class ServerProxyProvider {
17
17
  protected readonly configure = $hook({
18
18
  on: "configure",
19
19
  handler: () => {
20
- for (const proxy of this.alepha.descriptors($proxy)) {
20
+ for (const proxy of this.alepha.primitives($proxy)) {
21
21
  this.createProxy(proxy.options);
22
22
  }
23
23
  },
24
24
  });
25
25
 
26
- public createProxy(options: ProxyDescriptorOptions): void {
26
+ public createProxy(options: ProxyPrimitiveOptions): void {
27
27
  if (options.disabled) {
28
28
  return;
29
29
  }
@@ -52,7 +52,7 @@ export class ServerProxyProvider {
52
52
 
53
53
  public createProxyHandler(
54
54
  target: string,
55
- options: Omit<ProxyDescriptorOptions, "path">,
55
+ options: Omit<ProxyPrimitiveOptions, "path">,
56
56
  ): ServerHandler {
57
57
  return async (request) => {
58
58
  const url = new URL(target + request.url.pathname);
@@ -1,17 +1,17 @@
1
1
  import { $module } from "alepha";
2
2
  import { AlephaServer } from "alepha/server";
3
- import { $rateLimit } from "./descriptors/$rateLimit.ts";
3
+ import { $rateLimit } from "./primitives/$rateLimit.ts";
4
4
  import { ServerRateLimitProvider } from "./providers/ServerRateLimitProvider.ts";
5
5
 
6
6
  // ---------------------------------------------------------------------------------------------------------------------
7
7
 
8
- export * from "./descriptors/$rateLimit.ts";
8
+ export * from "./primitives/$rateLimit.ts";
9
9
  export * from "./providers/ServerRateLimitProvider.ts";
10
10
 
11
11
  // ---------------------------------------------------------------------------------------------------------------------
12
12
 
13
13
  declare module "alepha/server" {
14
- interface ActionDescriptorOptions<TConfig> {
14
+ interface ActionPrimitiveOptions<TConfig> {
15
15
  /**
16
16
  * Rate limiting configuration for this action.
17
17
  * When specified, the action will be rate limited according to these settings.
@@ -47,8 +47,8 @@ export interface RateLimitOptions {
47
47
  * Provides rate limiting capabilities for server routes and actions with configurable limits and windows.
48
48
  *
49
49
  * The server-rate-limit module enables per-route and per-action rate limiting using either:
50
- * - The `$rateLimit` descriptor with `paths` option for path-based rate limiting
51
- * - The `rateLimit` option in action descriptors for action-specific limiting
50
+ * - The `$rateLimit` primitive with `paths` option for path-based rate limiting
51
+ * - The `rateLimit` option in action primitives for action-specific limiting
52
52
  *
53
53
  * It offers sliding window rate limiting, custom key generation, and seamless integration with server routes.
54
54
  *
@@ -71,6 +71,6 @@ export interface RateLimitOptions {
71
71
  */
72
72
  export const AlephaServerRateLimit = $module({
73
73
  name: "alepha.server.rate-limit",
74
- descriptors: [$rateLimit],
74
+ primitives: [$rateLimit],
75
75
  services: [AlephaServer, ServerRateLimitProvider],
76
76
  });
@@ -1,4 +1,4 @@
1
- import { $inject, createDescriptor, Descriptor, KIND } from "alepha";
1
+ import { $inject, createPrimitive, KIND, Primitive } from "alepha";
2
2
  import type { ServerRequest } from "alepha/server";
3
3
  import type { RateLimitOptions } from "../index.ts";
4
4
  import {
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  /**
10
10
  * Declares rate limiting for server routes or custom usage.
11
- * This descriptor provides methods to check rate limits and configure behavior
11
+ * This primitive provides methods to check rate limits and configure behavior
12
12
  * within the server request/response cycle.
13
13
  *
14
14
  * @example
@@ -33,32 +33,32 @@ import {
33
33
  * ```
34
34
  */
35
35
  export const $rateLimit = (
36
- options: RateLimitDescriptorOptions = {},
37
- ): AbstractRateLimitDescriptor => {
38
- return createDescriptor(RateLimitDescriptor, options);
36
+ options: RateLimitPrimitiveOptions = {},
37
+ ): AbstractRateLimitPrimitive => {
38
+ return createPrimitive(RateLimitPrimitive, options);
39
39
  };
40
40
 
41
41
  // ---------------------------------------------------------------------------------------------------------------------
42
42
 
43
- export interface RateLimitDescriptorOptions extends RateLimitOptions {
43
+ export interface RateLimitPrimitiveOptions extends RateLimitOptions {
44
44
  /** Name identifier for this rate limit (default: property key) */
45
45
  name?: string;
46
46
  /** Path patterns to match (supports wildcards like /api/*) */
47
47
  paths?: string[];
48
48
  }
49
49
 
50
- export interface AbstractRateLimitDescriptor {
50
+ export interface AbstractRateLimitPrimitive {
51
51
  readonly name: string;
52
- readonly options: RateLimitDescriptorOptions;
52
+ readonly options: RateLimitPrimitiveOptions;
53
53
  check(
54
54
  request: ServerRequest,
55
55
  options?: RateLimitOptions,
56
56
  ): Promise<RateLimitResult>;
57
57
  }
58
58
 
59
- export class RateLimitDescriptor
60
- extends Descriptor<RateLimitDescriptorOptions>
61
- implements AbstractRateLimitDescriptor
59
+ export class RateLimitPrimitive
60
+ extends Primitive<RateLimitPrimitiveOptions>
61
+ implements AbstractRateLimitPrimitive
62
62
  {
63
63
  protected readonly serverRateLimitProvider = $inject(ServerRateLimitProvider);
64
64
 
@@ -72,7 +72,7 @@ export class RateLimitDescriptor
72
72
  }
73
73
 
74
74
  /**
75
- * Checks rate limit for the given request using this descriptor's configuration.
75
+ * Checks rate limit for the given request using this primitive's configuration.
76
76
  */
77
77
  public async check(
78
78
  request: ServerRequest,
@@ -83,4 +83,4 @@ export class RateLimitDescriptor
83
83
  }
84
84
  }
85
85
 
86
- $rateLimit[KIND] = RateLimitDescriptor;
86
+ $rateLimit[KIND] = RateLimitPrimitive;
@@ -6,8 +6,8 @@ import {
6
6
  type ServerRequest,
7
7
  ServerRouterProvider,
8
8
  } from "alepha/server";
9
- import type { RateLimitDescriptorOptions } from "../descriptors/$rateLimit.ts";
10
9
  import type { RateLimitOptions } from "../index.ts";
10
+ import type { RateLimitPrimitiveOptions } from "../primitives/$rateLimit.ts";
11
11
 
12
12
  // ---------------------------------------------------------------------------------------------------------------------
13
13
 
@@ -85,12 +85,12 @@ export class ServerRateLimitProvider {
85
85
  /**
86
86
  * Registered rate limit configurations with their path patterns
87
87
  */
88
- public readonly registeredConfigs: RateLimitDescriptorOptions[] = [];
88
+ public readonly registeredConfigs: RateLimitPrimitiveOptions[] = [];
89
89
 
90
90
  /**
91
- * Register a rate limit configuration (called by descriptors)
91
+ * Register a rate limit configuration (called by primitives)
92
92
  */
93
- public registerRateLimit(config: RateLimitDescriptorOptions): void {
93
+ public registerRateLimit(config: RateLimitPrimitiveOptions): void {
94
94
  this.registeredConfigs.push(config);
95
95
  }
96
96
 
@@ -168,7 +168,7 @@ export class ServerRateLimitProvider {
168
168
  * Build complete rate limit options by merging with global defaults
169
169
  */
170
170
  protected buildRateLimitOptions(
171
- config: RateLimitDescriptorOptions,
171
+ config: RateLimitPrimitiveOptions,
172
172
  ): RateLimitOptions {
173
173
  return {
174
174
  max: config.max ?? this.globalOptions.max,
@@ -8,7 +8,7 @@ import {
8
8
  type UserAccountToken,
9
9
  } from "alepha/security";
10
10
  import { AlephaServer, type FetchOptions } from "alepha/server";
11
- import { $basicAuth } from "./descriptors/$basicAuth.ts";
11
+ import { $basicAuth } from "./primitives/$basicAuth.ts";
12
12
  import { ServerBasicAuthProvider } from "./providers/ServerBasicAuthProvider.ts";
13
13
  import {
14
14
  type ServerRouteSecure,
@@ -17,7 +17,7 @@ import {
17
17
 
18
18
  // ---------------------------------------------------------------------------------------------------------------------
19
19
 
20
- export * from "./descriptors/$basicAuth.ts";
20
+ export * from "./primitives/$basicAuth.ts";
21
21
  export * from "./providers/ServerBasicAuthProvider.ts";
22
22
  export * from "./providers/ServerSecurityProvider.ts";
23
23
 
@@ -84,7 +84,7 @@ declare module "alepha/server" {
84
84
  */
85
85
  export const AlephaServerSecurity = $module({
86
86
  name: "alepha.server.security",
87
- descriptors: [$realm, $role, $permission, $basicAuth],
87
+ primitives: [$realm, $role, $permission, $basicAuth],
88
88
  services: [
89
89
  AlephaServer,
90
90
  AlephaSecurity,
@@ -1,32 +1,32 @@
1
- import { $inject, createDescriptor, Descriptor, KIND } from "alepha";
1
+ import { $inject, createPrimitive, KIND, Primitive } from "alepha";
2
2
  import type { ServerRequest } from "alepha/server";
3
3
  import type {
4
- BasicAuthDescriptorConfig,
5
4
  BasicAuthOptions,
5
+ BasicAuthPrimitiveConfig,
6
6
  } from "../providers/ServerBasicAuthProvider.ts";
7
7
  import { ServerBasicAuthProvider } from "../providers/ServerBasicAuthProvider.ts";
8
8
 
9
9
  /**
10
10
  * Declares HTTP Basic Authentication for server routes.
11
- * This descriptor provides methods to protect routes with username/password authentication.
11
+ * This primitive provides methods to protect routes with username/password authentication.
12
12
  */
13
13
  export const $basicAuth = (
14
- options: BasicAuthDescriptorConfig,
15
- ): AbstractBasicAuthDescriptor => {
16
- return createDescriptor(BasicAuthDescriptor, options);
14
+ options: BasicAuthPrimitiveConfig,
15
+ ): AbstractBasicAuthPrimitive => {
16
+ return createPrimitive(BasicAuthPrimitive, options);
17
17
  };
18
18
 
19
19
  // ---------------------------------------------------------------------------------------------------------------------
20
20
 
21
- export interface AbstractBasicAuthDescriptor {
21
+ export interface AbstractBasicAuthPrimitive {
22
22
  readonly name: string;
23
- readonly options: BasicAuthDescriptorConfig;
23
+ readonly options: BasicAuthPrimitiveConfig;
24
24
  check(request: ServerRequest, options?: BasicAuthOptions): void;
25
25
  }
26
26
 
27
- export class BasicAuthDescriptor
28
- extends Descriptor<BasicAuthDescriptorConfig>
29
- implements AbstractBasicAuthDescriptor
27
+ export class BasicAuthPrimitive
28
+ extends Primitive<BasicAuthPrimitiveConfig>
29
+ implements AbstractBasicAuthPrimitive
30
30
  {
31
31
  protected readonly serverBasicAuthProvider = $inject(ServerBasicAuthProvider);
32
32
 
@@ -40,7 +40,7 @@ export class BasicAuthDescriptor
40
40
  }
41
41
 
42
42
  /**
43
- * Checks basic auth for the given request using this descriptor's configuration.
43
+ * Checks basic auth for the given request using this primitive's configuration.
44
44
  */
45
45
  public check(request: ServerRequest, options?: BasicAuthOptions): void {
46
46
  const mergedOptions = { ...this.options, ...options };
@@ -48,4 +48,4 @@ export class BasicAuthDescriptor
48
48
  }
49
49
  }
50
50
 
51
- $basicAuth[KIND] = BasicAuthDescriptor;
51
+ $basicAuth[KIND] = BasicAuthPrimitive;
@@ -14,7 +14,7 @@ export interface BasicAuthOptions {
14
14
  password: string;
15
15
  }
16
16
 
17
- export interface BasicAuthDescriptorConfig extends BasicAuthOptions {
17
+ export interface BasicAuthPrimitiveConfig extends BasicAuthOptions {
18
18
  /** Name identifier for this basic auth (default: property key) */
19
19
  name?: string;
20
20
  /** Path patterns to match (supports wildcards like /devtools/*) */
@@ -30,14 +30,14 @@ export class ServerBasicAuthProvider {
30
30
  protected readonly realm = "Secure Area";
31
31
 
32
32
  /**
33
- * Registered basic auth descriptors with their configurations
33
+ * Registered basic auth primitives with their configurations
34
34
  */
35
- public readonly registeredAuths: BasicAuthDescriptorConfig[] = [];
35
+ public readonly registeredAuths: BasicAuthPrimitiveConfig[] = [];
36
36
 
37
37
  /**
38
- * Register a basic auth configuration (called by descriptors)
38
+ * Register a basic auth configuration (called by primitives)
39
39
  */
40
- public registerAuth(config: BasicAuthDescriptorConfig): void {
40
+ public registerAuth(config: BasicAuthPrimitiveConfig): void {
41
41
  this.registeredAuths.push(config);
42
42
  }
43
43
 
@@ -28,7 +28,7 @@ export class ServerSecurityProvider {
28
28
  protected readonly onConfigure = $hook({
29
29
  on: "configure",
30
30
  handler: async () => {
31
- for (const action of this.alepha.descriptors($action)) {
31
+ for (const action of this.alepha.primitives($action)) {
32
32
  // -------------------------------------------------------------------------------------------------------------
33
33
  // if the action is disabled or not secure, we do NOT create a permission for it
34
34
  // -------------------------------------------------------------------------------------------------------------
@@ -87,7 +87,7 @@ export class ServerSecurityProvider {
87
87
  this.check(request.user, route.secure);
88
88
  }
89
89
 
90
- this.alepha.state.set(
90
+ this.alepha.store.set(
91
91
  "alepha.server.request.user",
92
92
  this.alepha.codec.decode(userAccountInfoSchema, request.user),
93
93
  );
@@ -139,7 +139,7 @@ export class ServerSecurityProvider {
139
139
  this.check(request.user, route.secure);
140
140
  }
141
141
 
142
- this.alepha.state.set(
142
+ this.alepha.store.set(
143
143
  "alepha.server.request.user",
144
144
  // remove sensitive info
145
145
  this.alepha.codec.decode(userAccountInfoSchema, request.user),
@@ -198,7 +198,7 @@ export class ServerSecurityProvider {
198
198
  let user: UserAccountToken | undefined;
199
199
 
200
200
  const fromContext = this.alepha.context.get<ServerRequest>("request")?.user;
201
- const fromSystem = this.alepha.state.get(
201
+ const fromSystem = this.alepha.store.get(
202
202
  "alepha.server.security.system.user",
203
203
  );
204
204
 
@@ -1,11 +1,11 @@
1
1
  import { $module } from "alepha";
2
2
  import { AlephaServer } from "alepha/server";
3
- import { $serve } from "./descriptors/$serve.ts";
3
+ import { $serve } from "./primitives/$serve.ts";
4
4
  import { ServerStaticProvider } from "./providers/ServerStaticProvider.ts";
5
5
 
6
6
  // ---------------------------------------------------------------------------------------------------------------------
7
7
 
8
- export * from "./descriptors/$serve.ts";
8
+ export * from "./primitives/$serve.ts";
9
9
  export * from "./providers/ServerStaticProvider.ts";
10
10
 
11
11
  // ---------------------------------------------------------------------------------------------------------------------
@@ -18,6 +18,6 @@ export * from "./providers/ServerStaticProvider.ts";
18
18
  */
19
19
  export const AlephaServerStatic = $module({
20
20
  name: "alepha.server.static",
21
- descriptors: [$serve],
21
+ primitives: [$serve],
22
22
  services: [AlephaServer, ServerStaticProvider],
23
23
  });
@@ -1,16 +1,14 @@
1
- import { createDescriptor, Descriptor, KIND } from "alepha";
1
+ import { createPrimitive, KIND, Primitive } from "alepha";
2
2
  import type { DurationLike } from "alepha/datetime";
3
3
 
4
4
  /**
5
5
  * Create a new static file handler.
6
6
  */
7
- export const $serve = (
8
- options: ServeDescriptorOptions = {},
9
- ): ServeDescriptor => {
10
- return createDescriptor(ServeDescriptor, options);
7
+ export const $serve = (options: ServePrimitiveOptions = {}): ServePrimitive => {
8
+ return createPrimitive(ServePrimitive, options);
11
9
  };
12
10
 
13
- export interface ServeDescriptorOptions {
11
+ export interface ServePrimitiveOptions {
14
12
  /**
15
13
  * Prefix for the served path.
16
14
  *
@@ -26,7 +24,7 @@ export interface ServeDescriptorOptions {
26
24
  root?: string;
27
25
 
28
26
  /**
29
- * If true, descriptor will be ignored.
27
+ * If true, primitive will be ignored.
30
28
  *
31
29
  * @default false
32
30
  */
@@ -53,7 +51,7 @@ export interface ServeDescriptorOptions {
53
51
  historyApiFallback?: boolean;
54
52
 
55
53
  /**
56
- * Optional name of the descriptor.
54
+ * Optional name of the primitive.
57
55
  * This is used for logging and debugging purposes.
58
56
  *
59
57
  * @default Key name.
@@ -91,6 +89,6 @@ export interface CacheControlOptions {
91
89
  immutable: boolean;
92
90
  }
93
91
 
94
- export class ServeDescriptor extends Descriptor<ServeDescriptorOptions> {}
92
+ export class ServePrimitive extends Primitive<ServePrimitiveOptions> {}
95
93
 
96
- $serve[KIND] = ServeDescriptor;
94
+ $serve[KIND] = ServePrimitive;
@@ -7,7 +7,7 @@ import { DateTimeProvider } from "alepha/datetime";
7
7
  import { FileDetector } from "alepha/file";
8
8
  import { $logger } from "alepha/logger";
9
9
  import { type ServerHandler, ServerRouterProvider } from "alepha/server";
10
- import { $serve, type ServeDescriptorOptions } from "../descriptors/$serve.ts";
10
+ import { $serve, type ServePrimitiveOptions } from "../primitives/$serve.ts";
11
11
 
12
12
  export class ServerStaticProvider {
13
13
  protected readonly alepha = $inject(Alepha);
@@ -22,14 +22,14 @@ export class ServerStaticProvider {
22
22
  handler: async () => {
23
23
  await Promise.all(
24
24
  this.alepha
25
- .descriptors($serve)
25
+ .primitives($serve)
26
26
  .map((it) => this.createStaticServer(it.options)),
27
27
  );
28
28
  },
29
29
  });
30
30
 
31
31
  public async createStaticServer(
32
- options: ServeDescriptorOptions,
32
+ options: ServePrimitiveOptions,
33
33
  ): Promise<void> {
34
34
  const prefix = options.path ?? "/";
35
35
 
@@ -107,7 +107,7 @@ export class ServerStaticProvider {
107
107
 
108
108
  public async createFileHandler(
109
109
  filepath: string,
110
- options: ServeDescriptorOptions,
110
+ options: ServePrimitiveOptions,
111
111
  ): Promise<ServerHandler> {
112
112
  const filename = basename(filepath);
113
113
 
@@ -184,7 +184,7 @@ export class ServerStaticProvider {
184
184
 
185
185
  protected getCacheControl(
186
186
  filename: string,
187
- options: ServeDescriptorOptions,
187
+ options: ServePrimitiveOptions,
188
188
  ): { maxAge: number; immutable: boolean } | undefined {
189
189
  if (!options.cacheControl) {
190
190
  return;
@@ -228,6 +228,6 @@ export class ServerStaticProvider {
228
228
  }
229
229
 
230
230
  export interface ServeDirectory {
231
- options: ServeDescriptorOptions;
231
+ options: ServePrimitiveOptions;
232
232
  files: string[];
233
233
  }