next.ts 626 B

123456789101112131415161718192021222324252627282930313233
  1. import type { IncomingMessage } from 'http';
  2. import type { NextServer, RequestHandler } from 'next/dist/server/next';
  3. type Crowi = {
  4. nextApp: NextServer,
  5. }
  6. type CrowiReq = IncomingMessage & {
  7. crowi: Crowi,
  8. }
  9. type NextDelegatorResult = {
  10. delegateToNext: RequestHandler,
  11. };
  12. const delegator = (crowi: Crowi): NextDelegatorResult => {
  13. const { nextApp } = crowi;
  14. const handle = nextApp.getRequestHandler();
  15. const delegateToNext: RequestHandler = (req: CrowiReq, res): Promise<void> => {
  16. req.crowi = crowi;
  17. return handle(req, res);
  18. };
  19. return {
  20. delegateToNext,
  21. };
  22. };
  23. export default delegator;