alepha 0.15.0 → 0.15.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 (222) hide show
  1. package/README.md +43 -98
  2. package/dist/api/audits/index.d.ts +240 -240
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +2 -2
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +185 -185
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +2 -2
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +245 -245
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/notifications/index.browser.js +4 -4
  13. package/dist/api/notifications/index.browser.js.map +1 -1
  14. package/dist/api/notifications/index.d.ts +74 -74
  15. package/dist/api/notifications/index.d.ts.map +1 -1
  16. package/dist/api/notifications/index.js +4 -4
  17. package/dist/api/notifications/index.js.map +1 -1
  18. package/dist/api/parameters/index.d.ts +221 -221
  19. package/dist/api/parameters/index.d.ts.map +1 -1
  20. package/dist/api/users/index.d.ts +1632 -1631
  21. package/dist/api/users/index.d.ts.map +1 -1
  22. package/dist/api/users/index.js +26 -34
  23. package/dist/api/users/index.js.map +1 -1
  24. package/dist/api/verifications/index.d.ts +132 -132
  25. package/dist/api/verifications/index.d.ts.map +1 -1
  26. package/dist/batch/index.d.ts +122 -122
  27. package/dist/batch/index.d.ts.map +1 -1
  28. package/dist/bucket/index.d.ts +163 -163
  29. package/dist/bucket/index.d.ts.map +1 -1
  30. package/dist/cache/core/index.d.ts +46 -46
  31. package/dist/cache/core/index.d.ts.map +1 -1
  32. package/dist/cache/redis/index.d.ts.map +1 -1
  33. package/dist/cache/redis/index.js +2 -2
  34. package/dist/cache/redis/index.js.map +1 -1
  35. package/dist/cli/index.d.ts +5933 -201
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +609 -169
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/command/index.d.ts +296 -296
  40. package/dist/command/index.d.ts.map +1 -1
  41. package/dist/command/index.js +19 -19
  42. package/dist/command/index.js.map +1 -1
  43. package/dist/core/index.browser.js +268 -79
  44. package/dist/core/index.browser.js.map +1 -1
  45. package/dist/core/index.d.ts +768 -694
  46. package/dist/core/index.d.ts.map +1 -1
  47. package/dist/core/index.js +268 -79
  48. package/dist/core/index.js.map +1 -1
  49. package/dist/core/index.native.js +268 -79
  50. package/dist/core/index.native.js.map +1 -1
  51. package/dist/datetime/index.d.ts +44 -44
  52. package/dist/datetime/index.d.ts.map +1 -1
  53. package/dist/email/index.d.ts +25 -25
  54. package/dist/email/index.d.ts.map +1 -1
  55. package/dist/fake/index.d.ts +5409 -5409
  56. package/dist/fake/index.d.ts.map +1 -1
  57. package/dist/fake/index.js +22 -22
  58. package/dist/fake/index.js.map +1 -1
  59. package/dist/file/index.d.ts +435 -435
  60. package/dist/file/index.d.ts.map +1 -1
  61. package/dist/lock/core/index.d.ts +208 -208
  62. package/dist/lock/core/index.d.ts.map +1 -1
  63. package/dist/lock/redis/index.d.ts.map +1 -1
  64. package/dist/logger/index.d.ts +24 -24
  65. package/dist/logger/index.d.ts.map +1 -1
  66. package/dist/logger/index.js +1 -5
  67. package/dist/logger/index.js.map +1 -1
  68. package/dist/mcp/index.d.ts +216 -198
  69. package/dist/mcp/index.d.ts.map +1 -1
  70. package/dist/mcp/index.js +28 -4
  71. package/dist/mcp/index.js.map +1 -1
  72. package/dist/orm/index.browser.js +9 -9
  73. package/dist/orm/index.browser.js.map +1 -1
  74. package/dist/orm/index.bun.js +83 -76
  75. package/dist/orm/index.bun.js.map +1 -1
  76. package/dist/orm/index.d.ts +961 -960
  77. package/dist/orm/index.d.ts.map +1 -1
  78. package/dist/orm/index.js +88 -81
  79. package/dist/orm/index.js.map +1 -1
  80. package/dist/queue/core/index.d.ts +244 -244
  81. package/dist/queue/core/index.d.ts.map +1 -1
  82. package/dist/queue/redis/index.d.ts.map +1 -1
  83. package/dist/redis/index.d.ts +105 -105
  84. package/dist/redis/index.d.ts.map +1 -1
  85. package/dist/retry/index.d.ts +69 -69
  86. package/dist/retry/index.d.ts.map +1 -1
  87. package/dist/router/index.d.ts +6 -6
  88. package/dist/router/index.d.ts.map +1 -1
  89. package/dist/scheduler/index.d.ts +108 -26
  90. package/dist/scheduler/index.d.ts.map +1 -1
  91. package/dist/scheduler/index.js +393 -1
  92. package/dist/scheduler/index.js.map +1 -1
  93. package/dist/security/index.d.ts +532 -209
  94. package/dist/security/index.d.ts.map +1 -1
  95. package/dist/security/index.js +1422 -11
  96. package/dist/security/index.js.map +1 -1
  97. package/dist/server/auth/index.d.ts +1296 -271
  98. package/dist/server/auth/index.d.ts.map +1 -1
  99. package/dist/server/auth/index.js +1249 -18
  100. package/dist/server/auth/index.js.map +1 -1
  101. package/dist/server/cache/index.d.ts +56 -56
  102. package/dist/server/cache/index.d.ts.map +1 -1
  103. package/dist/server/compress/index.d.ts +3 -3
  104. package/dist/server/compress/index.d.ts.map +1 -1
  105. package/dist/server/cookies/index.d.ts +6 -6
  106. package/dist/server/cookies/index.d.ts.map +1 -1
  107. package/dist/server/core/index.d.ts +196 -186
  108. package/dist/server/core/index.d.ts.map +1 -1
  109. package/dist/server/core/index.js +43 -27
  110. package/dist/server/core/index.js.map +1 -1
  111. package/dist/server/cors/index.d.ts +11 -11
  112. package/dist/server/cors/index.d.ts.map +1 -1
  113. package/dist/server/health/index.d.ts.map +1 -1
  114. package/dist/server/helmet/index.d.ts +2 -2
  115. package/dist/server/helmet/index.d.ts.map +1 -1
  116. package/dist/server/links/index.browser.js +9 -1
  117. package/dist/server/links/index.browser.js.map +1 -1
  118. package/dist/server/links/index.d.ts +83 -83
  119. package/dist/server/links/index.d.ts.map +1 -1
  120. package/dist/server/links/index.js +13 -5
  121. package/dist/server/links/index.js.map +1 -1
  122. package/dist/server/metrics/index.d.ts +514 -1
  123. package/dist/server/metrics/index.d.ts.map +1 -1
  124. package/dist/server/metrics/index.js +4462 -4
  125. package/dist/server/metrics/index.js.map +1 -1
  126. package/dist/server/multipart/index.d.ts +6 -6
  127. package/dist/server/multipart/index.d.ts.map +1 -1
  128. package/dist/server/proxy/index.d.ts +102 -102
  129. package/dist/server/proxy/index.d.ts.map +1 -1
  130. package/dist/server/rate-limit/index.d.ts +16 -16
  131. package/dist/server/rate-limit/index.d.ts.map +1 -1
  132. package/dist/server/static/index.d.ts +44 -44
  133. package/dist/server/static/index.d.ts.map +1 -1
  134. package/dist/server/swagger/index.d.ts +47 -47
  135. package/dist/server/swagger/index.d.ts.map +1 -1
  136. package/dist/sms/index.d.ts +11 -11
  137. package/dist/sms/index.d.ts.map +1 -1
  138. package/dist/sms/index.js +3 -3
  139. package/dist/sms/index.js.map +1 -1
  140. package/dist/thread/index.d.ts +71 -71
  141. package/dist/thread/index.d.ts.map +1 -1
  142. package/dist/thread/index.js +2 -2
  143. package/dist/thread/index.js.map +1 -1
  144. package/dist/topic/core/index.d.ts +318 -318
  145. package/dist/topic/core/index.d.ts.map +1 -1
  146. package/dist/topic/redis/index.d.ts +6 -6
  147. package/dist/topic/redis/index.d.ts.map +1 -1
  148. package/dist/vite/index.d.ts +2324 -1719
  149. package/dist/vite/index.d.ts.map +1 -1
  150. package/dist/vite/index.js +123 -475
  151. package/dist/vite/index.js.map +1 -1
  152. package/dist/websocket/index.browser.js +3 -3
  153. package/dist/websocket/index.browser.js.map +1 -1
  154. package/dist/websocket/index.d.ts +275 -275
  155. package/dist/websocket/index.d.ts.map +1 -1
  156. package/dist/websocket/index.js +3 -3
  157. package/dist/websocket/index.js.map +1 -1
  158. package/package.json +9 -9
  159. package/src/api/users/services/SessionService.ts +0 -10
  160. package/src/cli/apps/AlephaCli.ts +2 -2
  161. package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -1
  162. package/src/cli/assets/apiHelloControllerTs.ts +2 -1
  163. package/src/cli/assets/biomeJson.ts +2 -1
  164. package/src/cli/assets/claudeMd.ts +9 -4
  165. package/src/cli/assets/dummySpecTs.ts +2 -1
  166. package/src/cli/assets/editorconfig.ts +2 -1
  167. package/src/cli/assets/mainBrowserTs.ts +2 -1
  168. package/src/cli/assets/mainCss.ts +24 -0
  169. package/src/cli/assets/tsconfigJson.ts +2 -1
  170. package/src/cli/assets/webAppRouterTs.ts +2 -1
  171. package/src/cli/assets/webHelloComponentTsx.ts +6 -2
  172. package/src/cli/atoms/appEntryOptions.ts +13 -0
  173. package/src/cli/atoms/buildOptions.ts +1 -1
  174. package/src/cli/atoms/changelogOptions.ts +1 -1
  175. package/src/cli/commands/build.ts +63 -47
  176. package/src/cli/commands/dev.ts +16 -33
  177. package/src/cli/commands/gen/env.ts +1 -1
  178. package/src/cli/commands/init.ts +17 -8
  179. package/src/cli/commands/lint.ts +1 -1
  180. package/src/cli/defineConfig.ts +9 -0
  181. package/src/cli/index.ts +2 -1
  182. package/src/cli/providers/AppEntryProvider.ts +131 -0
  183. package/src/cli/providers/ViteBuildProvider.ts +82 -0
  184. package/src/cli/providers/ViteDevServerProvider.ts +350 -0
  185. package/src/cli/providers/ViteTemplateProvider.ts +27 -0
  186. package/src/cli/services/AlephaCliUtils.ts +33 -2
  187. package/src/cli/services/PackageManagerUtils.ts +13 -6
  188. package/src/cli/services/ProjectScaffolder.ts +72 -49
  189. package/src/core/Alepha.ts +2 -8
  190. package/src/core/primitives/$module.ts +12 -0
  191. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
  192. package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
  193. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  194. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  195. package/src/mcp/errors/McpError.ts +30 -0
  196. package/src/mcp/index.ts +3 -0
  197. package/src/mcp/transports/SseMcpTransport.ts +16 -6
  198. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  199. package/src/orm/services/Repository.ts +11 -0
  200. package/src/server/core/index.ts +1 -1
  201. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  202. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  203. package/src/server/core/providers/NodeHttpServerProvider.ts +71 -22
  204. package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
  205. package/src/server/core/providers/ServerProvider.ts +9 -12
  206. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  207. package/src/server/links/index.browser.ts +2 -0
  208. package/src/server/links/index.ts +2 -0
  209. package/src/vite/index.ts +3 -2
  210. package/src/vite/tasks/buildClient.ts +0 -1
  211. package/src/vite/tasks/buildServer.ts +68 -21
  212. package/src/vite/tasks/copyAssets.ts +5 -4
  213. package/src/vite/tasks/generateSitemap.ts +64 -23
  214. package/src/vite/tasks/index.ts +0 -2
  215. package/src/vite/tasks/prerenderPages.ts +49 -24
  216. package/src/cli/assets/indexHtml.ts +0 -15
  217. package/src/cli/commands/format.ts +0 -23
  218. package/src/vite/helpers/boot.ts +0 -117
  219. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  220. package/src/vite/tasks/devServer.ts +0 -71
  221. package/src/vite/tasks/runAlepha.ts +0 -270
  222. /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
