@expressots/core 4.0.0-preview.1 → 4.0.0-preview.3
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/LICENSE.md +21 -21
- package/README.md +66 -66
- package/lib/CHANGELOG.md +774 -774
- package/lib/README.md +66 -66
- package/lib/cjs/application/application-factory.js +6 -0
- package/lib/cjs/application/bootstrap.js +117 -213
- package/lib/cjs/config/define-config.js +1 -1
- package/lib/cjs/config/env-field-builders.js +47 -0
- package/lib/cjs/config/index.js +7 -1
- package/lib/cjs/framework-version.js +10 -0
- package/lib/cjs/lazy-loading/index.js +5 -1
- package/lib/cjs/lazy-loading/lazy-module-helpers.js +49 -0
- package/lib/cjs/middleware/index.js +8 -9
- package/lib/cjs/middleware/middleware-service.js +68 -12
- package/lib/cjs/middleware/presets-standalone.js +93 -0
- package/lib/cjs/provider/db-in-memory/adapter/in-memory.adapter.js +23 -0
- package/lib/cjs/provider/db-in-memory/index.js +11 -1
- package/lib/cjs/provider/db-in-memory/query/query-engine.js +28 -0
- package/lib/cjs/provider/db-in-memory/schema/decorators.js +18 -0
- package/lib/cjs/provider/db-in-memory/storage/index.js +3 -1
- package/lib/cjs/provider/db-in-memory/storage/memory-store.js +72 -1
- package/lib/cjs/provider/logger/logger.banner.js +40 -31
- package/lib/cjs/provider/logger/logger.config.js +11 -1
- package/lib/cjs/provider/logger/logger.formatter.js +22 -1
- package/lib/cjs/provider/logger/logger.provider.js +59 -9
- package/lib/cjs/provider/logger/transports/console.transport.js +69 -6
- package/lib/cjs/provider/logger/transports/file.transport.js +27 -18
- package/lib/cjs/provider/logger/utils/log-levels.js +6 -5
- package/lib/cjs/provider/validation/adapters/index.js +12 -5
- package/lib/cjs/provider/validation/adapters/yup.adapter.js +118 -0
- package/lib/cjs/provider/validation/adapters/zod.adapter.js +137 -0
- package/lib/cjs/provider/validation/index.js +5 -1
- package/lib/cjs/render/adapters/react-adapter.js +14 -14
- package/lib/cjs/render/features/type-generator.js +30 -30
- package/lib/cjs/render/features/view-debugger.js +75 -55
- package/lib/cjs/testing/fluent-request.js +7 -0
- package/lib/cjs/testing/snapshot-request.js +2 -0
- package/lib/cjs/types/application/application-factory.d.ts +6 -0
- package/lib/cjs/types/application/bootstrap.d.ts +196 -24
- package/lib/cjs/types/config/config.interfaces.d.ts +7 -1
- package/lib/cjs/types/config/env-field-builders.d.ts +39 -0
- package/lib/cjs/types/config/index.d.ts +1 -1
- package/lib/cjs/types/framework-version.d.ts +7 -0
- package/lib/cjs/types/lazy-loading/index.d.ts +1 -0
- package/lib/cjs/types/lazy-loading/lazy-module-helpers.d.ts +42 -0
- package/lib/cjs/types/middleware/index.d.ts +1 -1
- package/lib/cjs/types/middleware/middleware-service.d.ts +21 -0
- package/lib/cjs/types/middleware/presets-standalone.d.ts +75 -0
- package/lib/cjs/types/provider/db-in-memory/adapter/in-memory.adapter.d.ts +2 -0
- package/lib/cjs/types/provider/db-in-memory/index.d.ts +9 -1
- package/lib/cjs/types/provider/db-in-memory/query/query-engine.d.ts +14 -1
- package/lib/cjs/types/provider/db-in-memory/schema/decorators.d.ts +14 -0
- package/lib/cjs/types/provider/db-in-memory/storage/index.d.ts +1 -1
- package/lib/cjs/types/provider/db-in-memory/storage/memory-store.d.ts +34 -0
- package/lib/cjs/types/provider/logger/logger.banner.d.ts +1 -1
- package/lib/cjs/types/provider/logger/logger.config.d.ts +7 -0
- package/lib/cjs/types/provider/logger/logger.formatter.d.ts +10 -0
- package/lib/cjs/types/provider/logger/logger.provider.d.ts +32 -1
- package/lib/cjs/types/provider/logger/transports/console.transport.d.ts +7 -0
- package/lib/cjs/types/provider/logger/utils/log-levels.d.ts +3 -3
- package/lib/cjs/types/provider/validation/adapters/index.d.ts +7 -4
- package/lib/cjs/types/provider/validation/adapters/yup.adapter.d.ts +65 -0
- package/lib/cjs/types/provider/validation/adapters/zod.adapter.d.ts +84 -0
- package/lib/cjs/types/provider/validation/index.d.ts +1 -1
- package/lib/cjs/types/render/features/view-debugger.d.ts +10 -0
- package/lib/cjs/types/testing/testing.interfaces.d.ts +31 -6
- package/lib/esm/application/application-factory.js +6 -0
- package/lib/esm/application/bootstrap.js +117 -213
- package/lib/esm/config/define-config.js +1 -1
- package/lib/esm/config/env-field-builders.js +48 -0
- package/lib/esm/config/index.js +6 -1
- package/lib/esm/framework-version.js +7 -0
- package/lib/esm/lazy-loading/index.js +2 -0
- package/lib/esm/lazy-loading/lazy-module-helpers.js +45 -0
- package/lib/esm/middleware/index.js +3 -2
- package/lib/esm/middleware/middleware-service.js +68 -12
- package/lib/esm/middleware/presets-standalone.js +87 -0
- package/lib/esm/provider/db-in-memory/adapter/in-memory.adapter.js +23 -0
- package/lib/esm/provider/db-in-memory/index.js +9 -1
- package/lib/esm/provider/db-in-memory/query/query-engine.js +28 -0
- package/lib/esm/provider/db-in-memory/schema/decorators.js +18 -0
- package/lib/esm/provider/db-in-memory/storage/index.js +1 -1
- package/lib/esm/provider/db-in-memory/storage/memory-store.js +75 -0
- package/lib/esm/provider/logger/logger.banner.js +40 -31
- package/lib/esm/provider/logger/logger.config.js +12 -2
- package/lib/esm/provider/logger/logger.formatter.js +22 -1
- package/lib/esm/provider/logger/logger.provider.js +61 -10
- package/lib/esm/provider/logger/transports/console.transport.js +69 -6
- package/lib/esm/provider/logger/transports/file.transport.js +27 -18
- package/lib/esm/provider/logger/utils/log-levels.js +6 -5
- package/lib/esm/provider/validation/adapters/index.js +7 -4
- package/lib/esm/provider/validation/adapters/yup.adapter.js +111 -0
- package/lib/esm/provider/validation/adapters/zod.adapter.js +130 -0
- package/lib/esm/provider/validation/index.js +1 -1
- package/lib/esm/render/adapters/react-adapter.js +14 -14
- package/lib/esm/render/features/type-generator.js +30 -30
- package/lib/esm/render/features/view-debugger.js +75 -55
- package/lib/esm/testing/fluent-request.js +7 -0
- package/lib/esm/testing/snapshot-request.js +2 -0
- package/lib/esm/types/application/application-factory.d.ts +6 -0
- package/lib/esm/types/application/bootstrap.d.ts +196 -24
- package/lib/esm/types/config/config.interfaces.d.ts +7 -1
- package/lib/esm/types/config/env-field-builders.d.ts +39 -0
- package/lib/esm/types/config/index.d.ts +1 -1
- package/lib/esm/types/framework-version.d.ts +7 -0
- package/lib/esm/types/lazy-loading/index.d.ts +1 -0
- package/lib/esm/types/lazy-loading/lazy-module-helpers.d.ts +42 -0
- package/lib/esm/types/middleware/index.d.ts +1 -1
- package/lib/esm/types/middleware/middleware-service.d.ts +21 -0
- package/lib/esm/types/middleware/presets-standalone.d.ts +75 -0
- package/lib/esm/types/provider/db-in-memory/adapter/in-memory.adapter.d.ts +2 -0
- package/lib/esm/types/provider/db-in-memory/index.d.ts +9 -1
- package/lib/esm/types/provider/db-in-memory/query/query-engine.d.ts +14 -1
- package/lib/esm/types/provider/db-in-memory/schema/decorators.d.ts +14 -0
- package/lib/esm/types/provider/db-in-memory/storage/index.d.ts +1 -1
- package/lib/esm/types/provider/db-in-memory/storage/memory-store.d.ts +34 -0
- package/lib/esm/types/provider/logger/logger.banner.d.ts +1 -1
- package/lib/esm/types/provider/logger/logger.config.d.ts +7 -0
- package/lib/esm/types/provider/logger/logger.formatter.d.ts +10 -0
- package/lib/esm/types/provider/logger/logger.provider.d.ts +32 -1
- package/lib/esm/types/provider/logger/transports/console.transport.d.ts +7 -0
- package/lib/esm/types/provider/logger/utils/log-levels.d.ts +3 -3
- package/lib/esm/types/provider/validation/adapters/index.d.ts +7 -4
- package/lib/esm/types/provider/validation/adapters/yup.adapter.d.ts +65 -0
- package/lib/esm/types/provider/validation/adapters/zod.adapter.d.ts +84 -0
- package/lib/esm/types/provider/validation/index.d.ts +1 -1
- package/lib/esm/types/render/features/view-debugger.d.ts +10 -0
- package/lib/esm/types/testing/testing.interfaces.d.ts +31 -6
- package/lib/package.json +23 -8
- package/package.json +23 -8
- package/lib/cjs/middleware/middleware-presets.js +0 -294
- package/lib/cjs/types/middleware/middleware-presets.d.ts +0 -90
- package/lib/esm/middleware/middleware-presets.js +0 -286
- package/lib/esm/types/middleware/middleware-presets.d.ts +0 -90
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default CORS options for API preset.
|
|
3
|
-
*/
|
|
4
|
-
const API_CORS_OPTIONS = {
|
|
5
|
-
origin: true,
|
|
6
|
-
credentials: true,
|
|
7
|
-
methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
|
|
8
|
-
allowedHeaders: ["Content-Type", "Authorization", "X-Requested-With"],
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Default Helmet options for secure preset.
|
|
12
|
-
*/
|
|
13
|
-
const SECURE_HELMET_OPTIONS = {
|
|
14
|
-
contentSecurityPolicy: {
|
|
15
|
-
directives: {
|
|
16
|
-
"default-src": ["'self'"],
|
|
17
|
-
"style-src": ["'self'", "'unsafe-inline'"],
|
|
18
|
-
"script-src": ["'self'"],
|
|
19
|
-
"img-src": ["'self'", "data:", "https:"],
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
crossOriginEmbedderPolicy: { policy: "require-corp" },
|
|
23
|
-
crossOriginOpenerPolicy: { policy: "same-origin" },
|
|
24
|
-
crossOriginResourcePolicy: { policy: "same-origin" },
|
|
25
|
-
xDnsPrefetchControl: { allow: false },
|
|
26
|
-
xFrameOptions: { action: "deny" },
|
|
27
|
-
strictTransportSecurity: {
|
|
28
|
-
maxAge: 31536000,
|
|
29
|
-
includeSubDomains: true,
|
|
30
|
-
preload: true,
|
|
31
|
-
},
|
|
32
|
-
xDownloadOptions: "noopen",
|
|
33
|
-
xContentTypeOptions: "nosniff",
|
|
34
|
-
xPermittedCrossDomainPolicies: { permittedPolicies: "none" },
|
|
35
|
-
referrerPolicy: { policy: "strict-origin-when-cross-origin" },
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Default rate limit options.
|
|
39
|
-
*/
|
|
40
|
-
const DEFAULT_RATE_LIMIT_OPTIONS = {
|
|
41
|
-
windowMs: 60 * 1000, // 1 minute
|
|
42
|
-
limit: 100, // 100 requests per minute
|
|
43
|
-
standardHeaders: "draft-7",
|
|
44
|
-
legacyHeaders: false,
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Strict rate limit for production.
|
|
48
|
-
*/
|
|
49
|
-
const PRODUCTION_RATE_LIMIT_OPTIONS = {
|
|
50
|
-
windowMs: 60 * 1000,
|
|
51
|
-
limit: 60,
|
|
52
|
-
standardHeaders: "draft-7",
|
|
53
|
-
legacyHeaders: false,
|
|
54
|
-
skipSuccessfulRequests: false,
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Built-in middleware presets.
|
|
58
|
-
* @public API
|
|
59
|
-
*/
|
|
60
|
-
export const MIDDLEWARE_PRESETS = {
|
|
61
|
-
/**
|
|
62
|
-
* API Preset - Optimized for REST APIs
|
|
63
|
-
* Includes: CORS, Helmet, JSON parser, URL-encoded parser, Compression, Rate limiting
|
|
64
|
-
*/
|
|
65
|
-
api: {
|
|
66
|
-
name: "api",
|
|
67
|
-
description: "Optimized configuration for REST APIs with security and performance",
|
|
68
|
-
tags: ["rest", "backend", "security"],
|
|
69
|
-
middleware: [
|
|
70
|
-
{ name: "Cors", options: API_CORS_OPTIONS },
|
|
71
|
-
{ name: "Helmet", options: {} },
|
|
72
|
-
{ name: "BodyParser", options: { limit: "10mb" } },
|
|
73
|
-
{
|
|
74
|
-
name: "UrlEncodedParser",
|
|
75
|
-
options: { extended: true },
|
|
76
|
-
},
|
|
77
|
-
{ name: "Compression", options: { level: 6 } },
|
|
78
|
-
{ name: "RateLimiter", options: DEFAULT_RATE_LIMIT_OPTIONS },
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
/**
|
|
82
|
-
* Web Preset - For traditional web applications
|
|
83
|
-
* Includes: Session, Cookie parser, Static files, CORS, Helmet
|
|
84
|
-
*/
|
|
85
|
-
web: {
|
|
86
|
-
name: "web",
|
|
87
|
-
description: "Configuration for traditional web applications with sessions",
|
|
88
|
-
tags: ["web", "frontend", "session"],
|
|
89
|
-
middleware: [
|
|
90
|
-
{ name: "Cors", options: { origin: true } },
|
|
91
|
-
{ name: "Helmet", options: {} },
|
|
92
|
-
{ name: "BodyParser", options: { limit: "5mb" } },
|
|
93
|
-
{
|
|
94
|
-
name: "UrlEncodedParser",
|
|
95
|
-
options: { extended: true },
|
|
96
|
-
},
|
|
97
|
-
{ name: "CookieParser", options: undefined, optional: true },
|
|
98
|
-
{ name: "Compression", options: {} },
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
/**
|
|
102
|
-
* Microservice Preset - Lightweight for service-to-service communication
|
|
103
|
-
* Minimal middleware for maximum performance
|
|
104
|
-
*/
|
|
105
|
-
microservice: {
|
|
106
|
-
name: "microservice",
|
|
107
|
-
description: "Lightweight configuration for microservices",
|
|
108
|
-
tags: ["microservice", "performance", "minimal"],
|
|
109
|
-
middleware: [
|
|
110
|
-
{ name: "BodyParser", options: { limit: "1mb" } },
|
|
111
|
-
{ name: "Compression", options: { level: 6 } },
|
|
112
|
-
],
|
|
113
|
-
},
|
|
114
|
-
/**
|
|
115
|
-
* GraphQL Preset - Optimized for GraphQL APIs
|
|
116
|
-
*/
|
|
117
|
-
graphql: {
|
|
118
|
-
name: "graphql",
|
|
119
|
-
description: "Optimized for GraphQL API servers",
|
|
120
|
-
tags: ["graphql", "api"],
|
|
121
|
-
middleware: [
|
|
122
|
-
{
|
|
123
|
-
name: "Cors",
|
|
124
|
-
options: {
|
|
125
|
-
origin: true,
|
|
126
|
-
methods: ["GET", "POST", "OPTIONS"],
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
{ name: "BodyParser", options: { limit: "50mb" } },
|
|
130
|
-
{ name: "Compression", options: {} },
|
|
131
|
-
],
|
|
132
|
-
},
|
|
133
|
-
/**
|
|
134
|
-
* Minimal Preset - Absolute minimum for simple apps
|
|
135
|
-
*/
|
|
136
|
-
minimal: {
|
|
137
|
-
name: "minimal",
|
|
138
|
-
description: "Minimal configuration with just body parsing",
|
|
139
|
-
tags: ["minimal", "simple"],
|
|
140
|
-
middleware: [
|
|
141
|
-
{ name: "BodyParser", options: {} },
|
|
142
|
-
{
|
|
143
|
-
name: "UrlEncodedParser",
|
|
144
|
-
options: { extended: false },
|
|
145
|
-
},
|
|
146
|
-
],
|
|
147
|
-
},
|
|
148
|
-
/**
|
|
149
|
-
* Secure Preset - Maximum security configuration
|
|
150
|
-
*/
|
|
151
|
-
secure: {
|
|
152
|
-
name: "secure",
|
|
153
|
-
description: "Maximum security configuration for sensitive applications",
|
|
154
|
-
tags: ["security", "production", "hardened"],
|
|
155
|
-
middleware: [
|
|
156
|
-
{ name: "Helmet", options: SECURE_HELMET_OPTIONS },
|
|
157
|
-
{
|
|
158
|
-
name: "Cors",
|
|
159
|
-
options: {
|
|
160
|
-
origin: false, // Must be explicitly configured
|
|
161
|
-
credentials: true,
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
{ name: "RateLimiter", options: PRODUCTION_RATE_LIMIT_OPTIONS },
|
|
165
|
-
{ name: "BodyParser", options: { limit: "1mb" } },
|
|
166
|
-
{
|
|
167
|
-
name: "UrlEncodedParser",
|
|
168
|
-
options: { extended: false, limit: "1mb" },
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
},
|
|
172
|
-
/**
|
|
173
|
-
* Development Preset - Verbose logging and relaxed security
|
|
174
|
-
*/
|
|
175
|
-
development: {
|
|
176
|
-
name: "development",
|
|
177
|
-
description: "Development-friendly with logging and relaxed security",
|
|
178
|
-
tags: ["development", "debug", "logging"],
|
|
179
|
-
middleware: [
|
|
180
|
-
{ name: "Cors", options: { origin: true } },
|
|
181
|
-
{ name: "BodyParser", options: { limit: "50mb" } },
|
|
182
|
-
{
|
|
183
|
-
name: "UrlEncodedParser",
|
|
184
|
-
options: { extended: true },
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
name: "Morgan",
|
|
188
|
-
options: "dev",
|
|
189
|
-
optional: true,
|
|
190
|
-
},
|
|
191
|
-
{ name: "Compression", options: {}, optional: true },
|
|
192
|
-
],
|
|
193
|
-
},
|
|
194
|
-
/**
|
|
195
|
-
* Production Preset - Optimized for production deployment
|
|
196
|
-
*/
|
|
197
|
-
production: {
|
|
198
|
-
name: "production",
|
|
199
|
-
description: "Production-optimized with security and performance",
|
|
200
|
-
tags: ["production", "performance", "security"],
|
|
201
|
-
middleware: [
|
|
202
|
-
{ name: "Helmet", options: {} },
|
|
203
|
-
{ name: "Cors", options: API_CORS_OPTIONS },
|
|
204
|
-
{ name: "RateLimiter", options: PRODUCTION_RATE_LIMIT_OPTIONS },
|
|
205
|
-
{
|
|
206
|
-
name: "Compression",
|
|
207
|
-
options: { level: 6, threshold: 1024 },
|
|
208
|
-
},
|
|
209
|
-
{ name: "BodyParser", options: { limit: "10mb" } },
|
|
210
|
-
{
|
|
211
|
-
name: "UrlEncodedParser",
|
|
212
|
-
options: { extended: true },
|
|
213
|
-
},
|
|
214
|
-
],
|
|
215
|
-
},
|
|
216
|
-
};
|
|
217
|
-
/**
|
|
218
|
-
* Get a preset by name.
|
|
219
|
-
*
|
|
220
|
-
* @param name - The preset name
|
|
221
|
-
* @returns The preset configuration or undefined
|
|
222
|
-
* @public API
|
|
223
|
-
*/
|
|
224
|
-
export function getPreset(name) {
|
|
225
|
-
return MIDDLEWARE_PRESETS[name];
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Get all available preset names.
|
|
229
|
-
*
|
|
230
|
-
* @returns Array of preset names
|
|
231
|
-
* @public API
|
|
232
|
-
*/
|
|
233
|
-
export function getPresetNames() {
|
|
234
|
-
return Object.keys(MIDDLEWARE_PRESETS);
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Get presets by tag.
|
|
238
|
-
*
|
|
239
|
-
* @param tag - The tag to filter by
|
|
240
|
-
* @returns Array of matching presets
|
|
241
|
-
* @public API
|
|
242
|
-
*/
|
|
243
|
-
export function getPresetsByTag(tag) {
|
|
244
|
-
return Object.values(MIDDLEWARE_PRESETS).filter((preset) => preset.tags?.includes(tag));
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Create a custom preset.
|
|
248
|
-
*
|
|
249
|
-
* @param config - The preset configuration
|
|
250
|
-
* @returns The created preset
|
|
251
|
-
* @public API
|
|
252
|
-
*/
|
|
253
|
-
export function createPreset(config) {
|
|
254
|
-
return config;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Merge two presets, with the second overriding the first.
|
|
258
|
-
*
|
|
259
|
-
* @param base - The base preset
|
|
260
|
-
* @param override - The overriding preset
|
|
261
|
-
* @returns Merged preset
|
|
262
|
-
* @public API
|
|
263
|
-
*/
|
|
264
|
-
export function mergePresets(base, override) {
|
|
265
|
-
const mergedMiddleware = [...base.middleware];
|
|
266
|
-
if (override.middleware) {
|
|
267
|
-
for (const overrideMiddleware of override.middleware) {
|
|
268
|
-
const existingIndex = mergedMiddleware.findIndex((m) => m.name === overrideMiddleware.name);
|
|
269
|
-
if (existingIndex >= 0) {
|
|
270
|
-
mergedMiddleware[existingIndex] = {
|
|
271
|
-
...mergedMiddleware[existingIndex],
|
|
272
|
-
...overrideMiddleware,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
mergedMiddleware.push(overrideMiddleware);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
return {
|
|
281
|
-
...base,
|
|
282
|
-
...override,
|
|
283
|
-
middleware: mergedMiddleware,
|
|
284
|
-
tags: [...(base.tags ?? []), ...(override.tags ?? [])],
|
|
285
|
-
};
|
|
286
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Individual middleware configuration within a preset.
|
|
3
|
-
* @public API
|
|
4
|
-
*/
|
|
5
|
-
export interface PresetMiddlewareConfig {
|
|
6
|
-
/** Middleware name (matches the add* method name without 'add' prefix) */
|
|
7
|
-
name: string;
|
|
8
|
-
/** Configuration options for the middleware */
|
|
9
|
-
options?: unknown;
|
|
10
|
-
/** Whether this middleware is optional (won't fail if not installed) */
|
|
11
|
-
optional?: boolean;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Available preset names.
|
|
15
|
-
* @public API
|
|
16
|
-
*/
|
|
17
|
-
export type MiddlewarePresetName = "api" | "web" | "microservice" | "graphql" | "minimal" | "secure" | "development" | "production";
|
|
18
|
-
/**
|
|
19
|
-
* Preset configuration with metadata.
|
|
20
|
-
* @public API
|
|
21
|
-
*/
|
|
22
|
-
export interface MiddlewarePreset {
|
|
23
|
-
/** Preset name */
|
|
24
|
-
name: MiddlewarePresetName;
|
|
25
|
-
/** Human-readable description */
|
|
26
|
-
description: string;
|
|
27
|
-
/** List of middleware to apply */
|
|
28
|
-
middleware: Array<PresetMiddlewareConfig>;
|
|
29
|
-
/** Tags for categorization */
|
|
30
|
-
tags?: Array<string>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Options for applying a preset.
|
|
34
|
-
* @public API
|
|
35
|
-
*/
|
|
36
|
-
export interface ApplyPresetOptions {
|
|
37
|
-
/** Override specific middleware options */
|
|
38
|
-
overrides?: Record<string, unknown>;
|
|
39
|
-
/** Skip specific middleware by name */
|
|
40
|
-
skip?: Array<string>;
|
|
41
|
-
/** Only apply middleware that are already installed */
|
|
42
|
-
onlyInstalled?: boolean;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Built-in middleware presets.
|
|
46
|
-
* @public API
|
|
47
|
-
*/
|
|
48
|
-
export declare const MIDDLEWARE_PRESETS: Record<MiddlewarePresetName, MiddlewarePreset>;
|
|
49
|
-
/**
|
|
50
|
-
* Get a preset by name.
|
|
51
|
-
*
|
|
52
|
-
* @param name - The preset name
|
|
53
|
-
* @returns The preset configuration or undefined
|
|
54
|
-
* @public API
|
|
55
|
-
*/
|
|
56
|
-
export declare function getPreset(name: MiddlewarePresetName): MiddlewarePreset | undefined;
|
|
57
|
-
/**
|
|
58
|
-
* Get all available preset names.
|
|
59
|
-
*
|
|
60
|
-
* @returns Array of preset names
|
|
61
|
-
* @public API
|
|
62
|
-
*/
|
|
63
|
-
export declare function getPresetNames(): Array<MiddlewarePresetName>;
|
|
64
|
-
/**
|
|
65
|
-
* Get presets by tag.
|
|
66
|
-
*
|
|
67
|
-
* @param tag - The tag to filter by
|
|
68
|
-
* @returns Array of matching presets
|
|
69
|
-
* @public API
|
|
70
|
-
*/
|
|
71
|
-
export declare function getPresetsByTag(tag: string): Array<MiddlewarePreset>;
|
|
72
|
-
/**
|
|
73
|
-
* Create a custom preset.
|
|
74
|
-
*
|
|
75
|
-
* @param config - The preset configuration
|
|
76
|
-
* @returns The created preset
|
|
77
|
-
* @public API
|
|
78
|
-
*/
|
|
79
|
-
export declare function createPreset(config: Omit<MiddlewarePreset, "name"> & {
|
|
80
|
-
name: string;
|
|
81
|
-
}): MiddlewarePreset;
|
|
82
|
-
/**
|
|
83
|
-
* Merge two presets, with the second overriding the first.
|
|
84
|
-
*
|
|
85
|
-
* @param base - The base preset
|
|
86
|
-
* @param override - The overriding preset
|
|
87
|
-
* @returns Merged preset
|
|
88
|
-
* @public API
|
|
89
|
-
*/
|
|
90
|
-
export declare function mergePresets(base: MiddlewarePreset, override: Partial<MiddlewarePreset>): MiddlewarePreset;
|