import React from 'react' import { NextComponentType, NextPageContext } from '../next-server/lib/utils' import { NextRouter, useRouter } from './router' export type WithRouterProps = { router: NextRouter } export type ExcludeRouterProps

= Pick< P, Exclude > export default function withRouter< P extends WithRouterProps, C = NextPageContext >( ComposedComponent: NextComponentType ): React.ComponentType> { function WithRouterWrapper(props: any) { return } WithRouterWrapper.getInitialProps = ComposedComponent.getInitialProps // This is needed to allow checking for custom getInitialProps in _app ;(WithRouterWrapper as any).origGetInitialProps = (ComposedComponent as any).origGetInitialProps if (process.env.NODE_ENV !== 'production') { const name = ComposedComponent.displayName || ComposedComponent.name || 'Unknown' WithRouterWrapper.displayName = `withRouter(${name})` } return WithRouterWrapper }