@@ -1,13 +1,13 @@
1
1
  import * as alepha19 from "alepha";
2
2
  import { Alepha, AlephaError, Async, CompiledEventExecutor, FileLike, Hooks, KIND, Primitive, Static, StreamLike, TArray, TFile, TObject, TRecord, TSchema, TStream, TString, TVoid } from "alepha";
3
- import * as alepha_logger4 from "alepha/logger";
3
+ import * as alepha_logger6 from "alepha/logger";
4
4
  import { Readable } from "node:stream";
5
5
  import { DateTimeProvider, DurationLike } from "alepha/datetime";
6
6
  import { ReadableStream } from "node:stream/web";
7
7
  import { Route, RouterProvider } from "alepha/router";
8
8
  import * as alepha_cache0 from "alepha/cache";
9
- import * as node_http0 from "node:http";
10
9
  import { IncomingMessage, Server, ServerResponse as ServerResponse$1 } from "node:http";
10
+ import { Socket } from "node:net";
11
11
 
12
12
  //#region ../../src/server/core/schemas/errorSchema.d.ts
13
13
  declare const errorSchema: alepha19.TObject<{
@@ -59,20 +59,20 @@ declare class ServerReply {
59
59
  status?: number;
60
60
  body?: any;
61
61
  /**
62
- * Redirect to a given URL with optional status code (default 301).
63
- */
62
+ * Redirect to a given URL with optional status code (default 301).
63
+ */
64
64
  redirect(url: string, status?: number): void;
65
65
  /**
66
- * Set the response status code.
67
- */
66
+ * Set the response status code.
67
+ */
68
68
  setStatus(status: number): this;
69
69
  /**
70
- * Set a response header.
71
- */
70
+ * Set a response header.
71
+ */
72
72
  setHeader(name: string, value: string): this;
73
73
  /**
74
- * Set the response body.
75
- */
74
+ * Set the response body.
75
+ */
76
76
  setBody(body: any): this;
77
77
  }
78
78
  //#endregion
@@ -111,73 +111,73 @@ interface ServerRequestConfig<TConfig extends RequestConfigSchema = RequestConfi
111
111
  type ServerRequestConfigEntry<TConfig extends RequestConfigSchema = RequestConfigSchema> = Partial<ServerRequestConfig<TConfig>>;
112
112
  interface ServerRequest<TConfig extends RequestConfigSchema = RequestConfigSchema> extends ServerRequestConfig<TConfig> {
113
113
  /**
114
- * HTTP method used for this request.
115
- */
114
+ * HTTP method used for this request.
115
+ */
116
116
  method: RouteMethod;
117
117
  /**
118
- * Full request URL.
119
- */
118
+ * Full request URL.
119
+ */
120
120
  url: URL;
121
121
  /**
122
- * Unique request ID assigned to this request.
123
- */
122
+ * Unique request ID assigned to this request.
123
+ */
124
124
  requestId: string;
125
125
  /**
126
- * Client IP address.
127
- * Will parse `X-Forwarded-For` header if present.
128
- */
126
+ * Client IP address.
127
+ * Will parse `X-Forwarded-For` header if present.
128
+ */
129
129
  ip?: string;
130
130
  /**
131
- * Value of the `Host` header sent by the client.
132
- */
131
+ * Value of the `Host` header sent by the client.
132
+ */
133
133
  host?: string;
134
134
  /**
135
- * Browser user agent information.
136
- * Information are not guaranteed to be accurate. Use with caution.
137
- *
138
- * @see {@link UserAgentParser}
139
- */
135
+ * Browser user agent information.
136
+ * Information are not guaranteed to be accurate. Use with caution.
137
+ *
138
+ * @see {@link UserAgentParser}
139
+ */
140
140
  userAgent: UserAgentInfo;
141
141
  /**
142
- * Arbitrary metadata attached to the request. Can be used by middlewares to store information.
143
- */
142
+ * Arbitrary metadata attached to the request. Can be used by middlewares to store information.
143
+ */
144
144
  metadata: Record<string, any>;
145
145
  /**
146
- * Reply object to be used to send response.
147
- */
146
+ * Reply object to be used to send response.
147
+ */
148
148
  reply: ServerReply;
149
149
  /**
150
- * The raw underlying request object (Web Request).
151
- */
150
+ * The raw underlying request object (Web Request).
151
+ */
152
152
  raw: ServerRawRequest;
153
153
  }
154
154
  interface ServerRoute<TConfig extends RequestConfigSchema = RequestConfigSchema> extends Route {
155
155
  /**
156
- * Handler function for this route.
157
- */
156
+ * Handler function for this route.
157
+ */
158
158
  handler: ServerHandler<TConfig>;
159
159
  /**
160
- * HTTP method for this route.
161
- */
160
+ * HTTP method for this route.
161
+ */
162
162
  method?: RouteMethod;
163
163
  /**
164
- * Request/response schema for this route.
165
- *
166
- * Request schema contains:
167
- * - body, for POST/PUT/PATCH requests
168
- * - params, for URL parameters (e.g. /user/:id)
169
- * - query, for URL query parameters (e.g. /user?id=123)
170
- * - headers, for HTTP headers
171
- *
172
- * Response schema contains:
173
- * - response
174
- *
175
- * Response schema is used to validate and serialize the response sent by the handler.
176
- */
164
+ * Request/response schema for this route.
165
+ *
166
+ * Request schema contains:
167
+ * - body, for POST/PUT/PATCH requests
168
+ * - params, for URL parameters (e.g. /user/:id)
169
+ * - query, for URL query parameters (e.g. /user?id=123)
170
+ * - headers, for HTTP headers
171
+ *
172
+ * Response schema contains:
173
+ * - response
174
+ *
175
+ * Response schema is used to validate and serialize the response sent by the handler.
176
+ */
177
177
  schema?: TConfig;
178
178
  /**
179
- * @see ServerLoggerProvider
180
- */
179
+ * @see ServerLoggerProvider
180
+ */
181
181
  silent?: boolean;
182
182
  }
183
183
  type ServerResponseBody<TConfig extends RequestConfigSchema = RequestConfigSchema> = TConfig["response"] extends TResponseBody ? Static<TConfig["response"]> : ResponseBodyType;
@@ -227,7 +227,7 @@ declare class ServerRequestParser {
227
227
  //#region ../../src/server/core/providers/ServerTimingProvider.d.ts
228
228
  type TimingMap = Record<string, [number, number]>;
229
229
  declare class ServerTimingProvider {
230
- protected readonly log: alepha_logger4.Logger;
230
+ protected readonly log: alepha_logger6.Logger;
231
231
  protected readonly alepha: Alepha;
232
232
  options: {
233
233
  prefix: string;
@@ -251,7 +251,7 @@ declare class ServerTimingProvider {
251
251
  * - $page => React route (for React SSR)
252
252
  */
253
253
  declare class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
254
- protected readonly log: alepha_logger4.Logger;
254
+ protected readonly log: alepha_logger6.Logger;
255
255
  protected readonly alepha: Alepha;
256
256
  protected readonly routes: ServerRoute[];
257
257
  protected readonly serverTimingProvider: ServerTimingProvider;
@@ -269,39 +269,39 @@ declare class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
269
269
  protected readonly processRequestBound: () => Promise<any>;
270
270
  protected readonly queryKeysCache: WeakMap<object, string[]>;
271
271
  /**
272
- * Get cached keys for a query schema, computing them lazily on first access.
273
- */
272
+ * Get cached keys for a query schema, computing them lazily on first access.
273
+ */
274
274
  protected getQuerySchemaKeys(schema: {
275
275
  properties: object;
276
276
  }): string[];
277
277
  /**
278
- * Compile event executors for optimal performance.
279
- * Called lazily on first request after all hooks are registered.
280
- */
278
+ * Compile event executors for optimal performance.
279
+ * Called lazily on first request after all hooks are registered.
280
+ */
281
281
  protected compileEvents(): void;
282
282
  /**
283
- * Get all registered routes, optionally filtered by a pattern.
284
- *
285
- * Pattern accept simple wildcard '*' at the end.
286
- * Example: '/api/*' will match all routes starting with '/api/' but '/api/' will match only that exact route.
287
- */
283
+ * Get all registered routes, optionally filtered by a pattern.
284
+ *
285
+ * Pattern accept simple wildcard '*' at the end.
286
+ * Example: '/api/*' will match all routes starting with '/api/' but '/api/' will match only that exact route.
287
+ */
288
288
  getRoutes(pattern?: string): ServerRoute[];
289
289
  /**
290
- * Create a new server route.
291
- */
290
+ * Create a new server route.
291
+ */
292
292
  createRoute<TConfig extends RequestConfigSchema = RequestConfigSchema>(route: ServerRoute<TConfig>): void;
293
293
  /**
294
- * Get or generate a context ID from request headers.
295
- */
294
+ * Get or generate a context ID from request headers.
295
+ */
296
296
  protected getContextId(headers: Record<string, string>): string;
297
297
  /**
298
- * Process an incoming request through the full lifecycle:
299
- * - onRequest hooks
300
- * - route handler
301
- * - onSend hooks
302
- * - response serialization
303
- * - onResponse hooks
304
- */
298
+ * Process an incoming request through the full lifecycle:
299
+ * - onRequest hooks
300
+ * - route handler
301
+ * - onSend hooks
302
+ * - response serialization
303
+ * - onResponse hooks
304
+ */
305
305
  protected processRequest(request: ServerRequest, route: ServerRoute, responseKind: ResponseKind): Promise<{
306
306
  status: number;
307
307
  headers: Record<string, string> & {
@@ -310,24 +310,24 @@ declare class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
310
310
  body: any;
311
311
  }>;
312
312
  /**
313
- * Run the route handler with request validation and response serialization.
314
- */
313
+ * Run the route handler with request validation and response serialization.
314
+ */
315
315
  protected runRouteHandler(route: ServerRoute, request: ServerRequest, responseKind: ResponseKind): Promise<void>;
316
316
  /**
317
- * Transform reply body based on response kind and route schema.
318
- */
317
+ * Transform reply body based on response kind and route schema.
318
+ */
319
319
  serializeResponse(route: ServerRoute, reply: ServerReply, responseKind: ResponseKind): void;
320
320
  /**
321
- * Determine response type based on route schema.
322
- */
321
+ * Determine response type based on route schema.
322
+ */
323
323
  protected getResponseType(schema?: RequestConfigSchema): ResponseKind;
324
324
  /**
325
- * When an error occurs during request processing, this method is called.
326
- */
325
+ * When an error occurs during request processing, this method is called.
326
+ */
327
327
  protected errorHandler(route: ServerRoute, request: ServerRequest, error: Error): Promise<void>;
328
328
  /**
329
- * Validate incoming request against route schema.
330
- */
329
+ * Validate incoming request against route schema.
330
+ */
331
331
  validateRequest(route: {
332
332
  schema?: RequestConfigSchema;
333
333
  }, request: ServerRequestConfig): void;
@@ -342,7 +342,7 @@ declare class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
342
342
  * ServerProvider supports both Node.js HTTP requests and Web (Fetch API) requests.
343
343
  */
344
344
  declare class ServerProvider {
345
- protected readonly log: alepha_logger4.Logger;
345
+ protected readonly log: alepha_logger6.Logger;
346
346
  protected readonly alepha: Alepha;
347
347
  protected readonly dateTimeProvider: DateTimeProvider;
348
348
  protected readonly router: ServerRouterProvider;
@@ -363,51 +363,47 @@ declare class ServerProvider {
363
363
  }>;
364
364
  protected readonly urlBaseCache: Map<string, string>;
365
365
  /**
366
- * Get cached URL base (protocol + host) for a given host header.
367
- * Caches the result to avoid repeated string concatenation.
368
- */
366
+ * Get cached URL base (protocol + host) for a given host header.
367
+ * Caches the result to avoid repeated string concatenation.
368
+ */
369
369
  protected getUrlBase(headers: Record<string, string>): string;
370
370
  /**
371
- * Parse query string manually - faster than new URL() + URLSearchParams.
372
- * Returns empty object if no query string.
373
- */
371
+ * Parse query string manually - faster than new URL() + URLSearchParams.
372
+ * Returns empty object if no query string.
373
+ */
374
374
  protected parseQueryString(rawUrl: string): Record<string, string>;
375
375
  /**
376
- * Fast decode - only calls decodeURIComponent if needed.
377
- */
376
+ * Fast decode - only calls decodeURIComponent if needed.
377
+ */
378
378
  protected fastDecode(str: string): string;
379
- /**
380
- * Extract pathname from URL without creating URL object.
381
- */
382
- protected getPathname(rawUrl: string): string;
383
379
  get hostname(): string;
384
380
  /**
385
- * When a Node.js HTTP request is received from outside. (Vercel, AWS Lambda, etc.)
386
- */
381
+ * When a Node.js HTTP request is received from outside. (Vercel, AWS Lambda, etc.)
382
+ */
387
383
  protected readonly onNodeRequest: alepha19.HookPrimitive<"node:request">;
388
384
  /**
389
- * When a Web (Fetch API) request is received from outside. (Netlify, Cloudflare Workers, etc.)
390
- */
385
+ * When a Web (Fetch API) request is received from outside. (Netlify, Cloudflare Workers, etc.)
386
+ */
391
387
  protected readonly onWebRequest: alepha19.HookPrimitive<"web:request">;
392
388
  /**
393
- * Handle Node.js HTTP request event.
394
- *
395
- * Optimized to avoid expensive URL parsing when possible.
396
- */
389
+ * Handle Node.js HTTP request event.
390
+ *
391
+ * Optimized to avoid expensive URL parsing when possible.
392
+ */
397
393
  handleNodeRequest(nodeRequestEvent: NodeRequestEvent): Promise<void>;
398
394
  /**
399
- * Handle Web (Fetch API) request event.
400
- */
395
+ * Handle Web (Fetch API) request event.
396
+ */
401
397
  handleWebRequest(ev: WebRequestEvent): Promise<void>;
402
398
  /**
403
- * Helper for Vite development mode to let Vite handle (or not) 404.
404
- */
399
+ * Helper for Vite development mode to let Vite handle (or not) 404.
400
+ */
405
401
  protected isViteNotFound(url?: string, route?: Route, params?: Record<string, string>): boolean;
406
402
  }
407
403
  //#endregion
408
404
  //#region ../../src/server/core/services/HttpClient.d.ts
409
405
  declare class HttpClient {
410
- protected readonly log: alepha_logger4.Logger;
406
+ protected readonly log: alepha_logger6.Logger;
411
407
  protected readonly alepha: Alepha;
412
408
  readonly cache: alepha_cache0.CachePrimitiveFn<HttpClientCache, any[]>;
413
409
  protected readonly pendingRequests: HttpClientPendingRequests;
@@ -431,18 +427,18 @@ declare class HttpClient {
431
427
  }
432
428
  interface FetchOptions<T extends TSchema = TSchema> {
433
429
  /**
434
- * Key to identify the request in the pending requests.
435
- */
430
+ * Key to identify the request in the pending requests.
431
+ */
436
432
  key?: string;
437
433
  /**
438
- * The schema to validate the response against.
439
- */
434
+ * The schema to validate the response against.
435
+ */
440
436
  schema?: {
441
437
  response?: T;
442
438
  };
443
439
  /**
444
- * Built-in cache options.
445
- */
440
+ * Built-in cache options.
441
+ */
446
442
  localCache?: boolean | number | DurationLike;
447
443
  }
448
444
  type RequestInitWithOptions<T extends TSchema = TSchema> = RequestInit & FetchOptions<T>;
@@ -558,72 +554,72 @@ declare const $action: {
558
554
  };
559
555
  interface ActionPrimitiveOptions<TConfig extends RequestConfigSchema> extends Omit<ServerRoute, "handler" | "path" | "schema" | "mapParams"> {
560
556
  /**
561
- * Name of the action.
562
- *
563
- * - It will be used to generate the route path if `path` is not provided.
564
- * - It will be used to generate the permission name if `security` is enabled.
565
- */
557
+ * Name of the action.
558
+ *
559
+ * - It will be used to generate the route path if `path` is not provided.
560
+ * - It will be used to generate the permission name if `security` is enabled.
561
+ */
566
562
  name?: string;
567
563
  /**
568
- * Group actions together.
569
- *
570
- * - If not provided, the service name containing the route will be used.
571
- * - It will be used as Tag for documentation purposes.
572
- * - It will be used for permission name generation if `security` is enabled.
573
- *
574
- * @example
575
- * ```ts
576
- * // group = "MyController"
577
- * class MyController {
578
- * hello = $action({ handler: () => "Hello World" });
579
- * }
580
- *
581
- * // group = "users"
582
- * class MyOtherController {
583
- * group = "users";
584
- * a1 = $action({ handler: () => "Action 1", group: this.group });
585
- * a2 = $action({ handler: () => "Action 2", group: this.group });
586
- * }
587
- * ```
588
- */
564
+ * Group actions together.
565
+ *
566
+ * - If not provided, the service name containing the route will be used.
567
+ * - It will be used as Tag for documentation purposes.
568
+ * - It will be used for permission name generation if `security` is enabled.
569
+ *
570
+ * @example
571
+ * ```ts
572
+ * // group = "MyController"
573
+ * class MyController {
574
+ * hello = $action({ handler: () => "Hello World" });
575
+ * }
576
+ *
577
+ * // group = "users"
578
+ * class MyOtherController {
579
+ * group = "users";
580
+ * a1 = $action({ handler: () => "Action 1", group: this.group });
581
+ * a2 = $action({ handler: () => "Action 2", group: this.group });
582
+ * }
583
+ * ```
584
+ */
589
585
  group?: string;
590
586
  /**
591
- * Pathname of the route. If not provided, property key is used.
592
- */
587
+ * Pathname of the route. If not provided, property key is used.
588
+ */
593
589
  path?: string;
594
590
  /**
595
- * The route method.
596
- *
597
- * - If not provided, it will be set to "GET" by default.
598
- * - If not provider and a body is provided, it will be set to "POST".
599
- *
600
- * Wildcard methods are not supported for now. (e.g. "ALL", "ANY", etc.)
601
- */
591
+ * The route method.
592
+ *
593
+ * - If not provided, it will be set to "GET" by default.
594
+ * - If not provider and a body is provided, it will be set to "POST".
595
+ *
596
+ * Wildcard methods are not supported for now. (e.g. "ALL", "ANY", etc.)
597
+ */
602
598
  method?: RouteMethod;
603
599
  /**
604
- * The config schema of the route.
605
- * - body: The request body schema.
606
- * - params: Path variables schema.
607
- * - query: The request query-params schema.
608
- * - response: The response schema.
609
- */
600
+ * The config schema of the route.
601
+ * - body: The request body schema.
602
+ * - params: Path variables schema.
603
+ * - query: The request query-params schema.
604
+ * - response: The response schema.
605
+ */
610
606
  schema?: TConfig;
611
607
  /**
612
- * A short description of the action. Used for documentation purposes.
613
- */
608
+ * A short description of the action. Used for documentation purposes.
609
+ */
614
610
  description?: string;
615
611
  /**
616
- * Disable the route. Useful with env variables do disable one specific route.
617
- * Route won't be available in the API but can still be called locally!
618
- */
612
+ * Disable the route. Useful with env variables do disable one specific route.
613
+ * Route won't be available in the API but can still be called locally!
614
+ */
619
615
  disabled?: boolean;
620
616
  /**
621
- * Main route handler. This is where the route logic is implemented.
622
- */
617
+ * Main route handler. This is where the route logic is implemented.
618
+ */
623
619
  handler: ServerActionHandler<TConfig>;
624
620
  }
625
621
  declare class ActionPrimitive<TConfig extends RequestConfigSchema> extends Primitive<ActionPrimitiveOptions<TConfig>> {
626
- protected readonly log: alepha_logger4.Logger;
622
+ protected readonly log: alepha_logger6.Logger;
627
623
  protected readonly env: {
628
624
  SERVER_API_PREFIX: string;
629
625
  };
@@ -634,33 +630,33 @@ declare class ActionPrimitive<TConfig extends RequestConfigSchema> extends Primi
634
630
  get prefix(): string;
635
631
  get route(): ServerRoute;
636
632
  /**
637
- * Returns the name of the action.
638
- */
633
+ * Returns the name of the action.
634
+ */
639
635
  get name(): string;
640
636
  /**
641
- * Returns the group of the action. (e.g. "orders", "admin", etc.)
642
- */
637
+ * Returns the group of the action. (e.g. "orders", "admin", etc.)
638
+ */
643
639
  get group(): string;
644
640
  /**
645
- * Returns the HTTP method of the action.
646
- */
641
+ * Returns the HTTP method of the action.
642
+ */
647
643
  get method(): RouteMethod;
648
644
  /**
649
- * Returns the path of the action.
650
- *
651
- * Path is prefixed by `/api` by default.
652
- */
645
+ * Returns the path of the action.
646
+ *
647
+ * Path is prefixed by `/api` by default.
648
+ */
653
649
  get path(): string;
654
650
  get schema(): TConfig | undefined;
655
651
  getBodyContentType(): string | undefined;
656
652
  /**
657
- * Call the action handler directly.
658
- * There is no HTTP layer involved.
659
- */
653
+ * Call the action handler directly.
654
+ * There is no HTTP layer involved.
655
+ */
660
656
  run(config?: ClientRequestEntry<TConfig>, options?: ClientRequestOptions): Promise<ClientRequestResponse<TConfig>>;
661
657
  /**
662
- * Works like `run`, but always fetches (http request) the route.
663
- */
658
+ * Works like `run`, but always fetches (http request) the route.
659
+ */
664
660
  fetch(config?: ClientRequestEntry<TConfig>, options?: ClientRequestOptions): Promise<FetchResponse<ClientRequestResponse<TConfig>>>;
665
661
  }
666
662
  interface ActionPrimitiveFn<TConfig extends RequestConfigSchema> extends ActionPrimitive<TConfig> {
@@ -675,8 +671,8 @@ type ClientRequestEntryContainer<TConfig extends RequestConfigSchema> = {
675
671
  };
676
672
  interface ClientRequestOptions extends FetchOptions {
677
673
  /**
678
- * Standard request fetch options.
679
- */
674
+ * Standard request fetch options.
675
+ */
680
676
  request?: RequestInit;
681
677
  }
682
678
  type ClientRequestResponse<TConfig extends RequestConfigSchema> = TConfig["response"] extends TSchema ? Static<TConfig["response"]> : any;
@@ -771,7 +767,7 @@ declare module "alepha" {
771
767
  declare class BunHttpServerProvider extends ServerProvider {
772
768
  protected readonly alepha: Alepha;
773
769
  protected readonly dateTimeProvider: DateTimeProvider;
774
- protected readonly log: alepha_logger4.Logger;
770
+ protected readonly log: alepha_logger6.Logger;
775
771
  protected readonly env: {
776
772
  SERVER_PORT: number;
777
773
  SERVER_HOST: string;
@@ -796,14 +792,27 @@ declare module "alepha" {
796
792
  declare class NodeHttpServerProvider extends ServerProvider {
797
793
  protected readonly alepha: Alepha;
798
794
  protected readonly dateTimeProvider: DateTimeProvider;
799
- protected readonly log: alepha_logger4.Logger;
795
+ protected readonly log: alepha_logger6.Logger;
800
796
  protected readonly env: {
801
797
  SERVER_PORT: number;
802
798
  SERVER_HOST: string;
803
799
  };
804
800
  protected readonly router: ServerRouterProvider;
801
+ /** Track active connections for fast shutdown */
802
+ protected readonly connections: Set<Socket>;
803
+ /** Get number of active connections */
804
+ getConnectionsCount(): number;
805
+ /** Server options */
806
+ readonly options: {
807
+ /**
808
+ * Graceful shutdown timeout in ms.
809
+ * After this, remaining connections are forcefully closed.
810
+ * @default 30000
811
+ */
812
+ shutdownTimeout: number;
813
+ };
805
814
  get hostname(): string;
806
- protected readonly handleRequestError: (res: node_http0.ServerResponse, err: Error) => void;
815
+ protected readonly handleRequestError: (res: ServerResponse$1, err: Error) => void;
807
816
  protected readonly nodeRequestEvent: {
808
817
  req: IncomingMessage;
809
818
  res: ServerResponse$1;
@@ -814,11 +823,12 @@ declare class NodeHttpServerProvider extends ServerProvider {
814
823
  protected readonly stop: alepha19.HookPrimitive<"stop">;
815
824
  protected listen(): Promise<void>;
816
825
  protected close(): Promise<void>;
826
+ protected destroyAllConnections(): void;
817
827
  }
818
828
  //#endregion
819
829
  //#region ../../src/server/core/providers/ServerLoggerProvider.d.ts
820
830
  declare class ServerLoggerProvider {
821
- protected readonly log: alepha_logger4.Logger;
831
+ protected readonly log: alepha_logger6.Logger;
822
832
  protected readonly alepha: Alepha;
823
833
  readonly onRequest: alepha19.HookPrimitive<"server:onRequest">;
824
834
  readonly onError: alepha19.HookPrimitive<"server:onError">;