f354f46b3f
This PR deprecates declaring a middleware under `pages` in favour of the project root naming it after `middleware` instead of `_middleware`. This is in the context of having a simpler execution model for middleware and also ships some refactor work. There is a ton of a code to be simplified after this deprecation but I think it is best to do it progressively. With this PR, when in development, we will **fail** whenever we find a nested middleware but we do **not** include it in the compiler so if the project is using it, it will no longer work. For production we will **fail** too so it will not be possible to build and deploy a deprecated middleware. The error points to a page that should also be reviewed as part of **documentation**. Aside from the deprecation, this migrates all middleware tests to work with a single middleware. It also splits tests into multiple folders to make them easier to isolate and work with. Finally it ships some small code refactor and simplifications.
87 lines
3.5 KiB
TypeScript
87 lines
3.5 KiB
TypeScript
import { join } from '../shared/lib/isomorphic/path'
|
|
|
|
export const NEXT_PROJECT_ROOT = join(__dirname, '..', '..')
|
|
export const NEXT_PROJECT_ROOT_DIST = join(NEXT_PROJECT_ROOT, 'dist')
|
|
export const NEXT_PROJECT_ROOT_NODE_MODULES = join(
|
|
NEXT_PROJECT_ROOT,
|
|
'node_modules'
|
|
)
|
|
export const NEXT_PROJECT_ROOT_DIST_CLIENT = join(
|
|
NEXT_PROJECT_ROOT_DIST,
|
|
'client'
|
|
)
|
|
export const NEXT_PROJECT_ROOT_DIST_SERVER = join(
|
|
NEXT_PROJECT_ROOT_DIST,
|
|
'server'
|
|
)
|
|
|
|
// Regex for API routes
|
|
export const API_ROUTE = /^\/api(?:\/|$)/
|
|
|
|
// Regex for middleware
|
|
export const MIDDLEWARE_ROUTE = /middleware$/
|
|
export const MIDDLEWARE_FILENAME = 'middleware'
|
|
export const MIDDLEWARE_FILE = `/${MIDDLEWARE_FILENAME}`
|
|
|
|
// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,
|
|
// we have to use a private alias
|
|
export const PAGES_DIR_ALIAS = 'private-next-pages'
|
|
export const DOT_NEXT_ALIAS = 'private-dot-next'
|
|
export const ROOT_DIR_ALIAS = 'private-next-root-dir'
|
|
export const VIEWS_DIR_ALIAS = 'private-next-views-dir'
|
|
|
|
export const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`
|
|
|
|
export const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`
|
|
|
|
export const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`
|
|
|
|
export const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`
|
|
|
|
export const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`
|
|
|
|
export const SERVER_PROPS_EXPORT_ERROR = `pages with \`getServerSideProps\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`
|
|
|
|
export const GSP_NO_RETURNED_VALUE =
|
|
'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'
|
|
export const GSSP_NO_RETURNED_VALUE =
|
|
'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'
|
|
|
|
export const UNSTABLE_REVALIDATE_RENAME_ERROR =
|
|
'The `unstable_revalidate` property is available for general use.\n' +
|
|
'Please use `revalidate` instead.'
|
|
|
|
export const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`
|
|
|
|
export const NON_STANDARD_NODE_ENV = `You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`
|
|
|
|
export const SSG_FALLBACK_EXPORT_ERROR = `Pages with \`fallback\` enabled in \`getStaticPaths\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`
|
|
|
|
export const ESLINT_DEFAULT_DIRS = [
|
|
'pages',
|
|
'components',
|
|
'lib',
|
|
'src/pages',
|
|
'src/components',
|
|
'src/lib',
|
|
]
|
|
|
|
export const ESLINT_PROMPT_VALUES = [
|
|
{
|
|
title: 'Strict',
|
|
recommended: true,
|
|
config: {
|
|
extends: 'next/core-web-vitals',
|
|
},
|
|
},
|
|
{
|
|
title: 'Base',
|
|
config: {
|
|
extends: 'next',
|
|
},
|
|
},
|
|
{
|
|
title: 'Cancel',
|
|
config: null,
|
|
},
|
|
]
|