first commit
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled

This commit is contained in:
Arian Tron
2026-03-10 19:37:31 +03:30
commit 61f56f997c
27684 changed files with 2784175 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
import { useRouter } from 'next/router'
const Comment = ({ gipQuery }) => {
const router = useRouter()
const { query } = router
return (
<>
<p id="asdf">
I am {query.comment} on {query.name}
</p>
<span data-testid="gip-query">gip {gipQuery && gipQuery.name}</span>
</>
)
}
Comment.getInitialProps = async ({ query }) => {
return { gipQuery: query }
}
export default Comment

View File

@@ -0,0 +1,12 @@
// this checks priority issues with catch-all routes that
// can match `_next/data/build-id/path.json
export function getServerSideProps() {
return {
notFound: true,
}
}
export default function Page() {
return <p>nested catch-all</p>
}

View File

@@ -0,0 +1,11 @@
import { useRouter } from 'next/router'
const Page = () => {
const router = useRouter()
const { query } = router
return <p id="asdf">Show comments for {query.name} here</p>
}
Page.getInitialProps = () => ({})
export default Page

View File

@@ -0,0 +1,78 @@
import Link from 'next/link'
import { useRouter } from 'next/router'
const Page = () => {
const router = useRouter()
const { query } = router
return (
<>
<Link href="#only-hash" id="dynamic-route-only-hash">
Dynamic route only hash
</Link>
<br />
<Link href={{ hash: 'only-hash-obj' }} id="dynamic-route-only-hash-obj">
Dynamic route only hash object
</Link>
<br />
<Link href="?name=post-2" id="dynamic-route-only-query">
Dynamic route only query
</Link>
<br />
<Link
href="?name=post-3&another=value"
id="dynamic-route-only-query-extra"
>
Dynamic route only query extra
</Link>
<br />
<Link
href={{ query: { name: 'post-4' } }}
id="dynamic-route-only-query-obj"
>
Dynamic route only query object
</Link>
<br />
<Link
href={{ query: { name: 'post-5', another: 'value' } }}
id="dynamic-route-only-query-obj-extra"
>
Dynamic route only query object extra
</Link>
<br />
<Link href="?name=post-2#hash-too" id="dynamic-route-query-hash">
Dynamic route query and hash
</Link>
<br />
<Link
href="?name=post-3&another=value#hash-again"
id="dynamic-route-query-extra-hash"
>
Dynamic route query extra and hash
</Link>
<br />
<Link
href={{ query: { name: 'post-4' }, hash: 'hash-too' }}
id="dynamic-route-query-hash-obj"
>
Dynamic route query and hash object
</Link>
<br />
<Link
href={{
query: { name: 'post-5', another: 'value' },
hash: 'hash-again',
}}
id="dynamic-route-query-obj-extra-hash"
>
Dynamic route query and hash object extra
</Link>
<br />
<p id="asdf">This is {query.name}</p>
<p id="query">{JSON.stringify(query)}</p>
</>
)
}
Page.getInitialProps = () => ({})
export default Page

View File

@@ -0,0 +1,14 @@
import React from 'react'
import Router from 'next/router'
class Page extends React.Component {
componentDidMount() {
Router.push('/')
}
render() {
return <p>redirecting..</p>
}
}
export default Page

View File

@@ -0,0 +1,8 @@
export default function App({ Component, pageProps }) {
if (!pageProps || typeof pageProps !== 'object') {
throw new Error(
`Invariant: received invalid pageProps in _app, received ${pageProps}`
)
}
return <Component {...pageProps} />
}

View File

@@ -0,0 +1,3 @@
export default function Another() {
return 'hello from another!'
}

View File

@@ -0,0 +1,13 @@
export const getServerSideProps = ({ params }) => {
console.log({ params })
return {
props: {
params,
},
}
}
export default function Page(props) {
return <p id="props">{JSON.stringify(props)}</p>
}

View File

@@ -0,0 +1,18 @@
import { useRouter } from 'next/router'
const Page = () => {
const router = useRouter()
const { name, id } = router.query
return (
<>
<p id="asdf">
Blog post {name} comment {id || '(all)'}
</p>
</>
)
}
Page.getInitialProps = () => ({})
export default Page

View File

@@ -0,0 +1,13 @@
export const getServerSideProps = ({ params }) => {
console.log({ params })
return {
props: {
params,
},
}
}
export default function Page(props) {
return <p id="props">{JSON.stringify(props)}</p>
}

