No description
Find a file
Javi Velasco 0de109baab
Refactor Page Paths utils and Middleware Plugin (#36576)
This PR brings some significant refactoring in preparation for upcoming middleware changes. Each commit can be reviewed independently, here is a summary of what each one does and the reasoning behind it:
- [Move pagesDir to next-dev-server](f2fe154c00) simply moves the `pagesDir` property to the dev server which is the only place where it is needed. Having it for every server is misleading.
- [Move (de)normalize page path utils to a file page-path-utils.ts](27cedf0871) Moves the functions to normalize and denormalize page paths to a single file that is intended to hold every utility function that transforms page paths. Since those are complementary it makes sense to have them together. I also added explanatory comments on why they are not idempotent and examples for input -> output that I find very useful.
- [Extract removePagePathTail](6b121332aa) This extracts a function to remove the tail on a page path (absolute or relative). I'm sure there will be other contexts where we can use it.
- [Extract getPagePaths and refactor findPageFile](cf2c7b842e) This extracts a function `getPagePaths` that is used to generate an array of paths to inspect when looking for a page file from `findPageFile`. Then it refactors such function to use it parallelizing lookups. This will allow us to print every path we look at when looking for a file which can be useful for debugging. It also adds a `flatten` helper. 
- [Refactor onDemandEntryHandler](4be685c37e) I've found this one quite difficult to understand so it is refactored to use some of the previously mentioned functions and make it easier to read.
- [Extract absolutePagePath util](3bc0783474) Extracts yet another util from the `next-dev-server` that transforms an absolute path into a page name. Of course it adds comments, parameters and examples.
- [Refactor MiddlewarePlugin](c595a2cc62) This is the most significant change. The logic here was very hard to understand so it is totally redistributed with comments. This also removes a global variable `ssrEntries` that was deprecated in favour of module metadata added to Webpack from loaders keeping less dependencies. It also adds types and makes a clear distinction between phases where we statically analyze the code, find metadata and generate the manifest file cc @shuding @huozhi 

EDIT: 
- [Split page path utils](158fb002d0) After seeing one of the utils was being used by the client while it was defined originally in the server, with this PR we are splitting the util into multiple files and moving it to `shared/lib` in order to make explicit that those can be also imported from client.
2022-04-30 11:19:27 +00:00
.github Support swc parse api in WASM (#36482) 2022-04-27 00:59:02 +00:00
.vscode Additional bench tracing improvements (#29325) 2021-09-27 12:57:37 +02:00
bench Send build trace to datadog in CI (#35306) 2022-03-31 14:37:59 +02:00
docs Adds inline script functionality to next/script for worker and beforeInteractive strategies (#36364) 2022-04-29 15:20:31 +00:00
errors Adds inline script functionality to next/script for worker and beforeInteractive strategies (#36364) 2022-04-29 15:20:31 +00:00
examples docs(examples): Updated Chakra UI examples (#36333) 2022-04-28 12:36:33 +00:00
packages Refactor Page Paths utils and Middleware Plugin (#36576) 2022-04-30 11:19:27 +00:00
scripts Make setup-wasm script work for local dev (#36355) 2022-04-21 15:41:48 -05:00
test Refactor Page Paths utils and Middleware Plugin (#36576) 2022-04-30 11:19:27 +00:00
.alexignore Enable Alex documentation linting for docs (#26598) 2021-06-25 11:40:50 -05:00
.alexrc Add instructions to create pages directory and add an index.js file to it (#35971) 2022-04-15 14:40:37 +02:00
.eslintignore Adds web worker support to <Script /> using Partytown (#34244) 2022-03-11 22:26:46 +00:00
.eslintrc.json test: warn on substr() usage (#35499) 2022-03-24 18:35:33 -04:00
.gitattributes the way towards webpack 5 typings (#29105) 2021-09-21 19:17:16 +02:00
.gitignore Lazy-load postcss (#31762) 2021-11-25 18:41:20 +01:00
.npmrc Remove version prefix 2018-10-02 01:35:56 +02:00
.prettierignore fixes to allow lazy compilation for import() (#32441) 2021-12-14 11:33:04 +01:00
.prettierignore_staged Extract next-swc Rust code into its own package (#31635) 2021-11-21 12:59:56 +01:00
.prettierrc.json Prettier trailingComma default value to es5 since 2.0 (#14391) 2020-06-22 13:25:24 +02:00
azure-pipelines.yml Update azure config (#33999) 2022-02-04 13:42:22 -06:00
CODE_OF_CONDUCT.md updated code of conduct to v2.1 (#34208) 2022-02-10 18:11:42 -06:00
contributing.md docs: clarify triaging (#36507) 2022-04-27 13:52:57 +02:00
jest.config.js Don't swallow test failures caused by POSIX signals (#32688) 2021-12-21 12:52:07 -06:00
lerna.json v12.1.6-canary.15 2022-04-29 11:54:57 -05:00
license.md Update license year 2022-01-13 16:02:34 +01:00
lint-staged.config.js Replace CLIEngine with ESLint (#25801) 2021-06-09 13:54:10 +02:00
package.json Bump react dev dep to 18.1 (#36491) 2022-04-28 11:29:30 +02:00
plopfile.js Clarify test types during scaffolding (#34638) 2022-02-21 12:09:32 -06:00
readme.md Monorepo (#5341) 2018-10-01 01:02:10 +02:00
release.js Fix labels for release sections 2021-11-21 13:11:54 +01:00
run-tests.js Continue testing react v17 with e2e tests (#35787) 2022-03-31 17:35:00 -05:00
SECURITY.md Add link to security email directly. (#33358) 2022-01-15 21:33:43 -06:00
skip-docs-change.js Update repo scripts to separate folder (#26787) 2021-07-01 13:41:27 +02:00
test-file.txt Add additional file serving tests (#12479) 2020-05-04 11:58:19 -05:00
tsconfig-tsec.json Integrate tsec into the linting process (#33746) 2022-02-24 16:59:18 -08:00
tsconfig.json Update test set-up to leverage playwright when able to (#28634) 2021-09-13 14:36:25 +02:00
tsec-exemptions.json Integrate tsec into the linting process (#33746) 2022-02-24 16:59:18 -08:00
UPGRADING.md Move upgrading guide to /docs (#10727) 2020-02-28 23:46:18 +01:00
vercel.json Silence GH Comments for Preview URLs (#18766) 2020-11-03 21:59:47 +00:00
yarn.lock bump styled-jsx to latest (#36554) 2022-04-28 21:12:58 +00:00

Next.js

Getting Started

Visit https://nextjs.org/learn to get started with Next.js.

Documentation

Visit https://nextjs.org/docs to view the full documentation.

Who is using Next.js?

Next.js is used by the world's leading companies. Check out the Next.js Showcase to learn more.

Community

The Next.js community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects.

To chat with other community members you can join the Next.js Discord.

Our Code of Conduct applies to all Next.js community channels.

Contributing

Please see our contributing.md.

Good First Issues

We have a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.

Authors