alepha 0.7.7 → 0.8.1

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 (55) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +7 -34
  3. package/batch.cjs +8 -0
  4. package/batch.d.ts +147 -0
  5. package/batch.js +1 -0
  6. package/cache/redis.d.ts +13 -18
  7. package/cache.d.ts +183 -119
  8. package/command.cjs +8 -0
  9. package/command.d.ts +152 -0
  10. package/command.js +1 -0
  11. package/core.d.ts +846 -838
  12. package/datetime.d.ts +78 -78
  13. package/file.cjs +8 -0
  14. package/file.d.ts +46 -0
  15. package/file.js +1 -0
  16. package/lock/redis.d.ts +10 -12
  17. package/lock.d.ts +73 -80
  18. package/package.json +86 -34
  19. package/postgres.d.ts +348 -170
  20. package/queue/redis.d.ts +13 -13
  21. package/queue.d.ts +107 -18
  22. package/react/auth.d.ts +22 -16
  23. package/react/head.d.ts +10 -4
  24. package/react.d.ts +206 -49
  25. package/redis.d.ts +23 -27
  26. package/retry.d.ts +75 -54
  27. package/router.cjs +8 -0
  28. package/router.d.ts +45 -0
  29. package/router.js +1 -0
  30. package/scheduler.d.ts +15 -16
  31. package/security.d.ts +229 -40
  32. package/server/cache.d.ts +7 -8
  33. package/server/compress.cjs +8 -0
  34. package/server/compress.d.ts +26 -0
  35. package/server/compress.js +1 -0
  36. package/server/cookies.d.ts +249 -18
  37. package/server/cors.d.ts +7 -3
  38. package/server/health.d.ts +21 -24
  39. package/server/helmet.cjs +8 -0
  40. package/server/helmet.d.ts +70 -0
  41. package/server/helmet.js +1 -0
  42. package/server/links.d.ts +87 -93
  43. package/server/metrics.cjs +8 -0
  44. package/server/metrics.d.ts +35 -0
  45. package/server/metrics.js +1 -0
  46. package/server/multipart.cjs +8 -0
  47. package/server/multipart.d.ts +46 -0
  48. package/server/multipart.js +1 -0
  49. package/server/proxy.d.ts +11 -11
  50. package/server/static.d.ts +70 -55
  51. package/server/swagger.d.ts +55 -54
  52. package/server.d.ts +273 -123
  53. package/topic/redis.d.ts +22 -23
  54. package/topic.d.ts +26 -19
  55. package/vite.d.ts +59 -36
package/queue/redis.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { QueueProvider } from "@alepha/queue";
2
- import { Alepha, Module } from "@alepha/core";
3
- import { RedisProvider } from "@alepha/redis";
1
+ import { QueueProvider } from "alepha/queue";
2
+ import { Alepha, Module, Static, TObject, TString } from "alepha";
3
+ import { RedisProvider } from "alepha/redis";
4
4
 
5
5
  //#region src/providers/RedisQueueProvider.d.ts
