Node.js streams: First pass#90500
Node.js streams: First pass#90500timneutkens wants to merge 2 commits intofeedthejim/node-stream-05-cifrom
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Failing test suitesCommit: 83a60e0 | About building and testing Next.js
Expand output● streaming SSR with custom next configs › should match more specific route along with dynamic routes ● streaming SSR with custom next configs › should render styled-jsx styles in streaming ● streaming SSR with custom next configs › should redirect paths without trailing-slash and render when slash is appended ● streaming SSR with custom next configs › should render next/router correctly in edge runtime ● streaming SSR with custom next configs › should render multi-byte characters correctly in streaming
Expand output● Edge runtime code with imports › test error if response is not Response type › Edge API dev test Response ● Edge runtime code with imports › test error if response is not Response type › production mode › Edge API build test Response ● Edge runtime code with imports › test error if response is not Response type › Middleware dev test Response ● Edge runtime code with imports › test error if response is not Response type › production mode › Middleware build test Response
Expand output● production mode › Concurrent mode in the experimental-edge runtime prod › flushes styled-jsx styles as the page renders ● production mode › Concurrent mode in the experimental-edge runtime prod › › should not have the initial route announced ● production mode › Concurrent mode in the experimental-edge runtime prod › should not have invalid config warning
Expand output● Vary Header Tests › should preserve custom vary header in API routes ● Vary Header Tests › should preserve custom vary header and append RSC headers in app route handlers ● Vary Header Tests › should preserve middleware vary header in combination with route handlers
Expand output● Middleware overriding a Node.js API › development mode › does not show a warning and allows overriding
Expand output● Middleware Runtime › with i18n › should handle 404 on fallback: false route correctly ● Middleware Runtime › with i18n › should work with notFound: true correctly ● Middleware Runtime › with i18n › should be able to rewrite on _next/static/chunks/pages/ 404 ● Middleware Runtime › with i18n › should have valid middleware field in manifest ● Middleware Runtime › with i18n › should have the custom config in the manifest ● Middleware Runtime › with i18n › should have correct files in manifest ● Middleware Runtime › with i18n › should not run middleware for on-demand revalidate ● Middleware Runtime › with i18n › passes search params with rewrites ● Middleware Runtime › with i18n › should have init header for NextResponse.redirect ● Middleware Runtime › with i18n › should have correct query values for rewrite to ssg page ● Middleware Runtime › with i18n › should have correct dynamic route params on client-transition to dynamic route ● Middleware Runtime › with i18n › should have correct dynamic route params for middleware rewrite to dynamic route ● Middleware Runtime › with i18n › should have correct route params for chained rewrite from middleware to config rewrite ● Middleware Runtime › with i18n › should have correct route params for rewrite from config dynamic route ● Middleware Runtime › with i18n › should have correct route params for rewrite from config non-dynamic route ● Middleware Runtime › with i18n › should redirect the same for direct visit and client-transition ● Middleware Runtime › with i18n › should rewrite the same for direct visit and client-transition ● Middleware Runtime › with i18n › should rewrite correctly for non-SSG/SSP page ● Middleware Runtime › with i18n › should respond with 400 on decode failure ● Middleware Runtime › with i18n › should set fetch user agent correctly ● Middleware Runtime › with i18n › allows to access env variables ● Middleware Runtime › with i18n › should contain ● Middleware Runtime › with i18n › should contain crypto APIs ● Middleware Runtime › with i18n › should accept a URL instance for fetch ● Middleware Runtime › with i18n › should allow to abort a fetch request ● Middleware Runtime › with i18n › should validate & parse request url from any route ● Middleware Runtime › with i18n › should validate & parse request url from a dynamic route with params ● Middleware Runtime › with i18n › should validate & parse request url from a dynamic route with params and no query ● Middleware Runtime › with i18n › should validate & parse request url from a dynamic route with params and query ● Middleware Runtime › with i18n › should throw when using URL with a relative URL ● Middleware Runtime › with i18n › should throw when using NextRequest with a relative URL ● Middleware Runtime › with i18n › should throw when using Request with a relative URL ● Middleware Runtime › with i18n › should warn when using Response.redirect with a relative URL ● Middleware Runtime › with i18n › should warn when using NextResponse.redirect with a relative URL ● Middleware Runtime › with i18n › should throw when using NextResponse.rewrite with a relative URL ● Middleware Runtime › with i18n › should trigger middleware for data requests ● Middleware Runtime › with i18n › should normalize data requests into page requests ● Middleware Runtime › with i18n › should keep non data requests in their original shape ● Middleware Runtime › with i18n › should add a rewrite header on data requests for rewrites ● Middleware Runtime › with i18n › hard-navigates when the data request failed ● Middleware Runtime › with i18n › allows shallow linking with middleware ● Middleware Runtime › without i18n › should handle 404 on fallback: false route correctly ● Middleware Runtime › without i18n › should work with notFound: true correctly ● Middleware Runtime › without i18n › should be able to rewrite on _next/static/chunks/pages/ 404 ● Middleware Runtime › without i18n › should have valid middleware field in manifest ● Middleware Runtime › without i18n › should have the custom config in the manifest ● Middleware Runtime › without i18n › should have correct files in manifest ● Middleware Runtime › without i18n › should not run middleware for on-demand revalidate ● Middleware Runtime › without i18n › passes search params with rewrites ● Middleware Runtime › without i18n › should have init header for NextResponse.redirect ● Middleware Runtime › without i18n › should have correct query values for rewrite to ssg page ● Middleware Runtime › without i18n › should have correct dynamic route params on client-transition to dynamic route ● Middleware Runtime › without i18n › should have correct dynamic route params for middleware rewrite to dynamic route ● Middleware Runtime › without i18n › should have correct route params for chained rewrite from middleware to config rewrite ● Middleware Runtime › without i18n › should have correct route params for rewrite from config dynamic route ● Middleware Runtime › without i18n › should have correct route params for rewrite from config non-dynamic route ● Middleware Runtime › without i18n › should redirect the same for direct visit and client-transition ● Middleware Runtime › without i18n › should rewrite the same for direct visit and client-transition ● Middleware Runtime › without i18n › should rewrite correctly for non-SSG/SSP page ● Middleware Runtime › without i18n › should respond with 400 on decode failure ● Middleware Runtime › without i18n › should set fetch user agent correctly ● Middleware Runtime › without i18n › allows to access env variables ● Middleware Runtime › without i18n › should contain ● Middleware Runtime › without i18n › should contain crypto APIs ● Middleware Runtime › without i18n › should accept a URL instance for fetch ● Middleware Runtime › without i18n › should allow to abort a fetch request ● Middleware Runtime › without i18n › should validate & parse request url from any route ● Middleware Runtime › without i18n › should validate & parse request url from a dynamic route with params and query ● Middleware Runtime › without i18n › should throw when using URL with a relative URL ● Middleware Runtime › without i18n › should throw when using NextRequest with a relative URL ● Middleware Runtime › without i18n › should throw when using Request with a relative URL ● Middleware Runtime › without i18n › should warn when using Response.redirect with a relative URL ● Middleware Runtime › without i18n › should warn when using NextResponse.redirect with a relative URL ● Middleware Runtime › without i18n › should throw when using NextResponse.rewrite with a relative URL ● Middleware Runtime › without i18n › should trigger middleware for data requests ● Middleware Runtime › without i18n › should normalize data requests into page requests ● Middleware Runtime › without i18n › should keep non data requests in their original shape ● Middleware Runtime › without i18n › should add a rewrite header on data requests for rewrites ● Middleware Runtime › without i18n › hard-navigates when the data request failed ● Middleware Runtime › without i18n › allows shallow linking with middleware ● Test suite failed to run ● Test suite failed to run
Expand output● streaming SSR with custom next configs › should match more specific route along with dynamic routes ● streaming SSR with custom next configs › should render styled-jsx styles in streaming ● streaming SSR with custom next configs › should redirect paths without trailing-slash and render when slash is appended ● streaming SSR with custom next configs › should render next/router correctly in edge runtime ● streaming SSR with custom next configs › should render multi-byte characters correctly in streaming
Expand output● Custom TypeScript Config › app router: allows a user-specific tsconfig via the next config ● Custom TypeScript Config › pages router: allows a user-specific tsconfig via the next config ● Custom TypeScript Config › middleware: allows a user-specific tsconfig via the next config
Expand output● skip-trailing-slash-redirect › should parse locale info for data request correctly ● skip-trailing-slash-redirect › should be able to redirect locale casing $1 ● skip-trailing-slash-redirect › should be able to redirect locale casing $1 ● skip-trailing-slash-redirect › should handle external rewrite correctly /chained-rewrite-ssg ● skip-trailing-slash-redirect › should handle external rewrite correctly /chained-rewrite-static ● skip-trailing-slash-redirect › should handle external rewrite correctly /chained-rewrite-ssr ● skip-trailing-slash-redirect › should handle external rewrite correctly /docs/first ● skip-trailing-slash-redirect › should handle external rewrite correctly /docs-auto-static/first ● skip-trailing-slash-redirect › should handle external rewrite correctly /docs-ssr/first ● skip-trailing-slash-redirect › should allow rewriting invalid buildId correctly ● skip-trailing-slash-redirect › should provide original _next/data URL with skipProxyUrlNormalize ● skip-trailing-slash-redirect › should allow response body from middleware with flag ● skip-trailing-slash-redirect › should merge cookies from middleware and API routes correctly ● skip-trailing-slash-redirect › should merge cookies from middleware and edge API routes correctly ● skip-trailing-slash-redirect › should not have trailing slash redirects in manifest ● skip-trailing-slash-redirect › should correct skip URL normalizing in middleware ● skip-trailing-slash-redirect › should apply config redirect correctly ● skip-trailing-slash-redirect › should apply config rewrites correctly ● skip-trailing-slash-redirect › should not apply trailing slash on load on client ● skip-trailing-slash-redirect › pages dir › should not apply trailing slash redirect (with slash) ● skip-trailing-slash-redirect › pages dir › should not apply trailing slash redirect (without slash) ● skip-trailing-slash-redirect › pages dir › should preserve original trailing slashes to links on client ● skip-trailing-slash-redirect › pages dir › should respond to index correctly ● skip-trailing-slash-redirect › pages dir › should respond to dynamic route correctly ● skip-trailing-slash-redirect › pages dir › should navigate client side correctly ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should not apply trailing slash redirect (with slash) ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should not apply trailing slash redirect (without slash) ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should preserve original trailing slashes to links on client ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should respond to index correctly ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should respond to dynamic route correctly ● skip-trailing-slash-redirect › app dir - skip trailing slash redirect › should navigate client side correctly ● Test suite failed to run
Expand output● esm-externals › app dir url /server › should return the correct SSR HTML ● esm-externals › app dir url /client › should return the correct SSR HTML
Expand output● Middleware can set the matcher in its config › does add the header for root request ● Middleware can set the matcher in its config › adds the header for a matched path ● Middleware can set the matcher in its config › adds the header for a matched data path (with header) ● Middleware can set the matcher in its config › adds the header for a matched data path (without header) ● Middleware can set the matcher in its config › adds the header for another matched path ● Middleware can set the matcher in its config › adds the header for another matched data path ● Middleware can set the matcher in its config › does add the header for root data request ● Middleware can set the matcher in its config › should load matches in client matchers correctly ● Middleware can set the matcher in its config › should navigate correctly with matchers ● using a single matcher › does not add the header for root request ● using a single matcher › does not add the header for root data request ● using a single matcher › adds the header for a matched path ● using a single matcher › adds the headers for a matched data path (with header) ● using a single matcher › adds the header for a matched data path (without header) ● using a single matcher › does not add the header for an unmatched path ● using root matcher › adds the header to the / ● using root matcher › adds the header to the /index ● using root matcher › adds the header for a matched data path (with header) ● using root matcher › adds the header for a matched data path (without header) ● using a single matcher with i18n › adds the header for a matched path ● using a single matcher with i18n › adds the header for a mathed root path with /index ● using a single matcher with i18n › adds the headers for a matched data path ● using a single matcher with i18n › does not add the header for an unmatched path ● using a single matcher with i18n and trailingSlash › adds the header for a matched path ● using a single matcher with i18n and trailingSlash › adds the header for a mathed root path with /index ● using a single matcher with i18n and trailingSlash › adds the headers for a matched data path ● using a single matcher with i18n and trailingSlash › does not add the header for an unmatched path ● using a single matcher with i18n and basePath › adds the header for a matched path ● using a single matcher with i18n and basePath › adds the header for a mathed root path with /index ● using a single matcher with i18n and basePath › adds the headers for a matched data path ● using a single matcher with i18n and basePath › does not add the header for an unmatched path ● using a single matcher with i18n and basePath and trailingSlash › adds the header for a matched path ● using a single matcher with i18n and basePath and trailingSlash › adds the header for a mathed root path with /index ● using a single matcher with i18n and basePath and trailingSlash › adds the headers for a matched data path ● using a single matcher with i18n and basePath and trailingSlash › does not add the header for an unmatched path ● Test suite failed to run ● Test suite failed to run ● Test suite failed to run ● Test suite failed to run ● Test suite failed to run ● Test suite failed to run ● Test suite failed to run
Expand output● Instrumentation Hook › with-middleware › with-middleware should run the instrumentation hook ● Instrumentation Hook › with-edge-api › with-edge-api should run the instrumentation hook ● Instrumentation Hook › with-edge-page › with-edge-page should run the instrumentation hook ● Instrumentation Hook › with-async-edge-page › with-async-edge-page should run the instrumentation hook
Expand output● dynamic-css-client-navigation next/dynamic edge › should not remove style when navigating from static imported component to next/dynamic at runtime edge ● dynamic-css-client-navigation next/dynamic edge › should not remove style when navigating from static imported component to next/dynamic with ssr: false at runtime edge ● dynamic-css-client-navigation next/dynamic nodejs › should not remove style when navigating from static imported component to next/dynamic at runtime nodejs ● dynamic-css-client-navigation next/dynamic nodejs › should not remove style when navigating from static imported component to next/dynamic with ssr: false at runtime nodejs
Expand output● instrumentation pages › should start and serve correctly ● instrumentation pages src/ › should start and serve correctly ● instrumentation app › should start and serve correctly ● instrumentation app src/ › should start and serve correctly
Expand output● app-dir edge SSR › should handle edge only routes ● app-dir edge SSR › should retrieve cookies in a server component in the edge runtime ● app-dir edge SSR › should treat process as object without polyfill in edge runtime ● app-dir edge SSR › should handle /index routes correctly ● app-dir edge SSR › should generate matchers correctly in middleware manifest
Expand output● client-max-body-size › default 10MB limit › should accept request body over 10MB but only buffer up to limit ● client-max-body-size › default 10MB limit › should accept request body at exactly 10MB ● client-max-body-size › default 10MB limit › should accept request body under 10MB ● client-max-body-size › custom limit with string format › should accept request body over custom 5MB limit but only buffer up to limit ● client-max-body-size › custom limit with string format › should accept request body under custom 5MB limit ● client-max-body-size › custom limit with number format › should accept request body over custom 2MB limit but only buffer up to limit ● client-max-body-size › custom limit with number format › should accept request body under custom 2MB limit ● client-max-body-size › large custom limit › should accept request body up to 50MB with custom limit ● client-max-body-size › large custom limit › should accept request body over custom 50MB limit but only buffer up to limit
Expand output● required server files app router › should send the right cache headers for an app route ● required server files app router › should handle optional catchall ● required server files app router › should send the right cache headers for an app page ● required server files app router › should not fail caching ● required server files app router › should properly handle prerender for bot request ● required server files app router › should properly handle fallback for bot request ● required server files app router › should send cache tags in minimal mode for ISR ● required server files app router › should not send cache tags in minimal mode for SSR ● required server files app router › should not send invalid soft tags to cache handler ● required server files app router › should not override params with query params ● required server files app router › should de-dupe HTML/RSC requests for ISR pages ● required server files app router › should isolate cache between different ISR request groups ● Test suite failed to run
Expand output● Instrumentation Hook › with-middleware › with-middleware should run the instrumentation hook ● Instrumentation Hook › with-edge-api › with-edge-api should run the instrumentation hook ● Instrumentation Hook › with-edge-page › with-edge-page should run the instrumentation hook ● Instrumentation Hook › with-async-edge-page › with-async-edge-page should run the instrumentation hook
Expand output● Subresource Integrity › with node runtime › does not include nonce when not enabled ● Subresource Integrity › with node runtime › includes a nonce value with inline scripts when Content-Security-Policy header is defined ● Subresource Integrity › with node runtime › includes a nonce value with inline scripts when Content-Security-Policy-Report-Only header is defined ● Subresource Integrity › with node runtime › includes a nonce value with bootstrap scripts when Content-Security-Policy header is defined ● Subresource Integrity › with node runtime › includes an integrity attribute on scripts ● Subresource Integrity › with node runtime › throws when escape characters are included in nonce ● Subresource Integrity › with edge runtime › does not include nonce when not enabled ● Subresource Integrity › with edge runtime › includes a nonce value with inline scripts when Content-Security-Policy header is defined ● Subresource Integrity › with edge runtime › includes a nonce value with inline scripts when Content-Security-Policy-Report-Only header is defined ● Subresource Integrity › with edge runtime › includes a nonce value with bootstrap scripts when Content-Security-Policy header is defined ● Subresource Integrity › with edge runtime › includes an integrity attribute on scripts ● Subresource Integrity › with edge runtime › throws when escape characters are included in nonce ● Subresource Integrity › with pages runtime › does not include nonce when not enabled ● Subresource Integrity › with pages runtime › includes a nonce value with inline scripts when Content-Security-Policy header is defined ● Subresource Integrity › with pages runtime › includes a nonce value with inline scripts when Content-Security-Policy-Report-Only header is defined ● Subresource Integrity › with pages runtime › includes a nonce value with bootstrap scripts when Content-Security-Policy header is defined ● Subresource Integrity › with pages runtime › includes an integrity attribute on scripts ● Subresource Integrity › with pages runtime › throws when escape characters are included in nonce
Expand output● Middleware development errors › when middleware is removed › sends response correctly ● Middleware development errors › when middleware is removed and re-added › sends response correctly ● Middleware development errors › when middleware is added › sends response correctly ● Middleware development errors › when matcher is added › sends response correctly
Expand output● Middleware custom matchers basePath › should match query path
Expand output● og-routes-custom-font › should render og with custom font for app routes
Expand output● use-cache › should not use stale caches in server actions that have revalidated ● use-cache › should not read nor write cached data when draft mode is enabled › js disabled, with cookies ● use-cache › should not read nor write cached data when draft mode is enabled › js enabled, without cookies ● use-cache › should not read nor write cached data when draft mode is enabled › js disabled, without cookies ● use-cache › can serialize parent metadata as generateMetadata argument ● use-cache › makes a cached generateMetadata function that implicitly depends on params dynamic during prerendering ● use-cache › should allow nested short-lived caches after connection()
Expand output● edge api can use async local storage › cans use a single instance per request ● edge api can use async local storage › cans use multiple instances per request
Expand output● segment cache - vary params › does not reuse prefetched segment when page accesses searchParams
Expand output● LRU disk eviction › should promote entries on get() to prevent eviction
Expand output● deterministic build - changing deployment id › build output API - builder › should produce identical build outputs even when changing deployment id
Expand output● favicon-short-circuit › should not short circuit the favicon in production ● Test suite failed to run
Expand output● tsconfig-no-relative-resolve › should fail to build |
Stats from current PR🔴 1 regression
📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles: **399 kB** → **399 kB** ✅ -139 B80 files with content-based hashes (individual files not comparable between builds) Server Middleware
Build DetailsBuild Manifests
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (25 files)Files with changes:
View diffsapp-page-exp..ntime.dev.jsfailed to diffapp-page-exp..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page.runtime.dev.jsfailed to diffapp-page.runtime.prod.jsfailed to diffapp-route-ex..ntime.dev.jsDiff too large to display app-route-ex..time.prod.jsDiff too large to display app-route-tu..ntime.dev.jsDiff too large to display app-route-tu..time.prod.jsDiff too large to display app-route-tu..ntime.dev.jsDiff too large to display app-route-tu..time.prod.jsDiff too large to display app-route.runtime.dev.jsDiff too large to display app-route.ru..time.prod.jsDiff too large to display pages-api-tu..ntime.dev.jsDiff too large to display pages-api-tu..time.prod.jsDiff too large to display pages-api.runtime.dev.jsDiff too large to display pages-api.ru..time.prod.jsDiff too large to display pages-turbo...ntime.dev.jsDiff too large to display pages-turbo...time.prod.jsDiff too large to display pages.runtime.dev.jsDiff too large to display pages.runtime.prod.jsDiff too large to display server.runtime.prod.jsDiff too large to display 📎 Tarball URL |
| ? readableToWeb(opts.inlinedDataStream) | ||
| : undefined, | ||
| } | ||
| const webResult = await webContinueFizzStream( |
There was a problem hiding this comment.
In the Node.js streams path, continueFizzStream converts a Node Readable to a web ReadableStream that lacks the .allReady property, causing await renderStream.allReady to resolve immediately (as await undefined) during static generation, potentially producing incomplete HTML with unresolved Suspense fallbacks.

No description provided.