View File

@@ -0,0 +1 @@
export default () => 'hi'

View File

@@ -0,0 +1,9 @@
import { useRouter } from 'next/router'
const Page = () => {
const router = useRouter()
const { query } = router
return <p id="asdf">This is {query.id}</p>
}
export default Page

View File

@@ -0,0 +1,3 @@
export default function Page(props) {
return 'hi'
}

View File

@@ -0,0 +1,236 @@
import Link from 'next/link'
import { useRouter } from 'next/router'
if (typeof window !== 'undefined') {
window.caughtWarns = []
const origWarn = window.console.warn
window.console.warn = function (...args) {
window.caughtWarns.push(args)
origWarn(...args)
}
}
const Page = () => {
return (
<div>
<h3>My blog</h3>
<Link href="/[name]" as="/post-1" id="view-post-1">
View post 1
</Link>
<br />
<Link href="/[name]" as="/post-1#my-hash" id="view-post-1-hash-1">
View post 1 (hash)
</Link>
<br />
<Link href="/post-1#my-hash" id="view-post-1-hash-1-href-only">
View post 1 (hash only href)
</Link>
<br />
<Link
href="/post-1?hidden=value"
as="/post-1"
id="view-post-1-hidden-query"
>
View post 1 (href query)
</Link>
<br />
<Link
href={{
hash: 'my-hash',
pathname: '/[name]',
query: { name: 'post-1' },
}}
id="view-post-1-hash-1-interpolated"
>
View post 1 (hash interpolated)
</Link>
<br />
<Link href="/post-1" id="view-post-1-no-as">
View post 1 (no as)
</Link>
<br />
<Link
href={{
pathname: '/[name]',
query: { name: 'post-1' },
}}
id="view-post-1-interpolated"
>
View post 1 (interpolated)
</Link>
<br />
<Link
href={{
pathname: '/[name]',
query: { another: 'value' },
}}
id="view-post-1-interpolated-incorrectly"
>
View post 1 (interpolated incorrectly)
</Link>
<br />
<Link
href={{
pathname: '/[name]',
query: { name: 'post-1', another: 'value' },
}}
id="view-post-1-interpolated-more-query"
>
View post 1 (interpolated additional query)
</Link>
<br />
<Link
href="/[name]/comments"
as="/post-1/comments"
id="view-post-1-comments"
>
View post 1 comments
</Link>
<br />
<Link
href="/[name]/[comment]"
as="/post-1/comment-1"
id="view-post-1-comment-1"
>
View comment 1 on post 1
</Link>
<br />
<Link href="/post-1/comment-1" id="view-post-1-comment-1-no-as">
View comment 1 on post 1 (no as)
</Link>
<br />
<Link
href={{
pathname: '/[name]/[comment]',
query: { name: 'post-1', comment: 'comment-1' },
}}
id="view-post-1-comment-1-interpolated"
>
View comment 1 on post 1 (interpolated)
</Link>
<br />
<Link href="/added-later/first" id="added-later-link">
/added-later/first
</Link>
<br />
<Link
href="/blog/[post]/comment/[id]"
as="/blog/321/comment/123"
id="view-nested-dynamic-cmnt"
>
View comment 123 on blog post 321
</Link>
<br />
<Link
href="/[name]?fromHome=true"
as="/post-1?fromHome=true"
id="view-post-1-with-query"
>
View post 1 with query
</Link>
<br />
<Link
href="/on-mount/[post]"
as="/on-mount/test-w-hash#item-400"
id="view-dynamic-with-hash"
>
View test with hash
</Link>
<br />
<Link
href="/p1/p2/all-ssr/[...rest]"
as="/p1/p2/all-ssr/hello"
id="catch-all-single"
>
Catch-all route (single)
</Link>
<br />
<Link
href="/p1/p2/all-ssr/[...rest]"
as="/p1/p2/all-ssr/hello1/hello2"
id="catch-all-multi"
>
Catch-all route (multi)
</Link>
<br />
<Link
href="/p1/p2/all-ssr/[...rest]"
as="/p1/p2/all-ssr/hello1%2F/he%2Fllo2"
id="catch-all-enc"
>
Catch-all route (encoded)
</Link>
<br />
<Link
href="/p1/p2/all-ssr/[...rest]"
as="/p1/p2/all-ssr/:42"
id="catch-all-colonnumber"
>
Catch-all route :42
</Link>
<br />
<Link
href="/p1/p2/all-ssg/[...rest]"
as="/p1/p2/all-ssg/hello"
id="ssg-catch-all-single"
>
Catch-all route (single)
</Link>
<br />
<Link
href={{
pathname: '/p1/p2/all-ssg/[...rest]',
query: { rest: ['hello'] },
}}
id="ssg-catch-all-single-interpolated"
>
Catch-all route (single interpolated)
</Link>
<br />
<Link
href="/p1/p2/all-ssg/[...rest]"
as="/p1/p2/all-ssg/hello1/hello2"
id="ssg-catch-all-multi"
>
Catch-all route (multi)
</Link>
<br />
<Link href="/p1/p2/all-ssg/hello1/hello2" id="ssg-catch-all-multi-no-as">
Catch-all route (multi)
</Link>
<br />
<Link
href={{
pathname: '/p1/p2/all-ssg/[...rest]',
query: { rest: ['hello1', 'hello2'] },
}}
id="ssg-catch-all-multi-interpolated"
>
Catch-all route (multi interpolated)
</Link>
<br />
<Link
href="/p1/p2/nested-all-ssg/[...rest]"
as="/p1/p2/nested-all-ssg/hello"
id="nested-ssg-catch-all-single"
>
Nested Catch-all route (single)
</Link>
<br />
<Link
href="/p1/p2/nested-all-ssg/[...rest]"
as="/p1/p2/nested-all-ssg/hello1/hello2"
id="nested-ssg-catch-all-multi"
>
Nested Catch-all route (multi)
</Link>
<br />
<Link href="/d/dynamic-1" id="dynamic-route-no-as">
Dynamic route no as
</Link>
<p id="query">{JSON.stringify(Object.keys(useRouter().query))}</p>
</div>
)
}
export default Page