6
+ declare const envSchema: TObject<{
7
+ REDIS_QUEUE_PREFIX: TString;
8
+ }>;
6
9
  declare class RedisQueueProvider implements QueueProvider {
7
- protected readonly env: {
8
- REDIS_QUEUE_PREFIX: string;
9
- };
10
+ protected readonly env: Static<typeof envSchema>;
10
11
  protected readonly redisProvider: RedisProvider;
11
12
  prefix(queue: string): string;
12
13
  push(queue: string, message: string): Promise<void>;
@@ -14,14 +15,13 @@ declare class RedisQueueProvider implements QueueProvider {
14
15
  }
15
16
  //#endregion
16
17
  //#region src/index.d.ts
18
+ // ---------------------------------------------------------------------------------------------------------------------
17
19
  /**
18
- * Alepha Queue Redis Module
19
- *
20
- * Plugin for Alepha Queue that provides Redis queue capabilities.
21
- *
22
- * @see {@link RedisQueueProvider}
23
- * @module alepha.queue.redis
24
- */
20
+ * Plugin for Alepha Queue that provides Redis queue capabilities.
21
+ *
22
+ * @see {@link RedisQueueProvider}
23
+ * @module alepha.queue.redis
24
+ */
25
25
  declare class AlephaQueueRedis implements Module {
26
26
  readonly name = "alepha.queue.redis";
27
27
  readonly $services: (alepha: Alepha) => Alepha;
package/queue.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import * as _alepha_core0 from "@alepha/core";
2
- import * as _alepha_core4 from "@alepha/core";
3
- import { Alepha, KIND, Module, OPTIONS, Static, TSchema } from "@alepha/core";
4
- import { DateTimeProvider } from "@alepha/datetime";
5
- import * as _sinclair_typebox1 from "@sinclair/typebox";
1
+ import * as _alepha_core0 from "alepha";
2
+ import * as _alepha_core1 from "alepha";
3
+ import { Alepha, KIND, Module, OPTIONS, Static, TSchema } from "alepha";
4
+ import { DateTimeProvider } from "alepha/datetime";
6
5
 
7
6
  //#region src/providers/QueueProvider.d.ts
8
7
  /**
@@ -27,11 +26,12 @@ declare abstract class QueueProvider {
27
26
  */
28
27
  abstract pop(queue: string): Promise<string | undefined>;
29
28
  }
29
+ //# sourceMappingURL=QueueProvider.d.ts.map
30
30
  //#endregion
31
31
  //#region src/descriptors/$queue.d.ts
32
32
  declare const KEY$1 = "QUEUE";
33
33
  /**
34
- * Queue descriptor.
34
+ * Create a new queue.
35
35
  */
36
36
  declare const $queue: {
37
37
  <T extends QueueMessageSchema>(options: QueueDescriptorOptions<T>): QueueDescriptor<T>;
@@ -87,22 +87,23 @@ declare class MemoryQueueProvider implements QueueProvider {
87
87
  push(queue: string, ...messages: string[]): Promise<void>;
88
88
  pop(queue: string): Promise<string | undefined>;
89
89
  }
90
+ //# sourceMappingURL=MemoryQueueProvider.d.ts.map
90
91
  //#endregion
91
92
  //#region src/providers/QueueDescriptorProvider.d.ts
92
- declare const envSchema: _alepha_core4.TObject<{
93
+ declare const envSchema: _alepha_core1.TObject<{
93
94
  /**
94
95
  * The interval in milliseconds to wait before checking for new messages.
95
96
  */
96
- QUEUE_WORKER_INTERVAL: _sinclair_typebox1.TNumber;
97
+ QUEUE_WORKER_INTERVAL: _alepha_core1.TNumber;
97
98
  /**
98
99
  * The maximum interval in milliseconds to wait before checking for new messages.
99
100
  */
100
- QUEUE_WORKER_MAX_INTERVAL: _sinclair_typebox1.TNumber;
101
+ QUEUE_WORKER_MAX_INTERVAL: _alepha_core1.TNumber;
101
102
  /**
102
103
  * The number of workers to run concurrently. Defaults to 1.
103
104
  * Useful only if you are doing a lot of I/O.
104
105
  */
105
- QUEUE_WORKER_CONCURRENCY: _sinclair_typebox1.TNumber;
106
+ QUEUE_WORKER_CONCURRENCY: _alepha_core1.TNumber;
106
107
  }>;
107
108
  declare module "alepha" {
108
109
  interface Env extends Partial<Static<typeof envSchema>> {}
@@ -116,7 +117,7 @@ interface QueueDescriptorProviderState {
116
117
  workerIntervals: Record<number, number>;
117
118
  }
118
119
  declare class QueueDescriptorProvider {
119
- protected readonly log: _alepha_core4.Logger;
120
+ protected readonly log: _alepha_core1.Logger;
120
121
  protected readonly env: {
121
122
  QUEUE_WORKER_INTERVAL: number;
122
123
  QUEUE_WORKER_MAX_INTERVAL: number;
@@ -127,9 +128,9 @@ declare class QueueDescriptorProvider {
127
128
  protected readonly memoryQueueProvider: MemoryQueueProvider;
128
129
  protected readonly dateTimeProvider: DateTimeProvider;
129
130
  protected readonly state: QueueDescriptorProviderState;
130
- protected readonly configure: _alepha_core4.HookDescriptor<"configure">;
131
- protected readonly start: _alepha_core4.HookDescriptor<"start">;
132
- protected readonly stop: _alepha_core4.HookDescriptor<"stop">;
131
+ protected readonly configure: _alepha_core1.HookDescriptor<"configure">;
132
+ protected readonly start: _alepha_core1.HookDescriptor<"start">;
133
+ protected readonly stop: _alepha_core1.HookDescriptor<"stop">;
133
134
  getQueues(): QueueDescriptor<QueueMessageSchema>[];
134
135
  getConsumers(): ConsumerDescriptorOptions<QueueMessageSchema>[];
135
136
  /**
@@ -191,11 +192,97 @@ declare class QueueDescriptorProvider {
191
192
  //#endregion
192
193
  //#region src/index.d.ts
193
194
  /**
194
- * Alepha Queue Module
195
+ * Provides asynchronous message queuing and processing capabilities through declarative queue descriptors.
195
196
  *
196
- * Generic interface for queueing.
197
- * Gives you the ability to create queues and consumers.
198
- * This module provides only a memory implementation of the queue provider.
197
+ * The queue module enables reliable background job processing and message passing using the `$queue` descriptor
198
+ * on class properties. It supports schema validation, automatic retries, and multiple queue backends for
199
+ * building scalable, decoupled applications with robust error handling.
200
+ *
201
+ * **Key Features:**
202
+ * - Declarative queue definition with `$queue` descriptor
203
+ * - Schema validation for message payloads and headers
204
+ * - Built-in message handlers with automatic processing
205
+ * - Multiple queue backends (memory, Redis, etc.)
206
+ * - Type-safe message publishing and consumption
207
+ * - Automatic retry mechanisms and error handling
208
+ *
209
+ * **Basic Usage:**
210
+ * ```ts
211
+ * import { Alepha, run, t } from "alepha";
212
+ * import { AlephaQueue, $queue } from "alepha/queue";
213
+ *
214
+ * class EmailService {
215
+ * sendEmail = $queue({
216
+ * name: "emails",
217
+ * schema: {
218
+ * payload: t.object({
219
+ * to: t.string(),
220
+ * subject: t.string(),
221
+ * body: t.string(),
222
+ * }),
223
+ * },
224
+ * handler: async ({ payload }) => {
225
+ * // Process the email
226
+ * await sendEmailViaProvider(payload.to, payload.subject, payload.body);
227
+ * console.log(`Email sent to ${payload.to}`);
228
+ * },
229
+ * });
230
+ * }
231
+ *
232
+ * const alepha = Alepha.create()
233
+ * .with(AlephaQueue)
234
+ * .with(EmailService);
235
+ *
236
+ * run(alepha);
237
+ * ```
238
+ *
239
+ * **Queue Operations:**
240
+ * ```ts
241
+ * class NotificationService {
242
+ * notifications = $queue({
243
+ * name: "notifications",
244
+ * provider: "memory",
245
+ * schema: {
246
+ * payload: t.object({
247
+ * userId: t.string(),
248
+ * message: t.string(),
249
+ * type: t.union([t.literal("info"), t.literal("warning"), t.literal("error")]),
250
+ * }),
251
+ * },
252
+ * handler: async ({ payload }) => {
253
+ * await sendNotification(payload.userId, payload.message, payload.type);
254
+ * },
255
+ * });
256
+ *
257
+ * async notifyUser(userId: string, message: string, type: "info" | "warning" | "error") {
258
+ * // Push message to queue
259
+ * await this.notifications.push({ userId, message, type });
260
+ * }
261
+ * }
262
+ * ```
263
+ *
264
+ * **Batch Processing:**
265
+ * ```ts
266
+ * class BatchProcessor {
267
+ * processTasks = $queue({
268
+ * name: "batch-tasks",
269
+ * schema: {
270
+ * payload: t.object({
271
+ * taskId: t.string(),
272
+ * data: t.any(),
273
+ * }),
274
+ * },
275
+ * handler: async ({ payload }) => {
276
+ * await processTask(payload.taskId, payload.data);
277
+ * },
278
+ * });
279
+ *
280
+ * async submitBatch(tasks: Array<{ taskId: string; data: any }>) {
281
+ * // Push multiple messages at once
282
+ * await this.processTasks.push(...tasks);
283
+ * }
284
+ * }
285
+ * ```
199
286
  *
200
287
  * @see {@link $queue}
201
288
  * @see {@link $consumer}
@@ -205,6 +292,8 @@ declare class AlephaQueue implements Module {
205
292
  readonly name = "alepha.queue";
206
293
  readonly $services: (alepha: Alepha) => Alepha;
207
294
  }
295
+ //# sourceMappingURL=index.d.ts.map
296
+
208
297
  //#endregion
209
298
  export { $consumer, $queue, AlephaQueue, ConsumerDescriptor, ConsumerDescriptorOptions, MemoryQueueProvider, QueueDescriptor, QueueDescriptorOptions, QueueDescriptorProvider, QueueDescriptorProviderState, QueueMessageSchema, QueueProvider };
210
299
  //# sourceMappingURL=index.d.ts.map
package/react/auth.d.ts CHANGED
@@ -1,17 +1,24 @@
1
- import * as _alepha_core1 from "@alepha/core";
2
- import * as _alepha_core52 from "@alepha/core";
3
- import { Alepha, Async, KIND, Module, OPTIONS } from "@alepha/core";
4
- import * as _alepha_server_cookies7 from "@alepha/server-cookies";
5
- import { Cookies, ServerCookiesProvider } from "@alepha/server-cookies";
6
- import * as _alepha_server41 from "@alepha/server";
7
- import { HttpClient } from "@alepha/server";
1
+ import * as _alepha_core1 from "alepha";
2
+ import * as _alepha_core52 from "alepha";
3
+ import { Alepha, Async, KIND, Module, OPTIONS } from "alepha";
4
+ import * as _alepha_server_cookies7 from "alepha/server/cookies";
5
+ import { Cookies, ServerCookiesProvider } from "alepha/server/cookies";
6
+ import * as _alepha_server41 from "alepha/server";
7
+ import { HttpClient } from "alepha/server";
8
8
  import { Configuration } from "openid-client";
9
- import { HttpVirtualClient } from "@alepha/server-links";
10
- import { UserAccountToken } from "@alepha/security";
9
+ import { HttpVirtualClient } from "alepha/server/links";
10
+ import { UserAccountToken } from "alepha/security";
11
11
  import * as _sinclair_typebox2 from "@sinclair/typebox";
12
12
 
13
13
  //#region src/descriptors/$auth.d.ts
14
14
  declare const KEY = "AUTH";
15
+ /**
16
+ *
17
+ */
18
+ declare const $auth: {
19
+ (options: AuthDescriptorOptions): AuthDescriptor;
20
+ [KIND]: string;
21
+ };
15
22
  type AccessToken = string;
16
23
  interface AuthDescriptorOptions {
17
24
  name?: string;
@@ -30,10 +37,6 @@ interface AuthDescriptor {
30
37
  [OPTIONS]: AuthDescriptorOptions;
31
38
  jwks: () => string;
32
39
  }
33
- declare const $auth: {
34
- (options: AuthDescriptorOptions): AuthDescriptor;
35
- [KIND]: string;
36
- };
37
40
  //#endregion
38
41
  //#region src/providers/ReactAuthProvider.d.ts
39
42
  declare class ReactAuthProvider {
@@ -45,7 +48,7 @@ declare class ReactAuthProvider {
45
48
  codeVerifier: _sinclair_typebox2.TOptional<_sinclair_typebox2.TString>;
46
49
  redirectUri: _sinclair_typebox2.TOptional<_sinclair_typebox2.TString>;
47
50
  }>>;
48
- protected readonly tokens: _alepha_server_cookies7.CookieDescriptor<_sinclair_typebox2.TObject<{
51
+ readonly tokens: _alepha_server_cookies7.CookieDescriptor<_sinclair_typebox2.TObject<{
49
52
  provider: _sinclair_typebox2.TOptional<_sinclair_typebox2.TString>;
50
53
  access_token: _sinclair_typebox2.TOptional<_sinclair_typebox2.TString>;
51
54
  expires_in: _sinclair_typebox2.TOptional<_sinclair_typebox2.TNumber>;
@@ -145,6 +148,7 @@ interface ReactUser {
145
148
  name?: string;
146
149
  email?: string;
147
150
  }
151
+ //# sourceMappingURL=ReactAuthProvider.d.ts.map
148
152
  //#endregion
149
153
  //#region src/hooks/useAuth.d.ts
150
154
  declare const useAuth: () => AuthHook;
@@ -154,6 +158,7 @@ interface AuthHook {
154
158
  login: (provider?: string) => void;
155
159
  can: <T extends object>(name: keyof HttpVirtualClient<T>) => boolean;
156
160
  }
161
+ //# sourceMappingURL=useAuth.d.ts.map
157
162
  //#endregion
158
163
  //#region src/services/ReactAuth.d.ts
159
164
  declare class ReactAuth {
@@ -171,6 +176,7 @@ declare class ReactAuth {
171
176
  login(): void;
172
177
  logout(): void;
173
178
  }
179
+ //# sourceMappingURL=ReactAuth.d.ts.map
174
180
  //#endregion
175
181
  //#region src/index.d.ts
176
182
  declare module "alepha/react" {
@@ -182,8 +188,6 @@ declare module "alepha/react" {
182
188
  }
183
189
  }
184
190
  /**
185
- * Alepha React Authentication Module
186
- *
187
191
  * The ReactAuthModule provides authentication services for React applications.
188
192
  *
189
193
  * @see {@link ReactAuthProvider}
@@ -193,6 +197,8 @@ declare class AlephaReactAuth implements Module {
193
197
  readonly name = "alepha.react.auth";
194
198
  readonly $services: (alepha: Alepha) => void;
195
199
  }
200
+ //# sourceMappingURL=index.d.ts.map
201
+
196
202
  //#endregion
197
203
  export { $auth, AccessToken, AlephaReactAuth, AuthDescriptor, AuthDescriptorOptions, AuthHook, AuthProvider, ReactAuth, ReactAuthProvider, ReactUser, SessionTokens, useAuth };
198
204
  //# sourceMappingURL=index.d.ts.map
package/react/head.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { PageConfigSchema, PageReactContext, PageRoute, RouterState, TPropsDefault, TPropsParentDefault } from "@alepha/react";
2
- import * as _alepha_core1 from "@alepha/core";
3
- import { Alepha, Module } from "@alepha/core";
1
+ import { PageConfigSchema, PageReactContext, PageRoute, RouterState, TPropsDefault, TPropsParentDefault } from "alepha/react";
2
+ import * as _alepha_core1 from "alepha";
3
+ import { Alepha, Module } from "alepha";
4
4
 
5
5
  //#region src/interfaces/Head.d.ts
6
6
  interface Head extends SimpleHead {
@@ -42,15 +42,18 @@ interface SimpleHead {
42
42
  content: string;
43
43
  }>;
44
44
  }
45
+ //# sourceMappingURL=Head.d.ts.map
45
46
  //#endregion
46
47
  //#region src/hooks/useHead.d.ts
47
48
  declare const useHead: (head?: Head | ((previous?: Head) => Head)) => void;
49
+ //# sourceMappingURL=useHead.d.ts.map
48
50
  //#endregion
49
51
  //#region src/providers/HeadProvider.d.ts
50
52
  declare class HeadProvider {
51
53
  fillHead(state: RouterState, context: PageReactContext): void;
52
54
  protected fillHeadByPage(page: PageRoute, context: PageReactContext, props: Record<string, any>): void;
53
55
  }
56
+ //# sourceMappingURL=HeadProvider.d.ts.map
54
57
  //#endregion
55
58
  //#region src/providers/ServerHeadProvider.d.ts
56
59
  declare class ServerHeadProvider {
@@ -61,6 +64,7 @@ declare class ServerHeadProvider {
61
64
  protected parseAttributes(attrStr: string): Record<string, string>;
62
65
  protected escapeHtml(str: string): string;
63
66
  }
67
+ //# sourceMappingURL=ServerHeadProvider.d.ts.map
64
68
  //#endregion
65
69
  //#region src/index.d.ts
66
70
  declare module "alepha/react" {
@@ -72,7 +76,7 @@ declare module "alepha/react" {
72
76
  }
73
77
  }
74
78
  /**
75
- * Alepha React Head Module
79
+ * Fill `<head>` server & client side.
76
80
  *
77
81
  * @see {@link ServerHeadProvider}
78
82
  * @module alepha.react.head
@@ -81,6 +85,8 @@ declare class AlephaReactHead implements Module {
81
85
  readonly name = "alepha.react.head";
82
86
  readonly $services: (alepha: Alepha) => Alepha;
83
87
  }
88
+ //# sourceMappingURL=index.d.ts.map
89
+
84
90
  //#endregion
85
91
  export { AlephaReactHead, Head, ServerHeadProvider, SimpleHead, useHead };
86
92
  //# sourceMappingURL=index.d.ts.map