@zintrust/core 0.4.18 → 0.4.19
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/package.json +1 -1
- package/src/cli/commands/AddCommand.d.ts +16 -0
- package/src/cli/commands/AddCommand.d.ts.map +1 -1
- package/src/cli/commands/AddCommand.js +157 -28
- package/src/cli/commands/DockerCommand.d.ts.map +1 -1
- package/src/cli/commands/DockerCommand.js +32 -4
- package/src/cli/commands/StartCommand.d.ts +7 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +109 -20
- package/src/config/middleware.d.ts +23 -0
- package/src/config/middleware.d.ts.map +1 -1
- package/src/config/middleware.js +66 -31
- package/src/index.d.ts +2 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -3
- package/src/middleware/AuthMiddleware.d.ts +2 -0
- package/src/middleware/AuthMiddleware.d.ts.map +1 -1
- package/src/middleware/AuthMiddleware.js +8 -1
- package/src/middleware/BulletproofAuthMiddleware.d.ts +2 -0
- package/src/middleware/BulletproofAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/BulletproofAuthMiddleware.js +13 -5
- package/src/middleware/CsrfMiddleware.d.ts +2 -0
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +9 -3
- package/src/middleware/ErrorHandlerMiddleware.d.ts +5 -1
- package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -1
- package/src/middleware/ErrorHandlerMiddleware.js +12 -2
- package/src/middleware/JwtAuthMiddleware.d.ts +2 -0
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +39 -4
- package/src/middleware/MiddlewareFailureResponder.d.ts +15 -0
- package/src/middleware/MiddlewareFailureResponder.d.ts.map +1 -0
- package/src/middleware/MiddlewareFailureResponder.js +15 -0
- package/src/middleware/RateLimiter.d.ts +2 -0
- package/src/middleware/RateLimiter.d.ts.map +1 -1
- package/src/middleware/RateLimiter.js +10 -4
- package/src/middleware/ValidationMiddleware.d.ts +11 -6
- package/src/middleware/ValidationMiddleware.d.ts.map +1 -1
- package/src/middleware/ValidationMiddleware.js +48 -19
- package/src/middleware/index.d.ts +1 -0
- package/src/middleware/index.d.ts.map +1 -1
- package/src/middleware/index.js +1 -0
- package/src/runtime/WorkersModule.d.ts.map +1 -1
- package/src/runtime/WorkersModule.js +4 -3
- package/src/security/Xss.d.ts +2 -2
- package/src/security/Xss.d.ts.map +1 -1
- package/src/security/Xss.js +3 -4
- package/src/templates/project/basic/app/Middleware/AuthFailureResponder.ts.tpl +10 -0
- package/src/templates/project/basic/config/middleware.ts.tpl +18 -0
package/src/config/middleware.js
CHANGED
|
@@ -17,7 +17,7 @@ import { Sanitizer } from '../security/Sanitizer.js';
|
|
|
17
17
|
import { Schema } from '../validation/Validator.js';
|
|
18
18
|
export const MiddlewareBody = {
|
|
19
19
|
email: 'email',
|
|
20
|
-
password: 'password',
|
|
20
|
+
password: 'password', //NOSONAR
|
|
21
21
|
name: 'name',
|
|
22
22
|
count: 'count',
|
|
23
23
|
};
|
|
@@ -67,18 +67,31 @@ const resolveUserMutationRateLimit = (loadMiddlewareConfig) => {
|
|
|
67
67
|
'Too many user requests, please try again after 1 minute.',
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
-
function createRateLimitMiddlewares(loadMiddlewareConfig) {
|
|
71
|
-
const fillRateLimit = RateLimiter.create(
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
function createRateLimitMiddlewares(loadMiddlewareConfig, responders) {
|
|
71
|
+
const fillRateLimit = RateLimiter.create({
|
|
72
|
+
...resolveFillRateLimit(loadMiddlewareConfig),
|
|
73
|
+
onFailure: responders.fillRateLimit,
|
|
74
|
+
});
|
|
75
|
+
const authRateLimit = RateLimiter.create({
|
|
76
|
+
...resolveAuthRateLimit(loadMiddlewareConfig),
|
|
77
|
+
onFailure: responders.authRateLimit,
|
|
78
|
+
});
|
|
79
|
+
const userMutationRateLimit = RateLimiter.create({
|
|
80
|
+
...resolveUserMutationRateLimit(loadMiddlewareConfig),
|
|
81
|
+
onFailure: responders.userMutationRateLimit,
|
|
82
|
+
});
|
|
74
83
|
return Object.freeze({
|
|
75
|
-
rateLimit: RateLimiter.create(
|
|
84
|
+
rateLimit: RateLimiter.create({
|
|
85
|
+
windowMs: 60_000,
|
|
86
|
+
max: 100,
|
|
87
|
+
onFailure: responders.rateLimit,
|
|
88
|
+
}),
|
|
76
89
|
fillRateLimit,
|
|
77
90
|
authRateLimit,
|
|
78
91
|
userMutationRateLimit,
|
|
79
92
|
});
|
|
80
93
|
}
|
|
81
|
-
function createAuthValidationMiddlewares() {
|
|
94
|
+
function createAuthValidationMiddlewares(responders) {
|
|
82
95
|
return {
|
|
83
96
|
validateLogin: Validation.createBodyWithSanitization(Schema.typed()
|
|
84
97
|
.required(MiddlewareBody.email)
|
|
@@ -87,7 +100,7 @@ function createAuthValidationMiddlewares() {
|
|
|
87
100
|
.string(MiddlewareBody.password), {
|
|
88
101
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
89
102
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
90
|
-
}),
|
|
103
|
+
}, { onFailure: responders.validateLogin, middlewareKey: 'validateLogin' }),
|
|
91
104
|
validateRegister: Validation.createBodyWithSanitization(Schema.typed()
|
|
92
105
|
.required(MiddlewareBody.name)
|
|
93
106
|
.string(MiddlewareBody.name)
|
|
@@ -100,10 +113,10 @@ function createAuthValidationMiddlewares() {
|
|
|
100
113
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
101
114
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
102
115
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
103
|
-
}),
|
|
116
|
+
}, { onFailure: responders.validateRegister, middlewareKey: 'validateRegister' }),
|
|
104
117
|
};
|
|
105
118
|
}
|
|
106
|
-
function createUserValidationMiddlewares() {
|
|
119
|
+
function createUserValidationMiddlewares(responders) {
|
|
107
120
|
return {
|
|
108
121
|
validateUserStore: Validation.createBodyWithSanitization(Schema.typed()
|
|
109
122
|
.required(MiddlewareBody.name)
|
|
@@ -117,7 +130,7 @@ function createUserValidationMiddlewares() {
|
|
|
117
130
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
118
131
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
119
132
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
120
|
-
}),
|
|
133
|
+
}, { onFailure: responders.validateUserStore, middlewareKey: 'validateUserStore' }),
|
|
121
134
|
validateUserUpdate: Validation.createBodyWithSanitization(Schema.typed()
|
|
122
135
|
.custom(MiddlewareBody.name, (v) => v === undefined || typeof v === 'string', MiddlewareBody.name + ' must be a string')
|
|
123
136
|
.minLength(MiddlewareBody.name, 1)
|
|
@@ -127,34 +140,44 @@ function createUserValidationMiddlewares() {
|
|
|
127
140
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
128
141
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
129
142
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
130
|
-
}),
|
|
143
|
+
}, { onFailure: responders.validateUserUpdate, middlewareKey: 'validateUserUpdate' }),
|
|
131
144
|
validateUserFill: Validation.createBodyWithSanitization(Schema.typed()
|
|
132
145
|
.custom(MiddlewareBody.count, (v) => v === undefined || (typeof v === 'number' && Number.isFinite(v)), MiddlewareBody.count + ' must be a number')
|
|
133
146
|
.min(MiddlewareBody.count, 1)
|
|
134
|
-
.max(MiddlewareBody.count, 100)),
|
|
147
|
+
.max(MiddlewareBody.count, 100), undefined, { onFailure: responders.validateUserFill, middlewareKey: 'validateUserFill' }),
|
|
135
148
|
};
|
|
136
149
|
}
|
|
137
|
-
function createValidationMiddlewares() {
|
|
150
|
+
function createValidationMiddlewares(responders) {
|
|
138
151
|
return Object.freeze({
|
|
139
|
-
...createAuthValidationMiddlewares(),
|
|
140
|
-
...createUserValidationMiddlewares(),
|
|
152
|
+
...createAuthValidationMiddlewares(responders),
|
|
153
|
+
...createUserValidationMiddlewares(responders),
|
|
141
154
|
});
|
|
142
155
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
156
|
+
const resolveMiddlewareResponders = (loadMiddlewareConfig) => {
|
|
157
|
+
if (!isObject(loadMiddlewareConfig.responders))
|
|
158
|
+
return {};
|
|
159
|
+
const entries = Object.entries(loadMiddlewareConfig.responders).filter((entry) => {
|
|
160
|
+
const [name, responder] = entry;
|
|
161
|
+
return typeof name === 'string' && name.trim() !== '' && typeof responder === 'function';
|
|
162
|
+
});
|
|
163
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
164
|
+
};
|
|
165
|
+
function createSharedMiddlewares(loadMiddlewareConfig, responders) {
|
|
166
|
+
const rateLimits = createRateLimitMiddlewares(loadMiddlewareConfig, responders);
|
|
167
|
+
const validations = createValidationMiddlewares(responders);
|
|
146
168
|
return Object.freeze({
|
|
147
169
|
log: LoggingMiddleware.create(),
|
|
148
|
-
error: ErrorHandlerMiddleware.create(),
|
|
170
|
+
error: ErrorHandlerMiddleware.create({ onFailure: responders.error }),
|
|
149
171
|
security: SecurityMiddleware.create(),
|
|
150
172
|
sanitizeBody: SanitizeBodyMiddleware.create(),
|
|
151
173
|
...rateLimits,
|
|
152
174
|
csrf: CsrfMiddleware.create({
|
|
153
175
|
skipPaths: loadMiddlewareConfig?.skipPaths ?? [],
|
|
176
|
+
onFailure: responders.csrf,
|
|
154
177
|
}),
|
|
155
|
-
auth: AuthMiddleware.create(),
|
|
156
|
-
jwt: JwtAuthMiddleware.create(),
|
|
157
|
-
bulletproof: BulletproofAuthMiddleware.create(),
|
|
178
|
+
auth: AuthMiddleware.create({ onUnauthorized: responders.auth }),
|
|
179
|
+
jwt: JwtAuthMiddleware.create({ onUnauthorized: responders.jwt }),
|
|
180
|
+
bulletproof: BulletproofAuthMiddleware.create({ onUnauthorized: responders.bulletproof }),
|
|
158
181
|
...validations,
|
|
159
182
|
});
|
|
160
183
|
}
|
|
@@ -174,6 +197,16 @@ const resolveProjectRouteMiddlewares = (loadMiddlewareConfig) => {
|
|
|
174
197
|
});
|
|
175
198
|
return Object.fromEntries(entries);
|
|
176
199
|
};
|
|
200
|
+
const applySharedMiddlewareOverrides = (shared, projectRoute) => {
|
|
201
|
+
const overridden = { ...shared };
|
|
202
|
+
for (const key of Object.keys(MiddlewareKeys)) {
|
|
203
|
+
const candidate = projectRoute[key];
|
|
204
|
+
if (typeof candidate === 'function') {
|
|
205
|
+
overridden[key] = candidate;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return Object.freeze(overridden);
|
|
209
|
+
};
|
|
177
210
|
export function createMiddlewareConfig() {
|
|
178
211
|
const loadMiddlewareConfig = StartupConfigFileRegistry.get(StartupConfigFile.Middleware) ?? {};
|
|
179
212
|
const skipPathsFromEnv = Env.get('CSRF_SKIP_PATHS', '')
|
|
@@ -186,23 +219,25 @@ export function createMiddlewareConfig() {
|
|
|
186
219
|
? loadMiddlewareConfig.skipPaths
|
|
187
220
|
: skipPathsFromEnv,
|
|
188
221
|
};
|
|
189
|
-
const
|
|
222
|
+
const responders = resolveMiddlewareResponders(effectiveMiddlewareConfig);
|
|
223
|
+
const shared = createSharedMiddlewares(effectiveMiddlewareConfig, responders);
|
|
190
224
|
const projectGlobal = resolveProjectGlobalMiddlewares(effectiveMiddlewareConfig);
|
|
191
225
|
const projectRoute = resolveProjectRouteMiddlewares(effectiveMiddlewareConfig);
|
|
226
|
+
const resolvedShared = applySharedMiddlewareOverrides(shared, projectRoute);
|
|
192
227
|
const middlewareConfigObj = {
|
|
193
228
|
global: [
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
229
|
+
resolvedShared.log,
|
|
230
|
+
resolvedShared.error,
|
|
231
|
+
resolvedShared.security,
|
|
232
|
+
resolvedShared.rateLimit,
|
|
198
233
|
fileUploadMiddleware,
|
|
199
234
|
bodyParsingMiddleware,
|
|
200
|
-
|
|
201
|
-
|
|
235
|
+
resolvedShared.csrf,
|
|
236
|
+
resolvedShared.sanitizeBody,
|
|
202
237
|
...projectGlobal,
|
|
203
238
|
],
|
|
204
239
|
route: {
|
|
205
|
-
...
|
|
240
|
+
...resolvedShared,
|
|
206
241
|
...projectRoute,
|
|
207
242
|
},
|
|
208
243
|
};
|
package/src/index.d.ts
CHANGED
|
@@ -102,6 +102,8 @@ export { EventDispatcher } from './events/EventDispatcher';
|
|
|
102
102
|
export type { EventListener, EventMap, IEventDispatcher } from './events/EventDispatcher';
|
|
103
103
|
export { SessionManager } from './session/SessionManager';
|
|
104
104
|
export type { ISession, ISessionManager, SessionData, SessionManagerOptions, } from './session/SessionManager';
|
|
105
|
+
export { defaultMiddlewareFailureResponder, respondWithMiddlewareFailure, } from './middleware/MiddlewareFailureResponder';
|
|
106
|
+
export type { MiddlewareFailureContext, MiddlewareFailureResponder, } from './middleware/MiddlewareFailureResponder';
|
|
105
107
|
export { Env } from './config/env';
|
|
106
108
|
export { Logger } from './config/logger';
|
|
107
109
|
export { LocalD1Resolver } from './cli/d1/LocalD1Resolver';
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zintrust/core v0.4.
|
|
2
|
+
* @zintrust/core v0.4.19
|
|
3
3
|
*
|
|
4
4
|
* ZinTrust Framework - Production-Grade TypeScript Backend
|
|
5
5
|
* Built for performance, type safety, and exceptional developer experience
|
|
6
6
|
*
|
|
7
7
|
* Build Information:
|
|
8
|
-
* Built: 2026-03-
|
|
8
|
+
* Built: 2026-03-26T07:03:17.846Z
|
|
9
9
|
* Node: >=20.0.0
|
|
10
10
|
* License: MIT
|
|
11
11
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Available at runtime for debugging and health checks
|
|
22
22
|
*/
|
|
23
23
|
export const ZINTRUST_VERSION = '0.1.41';
|
|
24
|
-
export const ZINTRUST_BUILD_DATE = '2026-03-
|
|
24
|
+
export const ZINTRUST_BUILD_DATE = '2026-03-26T07:03:17.811Z'; // Replaced during build
|
|
25
25
|
export { Application } from './boot/Application.js';
|
|
26
26
|
export { AwsSigV4 } from './common/index.js';
|
|
27
27
|
export { SignedRequest } from './security/SignedRequest.js';
|
|
@@ -106,6 +106,8 @@ export { RUNTIME_PLATFORM, RuntimeServices, detectCloudflareWorkers, detectRunti
|
|
|
106
106
|
export { EventDispatcher } from './events/EventDispatcher.js';
|
|
107
107
|
// Sessions
|
|
108
108
|
export { SessionManager } from './session/SessionManager.js';
|
|
109
|
+
// Middleware responders
|
|
110
|
+
export { defaultMiddlewareFailureResponder, respondWithMiddlewareFailure, } from './middleware/MiddlewareFailureResponder.js';
|
|
109
111
|
// Config (core-owned)
|
|
110
112
|
export { Env } from './config/env.js';
|
|
111
113
|
export { Logger } from './config/logger.js';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
1
2
|
import type { Middleware } from './MiddlewareStack';
|
|
2
3
|
export interface AuthOptions {
|
|
3
4
|
headerName?: string;
|
|
4
5
|
message?: string;
|
|
6
|
+
onUnauthorized?: MiddlewareFailureResponder;
|
|
5
7
|
}
|
|
6
8
|
export declare const AuthMiddleware: Readonly<{
|
|
7
9
|
create(options?: AuthOptions): Middleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C;AAED,eAAO,MAAM,cAAc;qBACT,WAAW,GAAQ,UAAU;EAsB7C,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
1
2
|
export const AuthMiddleware = Object.freeze({
|
|
2
3
|
create(options = {}) {
|
|
3
4
|
const headerName = (options.headerName ?? 'authorization').toLowerCase();
|
|
@@ -6,7 +7,13 @@ export const AuthMiddleware = Object.freeze({
|
|
|
6
7
|
const header = req.getHeader(headerName);
|
|
7
8
|
const value = Array.isArray(header) ? header[0] : header;
|
|
8
9
|
if (typeof value !== 'string' || value.trim() === '') {
|
|
9
|
-
|
|
10
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
11
|
+
middleware: 'auth',
|
|
12
|
+
reason: 'missing_authorization_header',
|
|
13
|
+
statusCode: 401,
|
|
14
|
+
message,
|
|
15
|
+
body: { error: message },
|
|
16
|
+
});
|
|
10
17
|
return;
|
|
11
18
|
}
|
|
12
19
|
await next();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IRequest } from '../http/Request';
|
|
2
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
2
3
|
import type { Middleware } from './MiddlewareStack';
|
|
3
4
|
import type { JwtAlgorithm } from '../security/JwtManager';
|
|
4
5
|
import { type NonceReplayVerifier } from '../security/NonceReplay';
|
|
@@ -14,6 +15,7 @@ export type BulletproofAuthContext = {
|
|
|
14
15
|
export interface BulletproofAuthOptions {
|
|
15
16
|
algorithm?: JwtAlgorithm;
|
|
16
17
|
secret?: string;
|
|
18
|
+
onUnauthorized?: MiddlewareFailureResponder;
|
|
17
19
|
/**
|
|
18
20
|
* Signed-request validity window.
|
|
19
21
|
* Default: 60 seconds.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulletproofAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/BulletproofAuthMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BulletproofAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/BulletproofAuthMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,QAAQ,KACV,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAmlBD,eAAO,MAAM,yBAAyB;qBACpB,sBAAsB,GAAQ,UAAU;EAIxD,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { Logger } from '../config/logger.js';
|
|
|
3
3
|
import { securityConfig } from '../config/security.js';
|
|
4
4
|
import { isMaxLength, isMinLength, isNonEmptyString } from '../helper/index.js';
|
|
5
5
|
import { RequestContext } from '../http/RequestContext.js';
|
|
6
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
6
7
|
import { JwtManager } from '../security/JwtManager.js';
|
|
7
8
|
import { JwtSessions } from '../security/JwtSessions.js';
|
|
8
9
|
import { NonceReplay } from '../security/NonceReplay.js';
|
|
@@ -59,8 +60,15 @@ const markAuthContext = (req, ctx) => {
|
|
|
59
60
|
req.context['auth'] = ctx;
|
|
60
61
|
req.context['authStrategy'] = 'bulletproof';
|
|
61
62
|
};
|
|
62
|
-
const respond401 = (res, message) => {
|
|
63
|
-
|
|
63
|
+
const respond401 = async (req, res, message, responder, reason = 'unauthorized', error) => {
|
|
64
|
+
await respondWithMiddlewareFailure(req, res, responder, {
|
|
65
|
+
middleware: 'bulletproof',
|
|
66
|
+
reason,
|
|
67
|
+
statusCode: 401,
|
|
68
|
+
message,
|
|
69
|
+
body: { error: message },
|
|
70
|
+
error,
|
|
71
|
+
});
|
|
64
72
|
};
|
|
65
73
|
const parseBulletproofHeaders = (params) => {
|
|
66
74
|
const deviceId = getHeaderString(params.req, params.deviceIdHeader).trim();
|
|
@@ -397,7 +405,7 @@ const attachAuth = (req, result) => {
|
|
|
397
405
|
req.context['timezone'] = result.parsed.timezone;
|
|
398
406
|
}
|
|
399
407
|
};
|
|
400
|
-
const createHandler = (resolved) => {
|
|
408
|
+
const createHandler = (resolved, onUnauthorized) => {
|
|
401
409
|
return async (req, res, next) => {
|
|
402
410
|
if (req.context?.['authStrategy'] === 'bulletproof' && req.user !== undefined) {
|
|
403
411
|
await next();
|
|
@@ -405,7 +413,7 @@ const createHandler = (resolved) => {
|
|
|
405
413
|
}
|
|
406
414
|
const result = await authenticate({ req, resolved });
|
|
407
415
|
if (!result.ok) {
|
|
408
|
-
respond401(res, result.message);
|
|
416
|
+
await respond401(req, res, result.message, onUnauthorized);
|
|
409
417
|
return;
|
|
410
418
|
}
|
|
411
419
|
attachAuth(req, result);
|
|
@@ -415,7 +423,7 @@ const createHandler = (resolved) => {
|
|
|
415
423
|
export const BulletproofAuthMiddleware = Object.freeze({
|
|
416
424
|
create(options = {}) {
|
|
417
425
|
const resolved = resolveBulletproof(options);
|
|
418
|
-
return createHandler(resolved);
|
|
426
|
+
return createHandler(resolved, options.onUnauthorized);
|
|
419
427
|
},
|
|
420
428
|
});
|
|
421
429
|
export default BulletproofAuthMiddleware;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Protects against Cross-Site Request Forgery attacks
|
|
4
4
|
* Uses CsrfTokenManager for token generation and validation
|
|
5
5
|
*/
|
|
6
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
6
7
|
import type { Middleware } from './MiddlewareStack';
|
|
7
8
|
export interface CsrfOptions {
|
|
8
9
|
cookieName?: string;
|
|
@@ -18,6 +19,7 @@ export interface CsrfOptions {
|
|
|
18
19
|
* - `/api/v1/auth/login`
|
|
19
20
|
*/
|
|
20
21
|
skipPaths?: ReadonlyArray<string>;
|
|
22
|
+
onFailure?: MiddlewareFailureResponder;
|
|
21
23
|
}
|
|
22
24
|
export declare const CsrfMiddleware: Readonly<{
|
|
23
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAK9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAK9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AAkDD,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACa,WAAW,GAAQ,UAAU;EAkE7C,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Uses CsrfTokenManager for token generation and validation
|
|
5
5
|
*/
|
|
6
6
|
import { Logger } from '../config/logger.js';
|
|
7
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
7
8
|
import { CsrfTokenManager } from '../security/CsrfTokenManager.js';
|
|
8
9
|
import { SessionManager } from '../session/SessionManager.js';
|
|
9
10
|
const DEFAULT_OPTIONS = {
|
|
@@ -93,10 +94,15 @@ export const CsrfMiddleware = Object.freeze({
|
|
|
93
94
|
const token = tokenFromHeader || tokenFromBody || tokenFromCookie;
|
|
94
95
|
if (!token || !(await manager.validateToken(sessionId, token))) {
|
|
95
96
|
Logger.warn(`CSRF validation failed for session ${sessionId}`);
|
|
96
|
-
res.
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
await respondWithMiddlewareFailure(req, res, config.onFailure, {
|
|
98
|
+
middleware: 'csrf',
|
|
99
|
+
reason: 'invalid_csrf_token',
|
|
100
|
+
statusCode: 403,
|
|
99
101
|
message: 'Invalid CSRF token',
|
|
102
|
+
body: {
|
|
103
|
+
error: 'Forbidden',
|
|
104
|
+
message: 'Invalid CSRF token',
|
|
105
|
+
},
|
|
100
106
|
});
|
|
101
107
|
return;
|
|
102
108
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
1
2
|
import type { Middleware } from './MiddlewareStack';
|
|
3
|
+
export interface ErrorHandlerOptions {
|
|
4
|
+
onFailure?: MiddlewareFailureResponder;
|
|
5
|
+
}
|
|
2
6
|
export declare const ErrorHandlerMiddleware: Readonly<{
|
|
3
|
-
create(): Middleware;
|
|
7
|
+
create(options?: ErrorHandlerOptions): Middleware;
|
|
4
8
|
}>;
|
|
5
9
|
export default ErrorHandlerMiddleware;
|
|
6
10
|
//# sourceMappingURL=ErrorHandlerMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorHandlerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/ErrorHandlerMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ErrorHandlerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/ErrorHandlerMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AA0BD,eAAO,MAAM,sBAAsB;qBACjB,mBAAmB,GAAQ,UAAU;EA6CrD,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { Logger } from '../config/logger.js';
|
|
|
3
3
|
import ErrorRouting from '../routes/error.js';
|
|
4
4
|
import { ErrorResponse } from '../http/ErrorResponse.js';
|
|
5
5
|
import { RequestContext } from '../http/RequestContext.js';
|
|
6
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
6
7
|
const isWritableEnded = (res) => {
|
|
7
8
|
if (typeof res.getRaw !== 'function')
|
|
8
9
|
return false;
|
|
@@ -22,7 +23,7 @@ const shouldHideStackFromResponse = (error) => {
|
|
|
22
23
|
candidate.statusCode === 404);
|
|
23
24
|
};
|
|
24
25
|
export const ErrorHandlerMiddleware = Object.freeze({
|
|
25
|
-
create() {
|
|
26
|
+
create(options = {}) {
|
|
26
27
|
return async (req, res, next) => {
|
|
27
28
|
try {
|
|
28
29
|
await next();
|
|
@@ -40,7 +41,16 @@ export const ErrorHandlerMiddleware = Object.freeze({
|
|
|
40
41
|
await handleInternalServerErrorWithWrappers(req, res, error, requestId);
|
|
41
42
|
}
|
|
42
43
|
else {
|
|
43
|
-
|
|
44
|
+
const body = ErrorResponse.internalServerError('Internal server error', requestId, includeStack ? error?.stack : undefined);
|
|
45
|
+
await respondWithMiddlewareFailure(req, res, options.onFailure, {
|
|
46
|
+
middleware: 'error',
|
|
47
|
+
reason: 'unhandled_exception',
|
|
48
|
+
statusCode: 500,
|
|
49
|
+
message: 'Internal server error',
|
|
50
|
+
body,
|
|
51
|
+
error,
|
|
52
|
+
requestId,
|
|
53
|
+
});
|
|
44
54
|
}
|
|
45
55
|
}
|
|
46
56
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
1
2
|
import type { Middleware } from './MiddlewareStack';
|
|
2
3
|
import type { JwtAlgorithm } from '../security/JwtManager';
|
|
3
4
|
export interface JwtAuthOptions {
|
|
4
5
|
algorithm?: JwtAlgorithm;
|
|
5
6
|
secret?: string;
|
|
7
|
+
onUnauthorized?: MiddlewareFailureResponder;
|
|
6
8
|
}
|
|
7
9
|
export declare const JwtAuthMiddleware: Readonly<{
|
|
8
10
|
create(options?: JwtAuthOptions): Middleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwtAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/JwtAuthMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAItE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"JwtAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/JwtAuthMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAItE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C;AAuCD,eAAO,MAAM,iBAAiB;qBACZ,cAAc,GAAQ,UAAU;EA6FhD,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { Logger } from '../config/logger.js';
|
|
2
2
|
import { securityConfig } from '../config/security.js';
|
|
3
3
|
import { RequestContext } from '../http/RequestContext.js';
|
|
4
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
4
5
|
import { JwtManager } from '../security/JwtManager.js';
|
|
5
6
|
import { JwtSessions } from '../security/JwtSessions.js';
|
|
7
|
+
const getJwtFailureReason = (error) => {
|
|
8
|
+
if (typeof error !== 'object' || error === null)
|
|
9
|
+
return 'invalid_token';
|
|
10
|
+
const candidate = error;
|
|
11
|
+
if (candidate.name === 'TokenExpiredError' || candidate.code === 'TOKEN_EXPIRED') {
|
|
12
|
+
return 'expired_token';
|
|
13
|
+
}
|
|
14
|
+
return 'invalid_token';
|
|
15
|
+
};
|
|
6
16
|
const getHeaderValue = (value) => {
|
|
7
17
|
if (Array.isArray(value))
|
|
8
18
|
return typeof value[0] === 'string' ? value[0] : '';
|
|
@@ -44,19 +54,37 @@ export const JwtAuthMiddleware = Object.freeze({
|
|
|
44
54
|
}
|
|
45
55
|
const authorizationHeader = getHeaderValue(req.getHeader('authorization'));
|
|
46
56
|
if (authorizationHeader === '') {
|
|
47
|
-
|
|
57
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
58
|
+
middleware: 'jwt',
|
|
59
|
+
reason: 'missing_authorization_header',
|
|
60
|
+
statusCode: 401,
|
|
61
|
+
message: 'Missing authorization header',
|
|
62
|
+
body: { error: 'Missing authorization header' },
|
|
63
|
+
});
|
|
48
64
|
return;
|
|
49
65
|
}
|
|
50
66
|
const token = getBearerToken(authorizationHeader);
|
|
51
67
|
if (token === null) {
|
|
52
|
-
|
|
68
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
69
|
+
middleware: 'jwt',
|
|
70
|
+
reason: 'invalid_authorization_header_format',
|
|
71
|
+
statusCode: 401,
|
|
72
|
+
message: 'Invalid authorization header format',
|
|
73
|
+
body: { error: 'Invalid authorization header format' },
|
|
74
|
+
});
|
|
53
75
|
return;
|
|
54
76
|
}
|
|
55
77
|
try {
|
|
56
78
|
const payload = jwt.verify(token, algorithm);
|
|
57
79
|
// Session allowlist: token must exist in the session store to be accepted.
|
|
58
80
|
if (!(await JwtSessions.isActive(token))) {
|
|
59
|
-
|
|
81
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
82
|
+
middleware: 'jwt',
|
|
83
|
+
reason: 'inactive_session',
|
|
84
|
+
statusCode: 401,
|
|
85
|
+
message: 'Invalid or expired token',
|
|
86
|
+
body: { error: 'Invalid or expired token' },
|
|
87
|
+
});
|
|
60
88
|
return;
|
|
61
89
|
}
|
|
62
90
|
req.user = payload;
|
|
@@ -77,7 +105,14 @@ export const JwtAuthMiddleware = Object.freeze({
|
|
|
77
105
|
algorithm,
|
|
78
106
|
error: error instanceof Error ? error.message : String(error),
|
|
79
107
|
});
|
|
80
|
-
|
|
108
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
109
|
+
middleware: 'jwt',
|
|
110
|
+
reason: getJwtFailureReason(error),
|
|
111
|
+
statusCode: 401,
|
|
112
|
+
message: 'Invalid or expired token',
|
|
113
|
+
body: { error: 'Invalid or expired token' },
|
|
114
|
+
error,
|
|
115
|
+
});
|
|
81
116
|
}
|
|
82
117
|
};
|
|
83
118
|
},
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IRequest } from '../http/Request';
|
|
2
|
+
import type { IResponse } from '../http/Response';
|
|
3
|
+
export type MiddlewareFailureContext = Readonly<{
|
|
4
|
+
middleware: string;
|
|
5
|
+
reason: string;
|
|
6
|
+
statusCode: number;
|
|
7
|
+
message: string;
|
|
8
|
+
body: unknown;
|
|
9
|
+
error?: unknown;
|
|
10
|
+
requestId?: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type MiddlewareFailureResponder = (req: IRequest, res: IResponse, context: MiddlewareFailureContext) => void | Promise<void>;
|
|
13
|
+
export declare const defaultMiddlewareFailureResponder: MiddlewareFailureResponder;
|
|
14
|
+
export declare const respondWithMiddlewareFailure: (req: IRequest, res: IResponse, responder: MiddlewareFailureResponder | undefined, context: MiddlewareFailureContext) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=MiddlewareFailureResponder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiddlewareFailureResponder.d.ts","sourceRoot":"","sources":["../../../src/middleware/MiddlewareFailureResponder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CACvC,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,eAAO,MAAM,iCAAiC,EAAE,0BAgB/C,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,WAAW,0BAA0B,GAAG,SAAS,EACjD,SAAS,wBAAwB,KAChC,OAAO,CAAC,IAAI,CAEd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isObject } from '../helper/index.js';
|
|
2
|
+
export const defaultMiddlewareFailureResponder = (_req, res, context) => {
|
|
3
|
+
const statusTarget = res.setStatus(context.statusCode);
|
|
4
|
+
const responseTarget = isObject(statusTarget) ? statusTarget : res;
|
|
5
|
+
if (typeof responseTarget.json === 'function') {
|
|
6
|
+
responseTarget.json(context.body);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (typeof responseTarget.send === 'function') {
|
|
10
|
+
responseTarget.send(JSON.stringify(context.body));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export const respondWithMiddlewareFailure = async (req, res, responder, context) => {
|
|
14
|
+
await (responder ?? defaultMiddlewareFailureResponder)(req, res, context);
|
|
15
|
+
};
|