this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

remove dependency on vercel api in tests (#755)

* remove dependency on vercel api in tests

* oops. add back ppr

* add comment about connection()

authored by

James Anderson and committed by
GitHub
cdb99897 1868c990

+328 -98
+6 -8
examples/next-partial-prerendering/components/pricing.tsx
··· 1 + import { connection } from 'next/server'; 1 2 import type { Product } from '#/types/product'; 2 3 import { Ping } from '#/components/ping'; 3 4 import { ProductEstimatedArrival } from '#/components/product-estimated-arrival'; ··· 10 11 import { AddToCart } from '#/components/add-to-cart'; 11 12 import { delayShippingEstimate, withDelay } from '#/lib/delay'; 12 13 import { cookies } from 'next/headers'; 14 + import { getProduct } from '#/lib/products'; 13 15 14 16 async function AddToCartFromCookies() { 17 + // Tell Next.js to render dynamically at runtime instead of build-time 18 + await connection(); 19 + 15 20 // Get the cart count from the users cookies and pass it to the client 16 21 // AddToCart component 17 22 const cartCount = Number(cookies().get('_cart_count')?.value || '0'); ··· 38 43 39 44 async function UserSpecificDetails({ productId }: { productId: string }) { 40 45 const data = await withDelay( 41 - fetch( 42 - `https://app-router-api.vercel.app/api/products?id=${productId}&filter=price,usedPrice,leadTime,stock`, 43 - { 44 - // We intentionally disable Next.js Cache to better demo 45 - // streaming 46 - cache: 'no-store', 47 - }, 48 - ), 46 + getProduct({ id: productId }), 49 47 delayShippingEstimate, 50 48 ); 51 49
+6 -10
examples/next-partial-prerendering/components/recommended-products.tsx
··· 1 + import { connection } from 'next/server'; 1 2 import { Product } from '#/types/product'; 2 3 import { ProductCard } from '#/components/product-card'; 3 4 import { delayRecommendedProducts, withDelay } from '#/lib/delay'; 5 + import { getProducts } from '#/lib/products'; 4 6 5 7 export async function RecommendedProducts() { 8 + // Tell Next.js to render dynamically at runtime instead of build-time 9 + await connection(); 10 + 6 11 let products: Product[] = await withDelay( 7 - fetch( 8 - // We intentionally delay the response to simulate a slow data 9 - // request that would benefit from streaming 10 - `https://app-router-api.vercel.app/api/products?filter=1`, 11 - { 12 - // We intentionally disable Next.js Cache to better demo 13 - // streaming 14 - cache: 'no-store', 15 - }, 16 - ).then((res) => res.json()), 12 + getProducts({ exclude: ['1'] }).then((res) => res.json()), 17 13 delayRecommendedProducts, 18 14 ); 19 15
+6 -10
examples/next-partial-prerendering/components/reviews.tsx
··· 1 + import { connection } from 'next/server'; 1 2 import type { Review } from '#/types/review'; 2 3 import { ProductReviewCard } from '#/components/product-review-card'; 3 4 import { delayReviews, withDelay } from '#/lib/delay'; 5 + import { getReviews } from '#/lib/reviews'; 4 6 5 7 export async function Reviews() { 8 + // Tell Next.js to render dynamically at runtime instead of build-time 9 + await connection(); 10 + 6 11 let reviews: Review[] = await withDelay( 7 - fetch( 8 - // We intentionally delay the response to simulate a slow data 9 - // request that would benefit from streaming 10 - `https://app-router-api.vercel.app/api/reviews`, 11 - { 12 - // We intentionally disable Next.js Cache to better demo 13 - // streaming 14 - cache: 'no-store', 15 - }, 16 - ).then((res) => res.json()), 12 + getReviews().then((res) => res.json()), 17 13 delayReviews, 18 14 ); 19 15
+8 -3
examples/next-partial-prerendering/components/single-product.tsx
··· 1 + import { connection } from 'next/server'; 1 2 import { Pricing } from '#/components/pricing'; 2 3 import type { Product } from '#/types/product'; 3 4 import { ProductRating } from '#/components/product-rating'; 4 5 import Image from 'next/image'; 6 + import { getProduct } from '#/lib/products'; 5 7 6 8 export async function SingleProduct() { 7 - const product: Product = await fetch( 8 - `https://app-router-api.vercel.app/api/products?id=1`, 9 - ).then((res) => res.json()); 9 + // Tell Next.js to render dynamically at runtime instead of build-time 10 + await connection(); 11 + 12 + const product: Product = await getProduct({ id: '1' }).then((res) => 13 + res.json(), 14 + ); 10 15 11 16 return ( 12 17 <div className="grid grid-cols-4 gap-6">
+106
examples/next-partial-prerendering/lib/products.ts
··· 1 + const products = [ 2 + { 3 + id: '1', 4 + stock: 2, 5 + rating: 5, 6 + name: 'Donec sit elit', 7 + description: 8 + 'Morbi eu ullamcorper urna, a condimentum massa. In fermentum ante non turpis cursus fringilla. Praesent neque eros, gravida vel ante sed, vehicula elementum orci. Sed eu ipsum eget enim mattis mollis.', 9 + price: { 10 + amount: 4200, 11 + currency: { code: 'USD', base: 10, exponent: 2 }, 12 + scale: 2, 13 + }, 14 + isBestSeller: false, 15 + leadTime: 2, 16 + discount: { percent: 90, expires: 2 }, 17 + image: 'eniko-kis-KsLPTsYaqIQ-unsplash.jpg', 18 + imageBlur: 19 + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAqgAwAEAAAAAQAAAAoAAAAA/8AAEQgACgAKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAAf/aAAwDAQACEQMRAD8A+3/HPx10jQPE0+k6ZrPh6TTtKsbi41R7nVUiu7WeMkQxi2H3lk2su4sCrjBHFd54c+InhvxJ4e0vxFa3aRw6pawXSKxG5VnQOAfcA81474z8G+ENU1OeXU9Dsbt/N8zdNbRSHfn72WU/N79a9U03TtPj061jjtYkRIkAARQAAowAMV2Sa7GsIH//2Q==', 20 + }, 21 + { 22 + id: '2', 23 + stock: 5, 24 + rating: 4, 25 + name: 'Fusce commodo porta posuere', 26 + description: 27 + 'Morbi eu ullamcorper urna, a condimentum massa. In fermentum ante non turpis cursus fringilla. Praesent neque eros, gravida vel ante sed, vehicula elementum orci. Sed eu ipsum eget enim mattis mollis.', 28 + price: { 29 + amount: 4600, 30 + currency: { code: 'USD', base: 10, exponent: 2 }, 31 + scale: 2, 32 + }, 33 + isBestSeller: false, 34 + leadTime: 1, 35 + image: 'patrick-OIFgeLnjwrM-unsplash.jpg', 36 + imageBlur: 37 + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAqgAwAEAAAAAQAAAAoAAAAA/8AAEQgACgAKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAAf/aAAwDAQACEQMRAD8AwNV+KvwHs7vSNLi8faJoy2VtcQatFLaSz3X2shBGyuUKjy23kgKwY4HStq5j0O4uZZ9Lfz7KR2aCQArviJyjYIyMrg4NXY7Cxddz20bE9SUU/wBKfsQcBQAPav6Gyrh+vQq1pyxMpKTuk+mr0Wr7/gf568TeI2DxlDDUqWXwpumrNpr3tIq7tFa6X67n/9k=', 38 + }, 39 + { 40 + id: '3', 41 + stock: 3, 42 + rating: 3, 43 + name: 'Praesent tincidunt lectus', 44 + description: 45 + 'Morbi eu ullamcorper urna, a condimentum massa. In fermentum ante non turpis cursus fringilla. Praesent neque eros, gravida vel ante sed, vehicula elementum orci. Sed eu ipsum eget enim mattis mollis.', 46 + price: { 47 + amount: 29200, 48 + currency: { code: 'USD', base: 10, exponent: 2 }, 49 + scale: 2, 50 + }, 51 + discount: { percent: 70, expires: 7 }, 52 + isBestSeller: true, 53 + leadTime: 2, 54 + image: 'yoann-siloine-_T4w3JDm6ug-unsplash.jpg', 55 + imageBlur: 56 + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAqgAwAEAAAAAQAAAAoAAAAA/8AAEQgACgAKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAAf/aAAwDAQACEQMRAD8A+6vG/wC1t4J+GniLxP4L1Wynub7RrqWOQBJ1DvLbG9AVxC6ECHPO4DdhM7yBX2XpP2iTSrOROFaGMgegKivPPEGnafLrEckttE7yOu4siktgdzjmvTE4RQOAAKDSx//Z', 57 + }, 58 + { 59 + id: '4', 60 + stock: 2, 61 + rating: 5, 62 + name: 'Morbi at viverra turpis', 63 + description: 64 + 'Morbi eu ullamcorper urna, a condimentum massa. In fermentum ante non turpis cursus fringilla. Praesent neque eros, gravida vel ante sed, vehicula elementum orci. Sed eu ipsum eget enim mattis mollis.', 65 + price: { 66 + amount: 21200, 67 + currency: { code: 'USD', base: 10, exponent: 2 }, 68 + scale: 2, 69 + }, 70 + isBestSeller: false, 71 + leadTime: 2, 72 + image: 'alexander-andrews-brAkTCdnhW8-unsplash.jpg', 73 + imageBlur: 74 + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAqgAwAEAAAAAQAAAAoAAAAA/8AAEQgACgAKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAAf/aAAwDAQACEQMRAD8Ay59W0U20sUGmapJf2hZZVR7TyWVbd5hKgd1k2yOohVeu4jHGTXBwa9PcQR3BhaAyqG8uQ/Om4Z2tjjI6HHGa2dVtrad3aeJJCOhZQf51TjACKAMAAV0u99z8bni6E4RUaVmt3fc//9k=', 75 + }, 76 + { 77 + id: '5', 78 + stock: 1, 79 + rating: 4, 80 + name: 'Maecenas interdum', 81 + description: 82 + 'Morbi eu ullamcorper urna, a condimentum massa. In fermentum ante non turpis cursus fringilla. Praesent neque eros, gravida vel ante sed, vehicula elementum orci. Sed eu ipsum eget enim mattis mollis.', 83 + price: { 84 + amount: 28700, 85 + currency: { code: 'USD', base: 10, exponent: 2 }, 86 + scale: 2, 87 + }, 88 + isBestSeller: false, 89 + leadTime: 4, 90 + image: 'guillaume-coupy-6HuoHgK7FN8-unsplash.jpg', 91 + imageBlur: 92 + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAqgAwAEAAAAAQAAAAoAAAAA/8AAEQgACgAKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAAf/aAAwDAQACEQMRAD8A9P8Aj/qni3w58aNel0PV9UENm3lraDUfLtpJJLeOMKlqwXYELGRX3/M3zD3/AE5tPDB+yQ7pFc7FySeTx1NeX+PfhF8J/FPjI+IfE3grRNX1UPC4u7zTba4uN0f3D5skbPlf4TnjtXvcdrbLGoEKAADjaKpQa3Z1Od9j/9k=', 93 + }, 94 + ]; 95 + 96 + export const getProduct = (opts: { id: string }) => 97 + Promise.resolve( 98 + new Response(JSON.stringify(products.find((p) => p.id === opts.id))), 99 + ); 100 + 101 + export const getProducts = (opts: { exclude: string[] }) => 102 + Promise.resolve( 103 + new Response( 104 + JSON.stringify(products.filter((p) => !opts.exclude.includes(p.id))), 105 + ), 106 + );
+23
examples/next-partial-prerendering/lib/reviews.ts
··· 1 + const reviews = [ 2 + { 3 + id: '1', 4 + name: 'Nullam Duis', 5 + rating: 4, 6 + text: 'Phasellus efficitur, nisi ut varius ultricies, tortor arcu ullamcorper nisi, eu auctor enim est ut enim. Sed fringilla, nulla ut tincidunt hendrerit, risus tortor laoreet tortor, non mattis arcu elit vel ante.', 7 + }, 8 + { 9 + id: '2', 10 + name: 'Donec Nulla Velit', 11 + rating: 1, 12 + text: 'Nullam fermentum nisl non mattis fringilla!!!!', 13 + }, 14 + { 15 + id: '3', 16 + name: 'J Tempus', 17 + rating: 3, 18 + text: 'Pellentesque faucibus quam eu vehicula pulvinar. Integer cursus fringilla metus.', 19 + }, 20 + ]; 21 + 22 + export const getReviews = () => 23 + Promise.resolve(new Response(JSON.stringify(reviews)));
+1 -1
examples/next-partial-prerendering/package.json
··· 15 15 "date-fns": "3.6.0", 16 16 "dinero.js": "2.0.0-alpha.8", 17 17 "geist": "1.3.1", 18 - "next": "15.0.0-canary.67", 18 + "next": "15.0.0-canary.174", 19 19 "react": "19.0.0-rc-8b08e99e-20240713", 20 20 "react-dom": "19.0.0-rc-8b08e99e-20240713" 21 21 },
+3 -1
examples/playground14/app/isr/[id]/dynamic/page.tsx
··· 1 + import { getPost } from "../../../../lib/posts"; 2 + 1 3 // Imported from https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration 2 4 interface Post { 3 5 id: string; ··· 20 22 21 23 export default async function Page({ params }: { params: Promise<{ id: string }> }) { 22 24 const id = (await params).id; 23 - const post: Post = await fetch(`https://api.vercel.app/blog/${id}`).then((res) => res.json()); 25 + const post: Post = await getPost({ id }).then((res) => res.json()); 24 26 return ( 25 27 <main> 26 28 <h1>{post.title}</h1>
+3 -1
examples/playground14/app/isr/[id]/no-dynamic/page.tsx
··· 1 + import { getPost } from "../../../../lib/posts"; 2 + 1 3 // Imported from https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration 2 4 interface Post { 3 5 id: string; ··· 19 21 20 22 export default async function Page({ params }: { params: Promise<{ id: string }> }) { 21 23 const id = (await params).id; 22 - const post: Post = await fetch(`https://api.vercel.app/blog/${id}`).then((res) => res.json()); 24 + const post: Post = await getPost({ id }).then((res) => res.json()); 23 25 return ( 24 26 <main> 25 27 <h1>{post.title}</h1>
+53
examples/playground14/lib/posts.ts
··· 1 + const posts = [ 2 + { 3 + id: 1, 4 + title: "Lorem Ipsum - What Is It and How to Use It?", 5 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 6 + author: "John Doe", 7 + date: "2023-08-01", 8 + category: "Technology", 9 + }, 10 + { 11 + id: 2, 12 + title: "The Benefits of Regular Exercise", 13 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 14 + author: "Jane Smith", 15 + date: "2023-07-25", 16 + category: "Health & Fitness", 17 + }, 18 + { 19 + id: 3, 20 + title: "Mastering the Art of Cooking", 21 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 22 + author: "Michael Johnson", 23 + date: "2023-07-18", 24 + category: "Food & Cooking", 25 + }, 26 + { 27 + id: 4, 28 + title: "Traveling on a Budget - Tips and Tricks", 29 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 30 + author: "Emily Brown", 31 + date: "2023-07-10", 32 + category: "Travel", 33 + }, 34 + { 35 + id: 5, 36 + title: "The Rise of Artificial Intelligence in Modern Society", 37 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 38 + author: "David Lee", 39 + date: "2023-06-29", 40 + category: "Technology", 41 + }, 42 + { 43 + id: 6, 44 + title: "10 Must-Read Books for Summer", 45 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 46 + author: "Sarah Johnson", 47 + date: "2023-06-21", 48 + category: "Books", 49 + }, 50 + ]; 51 + 52 + export const getPost = (opts: { id: string }) => 53 + Promise.resolve(new Response(JSON.stringify(posts.find((p) => p.id === Number(opts.id)))));
+3 -1
examples/playground15/app/isr/[id]/dynamic/page.tsx
··· 1 + import { getPost } from "../../../../lib/posts"; 2 + 1 3 // Imported from https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration 2 4 interface Post { 3 5 id: string; ··· 20 22 21 23 export default async function Page({ params }: { params: Promise<{ id: string }> }) { 22 24 const id = (await params).id; 23 - const post: Post = await fetch(`https://api.vercel.app/blog/${id}`).then((res) => res.json()); 25 + const post: Post = await getPost({ id }).then((res) => res.json()); 24 26 return ( 25 27 <main> 26 28 <h1>{post.title}</h1>
+3 -1
examples/playground15/app/isr/[id]/no-dynamic/page.tsx
··· 1 + import { getPost } from "../../../../lib/posts"; 2 + 1 3 // Imported from https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration 2 4 interface Post { 3 5 id: string; ··· 19 21 20 22 export default async function Page({ params }: { params: Promise<{ id: string }> }) { 21 23 const id = (await params).id; 22 - const post: Post = await fetch(`https://api.vercel.app/blog/${id}`).then((res) => res.json()); 24 + const post: Post = await getPost({ id }).then((res) => res.json()); 23 25 return ( 24 26 <main> 25 27 <h1>{post.title}</h1>
+53
examples/playground15/lib/posts.ts
··· 1 + const posts = [ 2 + { 3 + id: 1, 4 + title: "Lorem Ipsum - What Is It and How to Use It?", 5 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 6 + author: "John Doe", 7 + date: "2023-08-01", 8 + category: "Technology", 9 + }, 10 + { 11 + id: 2, 12 + title: "The Benefits of Regular Exercise", 13 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 14 + author: "Jane Smith", 15 + date: "2023-07-25", 16 + category: "Health & Fitness", 17 + }, 18 + { 19 + id: 3, 20 + title: "Mastering the Art of Cooking", 21 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 22 + author: "Michael Johnson", 23 + date: "2023-07-18", 24 + category: "Food & Cooking", 25 + }, 26 + { 27 + id: 4, 28 + title: "Traveling on a Budget - Tips and Tricks", 29 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 30 + author: "Emily Brown", 31 + date: "2023-07-10", 32 + category: "Travel", 33 + }, 34 + { 35 + id: 5, 36 + title: "The Rise of Artificial Intelligence in Modern Society", 37 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 38 + author: "David Lee", 39 + date: "2023-06-29", 40 + category: "Technology", 41 + }, 42 + { 43 + id: 6, 44 + title: "10 Must-Read Books for Summer", 45 + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...", 46 + author: "Sarah Johnson", 47 + date: "2023-06-21", 48 + category: "Books", 49 + }, 50 + ]; 51 + 52 + export const getPost = (opts: { id: string }) => 53 + Promise.resolve(new Response(JSON.stringify(posts.find((p) => p.id === Number(opts.id)))));
+54 -62
pnpm-lock.yaml
··· 669 669 version: 2.0.0-alpha.8 670 670 geist: 671 671 specifier: 1.3.1 672 - version: 1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)) 672 + version: 1.3.1(next@15.0.0-canary.174(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)) 673 673 next: 674 - specifier: 15.0.0-canary.67 675 - version: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) 674 + specifier: 15.0.0-canary.174 675 + version: 15.0.0-canary.174(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) 676 676 react: 677 677 specifier: 19.0.0-rc-8b08e99e-20240713 678 678 version: 19.0.0-rc-8b08e99e-20240713 ··· 3237 3237 '@next/env@14.2.24': 3238 3238 resolution: {integrity: sha512-LAm0Is2KHTNT6IT16lxT+suD0u+VVfYNQqM+EJTKuFRRuY2z+zj01kueWXPCxbMBDt0B5vONYzabHGUNbZYAhA==} 3239 3239 3240 - '@next/env@15.0.0-canary.67': 3241 - resolution: {integrity: sha512-PkVYpfGi4fHxlFST2MSDl4RptW1t4WaLSoDK+/X3EUvU0i2gDZoi9ktZ/29Sh1XjlY8moFPWsqUsbLmsZWVVvQ==} 3240 + '@next/env@15.0.0-canary.174': 3241 + resolution: {integrity: sha512-2S0Jpc4yzsLq5xfIHknQob5k3ME9oI7syQH1fNJ3tv/HP1DVLmTWDRylPScLLUJGvOg7SEgnYK87P45cTNdfUQ==} 3242 3242 3243 3243 '@next/env@15.0.4': 3244 3244 resolution: {integrity: sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw==} ··· 3276 3276 cpu: [arm64] 3277 3277 os: [darwin] 3278 3278 3279 - '@next/swc-darwin-arm64@15.0.0-canary.67': 3280 - resolution: {integrity: sha512-w+SNDkXH/XBRdHgcAvoBc3zEktjSd2IlJ3Mt/To5ceYo/776CIc1c9bU+DEfjqtMwkNXqPZmBJqblolp2qbOqQ==} 3279 + '@next/swc-darwin-arm64@15.0.0-canary.174': 3280 + resolution: {integrity: sha512-SrMhGOT4LUDhsM6VNMIp7ZziVPegQqAPlz1ft6C7XcNR7OODmLaYAL5NI4XA+rJTLma1XFTf2yhAb3psvoav6w==} 3281 3281 engines: {node: '>= 10'} 3282 3282 cpu: [arm64] 3283 3283 os: [darwin] ··· 3324 3324 cpu: [x64] 3325 3325 os: [darwin] 3326 3326 3327 - '@next/swc-darwin-x64@15.0.0-canary.67': 3328 - resolution: {integrity: sha512-/Wp1rLJjO5RvYidj4By0h2qnccHGPhWKpC9cDdNn6XwiMTYbA3YbrsWJPZsJt1vcfQ+TZgN6YPVFO7/XSJqz2w==} 3327 + '@next/swc-darwin-x64@15.0.0-canary.174': 3328 + resolution: {integrity: sha512-ktmNJgLvXztYeec38Nr53pM5NSoDvdwX6j5tISnylNHdubg9hDQ7sqdLn9Xw+QLie8yZVp1A0STPECVDDVUjyA==} 3329 3329 engines: {node: '>= 10'} 3330 3330 cpu: [x64] 3331 3331 os: [darwin] ··· 3372 3372 cpu: [arm64] 3373 3373 os: [linux] 3374 3374 3375 - '@next/swc-linux-arm64-gnu@15.0.0-canary.67': 3376 - resolution: {integrity: sha512-TvgVRLN/p2P5ZVCqDKKPEzYJ8qKLUrf8U1yejTh1SYaMDK1Rz0I0roRXQQFYfRhAv3l5QmdFZbx98ZI5/IQjhA==} 3375 + '@next/swc-linux-arm64-gnu@15.0.0-canary.174': 3376 + resolution: {integrity: sha512-kVEibHYyQ12zzFPY+YHbYX9z81HhLVK5pQgt1NlFet2M0iBj1PxvOJuu6In1EEV7f3jNEr4r3gf5ieyY3ywnLw==} 3377 3377 engines: {node: '>= 10'} 3378 3378 cpu: [arm64] 3379 3379 os: [linux] ··· 3420 3420 cpu: [arm64] 3421 3421 os: [linux] 3422 3422 3423 - '@next/swc-linux-arm64-musl@15.0.0-canary.67': 3424 - resolution: {integrity: sha512-EgExLdxjjUrTkvfsw//fX/bmZY8xl6ZrP9VqwhmHOFCAp5MDJi29bSbx0oYCcUPhsThAmqbno90Mu7JMfU4JeA==} 3423 + '@next/swc-linux-arm64-musl@15.0.0-canary.174': 3424 + resolution: {integrity: sha512-NzfcraJW3jpWDx3dJHzMxLFUAJxdq9GROpO49SIWXu9HKmdZszrInTfnYK98v2C73FNnpFoCGEvBYi/GTnvECw==} 3425 3425 engines: {node: '>= 10'} 3426 3426 cpu: [arm64] 3427 3427 os: [linux] ··· 3468 3468 cpu: [x64] 3469 3469 os: [linux] 3470 3470 3471 - '@next/swc-linux-x64-gnu@15.0.0-canary.67': 3472 - resolution: {integrity: sha512-tMEcNBtNjI+wfKM4fJOps3PzKbDswly08GAycI9BiuugNKpG1RPEHqbyfo27C6nQf5I7u7r7S55qJ4KZfHPTxA==} 3471 + '@next/swc-linux-x64-gnu@15.0.0-canary.174': 3472 + resolution: {integrity: sha512-fJ5W8PrbZZkxCrtX9lmlqn43zvUrQQ5wF/GxcQDFdcwT9l3lx8IhdMZH7Q5rWuikWpI0pU+jqqRdhTpODqpuHA==} 3473 3473 engines: {node: '>= 10'} 3474 3474 cpu: [x64] 3475 3475 os: [linux] ··· 3516 3516 cpu: [x64] 3517 3517 os: [linux] 3518 3518 3519 - '@next/swc-linux-x64-musl@15.0.0-canary.67': 3520 - resolution: {integrity: sha512-y8g3Afo+AkM9M1R2qLSjRKdDBsSzgd7CnUXT6OtxsaEsHwBAz9BBeANwo26Tc0K82U23Ev4uj7XS/Dr3jG5Row==} 3519 + '@next/swc-linux-x64-musl@15.0.0-canary.174': 3520 + resolution: {integrity: sha512-OMSzmdZxrh5c7X46ILiK3GvTPgSZghpSFF4wrnXloBpW1LrbbjSYGVSGer5IoVqXR18lpnMscsV9N35FX0MIVw==} 3521 3521 engines: {node: '>= 10'} 3522 3522 cpu: [x64] 3523 3523 os: [linux] ··· 3564 3564 cpu: [arm64] 3565 3565 os: [win32] 3566 3566 3567 - '@next/swc-win32-arm64-msvc@15.0.0-canary.67': 3568 - resolution: {integrity: sha512-SZr5EoYk9pQHPuwmDJUEwyQIbCPFEo8zdV+7gpTx3NZgmdDtgoG+gsct/ya9hLvP8sMw9x6gl+0YacSMd1lQNA==} 3567 + '@next/swc-win32-arm64-msvc@15.0.0-canary.174': 3568 + resolution: {integrity: sha512-pjqvXOMBKbsG5u8I/vBeyxLN31p5dYIF1bP2zoIhjpsLU9eWx5ikKrQ7/qMpJDpWzTHgpzWGujPtEfvi1kd97w==} 3569 3569 engines: {node: '>= 10'} 3570 3570 cpu: [arm64] 3571 3571 os: [win32] ··· 3612 3612 cpu: [ia32] 3613 3613 os: [win32] 3614 3614 3615 - '@next/swc-win32-ia32-msvc@15.0.0-canary.67': 3616 - resolution: {integrity: sha512-u4gm/gCUU+e8Y77LoTRo3yfzh/qIQg3FmGTw4vB/WYBNcfU8xm02CL0SZtgePzLLia0WsETW3cgoNPQPr3ae+w==} 3615 + '@next/swc-win32-ia32-msvc@15.0.0-canary.174': 3616 + resolution: {integrity: sha512-fFkaeKq1/FXElupODSiBW8eA+644BbwxW3Eu/ACNvoxm5Z5s4YENCO4PcrdmGKvdG2k71DzcjpmtnToV+S7qiQ==} 3617 3617 engines: {node: '>= 10'} 3618 3618 cpu: [ia32] 3619 3619 os: [win32] ··· 3624 3624 cpu: [x64] 3625 3625 os: [win32] 3626 3626 3627 - '@next/swc-win32-x64-msvc@15.0.0-canary.67': 3628 - resolution: {integrity: sha512-nfJVGjNh9d2V81mzCPq8cQ2w/YMAI6V2OejepR/jBKxZ+n0PJKrUHf52e+Ubak8bZOIvxKqaOj4WaceOljqNMQ==} 3627 + '@next/swc-win32-x64-msvc@15.0.0-canary.174': 3628 + resolution: {integrity: sha512-oHP+8a72t8K6LFwEXOy/Tb6nSOE3u/hUTN2fwXNUx5hJde59yeZaGIG2kQenWYLQxJHeoT90rI1DerOcfjwzQQ==} 3629 3629 engines: {node: '>= 10'} 3630 3630 cpu: [x64] 3631 3631 os: [win32] ··· 4500 4500 4501 4501 '@swc/counter@0.1.3': 4502 4502 resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 4503 - 4504 - '@swc/helpers@0.5.11': 4505 - resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} 4506 4503 4507 4504 '@swc/helpers@0.5.13': 4508 4505 resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} ··· 7088 7085 7089 7086 libsql@0.4.7: 7090 7087 resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==} 7091 - cpu: [x64, arm64, wasm32] 7092 7088 os: [darwin, linux, win32] 7093 7089 7094 7090 lilconfig@2.1.0: ··· 7516 7512 sass: 7517 7513 optional: true 7518 7514 7519 - next@15.0.0-canary.67: 7520 - resolution: {integrity: sha512-t6TK98DaoVLfhMF5S3EhSyLjsDh06UjEiYGPScSft9DIdmY0SIjOFOHUVBuZ3Mt+oeuhSyZHs4q5G0+KLvxiSA==} 7515 + next@15.0.0-canary.174: 7516 + resolution: {integrity: sha512-lFZs5orI6COBYDYdveGoQq5/LlNx5L3n2j8B2/iYf8mG70MFxknBZT3R1S9bO71K+hUpZ9BTaU9O2OvYPxWH5w==} 7521 7517 engines: {node: '>=18.18.0'} 7522 7518 hasBin: true 7523 7519 peerDependencies: 7524 7520 '@opentelemetry/api': ^1.1.0 7525 7521 '@playwright/test': ^1.41.2 7526 7522 babel-plugin-react-compiler: '*' 7527 - react: 19.0.0-rc.0 7528 - react-dom: 19.0.0-rc.0 7523 + react: ^18.2.0 || 19.0.0-rc-2d16326d-20240930 7524 + react-dom: ^18.2.0 || 19.0.0-rc-2d16326d-20240930 7529 7525 sass: ^1.3.0 7530 7526 peerDependenciesMeta: 7531 7527 '@opentelemetry/api': ··· 12503 12499 12504 12500 '@next/env@14.2.24': {} 12505 12501 12506 - '@next/env@15.0.0-canary.67': {} 12502 + '@next/env@15.0.0-canary.174': {} 12507 12503 12508 12504 '@next/env@15.0.4': {} 12509 12505 ··· 12536 12532 '@next/swc-darwin-arm64@14.2.24': 12537 12533 optional: true 12538 12534 12539 - '@next/swc-darwin-arm64@15.0.0-canary.67': 12535 + '@next/swc-darwin-arm64@15.0.0-canary.174': 12540 12536 optional: true 12541 12537 12542 12538 '@next/swc-darwin-arm64@15.0.4': ··· 12560 12556 '@next/swc-darwin-x64@14.2.24': 12561 12557 optional: true 12562 12558 12563 - '@next/swc-darwin-x64@15.0.0-canary.67': 12559 + '@next/swc-darwin-x64@15.0.0-canary.174': 12564 12560 optional: true 12565 12561 12566 12562 '@next/swc-darwin-x64@15.0.4': ··· 12584 12580 '@next/swc-linux-arm64-gnu@14.2.24': 12585 12581 optional: true 12586 12582 12587 - '@next/swc-linux-arm64-gnu@15.0.0-canary.67': 12583 + '@next/swc-linux-arm64-gnu@15.0.0-canary.174': 12588 12584 optional: true 12589 12585 12590 12586 '@next/swc-linux-arm64-gnu@15.0.4': ··· 12608 12604 '@next/swc-linux-arm64-musl@14.2.24': 12609 12605 optional: true 12610 12606 12611 - '@next/swc-linux-arm64-musl@15.0.0-canary.67': 12607 + '@next/swc-linux-arm64-musl@15.0.0-canary.174': 12612 12608 optional: true 12613 12609 12614 12610 '@next/swc-linux-arm64-musl@15.0.4': ··· 12632 12628 '@next/swc-linux-x64-gnu@14.2.24': 12633 12629 optional: true 12634 12630 12635 - '@next/swc-linux-x64-gnu@15.0.0-canary.67': 12631 + '@next/swc-linux-x64-gnu@15.0.0-canary.174': 12636 12632 optional: true 12637 12633 12638 12634 '@next/swc-linux-x64-gnu@15.0.4': ··· 12656 12652 '@next/swc-linux-x64-musl@14.2.24': 12657 12653 optional: true 12658 12654 12659 - '@next/swc-linux-x64-musl@15.0.0-canary.67': 12655 + '@next/swc-linux-x64-musl@15.0.0-canary.174': 12660 12656 optional: true 12661 12657 12662 12658 '@next/swc-linux-x64-musl@15.0.4': ··· 12680 12676 '@next/swc-win32-arm64-msvc@14.2.24': 12681 12677 optional: true 12682 12678 12683 - '@next/swc-win32-arm64-msvc@15.0.0-canary.67': 12679 + '@next/swc-win32-arm64-msvc@15.0.0-canary.174': 12684 12680 optional: true 12685 12681 12686 12682 '@next/swc-win32-arm64-msvc@15.0.4': ··· 12704 12700 '@next/swc-win32-ia32-msvc@14.2.24': 12705 12701 optional: true 12706 12702 12707 - '@next/swc-win32-ia32-msvc@15.0.0-canary.67': 12703 + '@next/swc-win32-ia32-msvc@15.0.0-canary.174': 12708 12704 optional: true 12709 12705 12710 12706 '@next/swc-win32-x64-msvc@14.2.24': 12711 12707 optional: true 12712 12708 12713 - '@next/swc-win32-x64-msvc@15.0.0-canary.67': 12709 + '@next/swc-win32-x64-msvc@15.0.0-canary.174': 12714 12710 optional: true 12715 12711 12716 12712 '@next/swc-win32-x64-msvc@15.0.4': ··· 13902 13898 13903 13899 '@swc/counter@0.1.3': {} 13904 13900 13905 - '@swc/helpers@0.5.11': 13906 - dependencies: 13907 - tslib: 2.8.1 13908 - 13909 13901 '@swc/helpers@0.5.13': 13910 13902 dependencies: 13911 13903 tslib: 2.8.1 ··· 14814 14806 14815 14807 browserslist@4.24.0: 14816 14808 dependencies: 14817 - caniuse-lite: 1.0.30001664 14809 + caniuse-lite: 1.0.30001717 14818 14810 electron-to-chromium: 1.5.29 14819 14811 node-releases: 2.0.18 14820 14812 update-browserslist-db: 1.1.1(browserslist@4.24.0) ··· 16722 16714 - encoding 16723 16715 - supports-color 16724 16716 16725 - geist@1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)): 16717 + geist@1.3.1(next@15.0.0-canary.174(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)): 16726 16718 dependencies: 16727 - next: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) 16719 + next: 15.0.0-canary.174(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) 16728 16720 16729 16721 generic-pool@3.4.2: {} 16730 16722 ··· 17970 17962 - '@babel/core' 17971 17963 - babel-plugin-macros 17972 17964 17973 - next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713): 17965 + next@15.0.0-canary.174(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713): 17974 17966 dependencies: 17975 - '@next/env': 15.0.0-canary.67 17976 - '@swc/helpers': 0.5.11 17967 + '@next/env': 15.0.0-canary.174 17968 + '@swc/counter': 0.1.3 17969 + '@swc/helpers': 0.5.13 17977 17970 busboy: 1.6.0 17978 - caniuse-lite: 1.0.30001664 17979 - graceful-fs: 4.2.11 17971 + caniuse-lite: 1.0.30001717 17980 17972 postcss: 8.4.31 17981 17973 react: 19.0.0-rc-8b08e99e-20240713 17982 17974 react-dom: 19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713) 17983 17975 styled-jsx: 5.1.6(react@19.0.0-rc-8b08e99e-20240713) 17984 17976 optionalDependencies: 17985 - '@next/swc-darwin-arm64': 15.0.0-canary.67 17986 - '@next/swc-darwin-x64': 15.0.0-canary.67 17987 - '@next/swc-linux-arm64-gnu': 15.0.0-canary.67 17988 - '@next/swc-linux-arm64-musl': 15.0.0-canary.67 17989 - '@next/swc-linux-x64-gnu': 15.0.0-canary.67 17990 - '@next/swc-linux-x64-musl': 15.0.0-canary.67 17991 - '@next/swc-win32-arm64-msvc': 15.0.0-canary.67 17992 - '@next/swc-win32-ia32-msvc': 15.0.0-canary.67 17993 - '@next/swc-win32-x64-msvc': 15.0.0-canary.67 17977 + '@next/swc-darwin-arm64': 15.0.0-canary.174 17978 + '@next/swc-darwin-x64': 15.0.0-canary.174 17979 + '@next/swc-linux-arm64-gnu': 15.0.0-canary.174 17980 + '@next/swc-linux-arm64-musl': 15.0.0-canary.174 17981 + '@next/swc-linux-x64-gnu': 15.0.0-canary.174 17982 + '@next/swc-linux-x64-musl': 15.0.0-canary.174 17983 + '@next/swc-win32-arm64-msvc': 15.0.0-canary.174 17984 + '@next/swc-win32-ia32-msvc': 15.0.0-canary.174 17985 + '@next/swc-win32-x64-msvc': 15.0.0-canary.174 17994 17986 '@opentelemetry/api': 1.9.0 17995 17987 '@playwright/test': 1.51.1 17996 17988 sharp: 0.33.5