rsnext/packages/next/build
Vu Van Dung 6bbb52edfe
Allow generateStaticParams to be a synchronous function in app directory (#42942)
<!--
Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change that you're making:
-->

## Summary

In `appDir`, currerntly `generateStaticParams` must be an `async`
function, even if no data fetching or asynchronous operations are
involved. For example, with this

```ts
// app/[slug]/page.tsx
export async function generateStaticParams() {
  return [{ slug: "Hello" }];
}
```

if I remove the `async` keyword, `next build` type checking will fail
with a rather unclear error message

```
Type error: Page "app/[slug]/page.tsx" does not match the required types of a Next.js Page.
```

However `next dev` still works fine, and after applying the type change
in this PR, `next build` and `next start` will also work fine.

Considering that `getStaticPaths` can be synchronous, this requirement
of `async` is pretty confusing. Many people have reported this type
error for not marking `generateStaticParams` as `async` (me included).

This PR lifts the restriction and allows `generateStaticParams` to be
synchronous. (If it's intentional that `generateStaticParams` must be
asynchronous, feel free to close this PR, but I don't think that
restriction is a good idea...)

Since I cannot find any test cases on the type checking process, I'm a
bit unsure in how to write a test case for this... or if a test case is
even necessary at all.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2022-11-16 14:25:20 -08:00
..
analysis Add missing matcher support (#42660) 2022-11-08 16:48:27 -08:00
babel Fix @next/font imports from outside of the root directory (#42678) 2022-11-09 13:22:45 -08:00
jest feat(jest): respect transpilePackages in tests (#42987) 2022-11-16 11:55:06 -08:00
output Remove webpack4 types (#39631) 2022-08-16 09:55:37 +00:00
polyfills Fix global process testing for the process polyfill (#33220) 2022-01-13 16:44:55 +00:00
swc feat(next/swc): allow to run custom turbopack binary (#42656) 2022-11-14 21:24:31 -08:00
webpack Allow generateStaticParams to be a synchronous function in app directory (#42942) 2022-11-16 14:25:20 -08:00
compiler.ts Remove webpack4 types (#39631) 2022-08-16 09:55:37 +00:00
cssnano-simple.js Pre-compile more dependencies (#32627) 2021-12-20 14:01:35 +01:00
entries.ts Alias next public api to esm on edge runtime (#42709) 2022-11-09 19:20:32 -08:00
generate-build-id.ts Fix generateBuildId type that can be async function (#28040) 2021-08-12 22:26:44 +00:00
index.ts App files ending with page registred as page files (#42996) 2022-11-16 13:46:04 -08:00
is-writeable.ts Use fs.promises instead of promisify (#12026) 2020-05-02 00:10:19 -04:00
load-jsconfig.ts Add handling for auto installing TypeScript deps and HMRing tsconfig (#39838) 2022-08-23 13:16:47 -05:00
spinner.ts [Feature] Progress bar for static build (#15297) 2020-08-04 09:58:23 +02:00
utils.ts Colocate styles with special entries (#42506) 2022-11-08 14:49:13 +01:00
webpack-config.ts Fix resolving for esm package with only exports.import condition (#42767) 2022-11-11 00:50:46 +00:00
worker.ts Add handling for static generation in app (#40561) 2022-09-19 18:05:28 +00:00
write-build-id.ts Move code shared between server/client to "shared" folder (#26734) 2021-06-30 11:43:31 +02:00