| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // src/compose.ts
- var compose = (middleware, onError, onNotFound) => {
- return (context, next) => {
- let index = -1;
- return dispatch(0);
- async function dispatch(i) {
- if (i <= index) {
- throw new Error("next() called multiple times");
- }
- index = i;
- let res;
- let isError = false;
- let handler;
- if (middleware[i]) {
- handler = middleware[i][0][0];
- context.req.routeIndex = i;
- } else {
- handler = i === middleware.length && next || void 0;
- }
- if (handler) {
- try {
- res = await handler(context, () => dispatch(i + 1));
- } catch (err) {
- if (err instanceof Error && onError) {
- context.error = err;
- res = await onError(err, context);
- isError = true;
- } else {
- throw err;
- }
- }
- } else {
- if (context.finalized === false && onNotFound) {
- res = await onNotFound(context);
- }
- }
- if (res && (context.finalized === false || isError)) {
- context.res = res;
- }
- return context;
- }
- };
- };
- export {
- compose
- };
|