alepha 0.15.4 → 0.15.5
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 +26 -11
- package/dist/api/audits/index.d.ts +3 -3
- package/dist/api/audits/index.js +3 -3
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +3 -3
- package/dist/api/files/index.js +3 -3
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +47 -4
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +100 -5
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +3 -3
- package/dist/api/keys/index.js +3 -3
- package/dist/api/keys/index.js.map +1 -1
- package/dist/api/notifications/index.d.ts +3 -3
- package/dist/api/notifications/index.js +3 -3
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +263 -263
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +31 -30
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/users/index.d.ts +373 -67
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +273 -72
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +3 -3
- package/dist/api/verifications/index.js +3 -3
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.d.ts +7 -7
- package/dist/batch/index.js +3 -3
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +3 -3
- package/dist/bucket/index.js +6 -6
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/core/index.d.ts +3 -3
- package/dist/cache/core/index.js +3 -3
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cli/index.d.ts +5607 -20
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +103 -89
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +11 -4
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +8 -6
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +4 -8
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +3 -3
- package/dist/datetime/index.js +3 -3
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +3 -3
- package/dist/email/index.js +8 -8
- package/dist/email/index.js.map +1 -1
- package/dist/fake/index.d.ts +3 -3
- package/dist/fake/index.js +3 -3
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +3 -3
- package/dist/lock/core/index.js +3 -3
- package/dist/lock/core/index.js.map +1 -1
- package/dist/logger/index.d.ts +3 -3
- package/dist/logger/index.js +6 -3
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +3 -3
- package/dist/mcp/index.js +3 -3
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.d.ts +12 -12
- package/dist/orm/index.js +4 -4
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +3 -3
- package/dist/queue/core/index.js +3 -3
- package/dist/queue/core/index.js.map +1 -1
- package/dist/react/auth/index.d.ts +3 -3
- package/dist/react/auth/index.js +3 -3
- package/dist/react/auth/index.js.map +1 -1
- package/dist/react/core/index.d.ts +3 -3
- package/dist/react/core/index.js +3 -3
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +3 -3
- package/dist/react/form/index.js +3 -3
- package/dist/react/form/index.js.map +1 -1
- package/dist/react/head/index.d.ts +3 -3
- package/dist/react/head/index.js +3 -3
- package/dist/react/head/index.js.map +1 -1
- package/dist/react/i18n/index.d.ts +3 -3
- package/dist/react/i18n/index.js +3 -3
- package/dist/react/i18n/index.js.map +1 -1
- package/dist/react/intro/index.css +337 -0
- package/dist/react/intro/index.css.map +1 -0
- package/dist/react/intro/index.d.ts +10 -0
- package/dist/react/intro/index.d.ts.map +1 -0
- package/dist/react/intro/index.js +222 -0
- package/dist/react/intro/index.js.map +1 -0
- package/dist/react/router/index.browser.js +2 -2
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +1 -1
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +5 -5
- package/dist/react/router/index.js.map +1 -1
- package/dist/redis/index.d.ts +17 -17
- package/dist/redis/index.js +3 -3
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +3 -3
- package/dist/retry/index.js +3 -3
- package/dist/retry/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +3 -3
- package/dist/scheduler/index.js +3 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +3 -3
- package/dist/security/index.js +5 -5
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +3 -3
- package/dist/server/auth/index.js +3 -3
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +3 -3
- package/dist/server/cache/index.js +3 -3
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +3 -3
- package/dist/server/compress/index.js +3 -3
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +3 -3
- package/dist/server/cookies/index.js +3 -3
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.d.ts +5 -16
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +13 -29
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +3 -3
- package/dist/server/cors/index.js +3 -3
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/health/index.d.ts +20 -20
- package/dist/server/health/index.js +3 -3
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/helmet/index.d.ts +3 -3
- package/dist/server/helmet/index.js +3 -3
- package/dist/server/helmet/index.js.map +1 -1
- package/dist/server/links/index.d.ts +42 -42
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +3 -3
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +3 -3
- package/dist/server/metrics/index.js +3 -3
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +3 -3
- package/dist/server/multipart/index.js +3 -3
- package/dist/server/multipart/index.js.map +1 -1
- package/dist/server/proxy/index.d.ts +3 -3
- package/dist/server/proxy/index.js +3 -3
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.d.ts +3 -3
- package/dist/server/rate-limit/index.js +3 -3
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.d.ts +3 -3
- package/dist/server/static/index.js +6 -6
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +3 -3
- package/dist/server/swagger/index.js +6 -6
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +3 -3
- package/dist/sms/index.js +6 -6
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.d.ts +3 -3
- package/dist/system/index.js +3 -3
- package/dist/system/index.js.map +1 -1
- package/dist/thread/index.d.ts +3 -3
- package/dist/thread/index.js +3 -3
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +3 -3
- package/dist/topic/core/index.js +3 -3
- package/dist/topic/core/index.js.map +1 -1
- package/dist/vite/index.d.ts +6284 -3
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/websocket/index.d.ts +3 -3
- package/dist/websocket/index.js +3 -3
- package/dist/websocket/index.js.map +1 -1
- package/package.json +7 -2
- package/src/api/audits/index.ts +3 -3
- package/src/api/files/index.ts +3 -3
- package/src/api/jobs/controllers/AdminJobController.ts +15 -2
- package/src/api/jobs/index.ts +4 -3
- package/src/api/jobs/services/JobAudits.spec.ts +89 -0
- package/src/api/jobs/services/JobAudits.ts +101 -0
- package/src/api/keys/index.ts +3 -3
- package/src/api/notifications/index.ts +3 -3
- package/src/api/parameters/index.ts +5 -3
- package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1 -1
- package/src/api/users/__tests__/ApiKeys.spec.ts +1 -1
- package/src/api/users/__tests__/EmailVerification.spec.ts +16 -1
- package/src/api/users/__tests__/PasswordReset.spec.ts +11 -0
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +10 -0
- package/src/api/users/index.ts +8 -9
- package/src/api/users/primitives/$realm.ts +117 -19
- package/src/api/users/providers/RealmProvider.ts +15 -7
- package/src/api/users/services/CredentialService.spec.ts +11 -0
- package/src/api/users/services/CredentialService.ts +47 -24
- package/src/api/users/services/IdentityService.ts +12 -4
- package/src/api/users/services/RegistrationService.spec.ts +11 -0
- package/src/api/users/services/RegistrationService.ts +33 -12
- package/src/api/users/services/SessionService.ts +83 -12
- package/src/api/users/services/UserAudits.ts +47 -0
- package/src/api/users/services/UserFiles.ts +19 -0
- package/src/api/users/services/UserJobs.spec.ts +107 -0
- package/src/api/users/services/UserJobs.ts +62 -0
- package/src/api/users/services/UserParameters.ts +23 -0
- package/src/api/users/services/UserService.ts +34 -17
- package/src/api/verifications/index.ts +3 -3
- package/src/batch/index.ts +3 -3
- package/src/bucket/index.ts +3 -3
- package/src/cache/core/index.ts +3 -3
- package/src/cli/commands/db.ts +9 -0
- package/src/cli/commands/init.spec.ts +2 -17
- package/src/cli/commands/init.ts +37 -1
- package/src/cli/providers/ViteDevServerProvider.ts +5 -2
- package/src/cli/services/AlephaCliUtils.ts +17 -0
- package/src/cli/services/PackageManagerUtils.ts +15 -1
- package/src/cli/services/ProjectScaffolder.ts +8 -13
- package/src/cli/templates/agentMd.ts +2 -25
- package/src/cli/templates/apiAppSecurityTs.ts +37 -2
- package/src/cli/templates/mainCss.ts +2 -32
- package/src/cli/templates/webAppRouterTs.ts +5 -5
- package/src/cli/templates/webHomeComponentTsx.ts +10 -0
- package/src/command/helpers/Runner.ts +14 -1
- package/src/command/index.ts +3 -3
- package/src/core/helpers/primitive.ts +0 -5
- package/src/core/index.ts +3 -3
- package/src/datetime/index.ts +3 -3
- package/src/email/index.ts +3 -3
- package/src/email/providers/LocalEmailProvider.ts +2 -2
- package/src/fake/index.ts +3 -3
- package/src/lock/core/index.ts +3 -3
- package/src/logger/index.ts +3 -3
- package/src/logger/providers/PrettyFormatterProvider.ts +7 -0
- package/src/mcp/index.ts +3 -3
- package/src/orm/index.ts +3 -3
- package/src/orm/providers/drivers/NodeSqliteProvider.ts +1 -1
- package/src/queue/core/index.ts +3 -3
- package/src/react/auth/index.ts +3 -3
- package/src/react/core/index.ts +3 -3
- package/src/react/form/index.ts +3 -3
- package/src/react/head/index.ts +3 -3
- package/src/react/i18n/index.ts +3 -3
- package/src/react/intro/components/GettingStarted.css +334 -0
- package/src/react/intro/components/GettingStarted.tsx +276 -0
- package/src/react/intro/index.ts +1 -0
- package/src/react/router/index.browser.ts +2 -0
- package/src/react/router/index.ts +2 -0
- package/src/redis/index.ts +3 -3
- package/src/retry/index.ts +3 -3
- package/src/router/index.ts +3 -3
- package/src/scheduler/index.ts +3 -3
- package/src/security/index.ts +3 -3
- package/src/security/providers/JwtProvider.ts +2 -2
- package/src/server/auth/index.ts +3 -3
- package/src/server/cache/index.ts +3 -3
- package/src/server/compress/index.ts +3 -3
- package/src/server/cookies/index.ts +3 -3
- package/src/server/core/index.ts +3 -3
- package/src/server/core/primitives/$action.spec.ts +3 -2
- package/src/server/core/primitives/$action.ts +6 -2
- package/src/server/core/providers/NodeHttpServerProvider.ts +2 -15
- package/src/server/core/providers/ServerProvider.ts +4 -2
- package/src/server/core/providers/ServerRouterProvider.ts +5 -27
- package/src/server/cors/index.ts +3 -3
- package/src/server/health/index.ts +3 -3
- package/src/server/helmet/index.ts +3 -3
- package/src/server/links/index.ts +3 -3
- package/src/server/metrics/index.ts +3 -3
- package/src/server/multipart/index.ts +3 -3
- package/src/server/proxy/index.ts +3 -3
- package/src/server/rate-limit/index.ts +3 -3
- package/src/server/static/index.ts +3 -3
- package/src/server/swagger/index.ts +3 -3
- package/src/sms/index.ts +3 -3
- package/src/system/index.ts +3 -3
- package/src/thread/index.ts +3 -3
- package/src/topic/core/index.ts +3 -3
- package/src/websocket/index.ts +3 -3
- package/src/cli/templates/webHelloComponentTsx.ts +0 -30
- /package/src/api/users/{notifications → services}/UserNotifications.ts +0 -0
|
@@ -47,7 +47,7 @@ export class JwtProvider {
|
|
|
47
47
|
} else if (this.isSecretKey(secretKeyOrJwks)) {
|
|
48
48
|
const secretKey = this.encoder.encode(secretKeyOrJwks);
|
|
49
49
|
this.log.info(
|
|
50
|
-
`will verify JWTs from '${name}' with secret
|
|
50
|
+
`will verify JWTs from issuer '${name}' with secret key (${secretKey.length} bytes)`,
|
|
51
51
|
);
|
|
52
52
|
this.keystore.push({
|
|
53
53
|
name,
|
|
@@ -56,7 +56,7 @@ export class JwtProvider {
|
|
|
56
56
|
});
|
|
57
57
|
} else {
|
|
58
58
|
this.log.info(
|
|
59
|
-
`will verify JWTs from '${name}' with JWKS ${secretKeyOrJwks}`,
|
|
59
|
+
`will verify JWTs from issuer '${name}' with JWKS ${secretKeyOrJwks}`,
|
|
60
60
|
);
|
|
61
61
|
this.keystore.push({
|
|
62
62
|
name,
|
package/src/server/auth/index.ts
CHANGED
|
@@ -29,9 +29,9 @@ declare module "alepha" {
|
|
|
29
29
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
* |
|
|
33
|
-
*
|
|
34
|
-
* |
|
|
32
|
+
* | Stability | Since | Runtime |
|
|
33
|
+
* |-----------|-------|---------|
|
|
34
|
+
* | 3 - stable | 0.8.0 | node, bun, workerd|
|
|
35
35
|
*
|
|
36
36
|
* OAuth2/OIDC authentication with social login providers.
|
|
37
37
|
*
|
|
@@ -9,9 +9,9 @@ export * from "./providers/ServerCacheProvider.ts";
|
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* |
|
|
13
|
-
*
|
|
14
|
-
* |
|
|
12
|
+
* | Stability | Since | Runtime |
|
|
13
|
+
* |-----------|-------|---------|
|
|
14
|
+
* | 3 - stable | 0.10.0 | node, bun, workerd|
|
|
15
15
|
*
|
|
16
16
|
* ETag-based response caching.
|
|
17
17
|
*
|
|
@@ -9,9 +9,9 @@ export * from "./providers/ServerCompressProvider.ts";
|
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* |
|
|
13
|
-
*
|
|
14
|
-
* |
|
|
12
|
+
* | Stability | Since | Runtime |
|
|
13
|
+
* |-----------|-------|---------|
|
|
14
|
+
* | 3 - stable | 0.13.0 | node, bun|
|
|
15
15
|
*
|
|
16
16
|
* Response compression.
|
|
17
17
|
*
|
|
@@ -18,9 +18,9 @@ declare module "alepha/server" {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* |
|
|
22
|
-
*
|
|
23
|
-
* |
|
|
21
|
+
* | Stability | Since | Runtime |
|
|
22
|
+
* |-----------|-------|---------|
|
|
23
|
+
* | 3 - stable | 0.3.0 | node, bun, workerd|
|
|
24
24
|
*
|
|
25
25
|
* Server and browser-safe cookie handling.
|
|
26
26
|
*
|
package/src/server/core/index.ts
CHANGED
|
@@ -114,9 +114,9 @@ export * from "./services/UserAgentParser.ts";
|
|
|
114
114
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
|
-
* |
|
|
118
|
-
*
|
|
119
|
-
* |
|
|
117
|
+
* | Stability | Since | Runtime |
|
|
118
|
+
* |-----------|-------|---------|
|
|
119
|
+
* | 3 - stable | 0.1.0 | node, bun, workerd|
|
|
120
120
|
*
|
|
121
121
|
* Convention-driven HTTP server with automatic validation and type inference.
|
|
122
122
|
*
|
|
@@ -81,8 +81,9 @@ describe("$action", () => {
|
|
|
81
81
|
|
|
82
82
|
expect(await app.a1.fetch({}).then((it) => it.data)).toBe("ok:a1");
|
|
83
83
|
expect(await app.a2.fetch({}).then((it) => it.data)).toBe("Not Found");
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
await expect(app.a2.run({})).rejects.toThrowError(
|
|
85
|
+
"Action 'a2' is disabled.",
|
|
86
|
+
);
|
|
86
87
|
});
|
|
87
88
|
|
|
88
89
|
test("should return nothing", async ({ expect }) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
$env,
|
|
3
3
|
$inject,
|
|
4
|
+
AlephaError,
|
|
4
5
|
type Async,
|
|
5
6
|
createPrimitive,
|
|
6
7
|
isTypeFile,
|
|
@@ -188,8 +189,8 @@ export interface ActionPrimitiveOptions<TConfig extends RequestConfigSchema>
|
|
|
188
189
|
description?: string;
|
|
189
190
|
|
|
190
191
|
/**
|
|
191
|
-
* Disable the route. Useful with env variables
|
|
192
|
-
* Route won't be available in the API
|
|
192
|
+
* Disable the route. Useful with env variables to disable one specific route.
|
|
193
|
+
* Route won't be available in the API nor locally.
|
|
193
194
|
*/
|
|
194
195
|
disabled?: boolean;
|
|
195
196
|
|
|
@@ -317,6 +318,9 @@ export class ActionPrimitive<
|
|
|
317
318
|
config?: ClientRequestEntry<TConfig>,
|
|
318
319
|
options: ClientRequestOptions = {}, // most of the options are ignored here
|
|
319
320
|
): Promise<ClientRequestResponse<TConfig>> {
|
|
321
|
+
if (this.options.disabled) {
|
|
322
|
+
throw new AlephaError(`Action '${this.name}' is disabled.`);
|
|
323
|
+
}
|
|
320
324
|
const handler = this.options.handler;
|
|
321
325
|
const {
|
|
322
326
|
body,
|
|
@@ -76,22 +76,9 @@ export class NodeHttpServerProvider extends ServerProvider {
|
|
|
76
76
|
res.end("Internal Server Error");
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
// P3: Pre-allocated event object to avoid { req, res } allocation per request
|
|
80
|
-
// Safe because handleNodeRequest completes before the next request reuses this object
|
|
81
|
-
protected readonly nodeRequestEvent = {
|
|
82
|
-
req: null as unknown as IncomingMessage,
|
|
83
|
-
res: null as unknown as ServerResponse,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
79
|
public readonly server = this.createHttpServer((req, res) => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
ev.req = req;
|
|
90
|
-
ev.res = res;
|
|
91
|
-
// Note: handleNodeRequest returns a promise that resolves after response is sent
|
|
92
|
-
this.handleNodeRequest(ev).catch((err) =>
|
|
93
|
-
this.handleRequestError(res, err),
|
|
94
|
-
);
|
|
80
|
+
const promise = this.handleNodeRequest({ req, res });
|
|
81
|
+
promise.catch((err) => this.handleRequestError(res, err));
|
|
95
82
|
});
|
|
96
83
|
|
|
97
84
|
public readonly start = $hook({
|
|
@@ -220,13 +220,15 @@ export class ServerProvider {
|
|
|
220
220
|
|
|
221
221
|
// empty body - just send status & headers
|
|
222
222
|
if (!response.body) {
|
|
223
|
-
res.writeHead(response.status, response.headers)
|
|
223
|
+
res.writeHead(response.status, response.headers);
|
|
224
|
+
res.end();
|
|
224
225
|
return;
|
|
225
226
|
}
|
|
226
227
|
|
|
227
228
|
// if response.body is string or buffer
|
|
228
229
|
if (typeof response.body === "string" || Buffer.isBuffer(response.body)) {
|
|
229
|
-
res.writeHead(response.status, response.headers)
|
|
230
|
+
res.writeHead(response.status, response.headers);
|
|
231
|
+
res.end(response.body);
|
|
230
232
|
return;
|
|
231
233
|
}
|
|
232
234
|
|
|
@@ -45,23 +45,6 @@ export class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
|
|
|
45
45
|
>;
|
|
46
46
|
protected compiledOnError?: CompiledEventExecutor<Hooks["server:onError"]>;
|
|
47
47
|
|
|
48
|
-
// Reusable context.run options object - mutated per request
|
|
49
|
-
// Includes slots for request data to avoid closure allocation in context.run
|
|
50
|
-
protected readonly contextRunOptions = {
|
|
51
|
-
context: "",
|
|
52
|
-
// Request data slots - populated before context.run, read by processRequestBound
|
|
53
|
-
_request: null as unknown as ServerRequest,
|
|
54
|
-
_route: null as unknown as ServerRoute,
|
|
55
|
-
_responseKind: "any" as ResponseKind,
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
// Pre-bound method reference - created once at instantiation, reused for all requests
|
|
59
|
-
// Reads arguments from contextRunOptions to avoid closure allocation per request
|
|
60
|
-
protected readonly processRequestBound = (): Promise<any> => {
|
|
61
|
-
const opts = this.contextRunOptions;
|
|
62
|
-
return this.processRequest(opts._request, opts._route, opts._responseKind);
|
|
63
|
-
};
|
|
64
|
-
|
|
65
48
|
// Cache query schema keys to avoid property enumeration on every request
|
|
66
49
|
// WeakMap allows GC of schemas that are no longer referenced
|
|
67
50
|
protected readonly queryKeysCache = new WeakMap<object, string[]>();
|
|
@@ -137,16 +120,11 @@ export class ServerRouterProvider extends RouterProvider<ServerRouteMatcher> {
|
|
|
137
120
|
const request =
|
|
138
121
|
this.serverRequestParser.createServerRequest(rawRequest);
|
|
139
122
|
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
opts._route = route;
|
|
146
|
-
opts._responseKind = responseKind;
|
|
147
|
-
|
|
148
|
-
// Use pre-bound method reference instead of creating closure per request
|
|
149
|
-
return this.alepha.context.run(this.processRequestBound, opts);
|
|
123
|
+
// Create context options per request to avoid race conditions with concurrent requests
|
|
124
|
+
return this.alepha.context.run(
|
|
125
|
+
() => this.processRequest(request, route, responseKind),
|
|
126
|
+
{ context: this.getContextId(rawRequest.headers) },
|
|
127
|
+
);
|
|
150
128
|
},
|
|
151
129
|
});
|
|
152
130
|
}
|
package/src/server/cors/index.ts
CHANGED
|
@@ -25,9 +25,9 @@ declare module "alepha/server" {
|
|
|
25
25
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* |
|
|
29
|
-
*
|
|
30
|
-
* |
|
|
28
|
+
* | Stability | Since | Runtime |
|
|
29
|
+
* |-----------|-------|---------|
|
|
30
|
+
* | 3 - stable | 0.3.0 | node, bun, workerd|
|
|
31
31
|
*
|
|
32
32
|
* Cross-Origin Resource Sharing configuration.
|
|
33
33
|
*
|
|
@@ -10,9 +10,9 @@ export * from "./schemas/healthSchema.ts";
|
|
|
10
10
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* |
|
|
14
|
-
*
|
|
15
|
-
* |
|
|
13
|
+
* | Stability | Since | Runtime |
|
|
14
|
+
* |-----------|-------|---------|
|
|
15
|
+
* | 3 - stable | 0.7.0 | node, bun, workerd|
|
|
16
16
|
*
|
|
17
17
|
* Application health monitoring endpoints.
|
|
18
18
|
*
|
|
@@ -9,9 +9,9 @@ export * from "./providers/ServerHelmetProvider.ts";
|
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* |
|
|
13
|
-
*
|
|
14
|
-
* |
|
|
12
|
+
* | Stability | Since | Runtime |
|
|
13
|
+
* |-----------|-------|---------|
|
|
14
|
+
* | 3 - stable | 0.15.0 | node, bun, workerd|
|
|
15
15
|
*
|
|
16
16
|
* HTTP security headers.
|
|
17
17
|
*
|
|
@@ -35,9 +35,9 @@ declare module "alepha" {
|
|
|
35
35
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* |
|
|
39
|
-
*
|
|
40
|
-
* |
|
|
38
|
+
* | Stability | Since | Runtime |
|
|
39
|
+
* |-----------|-------|---------|
|
|
40
|
+
* | 3 - stable | 0.6.0 | node, bun, workerd, expo |
|
|
41
41
|
*
|
|
42
42
|
* Type-safe API client with request deduplication.
|
|
43
43
|
*
|
|
@@ -9,9 +9,9 @@ export * from "./providers/ServerMetricsProvider.ts";
|
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* |
|
|
13
|
-
*
|
|
14
|
-
* |
|
|
12
|
+
* | Stability | Since | Runtime |
|
|
13
|
+
* |-----------|-------|---------|
|
|
14
|
+
* | 2 - beta | 0.14.0 | node, bun|
|
|
15
15
|
*
|
|
16
16
|
* Prometheus-style metrics collection.
|
|
17
17
|
*
|
|
@@ -9,9 +9,9 @@ export * from "./providers/ServerMultipartProvider.ts";
|
|
|
9
9
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* |
|
|
13
|
-
*
|
|
14
|
-
* |
|
|
12
|
+
* | Stability | Since | Runtime |
|
|
13
|
+
* |-----------|-------|---------|
|
|
14
|
+
* | 3 - stable | 0.5.0 | node, bun|
|
|
15
15
|
*
|
|
16
16
|
* Multipart form data handling for file uploads.
|
|
17
17
|
*
|
|
@@ -11,9 +11,9 @@ export * from "./providers/ServerProxyProvider.ts";
|
|
|
11
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* |
|
|
15
|
-
*
|
|
16
|
-
* |
|
|
14
|
+
* | Stability | Since | Runtime |
|
|
15
|
+
* |-----------|-------|---------|
|
|
16
|
+
* | 2 - beta | 0.12.0 | node, bun|
|
|
17
17
|
*
|
|
18
18
|
* Reverse proxy routing.
|
|
19
19
|
*
|
|
@@ -54,9 +54,9 @@ export interface RateLimitOptions {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
* |
|
|
58
|
-
*
|
|
59
|
-
* |
|
|
57
|
+
* | Stability | Since | Runtime |
|
|
58
|
+
* |-----------|-------|---------|
|
|
59
|
+
* | 3 - stable | 0.16.0 | node, bun, workerd|
|
|
60
60
|
*
|
|
61
61
|
* Request rate limiting on actions.
|
|
62
62
|
*
|
|
@@ -11,9 +11,9 @@ export * from "./providers/ServerStaticProvider.ts";
|
|
|
11
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* |
|
|
15
|
-
*
|
|
16
|
-
* |
|
|
14
|
+
* | Stability | Since | Runtime |
|
|
15
|
+
* |-----------|-------|---------|
|
|
16
|
+
* | 3 - stable | 0.3.0 | node, bun|
|
|
17
17
|
*
|
|
18
18
|
* Static file serving.
|
|
19
19
|
*
|
|
@@ -30,9 +30,9 @@ declare module "alepha/server" {
|
|
|
30
30
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* |
|
|
34
|
-
*
|
|
35
|
-
* |
|
|
33
|
+
* | Stability | Since | Runtime |
|
|
34
|
+
* |-----------|-------|---------|
|
|
35
|
+
* | 3 - stable | 0.9.0 | node, bun|
|
|
36
36
|
*
|
|
37
37
|
* Automatic API documentation generation.
|
|
38
38
|
*
|
package/src/sms/index.ts
CHANGED
|
@@ -34,9 +34,9 @@ declare module "alepha" {
|
|
|
34
34
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
* |
|
|
38
|
-
*
|
|
39
|
-
* |
|
|
37
|
+
* | Stability | Since | Runtime |
|
|
38
|
+
* |-----------|-------|---------|
|
|
39
|
+
* | 3 - stable | 0.15.0 | node, bun|
|
|
40
40
|
*
|
|
41
41
|
* SMS delivery with multiple provider support.
|
|
42
42
|
*
|
package/src/system/index.ts
CHANGED
|
@@ -21,9 +21,9 @@ export * from "./services/FileDetector.ts";
|
|
|
21
21
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* |
|
|
25
|
-
*
|
|
26
|
-
* |
|
|
24
|
+
* | Stability | Since | Runtime |
|
|
25
|
+
* |-----------|-------|---------|
|
|
26
|
+
* | 3 - stable | 0.14.0 | node, bun, browser|
|
|
27
27
|
*
|
|
28
28
|
* System-level abstractions for portable code across runtimes.
|
|
29
29
|
*
|
package/src/thread/index.ts
CHANGED
|
@@ -22,9 +22,9 @@ Alepha.prototype.isWorkerThread = function (this: Alepha): boolean {
|
|
|
22
22
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
-
* |
|
|
26
|
-
*
|
|
27
|
-
* |
|
|
25
|
+
* | Stability | Since | Runtime |
|
|
26
|
+
* |-----------|-------|---------|
|
|
27
|
+
* | 1 - experimental | 0.16.0 | node|
|
|
28
28
|
*
|
|
29
29
|
* Multi-threading support.
|
|
30
30
|
*
|
package/src/topic/core/index.ts
CHANGED
|
@@ -15,9 +15,9 @@ export * from "./providers/TopicProvider.ts";
|
|
|
15
15
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* |
|
|
19
|
-
*
|
|
20
|
-
* |
|
|
18
|
+
* | Stability | Since | Runtime |
|
|
19
|
+
* |-----------|-------|---------|
|
|
20
|
+
* | 3 - stable | 0.7.0 | node, bun|
|
|
21
21
|
*
|
|
22
22
|
* Publish/subscribe messaging for event-driven architectures.
|
|
23
23
|
*
|
package/src/websocket/index.ts
CHANGED
|
@@ -58,9 +58,9 @@ export * from "./providers/NodeWebSocketServerProvider.ts";
|
|
|
58
58
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
|
-
* |
|
|
62
|
-
*
|
|
63
|
-
* |
|
|
61
|
+
* | Stability | Since | Runtime |
|
|
62
|
+
* |-----------|-------|---------|
|
|
63
|
+
* | 1 - experimental | 0.19.0 | node, browser|
|
|
64
64
|
*
|
|
65
65
|
* Real-time bidirectional communication.
|
|
66
66
|
*
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export const webHelloComponentTsx = (options: { auth?: boolean } = {}) => {
|
|
2
|
-
const imports: string[] = [];
|
|
3
|
-
|
|
4
|
-
if (options.auth) {
|
|
5
|
-
imports.push('import { UserButton } from "@alepha/ui/auth";');
|
|
6
|
-
}
|
|
7
|
-
imports.push('import { useState } from "react";');
|
|
8
|
-
|
|
9
|
-
const userButton = options.auth ? "\n <UserButton />" : "";
|
|
10
|
-
|
|
11
|
-
return `${imports.join("\n")}
|
|
12
|
-
|
|
13
|
-
interface Props {
|
|
14
|
-
message?: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const Hello = (props: Props) => {
|
|
18
|
-
const [message, setMessage] = useState(props.message ?? "");
|
|
19
|
-
return (
|
|
20
|
-
<div>
|
|
21
|
-
<h1>{message}</h1>
|
|
22
|
-
<input value={message} onChange={(e) => setMessage(e.target.value)} />
|
|
23
|
-
<p>Edit this component in src/web/components/Hello.tsx</p>${userButton}
|
|
24
|
-
</div>
|
|
25
|
-
);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export default Hello;
|
|
29
|
-
`;
|
|
30
|
-
};
|
|
File without changes
|