-
Notifications
You must be signed in to change notification settings - Fork 27k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(next): codemod for removed geo
and ip
of NextRequest
#70064
feat(next): codemod for removed geo
and ip
of NextRequest
#70064
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @devjiwonchoi and the rest of your teammates on Graphite |
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
buildDuration | 17.5s | 18.8s | |
buildDurationCached | 8.6s | 7.4s | N/A |
nodeModulesSize | 359 MB | 359 MB | N/A |
nextStartRea..uration (ms) | 427ms | 438ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
5464-HASH.js gzip | 5.26 kB | 5.26 kB | N/A |
7961.HASH.js gzip | 168 B | 168 B | ✓ |
882-HASH.js gzip | 43 kB | 42.6 kB | N/A |
f700a635-HASH.js gzip | 52.8 kB | 52.8 kB | N/A |
framework-HASH.js gzip | 57.6 kB | 57.6 kB | ✓ |
main-app-HASH.js gzip | 226 B | 221 B | N/A |
main-HASH.js gzip | 32.7 kB | 32.6 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 57.7 kB | 57.7 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 194 B | N/A |
_error-HASH.js gzip | 192 B | 191 B | N/A |
amp-HASH.js gzip | 509 B | 511 B | N/A |
css-HASH.js gzip | 341 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 264 B | 266 B | N/A |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 391 B | 389 B | N/A |
image-HASH.js gzip | 4.4 kB | 4.4 kB | N/A |
index-HASH.js gzip | 268 B | 267 B | N/A |
link-HASH.js gzip | 2.78 kB | 2.81 kB | N/A |
routerDirect..HASH.js gzip | 327 B | 328 B | N/A |
script-HASH.js gzip | 396 B | 393 B | N/A |
withRouter-HASH.js gzip | 322 B | 323 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 1.95 kB | 1.95 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
_buildManifest.js gzip | 748 B | 751 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
index.html gzip | 522 B | 524 B | N/A |
link.html gzip | 537 B | 538 B | N/A |
withRouter.html gzip | 518 B | 520 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 179 kB | 179 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 670 B | 669 B | N/A |
middleware-r..fest.js gzip | 156 B | 156 B | ✓ |
middleware.js gzip | 29.8 kB | 29.8 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 1 kB | 1 kB | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
973-experime...dev.js gzip | 322 B | 322 B | ✓ |
973.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 318 kB | 318 kB | N/A |
app-page-exp..prod.js gzip | 126 kB | 125 kB | N/A |
app-page-tur..prod.js gzip | 139 kB | 139 kB | N/A |
app-page-tur..prod.js gzip | 134 kB | 134 kB | N/A |
app-page.run...dev.js gzip | 308 kB | 308 kB | N/A |
app-page.run..prod.js gzip | 121 kB | 121 kB | N/A |
app-route-ex...dev.js gzip | 32.1 kB | 32.1 kB | ✓ |
app-route-ex..prod.js gzip | 21.7 kB | 21.7 kB | N/A |
app-route-tu..prod.js gzip | 21.7 kB | 21.7 kB | N/A |
app-route-tu..prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
app-route.ru...dev.js gzip | 33.7 kB | 33.7 kB | ✓ |
app-route.ru..prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
pages-api-tu..prod.js gzip | 9.62 kB | 9.62 kB | ✓ |
pages-api.ru...dev.js gzip | 11.5 kB | 11.5 kB | ✓ |
pages-api.ru..prod.js gzip | 9.61 kB | 9.61 kB | ✓ |
pages-turbo...prod.js gzip | 20.8 kB | 20.8 kB | ✓ |
pages.runtim...dev.js gzip | 26.4 kB | 26.4 kB | ✓ |
pages.runtim..prod.js gzip | 20.8 kB | 20.8 kB | ✓ |
server.runti..prod.js gzip | 57.9 kB | 57.8 kB | N/A |
Overall change | 208 kB | 208 kB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js 09-13-feat_next_codemod_for_nextrequest_geolocation | Change | |
---|---|---|---|
0.pack gzip | 1.65 MB | 1.66 MB | |
index.pack gzip | 131 kB | 132 kB | |
Overall change | 1.78 MB | 1.79 MB |
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
/***/
},
- /***/ 6818: /***/ (
+ /***/ 7629: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -30,7 +30,7 @@
default: () => /* binding */ nHandler,
});
- // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statstdTuFU%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+ // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statstdTuFU%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
var page_next_edge_ssr_entry_namespaceObject = {};
__webpack_require__.r(page_next_edge_ssr_entry_namespaceObject);
__webpack_require__.d(page_next_edge_ssr_entry_namespaceObject, {
@@ -69,35 +69,35 @@
tree: () => tree,
});
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/web/globals.js
- var globals = __webpack_require__(3638);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
- var adapter = __webpack_require__(9798);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
- var render = __webpack_require__(4497);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
- var incremental_cache = __webpack_require__(3136);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
- var app_render = __webpack_require__(3527);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
- var module_compiled = __webpack_require__(3576);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/route-kind.js
- var route_kind = __webpack_require__(8888);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/client/components/error-boundary.js
- var error_boundary = __webpack_require__(2766);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
- var entry_base = __webpack_require__(1076); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statstdTuFU%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
- const module0 = () =>
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/web/globals.js
+ var globals = __webpack_require__(837);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+ var adapter = __webpack_require__(8871);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
+ var render = __webpack_require__(260);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+ var incremental_cache = __webpack_require__(7685);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
+ var app_render = __webpack_require__(883);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+ var module_compiled = __webpack_require__(8858);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/route-kind.js
+ var route_kind = __webpack_require__(1814);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/client/components/error-boundary.js
+ var error_boundary = __webpack_require__(6953);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
+ var entry_base = __webpack_require__(525); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statstdTuFU%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+ const component0 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 8526)
+ __webpack_require__.bind(__webpack_require__, 8959)
);
- const module1 = () =>
+ const component1 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 3356)
+ __webpack_require__.bind(__webpack_require__, 1784)
);
const page2 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 1531)
+ __webpack_require__.bind(__webpack_require__, 2564)
);
// We inject the tree and pages here so that we can use them in the route
@@ -124,9 +124,12 @@
],
},
{
- layout: [module0, "/tmp/next-statstdTuFU/stats-app/app/layout.js"],
+ layout: [
+ component0,
+ "/tmp/next-statstdTuFU/stats-app/app/layout.js",
+ ],
"not-found": [
- module1,
+ component1,
"next/dist/client/components/not-found-error",
],
},
@@ -160,12 +163,12 @@
});
//# sourceMappingURL=app-page.js.map
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/lib/page-types.js
- var page_types = __webpack_require__(8927);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/app-render/encryption-utils.js
- var encryption_utils = __webpack_require__(890);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/esm/server/app-render/action-utils.js
- var action_utils = __webpack_require__(124); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzdGRUdUZVL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHN0ZFR1RlUvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHN0ZFR1RlUvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzdGRUdUZVJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/lib/page-types.js
+ var page_types = __webpack_require__(8818);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+ var encryption_utils = __webpack_require__(9687);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/esm/server/app-render/action-utils.js
+ var action_utils = __webpack_require__(1624); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzdGRUdUZVL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHN0ZFR1RlUvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHN0ZFR1RlUvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzdGRUdUZVJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
var _self___RSC_MANIFEST;
const incrementalCacheHandler = null;
@@ -429,50 +432,50 @@
/***/
},
- /***/ 9198: /***/ (
+ /***/ 3393: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 5907)
+ __webpack_require__.bind(__webpack_require__, 8510)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 8674)
+ __webpack_require__.bind(__webpack_require__, 6644)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 5903)
+ __webpack_require__.bind(__webpack_require__, 4779)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 7959)
+ __webpack_require__.bind(__webpack_require__, 1732)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 4811)
+ __webpack_require__.bind(__webpack_require__, 4161)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 4171)
+ __webpack_require__.bind(__webpack_require__, 6727)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 8074)
+ __webpack_require__.bind(__webpack_require__, 2763)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 4614)
+ __webpack_require__.bind(__webpack_require__, 1666)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 9658)
+ __webpack_require__.bind(__webpack_require__, 2221)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 4863)
+ __webpack_require__.bind(__webpack_require__, 7310)
);
/***/
},
- /***/ 7716: /***/ () => {
+ /***/ 2980: /***/ () => {
/***/
},
- /***/ 1531: /***/ (
+ /***/ 2564: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -492,7 +495,7 @@
/***/
},
- /***/ 8526: /***/ (
+ /***/ 8959: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -504,7 +507,7 @@
/* harmony export */
});
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(9166);
+ __webpack_require__(9420);
function RootLayout({ children }) {
return /*#__PURE__*/ (0,
@@ -523,7 +526,7 @@
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
- /******/ __webpack_require__.O(0, [170, 734], () => __webpack_exec__(6818));
+ /******/ __webpack_require__.O(0, [460, 837], () => __webpack_exec__(7629));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES)[
"middleware_app/app-edge-ssr/page"
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for image-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[8358],
{
- /***/ 2463: /***/ (
+ /***/ 3353: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/image",
function () {
- return __webpack_require__(6108);
+ return __webpack_require__(7089);
},
]);
if (false) {
@@ -18,7 +18,7 @@
/***/
},
- /***/ 9846: /***/ (module, exports, __webpack_require__) => {
+ /***/ 1214: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
__webpack_require__(5913)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2268)
+ __webpack_require__(1142)
);
- const _getimgprops = __webpack_require__(4265);
- const _imageconfig = __webpack_require__(6191);
- const _imageconfigcontextsharedruntime = __webpack_require__(3060);
- const _warnonce = __webpack_require__(7709);
- const _routercontextsharedruntime = __webpack_require__(8256);
+ const _getimgprops = __webpack_require__(7566);
+ const _imageconfig = __webpack_require__(6702);
+ const _imageconfigcontextsharedruntime = __webpack_require__(5716);
+ const _warnonce = __webpack_require__(1683);
+ const _routercontextsharedruntime = __webpack_require__(7211);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2583)
+ __webpack_require__(732)
);
- const _usemergedref = __webpack_require__(7199);
+ const _usemergedref = __webpack_require__(3345);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
/***/
},
- /***/ 7199: /***/ (module, exports, __webpack_require__) => {
+ /***/ 3345: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -440,7 +440,7 @@
/***/
},
- /***/ 4265: /***/ (
+ /***/ 7566: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -456,9 +456,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(7709);
- const _imageblursvg = __webpack_require__(676);
- const _imageconfig = __webpack_require__(6191);
+ const _warnonce = __webpack_require__(1683);
+ const _imageblursvg = __webpack_require__(9223);
+ const _imageconfig = __webpack_require__(6702);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -599,7 +599,6 @@
placeholder = "empty",
blurDataURL,
fetchPriority,
- decoding = "async",
layout,
objectFit,
objectPosition,
@@ -806,7 +805,7 @@
fetchPriority,
width: widthInt,
height: heightInt,
- decoding,
+ decoding: "async",
className,
style: {
...imgStyle,
@@ -831,7 +830,7 @@
/***/
},
- /***/ 676: /***/ (__unused_webpack_module, exports) => {
+ /***/ 9223: /***/ (__unused_webpack_module, exports) => {
"use strict";
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -886,7 +885,7 @@
/***/
},
- /***/ 1212: /***/ (
+ /***/ 9894: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -913,10 +912,10 @@
},
});
const _interop_require_default = __webpack_require__(9608);
- const _getimgprops = __webpack_require__(4265);
- const _imagecomponent = __webpack_require__(9846);
+ const _getimgprops = __webpack_require__(7566);
+ const _imagecomponent = __webpack_require__(1214);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2583)
+ __webpack_require__(732)
);
function getImageProps(imgProps) {
const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -948,7 +947,7 @@
/***/
},
- /***/ 2583: /***/ (__unused_webpack_module, exports) => {
+ /***/ 732: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -983,7 +982,7 @@
/***/
},
- /***/ 6108: /***/ (
+ /***/ 7089: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -1000,8 +999,8 @@
// EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-5dcb0097-20240918/node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(193);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_4tprv27tnzmhlzw6zr76ump37a/node_modules/next/image.js
- var next_image = __webpack_require__(8301);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-5dcb0097-20240918_re_o75yynpdjzlx53graik6vcrqwq/node_modules/next/image.js
+ var next_image = __webpack_require__(4077);
var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
/* harmony default export */ const nextjs = {
src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1031,12 +1030,12 @@
/***/
},
- /***/ 8301: /***/ (
+ /***/ 4077: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1212);
+ module.exports = __webpack_require__(9894);
/***/
},
@@ -1046,7 +1045,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
- __webpack_exec__(2463)
+ __webpack_exec__(3353)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4644],
{
- /***/ 2988: /***/ (
+ /***/ 2825: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/link",
function () {
- return __webpack_require__(5771);
+ return __webpack_require__(4879);
},
]);
if (false) {
@@ -18,7 +18,7 @@
/***/
},
- /***/ 8650: /***/ (module, exports) => {
+ /***/ 4242: /***/ (module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -60,6 +60,9 @@
PrefetchKind: function () {
return PrefetchKind;
},
+ isThenable: function () {
+ return isThenable;
+ },
});
const ACTION_REFRESH = "refresh";
const ACTION_NAVIGATE = "navigate";
@@ -81,6 +84,17 @@
PrefetchCacheEntryStatus["expired"] = "expired";
PrefetchCacheEntryStatus["stale"] = "stale";
})(PrefetchCacheEntryStatus || (PrefetchCacheEntryStatus = {}));
+ function isThenable(value) {
+ // TODO: We don't gain anything from this abstraction. It's unsound, and only
+ // makes sense in the specific places where we use it. So it's better to keep
+ // the type coercion inline, instead of leaking this to other places in
+ // the codebase.
+ return (
+ value &&
+ (typeof value === "object" || typeof value === "function") &&
+ typeof value.then === "function"
+ );
+ }
if (
(typeof exports.default === "function" ||
(typeof exports.default === "object" && exports.default !== null)) &&
@@ -96,7 +110,7 @@
/***/
},
- /***/ 7602: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5965: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -108,7 +122,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(4961);
+ const _normalizetrailingslash = __webpack_require__(7684);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -132,7 +146,7 @@
/***/
},
- /***/ 6452: /***/ (module, exports, __webpack_require__) => {
+ /***/ 3306: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -149,18 +163,18 @@
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(356)
);
- const _resolvehref = __webpack_require__(3889);
- const _islocalurl = __webpack_require__(9417);
- const _formaturl = __webpack_require__(6600);
- const _utils = __webpack_require__(7095);
- const _addlocale = __webpack_require__(9543);
- const _routercontextsharedruntime = __webpack_require__(8256);
- const _approutercontextsharedruntime = __webpack_require__(1738);
- const _useintersection = __webpack_require__(7747);
- const _getdomainlocale = __webpack_require__(7602);
- const _addbasepath = __webpack_require__(6177);
- const _routerreducertypes = __webpack_require__(8650);
- const _usemergedref = __webpack_require__(7199);
+ const _resolvehref = __webpack_require__(9909);
+ const _islocalurl = __webpack_require__(8307);
+ const _formaturl = __webpack_require__(7799);
+ const _utils = __webpack_require__(3993);
+ const _addlocale = __webpack_require__(9245);
+ const _routercontextsharedruntime = __webpack_require__(7211);
+ const _approutercontextsharedruntime = __webpack_require__(1714);
+ const _useintersection = __webpack_require__(9810);
+ const _getdomainlocale = __webpack_require__(5965);
+ const _addbasepath = __webpack_require__(6726);
+ const _routerreducertypes = __webpack_require__(4242);
+ const _usemergedref = __webpack_require__(3345);
const prefetched = new Set();
function prefetch(router, href, as, options, appOptions, isAppRouter) {
if (false) {
@@ -588,7 +602,7 @@
/***/
},
- /***/ 7747: /***/ (module, exports, __webpack_require__) => {
+ /***/ 9810: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -601,7 +615,7 @@
},
});
const _react = __webpack_require__(356);
- const _requestidlecallback = __webpack_require__(2604);
+ const _requestidlecallback = __webpack_require__(9359);
const hasIntersectionObserver =
typeof IntersectionObserver === "function";
const observers = new Map();
@@ -714,7 +728,7 @@
/***/
},
- /***/ 7199: /***/ (module, exports, __webpack_require__) => {
+ /***/ 3345: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -783,7 +797,7 @@
/***/
},
- /***/ 5771: /***/ (
+ /***/ 4879: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -798,7 +812,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(193);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(3895);
+ __webpack_require__(5861);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -829,12 +843,12 @@
/***/
},
- /***/ 3895: /***/ (
+ /***/ 5861: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(6452);
+ module.exports = __webpack_require__(3306);
/***/
},
@@ -844,7 +858,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
- __webpack_exec__(2988)
+ __webpack_exec__(2825)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 5464-HASH.js
@@ -1,8 +1,8 @@
"use strict";
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
- [5464],
+ [7645],
{
- /***/ 5464: /***/ (module, exports, __webpack_require__) => {
+ /***/ 7645: /***/ (module, exports, __webpack_require__) => {
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -13,27 +13,27 @@
return Image;
},
});
- const _interop_require_default = __webpack_require__(489);
- const _interop_require_wildcard = __webpack_require__(5095);
- const _jsxruntime = __webpack_require__(3850);
+ const _interop_require_default = __webpack_require__(8382);
+ const _interop_require_wildcard = __webpack_require__(4661);
+ const _jsxruntime = __webpack_require__(6917);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(4147)
+ __webpack_require__(3897)
);
const _reactdom = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(8661)
+ __webpack_require__(4251)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(7722)
+ __webpack_require__(5245)
);
- const _getimgprops = __webpack_require__(4988);
- const _imageconfig = __webpack_require__(5113);
- const _imageconfigcontextsharedruntime = __webpack_require__(1305);
- const _warnonce = __webpack_require__(5669);
- const _routercontextsharedruntime = __webpack_require__(8630);
+ const _getimgprops = __webpack_require__(7008);
+ const _imageconfig = __webpack_require__(4173);
+ const _imageconfigcontextsharedruntime = __webpack_require__(9477);
+ const _warnonce = __webpack_require__(9708);
+ const _routercontextsharedruntime = __webpack_require__(4452);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4683)
+ __webpack_require__(6938)
);
- const _usemergedref = __webpack_require__(9123);
+ const _usemergedref = __webpack_require__(2537);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -355,7 +355,7 @@
/***/
},
- /***/ 9123: /***/ (module, exports, __webpack_require__) => {
+ /***/ 2537: /***/ (module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -375,7 +375,7 @@
return useMergedRef;
},
});
- const _react = __webpack_require__(4147);
+ const _react = __webpack_require__(3897);
function useMergedRef(refA, refB) {
return (0, _react.useMemo)(() => mergeRefs(refA, refB), [refA, refB]);
}
@@ -422,7 +422,7 @@
/***/
},
- /***/ 7466: /***/ (
+ /***/ 940: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -436,9 +436,9 @@
return AmpStateContext;
},
});
- const _interop_require_default = __webpack_require__(489);
+ const _interop_require_default = __webpack_require__(8382);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4147)
+ __webpack_require__(3897)
);
const AmpStateContext = _react.default.createContext({});
if (false) {
@@ -447,7 +447,7 @@
/***/
},
- /***/ 7818: /***/ (__unused_webpack_module, exports) => {
+ /***/ 726: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -469,7 +469,7 @@
/***/
},
- /***/ 4988: /***/ (
+ /***/ 7008: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -483,9 +483,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(5669);
- const _imageblursvg = __webpack_require__(9523);
- const _imageconfig = __webpack_require__(5113);
+ const _warnonce = __webpack_require__(9708);
+ const _imageblursvg = __webpack_require__(4309);
+ const _imageconfig = __webpack_require__(4173);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -626,7 +626,6 @@
placeholder = "empty",
blurDataURL,
fetchPriority,
- decoding = "async",
layout,
objectFit,
objectPosition,
@@ -833,7 +832,7 @@
fetchPriority,
width: widthInt,
height: heightInt,
- decoding,
+ decoding: "async",
className,
style: {
...imgStyle,
@@ -858,8 +857,8 @@
/***/
},
- /***/ 7722: /***/ (module, exports, __webpack_require__) => {
- /* provided dependency */ var process = __webpack_require__(2984);
+ /***/ 5245: /***/ (module, exports, __webpack_require__) => {
+ /* provided dependency */ var process = __webpack_require__(8333);
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -880,19 +879,19 @@
return defaultHead;
},
});
- const _interop_require_default = __webpack_require__(489);
- const _interop_require_wildcard = __webpack_require__(5095);
- const _jsxruntime = __webpack_require__(3850);
+ const _interop_require_default = __webpack_require__(8382);
+ const _interop_require_wildcard = __webpack_require__(4661);
+ const _jsxruntime = __webpack_require__(6917);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(4147)
+ __webpack_require__(3897)
);
const _sideeffect = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(6541)
+ __webpack_require__(5542)
);
- const _ampcontextsharedruntime = __webpack_require__(7466);
- const _headmanagercontextsharedruntime = __webpack_require__(903);
- const _ampmode = __webpack_require__(7818);
- const _warnonce = __webpack_require__(5669);
+ const _ampcontextsharedruntime = __webpack_require__(940);
+ const _headmanagercontextsharedruntime = __webpack_require__(6713);
+ const _ampmode = __webpack_require__(726);
+ const _warnonce = __webpack_require__(9708);
function defaultHead(inAmpMode) {
if (inAmpMode === void 0) inAmpMode = false;
const head = [
@@ -1076,7 +1075,7 @@
/***/
},
- /***/ 9523: /***/ (__unused_webpack_module, exports) => {
+ /***/ 4309: /***/ (__unused_webpack_module, exports) => {
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
*/
@@ -1130,7 +1129,7 @@
/***/
},
- /***/ 1305: /***/ (
+ /***/ 9477: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1144,11 +1143,11 @@
return ImageConfigContext;
},
});
- const _interop_require_default = __webpack_require__(489);
+ const _interop_require_default = __webpack_require__(8382);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4147)
+ __webpack_require__(3897)
);
- const _imageconfig = __webpack_require__(5113);
+ const _imageconfig = __webpack_require__(4173);
const ImageConfigContext = _react.default.createContext(
_imageconfig.imageConfigDefault
);
@@ -1158,7 +1157,7 @@
/***/
},
- /***/ 5113: /***/ (__unused_webpack_module, exports) => {
+ /***/ 4173: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -1205,7 +1204,7 @@
/***/
},
- /***/ 4683: /***/ (__unused_webpack_module, exports) => {
+ /***/ 6938: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -1238,7 +1237,7 @@
/***/
},
- /***/ 8630: /***/ (
+ /***/ 4452: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1252,9 +1251,9 @@
return RouterContext;
},
});
- const _interop_require_default = __webpack_require__(489);
+ const _interop_require_default = __webpack_require__(8382);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4147)
+ __webpack_require__(3897)
);
const RouterContext = _react.default.createContext(null);
if (false) {
@@ -1263,7 +1262,7 @@
/***/
},
- /***/ 6541: /***/ (
+ /***/ 5542: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1277,7 +1276,7 @@
return SideEffect;
},
});
- const _react = __webpack_require__(4147);
+ const _react = __webpack_require__(3897);
const isServer = typeof window === "undefined";
const useClientOnlyLayoutEffect = isServer
? () => {}
Diff for 882-HASH.js
Diff too large to display
Diff for f700a635-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
Is there a test for what happens if there's already a local identifier conflicting with the imported function names? E.g. in async function GET(req) {
const ipAddress = req.ip
} we couldn't just transform it to import {ipAddress} from '@vercel/functions';
async function GET(req) {
const ipAddress = ipAddress(req)
} |
Replacing |
Co-authored-by: Sebastian Silbermann <silbermann.sebastian@gmail.com>
Let's add it to the upgrade guide / codemod docs as well 😄 🙏 |
geo
and ip
of NextRequest
IMO this is safer: - const ip: NextRequest['ip'] = req.ip
- const geo: NextRequest['geo'] = req.geo
+ import { ipAddress, geolocation } from "@vercel/functions";
+ const ip: ReturnType<typeof ipAddress> = ipAddress(req)
+ const geo: ReturnType<typeof geolocation> = geolocation(req) This could need sync with changes in the future, but seems more intuitive: - const ip: NextRequest['ip'] = req.ip
- const geo: NextRequest['geo'] = req.geo
+ import { type Geo, ipAddress, geolocation } from "@vercel/functions";
+ const ip: string | undefined = ipAddress(req)
+ const geo: Geo = geolocation(req) What do you think? Update: synced, and decided to go for the second one. |
For the basic case if it's directly returned from ipAddress(req), we can just leverage the type infer, no need to specify the type after ip
|
I don't see test cases for I think it's also missing from https://github.com/vercel/next.js/blob/canary/packages/next-codemod/bin/cli.ts to be able to run from the CLI |
// @ts-nocheck | ||
import { type NextRequest, NextResponse } from "next/server"; | ||
|
||
import { geolocation, ipAddress } from "@vercel/functions"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The testing output files have some import
with a line break, and this is could-not-fix behavior of recast
(dependency of jscodeshift
). This occurs when there's a top-level comment and the target to insertAfter
is right below it.
// @ts-nocheck <-- comment here
import { type NextRequest, NextResponse } from "next/server";
import { geolocation, ipAddress } from "@vercel/functions"; // insertAfter
const { | ||
buildId | ||
} = request; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Newly constructed object value has line breaks:
// output cannot be one-liner
- const { buildId, geo, ip } = request;
+ const {
+ buildId
+ } = request;
related issue: benjamn/recast#240
packages/next-codemod/transforms/__testfixtures__/next-request-geo-ip/replace-type.output.ts
Outdated
Show resolved
Hide resolved
@@ -0,0 +1,7 @@ | |||
// @ts-nocheck |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we need this if these files are already exlcude in tsconfig?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can remove it as long as we allow Cannot find module '@vercel/functions' or its corresponding type declarations.ts(2307)
displayed on our editor, compiling will pass without it.
Co-authored-by: Jiachi Liu <inbox@huozhi.im>
Note
This codemod requires to install the
@vercel/functions
package.Why?
Codemod support for breaking change at #68379. It removed the
ip
, andgeo
properties from theNextRequest
type. TheNextRequest
type was mostly used in themiddleware
androute
.How?
The codemod replaces the
ip
, andgeo
properties from theNextRequest
with corresponding@vercel/functions
features.Accessing NextRequest Value
When a file uses
NextRequest
, we look if there's an access to the type withgeo
orip
. This targets destructuring and direct access.Declares a variable based on the identifier within the object. If it was aliased, we use the aliased name.
Accessing NextRequest Types
When the file has accessed the
geo | ip
type fromNextRequest
, we replace with the corresponding types.Since the type for
ip
isstring | undefined
, we explicitly replace it. Forgeo
, we replace with theGeo
type.Ref
Behavior FYI: #70064 (comment), #70064 (comment)
Closes NDX-291