View File

@@ -0,0 +1,3 @@
export default function page() {
return 'index/[...slug]'
}

View File

@@ -0,0 +1,18 @@
import { useRouter } from 'next/router'
export default () => {
const router = useRouter()
const { query } = router
return (
<>
<p id="asdf">onmpost: {query.post || 'pending'}</p>
{Array.from({ length: 500 }, (x, i) => i + 1).map((i) => {
return (
<div key={`item-${i}`} id={`item-${i}`}>
{i}
</div>
)
})}
</>
)
}

View File

@@ -0,0 +1,16 @@
function All({ params }) {
return <div id="all-ssg-content">{JSON.stringify(params)}</div>
}
export function getStaticProps({ params }) {
return { props: { params } }
}
export function getStaticPaths() {
return {
paths: [],
fallback: true,
}
}
export default All

View File

@@ -0,0 +1,7 @@
function All({ query }) {
return <div id="all-ssr-content">{JSON.stringify(query)}</div>
}
All.getInitialProps = ({ query }) => ({ query })
export default All

View File

@@ -0,0 +1,22 @@
import styles from './styles.module.css'
function All({ params }) {
return (
<div id="nested-all-ssg-content" className={styles.test}>
{JSON.stringify(params)}
</div>
)
}
export function getStaticProps({ params }) {
return { props: { params } }
}
export function getStaticPaths() {
return {
paths: [],
fallback: true,
}
}
export default All

View File

@@ -0,0 +1,3 @@
.test {
color: red;
}

View File

@@ -0,0 +1,19 @@
function All({ params }) {
return <div id="all-ssg-content">{JSON.stringify(params)}</div>
}
export function getStaticProps({ params }) {
return { props: { params } }
}
export function getStaticPaths() {
return {
paths: [
`/p1/p2/predefined-ssg/one-level`,
`/p1/p2/predefined-ssg/1st-level/2nd-level`,
],
fallback: true,
}
}
export default All

View File

@@ -0,0 +1 @@
hello world copy

View File

@@ -0,0 +1 @@
hello world %20

View File

@@ -0,0 +1 @@
hello world +

View File

@@ -0,0 +1 @@
hello world

View File

@@ -0,0 +1 @@
hello world copy

View File

@@ -0,0 +1 @@
hello world %20

View File

@@ -0,0 +1 @@
hello world +

View File

@@ -0,0 +1 @@
hello world

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
/* eslint-env jest */
process.env.__MIDDLEWARE_TEST = '1'
// run all existing tests from ./index.test.js with middleware
// setup enabled via the above env variable
require('./index.test')