Skip to content

Commit

Permalink
Merge branch 'canary' into hotfix/reset-scroll-via-router
Browse files Browse the repository at this point in the history
  • Loading branch information
kodiakhq[bot] authored Dec 30, 2020
2 parents 2868ab5 + 3246274 commit 276d042
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 2 deletions.
10 changes: 10 additions & 0 deletions docs/api-reference/next/image.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ description: Enable Image Optimization with the built-in Image component.
</ul>
</details>

<details>
<summary><b>Version History</b></summary>

| Version | Changes |
| --------- | ------------------------ |
| `v10.0.1` | `layout` prop added. |
| `v10.0.0` | `next/image` introduced. |

</details>

> Before moving forward, we recommend you to read [Image Optimization](/docs/basic-features/image-optimization.md) first.
Image Optimization can be enabled via the `Image` component exported by `next/image`.
Expand Down
33 changes: 32 additions & 1 deletion docs/basic-features/data-fetching.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ In addition, we’ll talk briefly about how to fetch data on the client side.

## `getStaticProps` (Static Generation)

<details>
<summary><b>Version History</b></summary>

| Version | Changes |
| --------- | ----------------------------------------------------------------------------------------------------------------- |
| `v10.0.0` | `locale`, `locales`, `defaultLocale`, and `notFound` options added. |
| `v9.5.0` | Stable [Incremental Static Regeneration](https://nextjs.org/blog/next-9-5#stable-incremental-static-regeneration) |
| `v9.3.0` | `getStaticProps` introduced. |

</details>

If you export an `async` function called `getStaticProps` from a page, Next.js will pre-render this page at build time using the props returned by `getStaticProps`.

```jsx
Expand Down Expand Up @@ -364,6 +375,16 @@ This use case is supported by Next.js by the feature called **Preview Mode**. Le

## `getStaticPaths` (Static Generation)

<details>
<summary><b>Version History</b></summary>

| Version | Changes |
| -------- | ----------------------------------------------------------------------------------------------------------------- |
| `v9.5.0` | Stable [Incremental Static Regeneration](https://nextjs.org/blog/next-9-5#stable-incremental-static-regeneration) |
| `v9.3.0` | `getStaticPaths` introduced. |

</details>

If a page has dynamic routes ([documentation](/docs/routing/dynamic-routes.md)) and uses `getStaticProps` it needs to define a list of paths that have to be rendered to HTML at build time.

If you export an `async` function called `getStaticPaths` from a page that uses dynamic routes, Next.js will statically pre-render all the paths specified by `getStaticPaths`.
Expand Down Expand Up @@ -453,7 +474,7 @@ export default Post
<details>
<summary><b>Examples</b></summary>
<ul>
<li><a href="https://static-tweet.now.sh">Static generation of a large number of pages</a></li>
<li><a href="https://static-tweet.vercel.app">Static generation of a large number of pages</a></li>
</ul>
</details>

Expand Down Expand Up @@ -587,6 +608,16 @@ In development (`next dev`), `getStaticPaths` will be called on every request.

## `getServerSideProps` (Server-side Rendering)

<details>
<summary><b>Version History</b></summary>

| Version | Changes |
| --------- | ------------------------------------------------------------------- |
| `v10.0.0` | `locale`, `locales`, `defaultLocale`, and `notFound` options added. |
| `v9.3.0` | `getServerSideProps` introduced. |

</details>

If you export an `async` function called `getServerSideProps` from a page, Next.js will pre-render this page on each request using the data returned by `getServerSideProps`.

```js
Expand Down
12 changes: 11 additions & 1 deletion packages/next/lib/typescript/runTypeCheck.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,17 @@ export async function runTypeCheck(
})
const result = program.emit()

const regexIgnoredFile = /[\\/]__(?:tests|mocks)__[\\/]|(?:spec|test)\.[^\\/]+$/
// Intended to match:
// - pages/test.js
// - pages/apples.test.js
// - pages/__tests__/a.js
//
// But not:
// - pages/contest.js
// - pages/other.js
// - pages/test/a.js
//
const regexIgnoredFile = /[\\/]__(?:tests|mocks)__[\\/]|(?<=[\\/.])(?:spec|test)\.[^\\/]+$/
const allDiagnostics = ts
.getPreEmitDiagnostics(program)
.concat(result.diagnostics)
Expand Down
3 changes: 3 additions & 0 deletions test/integration/typescript-filtered-files/pages/contest.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Below type error is intentional, it helps check that we don't filter this
// file out because it's named con(test).js
export default (): boolean => 'Index page'
17 changes: 17 additions & 0 deletions test/integration/typescript-filtered-files/test/index.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/* eslint-env jest */

import { nextBuild } from 'next-test-utils'
import { join } from 'path'

jest.setTimeout(1000 * 60 * 2)

const appDir = join(__dirname, '..')
describe('TypeScript filtered files', () => {
it('should fail to build the app with a file named con*test*.js', async () => {
const output = await nextBuild(appDir, [], { stdout: true, stderr: true })
expect(output.stdout).not.toMatch(/Compiled successfully/)
expect(output.code).toBe(1)
expect(output.stderr).toMatch(/Failed to compile/)
expect(output.stderr).toMatch(/is not assignable to type 'boolean'/)
})
})
19 changes: 19 additions & 0 deletions test/integration/typescript-filtered-files/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"esModuleInterop": true,
"module": "esnext",
"jsx": "preserve",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true
},
"exclude": ["node_modules"],
"include": ["next-env.d.ts", "components", "pages"]
}

0 comments on commit 276d042

Please sign in to comment.