@openstax/ts-utils 1.25.1-pre2 → 1.25.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/cjs/middleware/apiErrorHandler.d.ts +1 -1
- package/dist/cjs/middleware/apiErrorHandler.js +6 -5
- package/dist/cjs/routing/index.js +10 -4
- package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
- package/dist/esm/middleware/apiErrorHandler.d.ts +1 -1
- package/dist/esm/middleware/apiErrorHandler.js +6 -5
- package/dist/esm/routing/index.js +10 -4
- package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@ export declare type DefaultErrors = {
|
|
|
10
10
|
SessionExpiredError: SessionExpiredError;
|
|
11
11
|
};
|
|
12
12
|
export declare type Handlers<E> = {
|
|
13
|
-
[T in keyof E]
|
|
13
|
+
[T in keyof E]?: (e: E[T], logger: Logger) => ApiResponse<number, any>;
|
|
14
14
|
};
|
|
15
15
|
export declare const defaultHandlers: Handlers<DefaultErrors>;
|
|
16
16
|
/**
|
|
@@ -25,16 +25,17 @@ const createErrorHandler = (inputHandlers) => {
|
|
|
25
25
|
return async (e, logger) => {
|
|
26
26
|
const name = (0, errors_1.isAppError)(e) ? e.constructor.TYPE : e.constructor.name;
|
|
27
27
|
const handler = handlers[name];
|
|
28
|
+
const logLevel = handler ? logger_1.Level.Info : logger_1.Level.Error;
|
|
29
|
+
logger.logEvent(logLevel, {
|
|
30
|
+
name: e.name,
|
|
31
|
+
message: e.message,
|
|
32
|
+
stack: e.stack,
|
|
33
|
+
});
|
|
28
34
|
if (handler) {
|
|
29
35
|
// convincing typescript that this error is the right kind for the handler
|
|
30
36
|
// we looked up based on the errors name is very annoying
|
|
31
37
|
return handler(e, logger);
|
|
32
38
|
}
|
|
33
|
-
logger.logEvent(logger_1.Level.Error, {
|
|
34
|
-
name: e.name,
|
|
35
|
-
message: e.message,
|
|
36
|
-
stack: e.stack,
|
|
37
|
-
});
|
|
38
39
|
return (0, routing_1.apiTextResponse)(500, '500 Error');
|
|
39
40
|
};
|
|
40
41
|
};
|
|
@@ -139,7 +139,10 @@ const bindRoute = (services, appBinder, pathExtractor, matcher) => (route) => {
|
|
|
139
139
|
const path = pathExtractor(request);
|
|
140
140
|
const match = getParamsFromPath(path);
|
|
141
141
|
if ((!matcher || matcher(request, route)) && match) {
|
|
142
|
-
return
|
|
142
|
+
return {
|
|
143
|
+
name: route.name,
|
|
144
|
+
executor: () => route.handler(match.params, boundServiceProvider ? boundServiceProvider({ request, logger }, { route, params: match.params }) : undefined)
|
|
145
|
+
};
|
|
143
146
|
}
|
|
144
147
|
};
|
|
145
148
|
};
|
|
@@ -192,11 +195,13 @@ const makeGetRequestResponder = () => ({ routes, pathExtractor, routeMatcher, er
|
|
|
192
195
|
if (logExtractor) {
|
|
193
196
|
logger.setContext(logExtractor(request));
|
|
194
197
|
}
|
|
198
|
+
logger.log('begin request');
|
|
195
199
|
try {
|
|
196
|
-
const
|
|
197
|
-
if (
|
|
200
|
+
const route = (0, helpers_1.mapFind)(boundRoutes, (route) => route(request, logger));
|
|
201
|
+
if (route) {
|
|
202
|
+
logger.log(`route matched ${route.name}`);
|
|
198
203
|
const result = boundResponseMiddleware ?
|
|
199
|
-
boundResponseMiddleware(executor(), { request, logger }) : executor();
|
|
204
|
+
boundResponseMiddleware(route.executor(), { request, logger }) : route.executor();
|
|
200
205
|
if (isPromise(result) && errorHandler) {
|
|
201
206
|
const errorHandlerWithMiddleware = (e) => boundResponseMiddleware ?
|
|
202
207
|
boundResponseMiddleware(errorHandler(e, logger), { request, logger }) : errorHandler(e, logger);
|
|
@@ -207,6 +212,7 @@ const makeGetRequestResponder = () => ({ routes, pathExtractor, routeMatcher, er
|
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
else if (boundResponseMiddleware) {
|
|
215
|
+
logger.log('no route matched, returning 404');
|
|
210
216
|
return boundResponseMiddleware(undefined, { request, logger });
|
|
211
217
|
}
|
|
212
218
|
}
|