import React from 'react' import PropTypes from 'prop-types' import { NextComponentType, IContext } from 'next-server/dist/lib/utils' import { IPublicRouterInstance } from './router'; export type WithRouterProps = { router: IPublicRouterInstance, } export type ExcludeRouterProps

= Pick> export default function withRouter

(ComposedComponent: NextComponentType): React.ComponentClass> { class WithRouteWrapper extends React.Component> { static displayName?: string static getInitialProps?: any static contextTypes = { router: PropTypes.object, } context!: WithRouterProps render() { return } } WithRouteWrapper.getInitialProps = ComposedComponent.getInitialProps if (process.env.NODE_ENV !== 'production') { const name = ComposedComponent.displayName || ComposedComponent.name || 'Unknown' WithRouteWrapper.displayName = `withRouter(${name})` } return WithRouteWrapper }