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.
- package/README.md +43 -98
- package/dist/api/audits/index.d.ts +240 -240
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +2 -2
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +185 -185
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +2 -2
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +245 -245
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/notifications/index.browser.js +4 -4
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +74 -74
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +4 -4
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +221 -221
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/users/index.d.ts +1632 -1631
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +26 -34
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +132 -132
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/batch/index.d.ts +122 -122
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/bucket/index.d.ts +163 -163
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/cache/core/index.d.ts +46 -46
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/index.d.ts +5933 -201
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +609 -169
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +296 -296
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +19 -19
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +268 -79
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +768 -694
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +268 -79
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +268 -79
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +44 -44
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/email/index.d.ts +25 -25
- package/dist/email/index.d.ts.map +1 -1
- package/dist/fake/index.d.ts +5409 -5409
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +22 -22
- package/dist/fake/index.js.map +1 -1
- package/dist/file/index.d.ts +435 -435
- package/dist/file/index.d.ts.map +1 -1
- package/dist/lock/core/index.d.ts +208 -208
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +24 -24
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +1 -5
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +216 -198
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +28 -4
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +9 -9
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +83 -76
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +961 -960
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +88 -81
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +244 -244
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/redis/index.d.ts +105 -105
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/retry/index.d.ts +69 -69
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/router/index.d.ts +6 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +108 -26
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +393 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +532 -209
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1422 -11
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +1296 -271
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1249 -18
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +56 -56
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/compress/index.d.ts +3 -3
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/cookies/index.d.ts +6 -6
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/core/index.d.ts +196 -186
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +43 -27
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +11 -11
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/helmet/index.d.ts +2 -2
- package/dist/server/helmet/index.d.ts.map +1 -1
- package/dist/server/links/index.browser.js +9 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +83 -83
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +13 -5
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +514 -1
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +4462 -4
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +6 -6
- package/dist/server/multipart/index.d.ts.map +1 -1
- package/dist/server/proxy/index.d.ts +102 -102
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.d.ts +16 -16
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/static/index.d.ts +44 -44
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/swagger/index.d.ts +47 -47
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/sms/index.d.ts +11 -11
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +3 -3
- package/dist/sms/index.js.map +1 -1
- package/dist/thread/index.d.ts +71 -71
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/thread/index.js +2 -2
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +318 -318
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/redis/index.d.ts +6 -6
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/vite/index.d.ts +2324 -1719
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +123 -475
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +3 -3
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +275 -275
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +3 -3
- package/dist/websocket/index.js.map +1 -1
- package/package.json +9 -9
- package/src/api/users/services/SessionService.ts +0 -10
- package/src/cli/apps/AlephaCli.ts +2 -2
- package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -1
- package/src/cli/assets/apiHelloControllerTs.ts +2 -1
- package/src/cli/assets/biomeJson.ts +2 -1
- package/src/cli/assets/claudeMd.ts +9 -4
- package/src/cli/assets/dummySpecTs.ts +2 -1
- package/src/cli/assets/editorconfig.ts +2 -1
- package/src/cli/assets/mainBrowserTs.ts +2 -1
- package/src/cli/assets/mainCss.ts +24 -0
- package/src/cli/assets/tsconfigJson.ts +2 -1
- package/src/cli/assets/webAppRouterTs.ts +2 -1
- package/src/cli/assets/webHelloComponentTsx.ts +6 -2
- package/src/cli/atoms/appEntryOptions.ts +13 -0
- package/src/cli/atoms/buildOptions.ts +1 -1
- package/src/cli/atoms/changelogOptions.ts +1 -1
- package/src/cli/commands/build.ts +63 -47
- package/src/cli/commands/dev.ts +16 -33
- package/src/cli/commands/gen/env.ts +1 -1
- package/src/cli/commands/init.ts +17 -8
- package/src/cli/commands/lint.ts +1 -1
- package/src/cli/defineConfig.ts +9 -0
- package/src/cli/index.ts +2 -1
- package/src/cli/providers/AppEntryProvider.ts +131 -0
- package/src/cli/providers/ViteBuildProvider.ts +82 -0
- package/src/cli/providers/ViteDevServerProvider.ts +350 -0
- package/src/cli/providers/ViteTemplateProvider.ts +27 -0
- package/src/cli/services/AlephaCliUtils.ts +33 -2
- package/src/cli/services/PackageManagerUtils.ts +13 -6
- package/src/cli/services/ProjectScaffolder.ts +72 -49
- package/src/core/Alepha.ts +2 -8
- package/src/core/primitives/$module.ts +12 -0
- package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
- package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
- package/src/core/providers/SchemaValidator.spec.ts +236 -0
- package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
- package/src/mcp/errors/McpError.ts +30 -0
- package/src/mcp/index.ts +3 -0
- package/src/mcp/transports/SseMcpTransport.ts +16 -6
- package/src/orm/providers/DrizzleKitProvider.ts +3 -5
- package/src/orm/services/Repository.ts +11 -0
- package/src/server/core/index.ts +1 -1
- package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
- package/src/server/core/providers/NodeHttpServerProvider.ts +71 -22
- package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
- package/src/server/core/providers/ServerProvider.ts +9 -12
- package/src/server/links/atoms/apiLinksAtom.ts +7 -0
- package/src/server/links/index.browser.ts +2 -0
- package/src/server/links/index.ts +2 -0
- package/src/vite/index.ts +3 -2
- package/src/vite/tasks/buildClient.ts +0 -1
- package/src/vite/tasks/buildServer.ts +68 -21
- package/src/vite/tasks/copyAssets.ts +5 -4
- package/src/vite/tasks/generateSitemap.ts +64 -23
- package/src/vite/tasks/index.ts +0 -2
- package/src/vite/tasks/prerenderPages.ts +49 -24
- package/src/cli/assets/indexHtml.ts +0 -15
- package/src/cli/commands/format.ts +0 -23
- package/src/vite/helpers/boot.ts +0 -117
- package/src/vite/plugins/viteAlephaDev.ts +0 -177
- package/src/vite/tasks/devServer.ts +0 -71
- package/src/vite/tasks/runAlepha.ts +0 -270
- /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
|
|
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
|
-
|
|
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
|
-
|
|
67
|
-
|
|
66
|
+
* Set the response status code.
|
|
67
|
+
*/
|
|
68
68
|
setStatus(status: number): this;
|
|
69
69
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
* Set a response header.
|
|
71
|
+
*/
|
|
72
72
|
setHeader(name: string, value: string): this;
|
|
73
73
|
/**
|
|
74
|
-
|
|
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
|
-
|
|
115
|
-
|
|
114
|
+
* HTTP method used for this request.
|
|
115
|
+
*/
|
|
116
116
|
method: RouteMethod;
|
|
117
117
|
/**
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
* Full request URL.
|
|
119
|
+
*/
|
|
120
120
|
url: URL;
|
|
121
121
|
/**
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
* Unique request ID assigned to this request.
|
|
123
|
+
*/
|
|
124
124
|
requestId: string;
|
|
125
125
|
/**
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
* Client IP address.
|
|
127
|
+
* Will parse `X-Forwarded-For` header if present.
|
|
128
|
+
*/
|
|
129
129
|
ip?: string;
|
|
130
130
|
/**
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
* Value of the `Host` header sent by the client.
|
|
132
|
+
*/
|
|
133
133
|
host?: string;
|
|
134
134
|
/**
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
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
|
-
|
|
147
|
-
|
|
146
|
+
* Reply object to be used to send response.
|
|
147
|
+
*/
|
|
148
148
|
reply: ServerReply;
|
|
149
149
|
/**
|
|
150
|
-
|
|
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
|
-
|
|
157
|
-
|
|
156
|
+
* Handler function for this route.
|
|
157
|
+
*/
|
|
158
158
|
handler: ServerHandler<TConfig>;
|
|
159
159
|
/**
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
* HTTP method for this route.
|
|
161
|
+
*/
|
|
162
162
|
method?: RouteMethod;
|
|
163
163
|
/**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
279
|
-
|
|
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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
-
|
|
291
|
-
|
|
290
|
+
* Create a new server route.
|
|
291
|
+
*/
|
|
292
292
|
createRoute<TConfig extends RequestConfigSchema = RequestConfigSchema>(route: ServerRoute<TConfig>): void;
|
|
293
293
|
/**
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
* Get or generate a context ID from request headers.
|
|
295
|
+
*/
|
|
296
296
|
protected getContextId(headers: Record<string, string>): string;
|
|
297
297
|
/**
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
322
|
-
|
|
321
|
+
* Determine response type based on route schema.
|
|
322
|
+
*/
|
|
323
323
|
protected getResponseType(schema?: RequestConfigSchema): ResponseKind;
|
|
324
324
|
/**
|
|
325
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
367
|
-
|
|
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
|
-
|
|
372
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
394
|
-
|
|
395
|
-
|
|
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
|
-
|
|
400
|
-
|
|
395
|
+
* Handle Web (Fetch API) request event.
|
|
396
|
+
*/
|
|
401
397
|
handleWebRequest(ev: WebRequestEvent): Promise<void>;
|
|
402
398
|
/**
|
|
403
|
-
|
|
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:
|
|
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
|
-
|
|
435
|
-
|
|
430
|
+
* Key to identify the request in the pending requests.
|
|
431
|
+
*/
|
|
436
432
|
key?: string;
|
|
437
433
|
/**
|
|
438
|
-
|
|
439
|
-
|
|
434
|
+
* The schema to validate the response against.
|
|
435
|
+
*/
|
|
440
436
|
schema?: {
|
|
441
437
|
response?: T;
|
|
442
438
|
};
|
|
443
439
|
/**
|
|
444
|
-
|
|
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
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
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
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
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
|
-
|
|
592
|
-
|
|
587
|
+
* Pathname of the route. If not provided, property key is used.
|
|
588
|
+
*/
|
|
593
589
|
path?: string;
|
|
594
590
|
/**
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
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
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
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
|
-
|
|
613
|
-
|
|
608
|
+
* A short description of the action. Used for documentation purposes.
|
|
609
|
+
*/
|
|
614
610
|
description?: string;
|
|
615
611
|
/**
|
|
616
|
-
|
|
617
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
638
|
-
|
|
633
|
+
* Returns the name of the action.
|
|
634
|
+
*/
|
|
639
635
|
get name(): string;
|
|
640
636
|
/**
|
|
641
|
-
|
|
642
|
-
|
|
637
|
+
* Returns the group of the action. (e.g. "orders", "admin", etc.)
|
|
638
|
+
*/
|
|
643
639
|
get group(): string;
|
|
644
640
|
/**
|
|
645
|
-
|
|
646
|
-
|
|
641
|
+
* Returns the HTTP method of the action.
|
|
642
|
+
*/
|
|
647
643
|
get method(): RouteMethod;
|
|
648
644
|
/**
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
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
|
-
|
|
658
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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">;
|