alepha 0.13.0 → 0.13.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/dist/api-jobs/index.d.ts +26 -26
- package/dist/api-users/index.d.ts +1 -1
- package/dist/cli/{dist-Sz2EXvQX.cjs → dist-Dl9Vl7Ur.js} +17 -13
- package/dist/cli/{dist-BBPjuQ56.js.map → dist-Dl9Vl7Ur.js.map} +1 -1
- package/dist/cli/index.d.ts +3 -11
- package/dist/cli/index.js +106 -74
- package/dist/cli/index.js.map +1 -1
- package/dist/email/index.js +71 -73
- package/dist/email/index.js.map +1 -1
- package/dist/orm/index.d.ts +1 -1
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/index.d.ts +4 -4
- package/dist/retry/index.d.ts +1 -1
- package/dist/retry/index.js +2 -2
- package/dist/retry/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +6 -6
- package/dist/security/index.d.ts +28 -28
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server-health/index.d.ts +17 -17
- package/dist/server-metrics/index.js +170 -174
- package/dist/server-metrics/index.js.map +1 -1
- package/dist/server-security/index.d.ts +9 -9
- package/dist/vite/index.js +4 -5
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.d.ts +7 -7
- package/package.json +52 -103
- package/src/cli/apps/AlephaPackageBuilderCli.ts +7 -2
- package/src/cli/assets/appRouterTs.ts +9 -0
- package/src/cli/assets/indexHtml.ts +2 -1
- package/src/cli/assets/mainBrowserTs.ts +10 -0
- package/src/cli/commands/CoreCommands.ts +6 -5
- package/src/cli/commands/DrizzleCommands.ts +65 -57
- package/src/cli/commands/VerifyCommands.ts +1 -1
- package/src/cli/services/ProjectUtils.ts +44 -38
- package/src/orm/providers/DrizzleKitProvider.ts +1 -1
- package/src/retry/descriptors/$retry.ts +5 -3
- package/src/server/providers/NodeHttpServerProvider.ts +1 -1
- package/src/vite/helpers/boot.ts +3 -3
- package/dist/api-files/index.cjs +0 -1293
- package/dist/api-files/index.cjs.map +0 -1
- package/dist/api-files/index.d.cts +0 -829
- package/dist/api-jobs/index.cjs +0 -274
- package/dist/api-jobs/index.cjs.map +0 -1
- package/dist/api-jobs/index.d.cts +0 -654
- package/dist/api-notifications/index.cjs +0 -380
- package/dist/api-notifications/index.cjs.map +0 -1
- package/dist/api-notifications/index.d.cts +0 -289
- package/dist/api-parameters/index.cjs +0 -66
- package/dist/api-parameters/index.cjs.map +0 -1
- package/dist/api-parameters/index.d.cts +0 -84
- package/dist/api-users/index.cjs +0 -6009
- package/dist/api-users/index.cjs.map +0 -1
- package/dist/api-users/index.d.cts +0 -4740
- package/dist/api-verifications/index.cjs +0 -407
- package/dist/api-verifications/index.cjs.map +0 -1
- package/dist/api-verifications/index.d.cts +0 -207
- package/dist/batch/index.cjs +0 -408
- package/dist/batch/index.cjs.map +0 -1
- package/dist/batch/index.d.cts +0 -330
- package/dist/bin/index.cjs +0 -17
- package/dist/bin/index.cjs.map +0 -1
- package/dist/bin/index.d.cts +0 -1
- package/dist/bucket/index.cjs +0 -303
- package/dist/bucket/index.cjs.map +0 -1
- package/dist/bucket/index.d.cts +0 -355
- package/dist/cache/index.cjs +0 -241
- package/dist/cache/index.cjs.map +0 -1
- package/dist/cache/index.d.cts +0 -202
- package/dist/cache-redis/index.cjs +0 -84
- package/dist/cache-redis/index.cjs.map +0 -1
- package/dist/cache-redis/index.d.cts +0 -40
- package/dist/cli/chunk-DSlc6foC.cjs +0 -43
- package/dist/cli/dist-BBPjuQ56.js +0 -2778
- package/dist/cli/dist-Sz2EXvQX.cjs.map +0 -1
- package/dist/cli/index.cjs +0 -1241
- package/dist/cli/index.cjs.map +0 -1
- package/dist/cli/index.d.cts +0 -422
- package/dist/command/index.cjs +0 -693
- package/dist/command/index.cjs.map +0 -1
- package/dist/command/index.d.cts +0 -340
- package/dist/core/index.cjs +0 -2264
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.d.cts +0 -1927
- package/dist/datetime/index.cjs +0 -318
- package/dist/datetime/index.cjs.map +0 -1
- package/dist/datetime/index.d.cts +0 -145
- package/dist/email/index.cjs +0 -10874
- package/dist/email/index.cjs.map +0 -1
- package/dist/email/index.d.cts +0 -186
- package/dist/fake/index.cjs +0 -34641
- package/dist/fake/index.cjs.map +0 -1
- package/dist/fake/index.d.cts +0 -74
- package/dist/file/index.cjs +0 -1212
- package/dist/file/index.cjs.map +0 -1
- package/dist/file/index.d.cts +0 -698
- package/dist/lock/index.cjs +0 -226
- package/dist/lock/index.cjs.map +0 -1
- package/dist/lock/index.d.cts +0 -361
- package/dist/lock-redis/index.cjs +0 -113
- package/dist/lock-redis/index.cjs.map +0 -1
- package/dist/lock-redis/index.d.cts +0 -24
- package/dist/logger/index.cjs +0 -521
- package/dist/logger/index.cjs.map +0 -1
- package/dist/logger/index.d.cts +0 -281
- package/dist/orm/index.cjs +0 -2986
- package/dist/orm/index.cjs.map +0 -1
- package/dist/orm/index.d.cts +0 -2213
- package/dist/queue/index.cjs +0 -1044
- package/dist/queue/index.cjs.map +0 -1
- package/dist/queue/index.d.cts +0 -1265
- package/dist/queue-redis/index.cjs +0 -873
- package/dist/queue-redis/index.cjs.map +0 -1
- package/dist/queue-redis/index.d.cts +0 -82
- package/dist/redis/index.cjs +0 -153
- package/dist/redis/index.cjs.map +0 -1
- package/dist/redis/index.d.cts +0 -82
- package/dist/retry/index.cjs +0 -146
- package/dist/retry/index.cjs.map +0 -1
- package/dist/retry/index.d.cts +0 -172
- package/dist/router/index.cjs +0 -111
- package/dist/router/index.cjs.map +0 -1
- package/dist/router/index.d.cts +0 -46
- package/dist/scheduler/index.cjs +0 -576
- package/dist/scheduler/index.cjs.map +0 -1
- package/dist/scheduler/index.d.cts +0 -145
- package/dist/security/index.cjs +0 -2402
- package/dist/security/index.cjs.map +0 -1
- package/dist/security/index.d.cts +0 -598
- package/dist/server/index.cjs +0 -1680
- package/dist/server/index.cjs.map +0 -1
- package/dist/server/index.d.cts +0 -810
- package/dist/server-auth/index.cjs +0 -3146
- package/dist/server-auth/index.cjs.map +0 -1
- package/dist/server-auth/index.d.cts +0 -1164
- package/dist/server-cache/index.cjs +0 -252
- package/dist/server-cache/index.cjs.map +0 -1
- package/dist/server-cache/index.d.cts +0 -164
- package/dist/server-compress/index.cjs +0 -141
- package/dist/server-compress/index.cjs.map +0 -1
- package/dist/server-compress/index.d.cts +0 -38
- package/dist/server-cookies/index.cjs +0 -234
- package/dist/server-cookies/index.cjs.map +0 -1
- package/dist/server-cookies/index.d.cts +0 -144
- package/dist/server-cors/index.cjs +0 -201
- package/dist/server-cors/index.cjs.map +0 -1
- package/dist/server-cors/index.d.cts +0 -140
- package/dist/server-health/index.cjs +0 -62
- package/dist/server-health/index.cjs.map +0 -1
- package/dist/server-health/index.d.cts +0 -58
- package/dist/server-helmet/index.cjs +0 -131
- package/dist/server-helmet/index.cjs.map +0 -1
- package/dist/server-helmet/index.d.cts +0 -97
- package/dist/server-links/index.cjs +0 -992
- package/dist/server-links/index.cjs.map +0 -1
- package/dist/server-links/index.d.cts +0 -513
- package/dist/server-metrics/index.cjs +0 -4535
- package/dist/server-metrics/index.cjs.map +0 -1
- package/dist/server-metrics/index.d.cts +0 -35
- package/dist/server-multipart/index.cjs +0 -237
- package/dist/server-multipart/index.cjs.map +0 -1
- package/dist/server-multipart/index.d.cts +0 -50
- package/dist/server-proxy/index.cjs +0 -186
- package/dist/server-proxy/index.cjs.map +0 -1
- package/dist/server-proxy/index.d.cts +0 -234
- package/dist/server-rate-limit/index.cjs +0 -241
- package/dist/server-rate-limit/index.cjs.map +0 -1
- package/dist/server-rate-limit/index.d.cts +0 -183
- package/dist/server-security/index.cjs +0 -316
- package/dist/server-security/index.cjs.map +0 -1
- package/dist/server-security/index.d.cts +0 -173
- package/dist/server-static/index.cjs +0 -170
- package/dist/server-static/index.cjs.map +0 -1
- package/dist/server-static/index.d.cts +0 -121
- package/dist/server-swagger/index.cjs +0 -1021
- package/dist/server-swagger/index.cjs.map +0 -1
- package/dist/server-swagger/index.d.cts +0 -382
- package/dist/sms/index.cjs +0 -221
- package/dist/sms/index.cjs.map +0 -1
- package/dist/sms/index.d.cts +0 -130
- package/dist/thread/index.cjs +0 -350
- package/dist/thread/index.cjs.map +0 -1
- package/dist/thread/index.d.cts +0 -260
- package/dist/topic/index.cjs +0 -282
- package/dist/topic/index.cjs.map +0 -1
- package/dist/topic/index.d.cts +0 -523
- package/dist/topic-redis/index.cjs +0 -71
- package/dist/topic-redis/index.cjs.map +0 -1
- package/dist/topic-redis/index.d.cts +0 -42
- package/dist/vite/index.cjs +0 -1077
- package/dist/vite/index.cjs.map +0 -1
- package/dist/vite/index.d.cts +0 -542
- package/dist/websocket/index.cjs +0 -1117
- package/dist/websocket/index.cjs.map +0 -1
- package/dist/websocket/index.d.cts +0 -861
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import * as alepha1 from "alepha";
|
|
2
|
-
import { Descriptor, KIND, Static } from "alepha";
|
|
3
|
-
import * as alepha_logger0 from "alepha/logger";
|
|
4
|
-
import { ServerRouterProvider } from "alepha/server";
|
|
5
|
-
|
|
6
|
-
//#region src/server-cors/descriptors/$cors.d.ts
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Declares CORS configuration for specific server routes.
|
|
10
|
-
* This descriptor provides path-based CORS configuration.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* class ApiService {
|
|
15
|
-
* // Apply specific CORS to API routes
|
|
16
|
-
* cors = $cors({
|
|
17
|
-
* paths: ["/api/*"],
|
|
18
|
-
* origin: "https://app.example.com",
|
|
19
|
-
* credentials: true,
|
|
20
|
-
* });
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
declare const $cors: {
|
|
25
|
-
(options: CorsDescriptorConfig): AbstractCorsDescriptor;
|
|
26
|
-
[KIND]: typeof CorsDescriptor;
|
|
27
|
-
};
|
|
28
|
-
interface CorsDescriptorConfig extends Partial<CorsOptions> {
|
|
29
|
-
/** Name identifier for this CORS config (default: property key) */
|
|
30
|
-
name?: string;
|
|
31
|
-
/** Path patterns to match (supports wildcards like /api/*) */
|
|
32
|
-
paths?: string[];
|
|
33
|
-
}
|
|
34
|
-
interface AbstractCorsDescriptor {
|
|
35
|
-
readonly name: string;
|
|
36
|
-
readonly options: CorsDescriptorConfig;
|
|
37
|
-
}
|
|
38
|
-
declare class CorsDescriptor extends Descriptor<CorsDescriptorConfig> implements AbstractCorsDescriptor {
|
|
39
|
-
protected readonly serverCorsProvider: ServerCorsProvider;
|
|
40
|
-
get name(): string;
|
|
41
|
-
protected onInit(): void;
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
//#region src/server-cors/providers/ServerCorsProvider.d.ts
|
|
45
|
-
/**
|
|
46
|
-
* CORS configuration atom (global defaults)
|
|
47
|
-
*/
|
|
48
|
-
declare const corsOptions: alepha1.Atom<alepha1.TObject<{
|
|
49
|
-
origin: alepha1.TOptional<alepha1.TString>;
|
|
50
|
-
methods: alepha1.TArray<alepha1.TString>;
|
|
51
|
-
headers: alepha1.TArray<alepha1.TString>;
|
|
52
|
-
credentials: alepha1.TOptional<alepha1.TBoolean>;
|
|
53
|
-
maxAge: alepha1.TOptional<alepha1.TNumber>;
|
|
54
|
-
}>, "alepha.server.cors.options">;
|
|
55
|
-
type CorsOptions = Static<typeof corsOptions.schema>;
|
|
56
|
-
declare module "alepha" {
|
|
57
|
-
interface State {
|
|
58
|
-
[corsOptions.key]: CorsOptions;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
declare class ServerCorsProvider {
|
|
62
|
-
protected readonly log: alepha_logger0.Logger;
|
|
63
|
-
protected readonly serverRouterProvider: ServerRouterProvider;
|
|
64
|
-
protected readonly globalOptions: Readonly<{
|
|
65
|
-
origin?: string | undefined;
|
|
66
|
-
credentials?: boolean | undefined;
|
|
67
|
-
maxAge?: number | undefined;
|
|
68
|
-
methods: string[];
|
|
69
|
-
headers: string[];
|
|
70
|
-
}>;
|
|
71
|
-
/**
|
|
72
|
-
* Registered CORS configurations with their path patterns
|
|
73
|
-
*/
|
|
74
|
-
readonly registeredConfigs: CorsDescriptorConfig[];
|
|
75
|
-
/**
|
|
76
|
-
* Register a CORS configuration (called by descriptors)
|
|
77
|
-
*/
|
|
78
|
-
registerCors(config: CorsDescriptorConfig): void;
|
|
79
|
-
protected readonly onStart: alepha1.HookDescriptor<"start">;
|
|
80
|
-
protected readonly configure: alepha1.HookDescriptor<"configure">;
|
|
81
|
-
protected readonly onRequest: alepha1.HookDescriptor<"server:onRequest">;
|
|
82
|
-
/**
|
|
83
|
-
* Build complete CORS options by merging with global defaults
|
|
84
|
-
*/
|
|
85
|
-
protected buildCorsOptions(config: CorsDescriptorConfig): CorsOptions;
|
|
86
|
-
/**
|
|
87
|
-
* Apply CORS headers to the response
|
|
88
|
-
*/
|
|
89
|
-
protected applyCorsHeaders(request: {
|
|
90
|
-
headers: {
|
|
91
|
-
origin?: string;
|
|
92
|
-
};
|
|
93
|
-
reply: {
|
|
94
|
-
setHeader: (name: string, value: string) => void;
|
|
95
|
-
};
|
|
96
|
-
}, options: CorsOptions): void;
|
|
97
|
-
isOriginAllowed(origin: string | undefined, allowed: CorsOptions["origin"]): boolean;
|
|
98
|
-
}
|
|
99
|
-
type ServerCorsProviderOptions = CorsOptions;
|
|
100
|
-
//#endregion
|
|
101
|
-
//#region src/server-cors/index.d.ts
|
|
102
|
-
declare module "alepha/server" {
|
|
103
|
-
interface ServerRoute {
|
|
104
|
-
/**
|
|
105
|
-
* Route-specific CORS configuration.
|
|
106
|
-
* If set, overrides the global CORS options for this route.
|
|
107
|
-
*/
|
|
108
|
-
cors?: CorsOptions;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Plugin for configuring CORS on the Alepha server.
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```ts
|
|
116
|
-
* import { Alepha, $route } from "alepha";
|
|
117
|
-
* import { AlephaServerCors, $cors } from "alepha/server-cors";
|
|
118
|
-
*
|
|
119
|
-
* class ApiService {
|
|
120
|
-
* // Global CORS is applied via corsOptions atom
|
|
121
|
-
*
|
|
122
|
-
* // Path-specific CORS for API routes
|
|
123
|
-
* apiCors = $cors({
|
|
124
|
-
* paths: ["/api/*"],
|
|
125
|
-
* origin: "https://app.example.com",
|
|
126
|
-
* credentials: true,
|
|
127
|
-
* });
|
|
128
|
-
*
|
|
129
|
-
* route = $route({
|
|
130
|
-
* path: "/api/data",
|
|
131
|
-
* method: "POST",
|
|
132
|
-
* handler: () => ({ data: "hello" }),
|
|
133
|
-
* });
|
|
134
|
-
* }
|
|
135
|
-
* ```
|
|
136
|
-
*/
|
|
137
|
-
declare const AlephaServerCors: alepha1.Service<alepha1.Module>;
|
|
138
|
-
//#endregion
|
|
139
|
-
export { $cors, AbstractCorsDescriptor, AlephaServerCors, CorsDescriptor, CorsDescriptorConfig, CorsOptions, ServerCorsProvider, ServerCorsProviderOptions, corsOptions };
|
|
140
|
-
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
let alepha = require("alepha");
|
|
2
|
-
let alepha_server = require("alepha/server");
|
|
3
|
-
let alepha_datetime = require("alepha/datetime");
|
|
4
|
-
|
|
5
|
-
//#region src/server-health/schemas/healthSchema.ts
|
|
6
|
-
const healthSchema = alepha.t.object({
|
|
7
|
-
message: alepha.t.text(),
|
|
8
|
-
uptime: alepha.t.number(),
|
|
9
|
-
date: alepha.t.datetime(),
|
|
10
|
-
ready: alepha.t.boolean()
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/server-health/providers/ServerHealthProvider.ts
|
|
15
|
-
/**
|
|
16
|
-
* Register `/health` & `/healthz` endpoint.
|
|
17
|
-
*
|
|
18
|
-
* - Provides basic health information about the server.
|
|
19
|
-
*/
|
|
20
|
-
var ServerHealthProvider = class {
|
|
21
|
-
time = (0, alepha.$inject)(alepha_datetime.DateTimeProvider);
|
|
22
|
-
alepha = (0, alepha.$inject)(alepha.Alepha);
|
|
23
|
-
health = (0, alepha_server.$route)({
|
|
24
|
-
path: "/health",
|
|
25
|
-
schema: { response: healthSchema },
|
|
26
|
-
silent: true,
|
|
27
|
-
handler: () => this.healthCheck()
|
|
28
|
-
});
|
|
29
|
-
healthz = (0, alepha_server.$route)({
|
|
30
|
-
path: "/healthz",
|
|
31
|
-
schema: { response: healthSchema },
|
|
32
|
-
silent: true,
|
|
33
|
-
handler: () => this.healthCheck()
|
|
34
|
-
});
|
|
35
|
-
healthCheck() {
|
|
36
|
-
return {
|
|
37
|
-
message: "OK",
|
|
38
|
-
uptime: Math.floor(process.uptime()),
|
|
39
|
-
date: this.time.nowISOString(),
|
|
40
|
-
ready: this.alepha.isReady()
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
//#endregion
|
|
46
|
-
//#region src/server-health/index.ts
|
|
47
|
-
/**
|
|
48
|
-
* Plugin for Alepha Server that provides health-check endpoints.
|
|
49
|
-
*
|
|
50
|
-
* @see {@link ServerHealthProvider}
|
|
51
|
-
* @module alepha.server.health
|
|
52
|
-
*/
|
|
53
|
-
const AlephaServerHealth = (0, alepha.$module)({
|
|
54
|
-
name: "alepha.server.health",
|
|
55
|
-
services: [alepha_server.AlephaServer, ServerHealthProvider]
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
//#endregion
|
|
59
|
-
exports.AlephaServerHealth = AlephaServerHealth;
|
|
60
|
-
exports.ServerHealthProvider = ServerHealthProvider;
|
|
61
|
-
exports.healthSchema = healthSchema;
|
|
62
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["t","DateTimeProvider","Alepha","AlephaServer"],"sources":["../../src/server-health/schemas/healthSchema.ts","../../src/server-health/providers/ServerHealthProvider.ts","../../src/server-health/index.ts"],"sourcesContent":["import { t } from \"alepha\";\n\nexport const healthSchema = t.object({\n message: t.text(),\n uptime: t.number(),\n date: t.datetime(),\n ready: t.boolean(),\n});\n","import { $inject, Alepha } from \"alepha\";\nimport { DateTimeProvider } from \"alepha/datetime\";\nimport { $route } from \"alepha/server\";\nimport { healthSchema } from \"../schemas/healthSchema.ts\";\n\n/**\n * Register `/health` & `/healthz` endpoint.\n *\n * - Provides basic health information about the server.\n */\nexport class ServerHealthProvider {\n protected readonly time: DateTimeProvider = $inject(DateTimeProvider);\n protected readonly alepha = $inject(Alepha);\n\n public readonly health = $route({\n path: \"/health\",\n schema: {\n response: healthSchema,\n },\n silent: true,\n handler: () => this.healthCheck(),\n });\n\n public readonly healthz = $route({\n path: \"/healthz\",\n schema: {\n response: healthSchema,\n },\n silent: true,\n handler: () => this.healthCheck(),\n });\n\n protected healthCheck() {\n return {\n message: \"OK\",\n uptime: Math.floor(process.uptime()),\n date: this.time.nowISOString(),\n ready: this.alepha.isReady(),\n };\n }\n}\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerHealthProvider } from \"./providers/ServerHealthProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./providers/ServerHealthProvider.ts\";\nexport * from \"./schemas/healthSchema.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Plugin for Alepha Server that provides health-check endpoints.\n *\n * @see {@link ServerHealthProvider}\n * @module alepha.server.health\n */\nexport const AlephaServerHealth = $module({\n name: \"alepha.server.health\",\n services: [AlephaServer, ServerHealthProvider],\n});\n"],"mappings":";;;;;AAEA,MAAa,eAAeA,SAAE,OAAO;CACnC,SAASA,SAAE,MAAM;CACjB,QAAQA,SAAE,QAAQ;CAClB,MAAMA,SAAE,UAAU;CAClB,OAAOA,SAAE,SAAS;CACnB,CAAC;;;;;;;;;ACGF,IAAa,uBAAb,MAAkC;CAChC,AAAmB,2BAAiCC,iCAAiB;CACrE,AAAmB,6BAAiBC,cAAO;CAE3C,AAAgB,mCAAgB;EAC9B,MAAM;EACN,QAAQ,EACN,UAAU,cACX;EACD,QAAQ;EACR,eAAe,KAAK,aAAa;EAClC,CAAC;CAEF,AAAgB,oCAAiB;EAC/B,MAAM;EACN,QAAQ,EACN,UAAU,cACX;EACD,QAAQ;EACR,eAAe,KAAK,aAAa;EAClC,CAAC;CAEF,AAAU,cAAc;AACtB,SAAO;GACL,SAAS;GACT,QAAQ,KAAK,MAAM,QAAQ,QAAQ,CAAC;GACpC,MAAM,KAAK,KAAK,cAAc;GAC9B,OAAO,KAAK,OAAO,SAAS;GAC7B;;;;;;;;;;;;ACrBL,MAAa,yCAA6B;CACxC,MAAM;CACN,UAAU,CAACC,4BAAc,qBAAqB;CAC/C,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import * as alepha6 from "alepha";
|
|
2
|
-
import { Alepha } from "alepha";
|
|
3
|
-
import * as alepha_server0 from "alepha/server";
|
|
4
|
-
import { DateTimeProvider } from "alepha/datetime";
|
|
5
|
-
|
|
6
|
-
//#region src/server-health/providers/ServerHealthProvider.d.ts
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Register `/health` & `/healthz` endpoint.
|
|
10
|
-
*
|
|
11
|
-
* - Provides basic health information about the server.
|
|
12
|
-
*/
|
|
13
|
-
declare class ServerHealthProvider {
|
|
14
|
-
protected readonly time: DateTimeProvider;
|
|
15
|
-
protected readonly alepha: Alepha;
|
|
16
|
-
readonly health: alepha_server0.RouteDescriptor<{
|
|
17
|
-
response: alepha6.TObject<{
|
|
18
|
-
message: alepha6.TString;
|
|
19
|
-
uptime: alepha6.TNumber;
|
|
20
|
-
date: alepha6.TString;
|
|
21
|
-
ready: alepha6.TBoolean;
|
|
22
|
-
}>;
|
|
23
|
-
}>;
|
|
24
|
-
readonly healthz: alepha_server0.RouteDescriptor<{
|
|
25
|
-
response: alepha6.TObject<{
|
|
26
|
-
message: alepha6.TString;
|
|
27
|
-
uptime: alepha6.TNumber;
|
|
28
|
-
date: alepha6.TString;
|
|
29
|
-
ready: alepha6.TBoolean;
|
|
30
|
-
}>;
|
|
31
|
-
}>;
|
|
32
|
-
protected healthCheck(): {
|
|
33
|
-
message: string;
|
|
34
|
-
uptime: number;
|
|
35
|
-
date: string;
|
|
36
|
-
ready: boolean;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//#endregion
|
|
40
|
-
//#region src/server-health/schemas/healthSchema.d.ts
|
|
41
|
-
declare const healthSchema: alepha6.TObject<{
|
|
42
|
-
message: alepha6.TString;
|
|
43
|
-
uptime: alepha6.TNumber;
|
|
44
|
-
date: alepha6.TString;
|
|
45
|
-
ready: alepha6.TBoolean;
|
|
46
|
-
}>;
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/server-health/index.d.ts
|
|
49
|
-
/**
|
|
50
|
-
* Plugin for Alepha Server that provides health-check endpoints.
|
|
51
|
-
*
|
|
52
|
-
* @see {@link ServerHealthProvider}
|
|
53
|
-
* @module alepha.server.health
|
|
54
|
-
*/
|
|
55
|
-
declare const AlephaServerHealth: alepha6.Service<alepha6.Module>;
|
|
56
|
-
//#endregion
|
|
57
|
-
export { AlephaServerHealth, ServerHealthProvider, healthSchema };
|
|
58
|
-
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
let alepha = require("alepha");
|
|
2
|
-
let alepha_server = require("alepha/server");
|
|
3
|
-
|
|
4
|
-
//#region src/server-helmet/providers/ServerHelmetProvider.ts
|
|
5
|
-
/**
|
|
6
|
-
* Helmet security headers configuration atom
|
|
7
|
-
*/
|
|
8
|
-
const helmetOptions = (0, alepha.$atom)({
|
|
9
|
-
name: "alepha.server.helmet.options",
|
|
10
|
-
schema: alepha.t.object({
|
|
11
|
-
isSecure: alepha.t.optional(alepha.t.boolean()),
|
|
12
|
-
strictTransportSecurity: alepha.t.optional(alepha.t.object({
|
|
13
|
-
maxAge: alepha.t.optional(alepha.t.number()),
|
|
14
|
-
includeSubDomains: alepha.t.optional(alepha.t.boolean()),
|
|
15
|
-
preload: alepha.t.optional(alepha.t.boolean())
|
|
16
|
-
})),
|
|
17
|
-
xContentTypeOptions: alepha.t.optional(alepha.t.boolean()),
|
|
18
|
-
xFrameOptions: alepha.t.optional(alepha.t.enum(["DENY", "SAMEORIGIN"])),
|
|
19
|
-
xXssProtection: alepha.t.optional(alepha.t.boolean()),
|
|
20
|
-
contentSecurityPolicy: alepha.t.optional(alepha.t.object({ directives: alepha.t.record(alepha.t.string(), alepha.t.any()) })),
|
|
21
|
-
referrerPolicy: alepha.t.optional(alepha.t.enum([
|
|
22
|
-
"no-referrer",
|
|
23
|
-
"no-referrer-when-downgrade",
|
|
24
|
-
"origin",
|
|
25
|
-
"origin-when-cross-origin",
|
|
26
|
-
"same-origin",
|
|
27
|
-
"strict-origin",
|
|
28
|
-
"strict-origin-when-cross-origin",
|
|
29
|
-
"unsafe-url"
|
|
30
|
-
]))
|
|
31
|
-
}),
|
|
32
|
-
default: {
|
|
33
|
-
strictTransportSecurity: {
|
|
34
|
-
maxAge: 15552e3,
|
|
35
|
-
includeSubDomains: true
|
|
36
|
-
},
|
|
37
|
-
xFrameOptions: "SAMEORIGIN",
|
|
38
|
-
xXssProtection: false,
|
|
39
|
-
referrerPolicy: "strict-origin-when-cross-origin"
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
/**
|
|
43
|
-
* Provides a configurable way to apply essential HTTP security headers
|
|
44
|
-
* to every server response, without external dependencies.
|
|
45
|
-
*/
|
|
46
|
-
var ServerHelmetProvider = class {
|
|
47
|
-
alepha = (0, alepha.$inject)(alepha.Alepha);
|
|
48
|
-
/**
|
|
49
|
-
* The configuration options loaded from the atom.
|
|
50
|
-
*/
|
|
51
|
-
options = (0, alepha.$use)(helmetOptions);
|
|
52
|
-
defaultCspDirectives() {
|
|
53
|
-
return {
|
|
54
|
-
"default-src": ["'self'"],
|
|
55
|
-
"base-uri": ["'self'"],
|
|
56
|
-
"font-src": [
|
|
57
|
-
"'self'",
|
|
58
|
-
"https:",
|
|
59
|
-
"data:"
|
|
60
|
-
],
|
|
61
|
-
"form-action": ["'self'"],
|
|
62
|
-
"frame-ancestors": ["'self'"],
|
|
63
|
-
"img-src": ["'self'", "data:"],
|
|
64
|
-
"object-src": ["'none'"],
|
|
65
|
-
"script-src": ["'self'"],
|
|
66
|
-
"script-src-attr": ["'none'"],
|
|
67
|
-
"style-src": [
|
|
68
|
-
"'self'",
|
|
69
|
-
"https:",
|
|
70
|
-
"'unsafe-inline'"
|
|
71
|
-
],
|
|
72
|
-
"upgrade-insecure-requests": []
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
buildHeaders() {
|
|
76
|
-
const headers = {};
|
|
77
|
-
const { strictTransportSecurity: hsts, xContentTypeOptions, xFrameOptions, xXssProtection, contentSecurityPolicy: csp, referrerPolicy } = this.options;
|
|
78
|
-
if (hsts) {
|
|
79
|
-
let value = `max-age=${hsts.maxAge ?? 15552e3}`;
|
|
80
|
-
if (hsts.includeSubDomains) value += "; includeSubDomains";
|
|
81
|
-
if (hsts.preload) value += "; preload";
|
|
82
|
-
headers["strict-transport-security"] = value;
|
|
83
|
-
}
|
|
84
|
-
if (xContentTypeOptions !== false) headers["x-content-type-options"] = "nosniff";
|
|
85
|
-
if (xFrameOptions) headers["x-frame-options"] = xFrameOptions;
|
|
86
|
-
if (xXssProtection !== false) headers["x-xss-protection"] = "1; mode=block";
|
|
87
|
-
if (referrerPolicy) headers["referrer-policy"] = referrerPolicy;
|
|
88
|
-
if (csp) {
|
|
89
|
-
const directives = Object.keys(csp).length === 0 ? this.defaultCspDirectives() : csp.directives;
|
|
90
|
-
headers["content-security-policy"] = Object.entries(directives).map(([key, value]) => {
|
|
91
|
-
const kebabKey = key.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
92
|
-
if (Array.isArray(value)) return `${kebabKey} ${value.join(" ")}`;
|
|
93
|
-
if (typeof value === "boolean" && value) return kebabKey;
|
|
94
|
-
return `${kebabKey} ${value}`;
|
|
95
|
-
}).join("; ");
|
|
96
|
-
}
|
|
97
|
-
return headers;
|
|
98
|
-
}
|
|
99
|
-
onResponse = (0, alepha.$hook)({
|
|
100
|
-
on: "server:onResponse",
|
|
101
|
-
priority: "first",
|
|
102
|
-
handler: ({ response }) => {
|
|
103
|
-
const isSecure = response.headers["x-forwarded-proto"] === "https" || this.options.isSecure || this.alepha.isProduction();
|
|
104
|
-
const headersToSet = this.buildHeaders();
|
|
105
|
-
for (const [key, value] of Object.entries(headersToSet)) {
|
|
106
|
-
if (key === "strict-transport-security" && !isSecure) continue;
|
|
107
|
-
if (!response.headers[key]) response.headers[key] = value;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
//#endregion
|
|
114
|
-
//#region src/server-helmet/index.ts
|
|
115
|
-
/**
|
|
116
|
-
* Automatically adds important HTTP security headers to every response
|
|
117
|
-
* to help protect your application from common web vulnerabilities.
|
|
118
|
-
*
|
|
119
|
-
* @see {@link ServerHelmetProvider}
|
|
120
|
-
* @module alepha.server.helmet
|
|
121
|
-
*/
|
|
122
|
-
const AlephaServerHelmet = (0, alepha.$module)({
|
|
123
|
-
name: "alepha.server.helmet",
|
|
124
|
-
services: [alepha_server.AlephaServer, ServerHelmetProvider]
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
//#endregion
|
|
128
|
-
exports.AlephaServerHelmet = AlephaServerHelmet;
|
|
129
|
-
exports.ServerHelmetProvider = ServerHelmetProvider;
|
|
130
|
-
exports.helmetOptions = helmetOptions;
|
|
131
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["t","Alepha","headers: Record<string, string>","AlephaServer"],"sources":["../../src/server-helmet/providers/ServerHelmetProvider.ts","../../src/server-helmet/index.ts"],"sourcesContent":["import { $atom, $hook, $inject, $use, Alepha, type Static, t } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Helmet security headers configuration atom\n */\nexport const helmetOptions = $atom({\n name: \"alepha.server.helmet.options\",\n schema: t.object({\n isSecure: t.optional(t.boolean()),\n strictTransportSecurity: t.optional(\n t.object({\n maxAge: t.optional(t.number()),\n includeSubDomains: t.optional(t.boolean()),\n preload: t.optional(t.boolean()),\n }),\n ),\n xContentTypeOptions: t.optional(t.boolean()),\n xFrameOptions: t.optional(t.enum([\"DENY\", \"SAMEORIGIN\"])),\n xXssProtection: t.optional(t.boolean()),\n contentSecurityPolicy: t.optional(\n t.object({\n directives: t.record(t.string(), t.any()),\n }),\n ),\n referrerPolicy: t.optional(\n t.enum([\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"origin\",\n \"origin-when-cross-origin\",\n \"same-origin\",\n \"strict-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\",\n ]),\n ),\n }),\n default: {\n strictTransportSecurity: { maxAge: 15552000, includeSubDomains: true },\n xFrameOptions: \"SAMEORIGIN\",\n xXssProtection: false,\n referrerPolicy: \"strict-origin-when-cross-origin\",\n },\n});\n\nexport type HelmetOptions = Static<typeof helmetOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [helmetOptions.key]: HelmetOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ntype CspDirective = string | string[];\n\nexport interface CspDirectives {\n \"default-src\"?: CspDirective;\n \"script-src\"?: CspDirective;\n \"style-src\"?: CspDirective;\n \"img-src\"?: CspDirective;\n \"connect-src\"?: CspDirective;\n \"font-src\"?: CspDirective;\n \"object-src\"?: CspDirective;\n \"media-src\"?: CspDirective;\n \"frame-src\"?: CspDirective;\n sandbox?: CspDirective | boolean;\n \"report-uri\"?: string;\n \"child-src\"?: CspDirective;\n \"form-action\"?: CspDirective;\n \"frame-ancestors\"?: CspDirective;\n \"plugin-types\"?: CspDirective;\n \"base-uri\"?: CspDirective;\n [key: string]: CspDirective | undefined | boolean;\n}\n\nexport interface CspOptions {\n directives: CspDirectives;\n}\n\nexport interface HstsOptions {\n maxAge?: number;\n includeSubDomains?: boolean;\n preload?: boolean;\n}\n\n/**\n * Provides a configurable way to apply essential HTTP security headers\n * to every server response, without external dependencies.\n */\nexport class ServerHelmetProvider {\n protected readonly alepha = $inject(Alepha);\n\n /**\n * The configuration options loaded from the atom.\n */\n protected readonly options = $use(helmetOptions);\n\n protected defaultCspDirectives(): CspDirectives {\n return {\n \"default-src\": [\"'self'\"],\n \"base-uri\": [\"'self'\"],\n \"font-src\": [\"'self'\", \"https:\", \"data:\"],\n \"form-action\": [\"'self'\"],\n \"frame-ancestors\": [\"'self'\"],\n \"img-src\": [\"'self'\", \"data:\"],\n \"object-src\": [\"'none'\"],\n \"script-src\": [\"'self'\"],\n \"script-src-attr\": [\"'none'\"],\n \"style-src\": [\"'self'\", \"https:\", \"'unsafe-inline'\"],\n \"upgrade-insecure-requests\": [],\n };\n }\n\n protected buildHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n const {\n strictTransportSecurity: hsts,\n xContentTypeOptions,\n xFrameOptions,\n xXssProtection,\n contentSecurityPolicy: csp,\n referrerPolicy,\n } = this.options;\n\n // Strict-Transport-Security\n if (hsts) {\n let value = `max-age=${hsts.maxAge ?? 15552000}`;\n if (hsts.includeSubDomains) value += \"; includeSubDomains\";\n if (hsts.preload) value += \"; preload\";\n headers[\"strict-transport-security\"] = value;\n }\n\n // X-Content-Type-Options\n if (xContentTypeOptions !== false) {\n headers[\"x-content-type-options\"] = \"nosniff\";\n }\n\n // X-Frame-Options\n if (xFrameOptions) {\n headers[\"x-frame-options\"] = xFrameOptions;\n }\n\n // X-XSS-Protection\n if (xXssProtection !== false) {\n headers[\"x-xss-protection\"] = \"1; mode=block\";\n }\n\n // Referrer-Policy\n if (referrerPolicy) {\n headers[\"referrer-policy\"] = referrerPolicy;\n }\n\n // Content-Security-Policy\n if (csp) {\n const directives =\n Object.keys(csp).length === 0\n ? this.defaultCspDirectives()\n : csp.directives;\n headers[\"content-security-policy\"] = Object.entries(directives)\n .map(([key, value]) => {\n const kebabKey = key.replace(\n /[A-Z]/g,\n (letter) => `-${letter.toLowerCase()}`,\n );\n if (Array.isArray(value)) {\n return `${kebabKey} ${value.join(\" \")}`;\n }\n if (typeof value === \"boolean\" && value) {\n return kebabKey;\n }\n return `${kebabKey} ${value}`;\n })\n .join(\"; \");\n }\n\n return headers;\n }\n\n protected readonly onResponse = $hook({\n on: \"server:onResponse\",\n priority: \"first\",\n handler: ({ response }) => {\n // this check is important. Only add HSTS on HTTPS requests.\n const isSecure =\n response.headers[\"x-forwarded-proto\"] === \"https\" ||\n this.options.isSecure ||\n this.alepha.isProduction();\n\n const headersToSet = this.buildHeaders();\n\n for (const [key, value] of Object.entries(headersToSet)) {\n if (key === \"strict-transport-security\" && !isSecure) {\n continue;\n }\n // don't overwrite headers if they are already set\n if (!response.headers[key]) {\n response.headers[key] = value;\n }\n }\n },\n });\n}\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerHelmetProvider } from \"./providers/ServerHelmetProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./providers/ServerHelmetProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Automatically adds important HTTP security headers to every response\n * to help protect your application from common web vulnerabilities.\n *\n * @see {@link ServerHelmetProvider}\n * @module alepha.server.helmet\n */\nexport const AlephaServerHelmet = $module({\n name: \"alepha.server.helmet\",\n services: [AlephaServer, ServerHelmetProvider],\n});\n"],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import * as alepha1 from "alepha";
|
|
2
|
-
import { Alepha, Static } from "alepha";
|
|
3
|
-
|
|
4
|
-
//#region src/server-helmet/providers/ServerHelmetProvider.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Helmet security headers configuration atom
|
|
7
|
-
*/
|
|
8
|
-
declare const helmetOptions: alepha1.Atom<alepha1.TObject<{
|
|
9
|
-
isSecure: alepha1.TOptional<alepha1.TBoolean>;
|
|
10
|
-
strictTransportSecurity: alepha1.TOptional<alepha1.TObject<{
|
|
11
|
-
maxAge: alepha1.TOptional<alepha1.TNumber>;
|
|
12
|
-
includeSubDomains: alepha1.TOptional<alepha1.TBoolean>;
|
|
13
|
-
preload: alepha1.TOptional<alepha1.TBoolean>;
|
|
14
|
-
}>>;
|
|
15
|
-
xContentTypeOptions: alepha1.TOptional<alepha1.TBoolean>;
|
|
16
|
-
xFrameOptions: alepha1.TOptional<alepha1.TUnsafe<"DENY" | "SAMEORIGIN">>;
|
|
17
|
-
xXssProtection: alepha1.TOptional<alepha1.TBoolean>;
|
|
18
|
-
contentSecurityPolicy: alepha1.TOptional<alepha1.TObject<{
|
|
19
|
-
directives: alepha1.TRecord<"^.*$", alepha1.TAny>;
|
|
20
|
-
}>>;
|
|
21
|
-
referrerPolicy: alepha1.TOptional<alepha1.TUnsafe<"no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url">>;
|
|
22
|
-
}>, "alepha.server.helmet.options">;
|
|
23
|
-
type HelmetOptions = Static<typeof helmetOptions.schema>;
|
|
24
|
-
declare module "alepha" {
|
|
25
|
-
interface State {
|
|
26
|
-
[helmetOptions.key]: HelmetOptions;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
type CspDirective = string | string[];
|
|
30
|
-
interface CspDirectives {
|
|
31
|
-
"default-src"?: CspDirective;
|
|
32
|
-
"script-src"?: CspDirective;
|
|
33
|
-
"style-src"?: CspDirective;
|
|
34
|
-
"img-src"?: CspDirective;
|
|
35
|
-
"connect-src"?: CspDirective;
|
|
36
|
-
"font-src"?: CspDirective;
|
|
37
|
-
"object-src"?: CspDirective;
|
|
38
|
-
"media-src"?: CspDirective;
|
|
39
|
-
"frame-src"?: CspDirective;
|
|
40
|
-
sandbox?: CspDirective | boolean;
|
|
41
|
-
"report-uri"?: string;
|
|
42
|
-
"child-src"?: CspDirective;
|
|
43
|
-
"form-action"?: CspDirective;
|
|
44
|
-
"frame-ancestors"?: CspDirective;
|
|
45
|
-
"plugin-types"?: CspDirective;
|
|
46
|
-
"base-uri"?: CspDirective;
|
|
47
|
-
[key: string]: CspDirective | undefined | boolean;
|
|
48
|
-
}
|
|
49
|
-
interface CspOptions {
|
|
50
|
-
directives: CspDirectives;
|
|
51
|
-
}
|
|
52
|
-
interface HstsOptions {
|
|
53
|
-
maxAge?: number;
|
|
54
|
-
includeSubDomains?: boolean;
|
|
55
|
-
preload?: boolean;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Provides a configurable way to apply essential HTTP security headers
|
|
59
|
-
* to every server response, without external dependencies.
|
|
60
|
-
*/
|
|
61
|
-
declare class ServerHelmetProvider {
|
|
62
|
-
protected readonly alepha: Alepha;
|
|
63
|
-
/**
|
|
64
|
-
* The configuration options loaded from the atom.
|
|
65
|
-
*/
|
|
66
|
-
protected readonly options: Readonly<{
|
|
67
|
-
isSecure?: boolean | undefined;
|
|
68
|
-
strictTransportSecurity?: {
|
|
69
|
-
maxAge?: number | undefined;
|
|
70
|
-
includeSubDomains?: boolean | undefined;
|
|
71
|
-
preload?: boolean | undefined;
|
|
72
|
-
} | undefined;
|
|
73
|
-
xContentTypeOptions?: boolean | undefined;
|
|
74
|
-
xFrameOptions?: "DENY" | "SAMEORIGIN" | undefined;
|
|
75
|
-
xXssProtection?: boolean | undefined;
|
|
76
|
-
contentSecurityPolicy?: {
|
|
77
|
-
directives: Record<string, any>;
|
|
78
|
-
} | undefined;
|
|
79
|
-
referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
|
|
80
|
-
}>;
|
|
81
|
-
protected defaultCspDirectives(): CspDirectives;
|
|
82
|
-
protected buildHeaders(): Record<string, string>;
|
|
83
|
-
protected readonly onResponse: alepha1.HookDescriptor<"server:onResponse">;
|
|
84
|
-
}
|
|
85
|
-
//#endregion
|
|
86
|
-
//#region src/server-helmet/index.d.ts
|
|
87
|
-
/**
|
|
88
|
-
* Automatically adds important HTTP security headers to every response
|
|
89
|
-
* to help protect your application from common web vulnerabilities.
|
|
90
|
-
*
|
|
91
|
-
* @see {@link ServerHelmetProvider}
|
|
92
|
-
* @module alepha.server.helmet
|
|
93
|
-
*/
|
|
94
|
-
declare const AlephaServerHelmet: alepha1.Service<alepha1.Module>;
|
|
95
|
-
//#endregion
|
|
96
|
-
export { AlephaServerHelmet, CspDirectives, CspOptions, HelmetOptions, HstsOptions, ServerHelmetProvider, helmetOptions };
|
|
97
|
-
//# sourceMappingURL=index.d.cts.map
|