Separate PPR from static optimization
This commit is contained in:
parent
e79a053b6d
commit
aeba8d02c5
@ -94,7 +94,7 @@ _⚠️ READ BEFORE PROCEEDING_
|
|||||||
Application behavior can be changed by configuring the following environment variables:
|
Application behavior can be changed by configuring the following environment variables:
|
||||||
|
|
||||||
- `NEXT_PUBLIC_PRO_MODE = 1` enables higher quality image storage (results in increased storage usage)
|
- `NEXT_PUBLIC_PRO_MODE = 1` enables higher quality image storage (results in increased storage usage)
|
||||||
- `NEXT_PUBLIC_STATICALLY_OPTIMIZE = 1` enables PPR and static optimization, i.e., building pages ahead of time (results in increased storage usage)—⚠️ _Experimental_
|
- `NEXT_PUBLIC_STATICALLY_OPTIMIZE = 1` enables static optimization, i.e., renders pages and images at build time (results in increased project usage)—⚠️ _Experimental_
|
||||||
- `NEXT_PUBLIC_BLUR_DISABLED = 1` prevents image blur data being stored and displayed (potentially useful for limiting Postgres usage)
|
- `NEXT_PUBLIC_BLUR_DISABLED = 1` prevents image blur data being stored and displayed (potentially useful for limiting Postgres usage)
|
||||||
- `NEXT_PUBLIC_GEO_PRIVACY = 1` disables collection/display of location-based data
|
- `NEXT_PUBLIC_GEO_PRIVACY = 1` disables collection/display of location-based data
|
||||||
- `NEXT_PUBLIC_IGNORE_PRIORITY_ORDER = 1` prevents `priority_order` field affecting photo order
|
- `NEXT_PUBLIC_IGNORE_PRIORITY_ORDER = 1` prevents `priority_order` field affecting photo order
|
||||||
|
|||||||
@ -35,16 +35,6 @@ const nextConfig = {
|
|||||||
.concat(createRemotePattern(HOSTNAME_AWS_S3)),
|
.concat(createRemotePattern(HOSTNAME_AWS_S3)),
|
||||||
minimumCacheTTL: 31536000,
|
minimumCacheTTL: 31536000,
|
||||||
},
|
},
|
||||||
...process.env.NEXT_PUBLIC_STATICALLY_OPTIMIZE === '1' && {
|
|
||||||
experimental: { ppr: true },
|
|
||||||
},
|
|
||||||
webpack: (config) => {
|
|
||||||
config.optimization ??= {};
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
|
||||||
config.optimization.minimize = false;
|
|
||||||
}
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^29.7.0",
|
||||||
"nanoid": "^5.0.7",
|
"nanoid": "^5.0.7",
|
||||||
"next": "14.3.0-canary.44",
|
"next": "^14.2.3",
|
||||||
"next-auth": "5.0.0-beta.15",
|
"next-auth": "5.0.0-beta.15",
|
||||||
"next-themes": "^0.3.0",
|
"next-themes": "^0.3.0",
|
||||||
"openai": "^4.38.5",
|
"openai": "^4.38.5",
|
||||||
|
|||||||
123
pnpm-lock.yaml
generated
123
pnpm-lock.yaml
generated
@ -58,7 +58,7 @@ importers:
|
|||||||
version: 1.1.3
|
version: 1.1.3
|
||||||
'@vercel/analytics':
|
'@vercel/analytics':
|
||||||
specifier: ^1.2.2
|
specifier: ^1.2.2
|
||||||
version: 1.2.2(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
version: 1.2.2(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@vercel/blob':
|
'@vercel/blob':
|
||||||
specifier: ^0.23.2
|
specifier: ^0.23.2
|
||||||
version: 0.23.2
|
version: 0.23.2
|
||||||
@ -67,7 +67,7 @@ importers:
|
|||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
'@vercel/speed-insights':
|
'@vercel/speed-insights':
|
||||||
specifier: ^1.0.10
|
specifier: ^1.0.10
|
||||||
version: 1.0.10(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))
|
version: 1.0.10(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))
|
||||||
ai:
|
ai:
|
||||||
specifier: ^3.0.34
|
specifier: ^3.0.34
|
||||||
version: 3.0.34(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))(zod@3.23.4)
|
version: 3.0.34(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))(zod@3.23.4)
|
||||||
@ -108,11 +108,11 @@ importers:
|
|||||||
specifier: ^5.0.7
|
specifier: ^5.0.7
|
||||||
version: 5.0.7
|
version: 5.0.7
|
||||||
next:
|
next:
|
||||||
specifier: 14.3.0-canary.44
|
specifier: ^14.2.3
|
||||||
version: 14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
next-auth:
|
next-auth:
|
||||||
specifier: 5.0.0-beta.15
|
specifier: 5.0.0-beta.15
|
||||||
version: 5.0.0-beta.15(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
version: 5.0.0-beta.15(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
next-themes:
|
next-themes:
|
||||||
specifier: ^0.3.0
|
specifier: ^0.3.0
|
||||||
version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
@ -809,62 +809,62 @@ packages:
|
|||||||
'@next/bundle-analyzer@14.2.3':
|
'@next/bundle-analyzer@14.2.3':
|
||||||
resolution: {integrity: sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==}
|
resolution: {integrity: sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==}
|
||||||
|
|
||||||
'@next/env@14.3.0-canary.44':
|
'@next/env@14.2.3':
|
||||||
resolution: {integrity: sha512-n7E0UKB5tAcEEVO9iLuWVdx5nf+39GEHBo4mrRrC9zqXdP9Jxve4nFWFeDTU5EBSzuH3Zy4DmoVNHUOspHLmyQ==}
|
resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@14.2.3':
|
'@next/eslint-plugin-next@14.2.3':
|
||||||
resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==}
|
resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==}
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@14.3.0-canary.44':
|
'@next/swc-darwin-arm64@14.2.3':
|
||||||
resolution: {integrity: sha512-gooP4KXsw3DDZAlvjEJNyQsSacwPRJJ5f5wkrws1J17L/heUgZHX6G7vHnQgkAejyvfa5BhW2c9rlcPxOHNQqw==}
|
resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-x64@14.3.0-canary.44':
|
'@next/swc-darwin-x64@14.2.3':
|
||||||
resolution: {integrity: sha512-NbtsRFYzs8sU2VCMzqGjb4tdzhkQt1KcMB/ZqnHX5pPw5xtXqPXzBGLM0z3wHr5/vWlL4V22j8E7AGchE2TeXg==}
|
resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@14.3.0-canary.44':
|
'@next/swc-linux-arm64-gnu@14.2.3':
|
||||||
resolution: {integrity: sha512-ctGyGeHy/07TH82ZYuA74Xy0t8Zcq1xrMLTI9RUA8Dh4khf37RI7r9SHzAeqKmPGZJAPRyE6pwXtAlCg/TstjA==}
|
resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@14.3.0-canary.44':
|
'@next/swc-linux-arm64-musl@14.2.3':
|
||||||
resolution: {integrity: sha512-cX/jD3EnhIphZwRBureGSPV4GlQ7ueUKmne+5N2BsO6tHih0cnveyssropX1dTupU7aGti+22kPorPDY7BYNfQ==}
|
resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@14.3.0-canary.44':
|
'@next/swc-linux-x64-gnu@14.2.3':
|
||||||
resolution: {integrity: sha512-2HPcwOxXBQj3WD5ezz78o/SJXXz9D4U5H7Mc4e0cTUMy/GGW4ysg2Ullwus+FVOmm2z8GAcNbEeqh71D/lAtww==}
|
resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@14.3.0-canary.44':
|
'@next/swc-linux-x64-musl@14.2.3':
|
||||||
resolution: {integrity: sha512-UV9HUQenKZkrqbhRsB59X5KrMKaPUnXkbZmwLkjD2IieUgm5CswfXJ2+7JneopviwaR3k8eJMA2KV9uyA/3LpQ==}
|
resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@14.3.0-canary.44':
|
'@next/swc-win32-arm64-msvc@14.2.3':
|
||||||
resolution: {integrity: sha512-Swrl7I7q4sw7iS6O2j5v/c5bLgHP+i4/z79XTzU2LDubMP7gL3eUqLhN1GAOO35q/j49Ysbsr3VUM14JCtGOkg==}
|
resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-ia32-msvc@14.3.0-canary.44':
|
'@next/swc-win32-ia32-msvc@14.2.3':
|
||||||
resolution: {integrity: sha512-3KKbNG6EDMpAY9PP/Bv32ildjljC9vUwRbLrhBLa6l3TkD6n8xtlObNf9DMD0Fsa79VKHZKIkY1EvCn/7xlj5A==}
|
resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@14.3.0-canary.44':
|
'@next/swc-win32-x64-msvc@14.2.3':
|
||||||
resolution: {integrity: sha512-pDD9g/tTI/ihOP4c8wy5E0dRz8QUy2/7uAVyW11MIkroA4A4/cWa58PQNW5ByhvySPTcf9trnlaVPa2mdxBMMA==}
|
resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@ -1364,8 +1364,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==}
|
resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
|
|
||||||
'@swc/helpers@0.5.11':
|
'@swc/counter@0.1.3':
|
||||||
resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==}
|
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
||||||
|
|
||||||
|
'@swc/helpers@0.5.5':
|
||||||
|
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
|
||||||
|
|
||||||
'@tailwindcss/container-queries@0.1.1':
|
'@tailwindcss/container-queries@0.1.1':
|
||||||
resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==}
|
resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==}
|
||||||
@ -3259,8 +3262,8 @@ packages:
|
|||||||
react: ^16.8 || ^17 || ^18
|
react: ^16.8 || ^17 || ^18
|
||||||
react-dom: ^16.8 || ^17 || ^18
|
react-dom: ^16.8 || ^17 || ^18
|
||||||
|
|
||||||
next@14.3.0-canary.44:
|
next@14.2.3:
|
||||||
resolution: {integrity: sha512-iYJmuiARcldXjN27N0Yo8gWyy6vWl+FoUNcEaL2GGh3sA/rc4hcbZD89ZUXoVFsPAI7ze6sKM60Znct9RwCbKQ==}
|
resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==}
|
||||||
engines: {node: '>=18.17.0'}
|
engines: {node: '>=18.17.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -5452,37 +5455,37 @@ snapshots:
|
|||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@next/env@14.3.0-canary.44': {}
|
'@next/env@14.2.3': {}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@14.2.3':
|
'@next/eslint-plugin-next@14.2.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
glob: 10.3.10
|
glob: 10.3.10
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@14.3.0-canary.44':
|
'@next/swc-darwin-arm64@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-x64@14.3.0-canary.44':
|
'@next/swc-darwin-x64@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@14.3.0-canary.44':
|
'@next/swc-linux-arm64-gnu@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@14.3.0-canary.44':
|
'@next/swc-linux-arm64-musl@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@14.3.0-canary.44':
|
'@next/swc-linux-x64-gnu@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@14.3.0-canary.44':
|
'@next/swc-linux-x64-musl@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@14.3.0-canary.44':
|
'@next/swc-win32-arm64-msvc@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-ia32-msvc@14.3.0-canary.44':
|
'@next/swc-win32-ia32-msvc@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@14.3.0-canary.44':
|
'@next/swc-win32-x64-msvc@14.2.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
@ -6111,8 +6114,11 @@ snapshots:
|
|||||||
'@smithy/types': 2.12.0
|
'@smithy/types': 2.12.0
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
|
||||||
'@swc/helpers@0.5.11':
|
'@swc/counter@0.1.3': {}
|
||||||
|
|
||||||
|
'@swc/helpers@0.5.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@swc/counter': 0.1.3
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
|
||||||
'@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.3)':
|
'@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.3)':
|
||||||
@ -6404,11 +6410,11 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
crypto-js: 4.2.0
|
crypto-js: 4.2.0
|
||||||
|
|
||||||
'@vercel/analytics@1.2.2(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
'@vercel/analytics@1.2.2(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
server-only: 0.0.1
|
server-only: 0.0.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
next: 14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@vercel/blob@0.23.2':
|
'@vercel/blob@0.23.2':
|
||||||
@ -6422,9 +6428,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@upstash/redis': 1.25.1
|
'@upstash/redis': 1.25.1
|
||||||
|
|
||||||
'@vercel/speed-insights@1.0.10(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))':
|
'@vercel/speed-insights@1.0.10(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.15)(vue@3.4.25(typescript@5.4.5))':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
next: 14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
svelte: 4.2.15
|
svelte: 4.2.15
|
||||||
vue: 3.4.25(typescript@5.4.5)
|
vue: 3.4.25(typescript@5.4.5)
|
||||||
@ -8407,10 +8413,10 @@ snapshots:
|
|||||||
|
|
||||||
natural-compare@1.4.0: {}
|
natural-compare@1.4.0: {}
|
||||||
|
|
||||||
next-auth@5.0.0-beta.15(next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
|
next-auth@5.0.0-beta.15(next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@auth/core': 0.28.0
|
'@auth/core': 0.28.0
|
||||||
next: 14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
@ -8418,10 +8424,10 @@ snapshots:
|
|||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
next@14.3.0-canary.44(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next@14.2.3(@babel/core@7.24.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 14.3.0-canary.44
|
'@next/env': 14.2.3
|
||||||
'@swc/helpers': 0.5.11
|
'@swc/helpers': 0.5.5
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
caniuse-lite: 1.0.30001612
|
caniuse-lite: 1.0.30001612
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
@ -8430,16 +8436,15 @@ snapshots:
|
|||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.3.1)
|
styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.3.1)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/swc-darwin-arm64': 14.3.0-canary.44
|
'@next/swc-darwin-arm64': 14.2.3
|
||||||
'@next/swc-darwin-x64': 14.3.0-canary.44
|
'@next/swc-darwin-x64': 14.2.3
|
||||||
'@next/swc-linux-arm64-gnu': 14.3.0-canary.44
|
'@next/swc-linux-arm64-gnu': 14.2.3
|
||||||
'@next/swc-linux-arm64-musl': 14.3.0-canary.44
|
'@next/swc-linux-arm64-musl': 14.2.3
|
||||||
'@next/swc-linux-x64-gnu': 14.3.0-canary.44
|
'@next/swc-linux-x64-gnu': 14.2.3
|
||||||
'@next/swc-linux-x64-musl': 14.3.0-canary.44
|
'@next/swc-linux-x64-musl': 14.2.3
|
||||||
'@next/swc-win32-arm64-msvc': 14.3.0-canary.44
|
'@next/swc-win32-arm64-msvc': 14.2.3
|
||||||
'@next/swc-win32-ia32-msvc': 14.3.0-canary.44
|
'@next/swc-win32-ia32-msvc': 14.2.3
|
||||||
'@next/swc-win32-x64-msvc': 14.3.0-canary.44
|
'@next/swc-win32-x64-msvc': 14.2.3
|
||||||
sharp: 0.33.3
|
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
export { default } from '@/components/PageSpinner';
|
|
||||||
@ -5,8 +5,7 @@ import { getIBMPlexMonoMedium } from '@/site/font';
|
|||||||
import { ImageResponse } from 'next/og';
|
import { ImageResponse } from 'next/og';
|
||||||
import { getImageResponseCacheControlHeaders } from '@/image-response/cache';
|
import { getImageResponseCacheControlHeaders } from '@/image-response/cache';
|
||||||
import { STATICALLY_OPTIMIZED } from '@/site/config';
|
import { STATICALLY_OPTIMIZED } from '@/site/config';
|
||||||
import { getPhotoIds } from '@/photo/db';
|
import { GENERATE_STATIC_PARAMS_LIMIT, getPhotoIds } from '@/photo/db';
|
||||||
import { GENERATE_STATIC_PARAMS_LIMIT } from '@/photo';
|
|
||||||
|
|
||||||
export let generateStaticParams:
|
export let generateStaticParams:
|
||||||
(() => Promise<{ photoId: string }[]>) | undefined = undefined;
|
(() => Promise<{ photoId: string }[]>) | undefined = undefined;
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import {
|
import {
|
||||||
GENERATE_STATIC_PARAMS_LIMIT,
|
|
||||||
GRID_THUMBNAILS_TO_SHOW_MAX,
|
GRID_THUMBNAILS_TO_SHOW_MAX,
|
||||||
descriptionForPhoto,
|
descriptionForPhoto,
|
||||||
titleForPhoto,
|
titleForPhoto,
|
||||||
@ -14,7 +13,7 @@ import {
|
|||||||
import PhotoDetailPage from '@/photo/PhotoDetailPage';
|
import PhotoDetailPage from '@/photo/PhotoDetailPage';
|
||||||
import { getPhotosNearIdCachedCached } from '@/photo/cache';
|
import { getPhotosNearIdCachedCached } from '@/photo/cache';
|
||||||
import { STATICALLY_OPTIMIZED } from '@/site/config';
|
import { STATICALLY_OPTIMIZED } from '@/site/config';
|
||||||
import { getPhotoIds } from '@/photo/db';
|
import { GENERATE_STATIC_PARAMS_LIMIT, getPhotoIds } from '@/photo/db';
|
||||||
|
|
||||||
export let generateStaticParams:
|
export let generateStaticParams:
|
||||||
(() => Promise<{ photoId: string }[]>) | undefined = undefined;
|
(() => Promise<{ photoId: string }[]>) | undefined = undefined;
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
import { cache } from 'react';
|
import { cache } from 'react';
|
||||||
import { auth } from '@/auth';
|
import { auth } from '@/auth';
|
||||||
import { screenForPPR } from '@/utility/ppr';
|
|
||||||
|
|
||||||
export const authCachedSafe = cache(() => auth()
|
export const authCachedSafe = cache(() => auth().catch(() => null));
|
||||||
.catch(e => screenForPPR(e, null, 'auth')));
|
|
||||||
|
|||||||
@ -16,7 +16,8 @@ import { parameterize } from '@/utility/string';
|
|||||||
import { TagsWithMeta } from '@/tag';
|
import { TagsWithMeta } from '@/tag';
|
||||||
import { FilmSimulation, FilmSimulations } from '@/simulation';
|
import { FilmSimulation, FilmSimulations } from '@/simulation';
|
||||||
import { SHOULD_DEBUG_SQL, PRIORITY_ORDER_ENABLED } from '@/site/config';
|
import { SHOULD_DEBUG_SQL, PRIORITY_ORDER_ENABLED } from '@/site/config';
|
||||||
import { screenForPPR } from '@/utility/ppr';
|
|
||||||
|
export const GENERATE_STATIC_PARAMS_LIMIT = 1000;
|
||||||
|
|
||||||
const PHOTO_DEFAULT_LIMIT = 100;
|
const PHOTO_DEFAULT_LIMIT = 100;
|
||||||
|
|
||||||
@ -310,7 +311,6 @@ const safelyQueryPhotos = async <T>(
|
|||||||
try {
|
try {
|
||||||
result = await callback();
|
result = await callback();
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
screenForPPR(e, undefined, 'neon postgres');
|
|
||||||
if (MIGRATION_FIELDS_01.some(field => new RegExp(
|
if (MIGRATION_FIELDS_01.some(field => new RegExp(
|
||||||
`column "${field}" of relation "photos" does not exist`,
|
`column "${field}" of relation "photos" does not exist`,
|
||||||
'i',
|
'i',
|
||||||
|
|||||||
@ -14,8 +14,6 @@ import camelcaseKeys from 'camelcase-keys';
|
|||||||
import { isBefore } from 'date-fns';
|
import { isBefore } from 'date-fns';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
|
||||||
export const GENERATE_STATIC_PARAMS_LIMIT = 1000;
|
|
||||||
|
|
||||||
// ROOT PAGE
|
// ROOT PAGE
|
||||||
export const INFINITE_SCROLL_INITIAL_HOME =
|
export const INFINITE_SCROLL_INITIAL_HOME =
|
||||||
process.env.NODE_ENV === 'development' ? 2 : 12;
|
process.env.NODE_ENV === 'development' ? 2 : 12;
|
||||||
|
|||||||
@ -27,7 +27,6 @@ import {
|
|||||||
isUrlFromCloudflareR2,
|
isUrlFromCloudflareR2,
|
||||||
} from './cloudflare-r2';
|
} from './cloudflare-r2';
|
||||||
import { PATH_API_PRESIGNED_URL } from '@/site/paths';
|
import { PATH_API_PRESIGNED_URL } from '@/site/paths';
|
||||||
import { screenForPPR } from '@/utility/ppr';
|
|
||||||
|
|
||||||
export const generateStorageId = () => generateNanoid(16);
|
export const generateStorageId = () => generateNanoid(16);
|
||||||
|
|
||||||
@ -193,15 +192,15 @@ const getStorageUrlsForPrefix = async (prefix = '') => {
|
|||||||
|
|
||||||
if (HAS_VERCEL_BLOB_STORAGE) {
|
if (HAS_VERCEL_BLOB_STORAGE) {
|
||||||
urls.push(...await vercelBlobList(prefix)
|
urls.push(...await vercelBlobList(prefix)
|
||||||
.catch(e => screenForPPR(e, [], 'vercel blob')));
|
.catch(() => []));
|
||||||
}
|
}
|
||||||
if (HAS_AWS_S3_STORAGE) {
|
if (HAS_AWS_S3_STORAGE) {
|
||||||
urls.push(...await awsS3List(prefix)
|
urls.push(...await awsS3List(prefix)
|
||||||
.catch(e => screenForPPR(e, [], 'aws blob')));
|
.catch(() => []));
|
||||||
}
|
}
|
||||||
if (HAS_CLOUDFLARE_R2_STORAGE) {
|
if (HAS_CLOUDFLARE_R2_STORAGE) {
|
||||||
urls.push(...await cloudflareR2List(prefix)
|
urls.push(...await cloudflareR2List(prefix)
|
||||||
.catch(e => screenForPPR(e, [], 'cloudflare blob')));
|
.catch(() => []));
|
||||||
}
|
}
|
||||||
|
|
||||||
return urls
|
return urls
|
||||||
|
|||||||
@ -358,8 +358,8 @@ export default function SiteChecklistClient({
|
|||||||
optional
|
optional
|
||||||
experimental
|
experimental
|
||||||
>
|
>
|
||||||
Set environment variable to {'"1"'} to enable PPR
|
Set environment variable to {'"1"'} to enable static optimization,
|
||||||
and static optimization, i.e., build pages ahead of time:
|
i.e., rendering pages and images at build time:
|
||||||
{renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE'])}
|
{renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE'])}
|
||||||
</ChecklistRow>
|
</ChecklistRow>
|
||||||
<ChecklistRow
|
<ChecklistRow
|
||||||
|
|||||||
@ -1,21 +0,0 @@
|
|||||||
export const screenForPPR = <T>(
|
|
||||||
error: any,
|
|
||||||
fallback: T,
|
|
||||||
sourceToLog?: string,
|
|
||||||
debug?: boolean
|
|
||||||
): T => {
|
|
||||||
// PPR errors, if caught, must be re-thrown in order to
|
|
||||||
// postpone rendering
|
|
||||||
if (error.sourceError?.message?.includes('ppr-caught-error')) {
|
|
||||||
if (debug) {
|
|
||||||
console.log(`${sourceToLog}: throwing error.sourceError`);
|
|
||||||
}
|
|
||||||
throw error.sourceError;
|
|
||||||
} else if (error.message?.includes('ppr-caught-error')) {
|
|
||||||
if (debug) {
|
|
||||||
console.log(`${sourceToLog}: throwing error`);
|
|
||||||
}
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
return fallback;
|
|
||||||
};
|
|
||||||
Loading…
Reference in New Issue
Block a user